Системные вызовы

размещено в: Операционные системы | 0

Системные вызовы (system calls) – это интерфейс между операционной системной (ОС)  и пользовательской программой. Они создают, удаляют и используют различные объекты. Пользовательская программа запрашивает сервис у ОС, осуществляя системный вызов. При системном вызове задача переходит в привилегированный режим или режим ядра (kernel mode). Поэтому системные вызовы иногда еще называют программными прерываниями.

Таким образом, ядро ОС  имеет полный доступ к памяти пользовательской программы, и при системном вызове достаточно передать адреса одной или нескольких областей памяти с параметрами вызова и адреса одной или нескольких областей памяти для результатов вызова.

В большинстве операционных систем системный вызов осуществляется командой программного прерывания (INT). Программное прерывание – это синхронное событие, которое может быть повторено при выполнении одного и того же программного кода.

Прерывание (hardware interrupt) – это событие, генерируемое внешним (по отношению к процессору ) устройством. Посредством аппаратных прерываний аппаратура либо информирует центральный процессор о том, что произошло какое-либо событие, требующее немедленной реакции (например, пользователь нажал клавишу), либо сообщает о завершении асинхронной операции ввода-вывода (например, закончено чтение данных с диска в основную память). Важный тип аппаратных прерываний – прерывания таймера, которые генерируются периодически через фиксированный промежуток времени. Прерывания таймера используются ОС при планировании процессов. Каждый тип аппаратных прерываний имеет собственный номер, определяющий источник прерывания.

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

Асинхронный системный вызов не приводит к переводу процесса в режим ожидания после выполнения некоторых начальных системных действий, например запуска операции вывода-вывода, управление возвращается прикладному процессу.

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

Реализация системных вызовов должна удовлетворять следующим требованиям:

— обеспечивать переключение в привилегированный режим;

— обладать высокой скоростью вызова процедур ОС;

— обеспечивать по возможности единообразное обращение к системным вызовам для всех аппаратных платформ, на которых работает ОС;

— допускать легкое расширение набора системных вызовов;

— обеспечивать контроль со стороны ОС за корректным использованием системных вызовов.

 

Оставить ответ