Главная » Статьи » Операционные системы » Общее |
Системные вызовы
В любой операционной системе поддерживается механизм,
который позволяет пользовательским программам обращаться к услугам ядра ОС. В
операционных системах наиболее известной советской вычислительной машины БЭСМ-6
соответствующие средства «общения» с ядром назывались экстракодами, в
операционных системах IBM
они назывались системными макрокомандами и т.д. В ОС Unix такие
средства называют системными вызовами. Системные вызовы (system calls) – это интерфейс между
операционной системой и пользовательской программой. Они создают,
удаляют и используют различные объекты, главные из которых – процессы и файлы.
Пользовательская программа запрашивает сервис у операционной системы,
осуществляя системный вызов. Имеются библиотеки процедур, которые загружают
машинные регистры определенными параметрами и осуществляют прерывание
процессора, после чего управление предается обработчику данного вызова,
входящему в ядро операционной системы. Цель таких библиотек – сделать системный
вызов похожим на обычный вызов подпрограммы. Основное отличие состоит в том, что при системном вызове
задача переходит в привилегированный режим или режим ядра (kernel mode). Поэтому системные вызовы
иногда еще называют программными прерываниями, в отличие от аппаратных
прерываний, которые чаще называют просто прерываниями. В этом режиме работает код ядра операционной системы, причем
исполняется он в адресном пространстве и в контексте вызвавшей его задачи.
Таким образом, ядро операционной системы имеет полный доступ к памяти
пользовательской программы, и при системном вызове достаточно передать адреса одной
или нескольких областей памяти с параметрами вызова и адреса одной или
нескольких областей памяти для результатов вызова. В большинстве операционных систем системный вызов
осуществляется командой программного прерывания (INT). Программное прерывание – это
синхронное событие, которое может быть повторено при выполнении одного и того
же программного кода. Прерывания
Прерывания (hardware interrupt)
– это событие, генерируемое внешним (по отношению к процессору) устройством. Посредством
аппаратных прерываний аппаратура либо информирует центральный процессор о том,
что произошло какое-либо событие, требующее немедленной реакции (например,
пользователь нажал клавишу), либо сообщает о завершении асинхронной операции
ввода-вывода (например, закончено чтение данных с диска в основную память).
Важный тип аппаратных прерываний – прерывания таймера, которые генерируются
периодически через фиксированный промежуток времени. Прерывания таймера
используются операционной системой при планировании процессов. Каждый тип
аппаратных прерываний имеет собственный номер, однозначно определяющий источник
прерывания. Аппаратное прерывание – это асинхронное событие, то есть оно
возникает вне зависимости от того, какой код исполняется процессором в данный
момент. Обработка аппаратного прерывания не должна учитывать, какой процесс
является текущим. Исключительные ситуации
Исключительная ситуация (exception) – событие,
возникающее в результате попытки выполнения программой команды, которая по
каким-то причинам не может быть
выполнена до конца. Примерами таких команд могут быть попытки доступа к ресурсу
при отсутствии достаточных привилегий или
обращения к отсутствующей странице памяти. Исключительные ситуации можно
разделить на исправимые и неисправимые. К исправимым относятся такие
исключительные ситуации, как отсутствие нужной информации в оперативной памяти.
После устранения причины исправимой исключительной ситуации программа может
выполняться дальше. Возникновение в процессе работы операционной системы
исправимых исключительных ситуаций чаще всего возникают в результате ошибок в
программах (например, деление на ноль). Обычно в таких случаях операционная система
реагирует завершением программы, вызвавшей исключительную ситуацию. Файлы
Файлы предназначены для хранения информации на внешних
носителях, то есть принято, что информация, записанная, например, на диске,
должна находиться внутри файла. Обычно под файлом понимают именованную часть
пространства на носителе информации. Главная задача файловой системы (file system) – скрыть особенности
ввода-вывода и дать программисту простую абстрактную модель файлов, независимых
от устройств. Для чтения, создания, удаления, записи, открытия и закрытия
файлов также имеется обширная категория системных вызовов (создание, удаление,
открытие, закрытие, чтение и т.д.). Пользователям хорошо знакомы такие
связанные с организацией файловой системы понятия, как каталог, текущий каталог, корневой каталог,
путь. Для манипулирования этими объектами в операционной системе имеются
системные вызовы. | |
Просмотров: 1894 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |