Работа ядра в привилегированном режиме

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

Обеспечение исключительных прав операционной системы невозможно без специальных средств аппаратной поддержки. Аппаратура компьютера должна поддерживать как минимум два режима работы — пользовательский режим (user mode) и привилегированный режим, который также называют режимом ядра (kernel mode), или режимом супервизора (supervisor mode). Подразумевается, что операционная система или некоторые ее части работают в привилегированном режиме, а приложения — в пользовательском режиме.

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

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

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

Архитектура ОС, основанная на привилегированном ядре и приложениях пользовательского режима, стала классической и ее используют многие популярные операционные системы, в том числе UNIX, OS/390, OS/2, и с определенными модификациями Windows NT.

Рис. 1.11. Смена режимов при выполнении системного вызова кпривилегированному ядру

В некоторых операционных системах, например, в NetWare компании Novell, работа ядра и приложений организована в одном и том же режиме. При таком построении ОС обращения приложений к ядру выполняются быстрее, так как нет переключения режимов, однако надежная аппаратная защита памяти, используемая модулями ОС отсутствует. Надежность и стабильность работы этой ОС компенсируется тщательной отладкой каждого приложения ОС.

В одном режиме работают также те ОС, которые были разработаны для процессоров, не поддерживающих привилегированного режима работы. Процессор, подобный Intel 8088/86, используемый компанией IBM для персональных компьютеров обладал именно такой архитектурой. Операционная система MS-DOS, разработанная компанией Microsoft, состояла из двух модулей msdos.sys и io.sys, составлявших ядро системы, к которым с системными вызовами обращались командный интерпретатор command.com, системные утилиты и приложения.