Архитектура операционной системы UNIX :: Бах Морис Дж.
Страница:
263 из 715
Наконец, ядро копирует параметры задачи в пространство процесса и вызывает соответствующую процедуру, которая выполняет системную функцию. После исполнения процедуры ядро выясняет, не было ли ошибки. Если ошибка была, ядро делает соответствующие установки в сохраненном регистровом контексте задачи, при этом в регистре PS обычно устанавливается бит переноса, а в нулевой регистр заносится номер ошибки. Если при выполнении системной функции не было ошибок, ядро очищает в регистре PS бит переноса и заносит возвращаемые функцией значения в регистры 0 и 1 в сохраненном регистровом контексте задачи. Когда ядро возвращается после обработки внутреннего прерывания операционной системы в режим задачи, оно попадает в следующую библиотечную инструкцию после прерывания. Библиотечная функция интерпретирует возвращенные ядром значения и передает их программе пользователя.
алгоритм syscall /* алгоритм запуска системной функции */
входная информация: номер системной функции
выходная информация: результат системной функции
{
найти запись в таблице системных функций, соответствующую указанному номеру функции;
определить количество параметров, передаваемых функции;
скопировать параметры из адресного пространства задачи в пространство процесса;
сохранить текущий контекст для аварийного завершения (см. раздел 6.
|< Пред. 261 262 263 264 265 След. >|