Операционные системы: архитектура и управление процессами. Макаров П.С. - 26 стр.

UptoLike

Составители: 

26
собой обычную команду вызова процедуры и применяется для вызова
любых процедур.
Библиотечная процедура, возможно, написанная на ассемблере, обычно
помещает номер системного вызова туда, где его ожидает операционная систе-
ма, например в регистр (шаг 5). Затем она выполняет команду TRAP (эмулиро-
ванное прерывание) для переключения из пользовательского режима в режим
ядра и начинает выполнение с фиксированного адреса внутри ядра (шаг 6). За-
пускаемая программа ядра проверяет номер системного вызова и затем отправ-
ляет его нужному обработчику, как правило, используя таблицу указателей
на обработчики системных вызовов, индексированную по номерам вызовов
(шаг 7). В этом месте начинает функционировать обработчик системных вызо-
вов (шаг 8). Как только он завершает свою работу, управление может возвра-
щаться в пространство пользователя к библиотечной процедуре, к команде,
следующей за командой TRAP (шаг 9). Эта процедура в свою очередь передает
управление программе пользователя обычным способом, которым производит-
ся возврат из вызванной процедуры (шаг 10).
Чтобы закончить работу, программа пользователя должна очистить стек,
как это делается и после каждого вызова процедуры (шаг 11). Учитывая, что
стек растет вниз, последняя команда увеличивает указатель стека ровно на-
столько, насколько нужно для удаления параметров, помещенных в стек перед
запросом read. Теперь программа может продолжать свою работу.
На шаге 9 мы использовали выражение «может возвращаться в простран-
ство пользователя к библиотечной процедуре...» не просто так. Системный вы-
зов может блокировать вызвавшую его процедуру, препятствуя продолжению
ее работы. Например, если она пытается прочесть что-то с клавиатуры, а там
еще ничего не набрано, процедура должна быть блокирована. В этом случае
операционная система ищет процесс, который может быть запущен следую-
щим. Позже, когда нужное устройство станет доступно, система вспомнит о
блокированном процессе и шаги 9 11 будут выполнены.
В следующих разделах мы рассмотрим некоторые из наиболее часто при-
меняющихся системных вызовов стандарта POSIX или, точнее, библиотечных
процедур, которые выполняют эти вызовы. В POSIX существует более 100 про-
цедурных вызовов. Далее мы кратко опишем каждый вызов его действие.
Службы, предоставляемые этими вызовами, в значительной степени определя-
ют действий операционной системы, так как управление ресурсами на персо-
нальном компьютере минимально (по крайней мере, по сравнению с большими
машинами, на которых работают несколько пользователей). К этим службам
относятся такие функции, как создание и завершение процессов, создание, уда-
ление, чтение и запись файлов, управление каталогами, выполнение ввода и
вывода.
Особое внимание следует обратить на то, что преобразование вызовов
процедур POSIX в системные вызовы не является взаимно однозначным. Стан-
дарт POSIX определяет ряд процедур, которые должны поддерживать совмес-
тимые системы, но он не указывает, являются ли они системными вызовами,