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

UptoLike

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

27
библиотечными вызовами или чем-нибудь еще. Если процедуру можно выпол-
нить без системного вызова (то есть без переключения в режим работы ядра),
то обычно она работает в пространстве пользователя, потому что так быстрее.
Однако большинство процедур POSIX выполняет системные вызовы, обычно с
одной процедурой, преобразующейся напрямую в системный вызов. В некото-
рых случаях, особенно когда требуемые процедуры являются всего лишь раз-
новидностями друг друга, один системный вызов обрабатывает сразу несколько
библиотечных вызовов.
Принципы взаимодействия с ядром
В любой операционной системе поддерживается некоторый механизм,
который позволяет пользовательским программам обращаться за услугами ядра
ОС. В операционных системах наиболее известной советской вычислительной
машины БЭСМ-6 соответствующие средства общения с ядром назывались экс-
тракодами, в операционных системах IBM они назывались системными макро-
командами и т. д. В ОС UNIX такие средства называются системными
вызовами.
Название не изменяет смысл, который состоит в том, что для обращения
к функциям ядра ОС используются «специальные команды» процессора, при
выполнении которых возникает особого рода внутреннее прерывание процес-
сора, переводящее его в режим ядра (в большинстве современных ОС этот вид
прерываний называется trap ловушка). При обработке таких прерываний (де-
шифрации) ядро ОС распознает, что на самом деле прерывание является запро-
сом к ядру со стороны пользовательской программы на выполнение определен-
ных действий, выбирает параметры обращения и обрабатывает его, после чего
выполняет «возврат из прерывания», возобновляя нормальное выполнение
пользовательской программы.
Понятно, что конкретные механизмы возбуждения внутренних прерыва-
ний по инициативе пользовательской программы различаются в разных аппа-
ратных архитектурах. Поскольку ОС UNIX стремится обеспечить среду, в ко-
торой пользовательские программы могли бы быть полностью мобильны, по-
требовался дополнительный уровень, скрывающий особенности конкретного
механизма возбуждения внутренних прерываний. Этот механизм обеспечивает-
ся так называемой библиотекой системных вызовов.
Для пользователя библиотека системных вызовов представляет собой
обычную библиотеку заранее реализованных функций системы программиро-
вания языка Си. При программировании на языке Си использование любой
функции из библиотеки системных вызовов ничем не отличается от использо-
вания любой собственной или библиотечной Си-функции. Однако внутри лю-
бой функции конкретной библиотеки системных вызовов содержится код, яв-
ляющийся, вообще говоря, специфичным для данной аппаратной платформы.
Наиболее важные системные вызовы ОС UNIX рассматриваются в ос-
тавшихся разделах этой части курса и в следующей части.