Интерфейсы операционных систем
Напомним, что операционная система всегда выступает как интерфейс между аппаратурой компьютера и пользователем с его задачами. Под интерфейсами операционных систем здесь и далее следует понимать специальные интерфейсы системного и прикладного программирования (API), предназначенные для выполнения перечисленных ниже задач.
- Управление процессами, которое включает в себя следующий набор основных функций:
■ запуск, приостанов и снятие задачи с выполнения;
■ задание или изменение приоритета задачи;
■ взаимодействие задач между собой (механизмы сигналов, семафорные при
митивы, очереди, конвейеры, почтовые ящики);
■ вызов удаленных процедур (Remote Procedure Call, RPC).
- Управление памятью:
■ запрос на выделение блока памяти;
■ освобождение памяти;
■ изменение параметров блока памяти (например, память может быть забло
кирована процессом либо предоставлена в общий доступ);
■ отображение файлов на память (имеется не во всех системах).
Интерфейсы операционных систем______________________________________ 297
- Управление вводом-выводом:
■ запрос на управление виртуальными устройствами (напомним, что управ
ление вводом-выводом является привилегированной функцией самой опе
рационной системы, и никакая из пользовательских задач не должна иметь
возможности непосредственно управлять устройствами);
■ файловые операции (запросы к системе управления файлами на создание,
изменение и удаление данных, организованных в файлы).
Здесь мы перечислили основные наборы функций, которые выполняются операционной системой по соответствующим запросам от задач. Что касается интерфейса пользователя с операционной системой, то он реализуется с помощью специальных программных модулей, которые принимают его команды на соответствующем языке (возможно, с использованием графического интерфейса) и транслируют их в обычные вызовы в соответствии с основным интерфейсом системы. Обычно эти модули называют интерпретатором команд. Так, например, функции такого интерпретатора в MS DOS выполняет модуль COMMAND.COM. Получив от пользователя команду, такой модуль после лексического и синтаксического анализа либо сам выполняет действие, либо, что случается чаще, обращается к другим модулям операционной системы, используя механизм API. Надо заметить, что в последние годы большую популярность получили графические интерфейсы (Graphical User Interface, GUI), в которых задействованы соответствующие манипуляторы типа мышь или трекбол (track-ball)'. Указание курсором на объект и щелчок или двойной щелчок на соответствующей кнопке мыши приводит к каким-либо действиям — запуску программы, ассоциированной с объектом, выбору и/или активизации меню и т. д. Можно сказать, что такая интерфейсная подсистема транслирует «команды» пользователя в обращения к операционной системе.
Поясним также, что управление GUI является частным случаем задачи управления вводом-выводом и не относится к функциям ядра операционной системы, хотя в ряде случаев разработчики операционной системы относят функции GUI к основному системному интерфейсу API.
Следует отметить, что имеются два основных подхода к управлению задачами. Так, в одних системах порождаемая задача наследует все ресурсы задачи-родителя, тогда как в других системах существуют равноправные отношения, и при порождении нового процесса ресурсы для него запрашиваются у операционной системы.
Обращения к операционной системе в соответствии с имеющимся интерфейсом API могут осуществляться как посредством вызова подпрограммы с передачей ей необходимых параметров, так и через механизм программных прерываний. Выбор метода реализации вызовов функций API должен определяться архитектурой платформы.
1 Трекбол — специальный шарик, который в переносных компьютерах (NoteBook) размещается рядом с клавиатурой, прокручивается пальцами и служит для перемещения указателя мыши. В настоящее время гораздо чаще используют устройство, чувствительное к касанию (touchpad). С помощью такого устройства пользователь управляет указателем мыши, перемещая палец по специальной поверхности.
298______________________________ Глава 9. Архитектура операционных систем
Так, например, в операционной системе MS DOS, которая разрабатывалась для
однозадачного режима (поскольку процессор i80x86 не поддерживал мультипро
граммирование), использовался механизм программных прерываний. При этом
основной набор функций API был доступен через точку входа обработчика int 21 h.
В более сложных системах имеется не одна точка входа, а множество — по количеству функций API. Так, в большинстве операционных систем используется метод вызова подпрограмм. В этом случае вызов сначала передается в модуль API, например в библиотеку времени выполнения (Run Time Library, RTL)', который перенаправляет его соответствующим обработчикам программных прерываний, входящим в состав операционной системы. Использование механизма прерываний вызвано, главным образом, тем, что при этом процессор переводится в режим супервизора.