ФЭНДОМ


Одной из основных функций операционной системы является предоставление прикладным программам системных сервисов, не зависящих от особенностей используемых внешних устройств, объёма имеющейся памяти, применяемых файловых систем и т.д. Благодаря этому появляется возможность создавать переносимые программы, работоспособные на любой минимально достаточной аппаратной конфигурации.

Степень абстрагированности прикладных программ от среды их исполнения зависит от используемой операционной системы. Исторически самой первой «абстракцией», по всей видимости, была возможность указывать устройства ввода-вывода не при создании программы в её исходном тексте, а при запуске её на выполнение с помощью соответствующих параметров командного языка операционной системы. Очень рано появилась и возможность настройки программы в момент её загрузки на конкретные адреса памяти, в которой ей предстяло выполняться. Несмотря на крайнюю примитивность подобного «абстрагирования», оно заметно облегчило использование программ, поскольку они перестали быть привязанными к конкретным внешним устройствам и к определённому адресу загрузки в память.

В дальнейшем степень абстрагированности программ от оборудования постоянно возрастала, причём зачастую операционные системы позволяли программисту использовать тот уровень, который был необходим или полезен для конкретного применения. Например, в IBM OS/360 (около 1965 г.) при работе с дисками у программиста были следующие варианты выбора:

  • работа на уровне канальных программ (программа получала дисковод в монопольное использование и передавала операционной системе на выполнение канальную программу, содержащую список команд для канала ввода-вывода, контроллера и самого дисковода; на ПК аналогичный уровень контроля за операциями ввода-вывода даёт лишь прямой доступ к регистрам внешнего устройства с той лишь разницей, что выполнение канальных программ на мэйнфрейме безопасно для других программ в системе);
  • низкий уровень работы с файлами (программа читает или пишет данные физическими блоками, однако местоположение этих блоков на дисках определяется операционной системой; файл может размещаться как на одном томе, т.е. физическом диске, так и на нескольких; в последнем случае переключение между томами осуществляется автоматически операционной системой);
  • средний уровень работы с файлами, имеющими определённую структуру (например, последовательные файлы, состоящие из логических порций данных — записей — фиксированной, переменной или неопределённой длины: программа запрашивала ввод или вывод записи, а операционная система самостоятельно определяла, к какому физическому блоку или блокам относится данная запись, и выполняла необходимые операции для её извлечения или помещения в эти блоки).

Устройство или устройства, на которых выполнялись операции ввода-вывода, задавались с помощью операторов языка управления заданиями, причём можно было указать конкретное физическое устройство (с помощью его адреса), произвольное устройства заданного типа (например, магнитный диск типа 3330), произвольное устройство заданного класса (например, магнитный диск любого типа по выбору ОС) или конкретный том (магнитный диск или ленту с именем, заданным в метке тома; операционная система автоматически отыскивала том среди установленных в данный момент, а если не могла его найти, оператору выдавался запрос на установку нужного диска или ленты на какое-либо устройство подходящего типа; аналогичным образом происходило и переключение между томами при обработке многотомного файла: если нужный том не был установлен, оператору выдавался запрос на его установку).

Вершиной абстрагирования на машинах третьего поколения стала, по-видимому, другая операционная система IBM — VM/370. Каждый пользователь получал в своё распоряжение виртуальную машину, у которой с реальным мэйнфреймом совпадала только система команд и частично — внешние устройства (не все виды периферии VM/370 могла эмулировать программно; кроме того, это довольно неэффективно, поэтому по возможности виртуальным машинам, работающим под её управлением, выделялись реальные устройства или же обеспечивалось совместное использование нескольких устройств).

В наши дни большое распространение получили полностью виртуальные машины (в первую очередь JVM от Sun Microsystems и .NET от Microsoft), в которых даже процессоры являются полностью виртуальными и исполняют систему команд соответствующей виртуальной машины; фактически и JVM, и .NET являются программными эмуляторами абстрактных вычислительных машин и их операционных систем. Благодаря этому появляется возможность создания программ, способных работать на любой платформе, где поддерживается данная виртуальная машина, что весьма привлекательно для широкого класса приложений, прежде всего финансово-экономического и развлекательного характера. Например, версии JVM существуют и на IBM-совместимых персональных компьютерах, и на различных серверах, и на мобильных телефонах, что теоретически позволяет выполнять на них любое ПО, написанное на языке Java, хотя на практике существуют определённые ограничения.

Наряду с несомненными плюсами абстрагирование, однако, несёт и минусы. Наиболее очевидным из них является существенное увеличение объёмов и усложение операционной системы: чем выше уровень поддерживаемой абстракции, тем сложнее её обеспечить. Кроме того, использование абстрактных ресурсов обычно приводит к некоторому снижению производительности. Наконец, абстрагирование не даёт возможности прикладным программам максимально использовать потенциальные возможности аппаратуры, что в ряде случаев может оказаться критичным (например, если ОС поддерживает только синхронную связь по последовательному порту, окажется невозможным использовать целый ряд устройств, работающих в асинхронном режиме передачи данных).

Таким образом, операционную систему можно рассматривать как набор механизмов абстрагирования прикладных программ от аппаратной платформы, на которой они выполняются (или, если угодно, как набор механизмов для виртуализации ресурсов).

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.