База полезных знаний

Модель операционной системы

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

Когда программа, запущенная в пользовательском режиме, вызывает системную службу, в процессоре выполняется специальная инструкция, переключающая вызывающий поток в режим ядра. Когда системная служба завершит свою работу, операционная система переключит контекст потока назад, в пользовательский режим, и позволит вызывающей программе продолжить свое выполнение. Windows похожа на большинство UNIX-систем тем, что она является монолитной операционной системой — в том смысле, что основная часть кода операционной системы и драйверов устройств совместно используют одно и то же защищенное пространство памяти, используемое в режиме ядра.

Это означает, что любой компонент операционной системы или драйвер устройства потенциально может разрушить данные, используемые другими компонентами операционной системы. Но в Windows реализованы такие механизмы защиты ядра, как PatchGuard и Kernel Mode Code Signing, помогающие ликвидировать и предотвратить проблемы, связанные с общим адресным пространством, используемым при работе в режиме ядра.

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

Наряду с этим быстродействием Windows обладает такими службами ядра операционной системы, как управление виртуальной памятью, файловый ввод-вывод, сеть и совместное использование файлов и принтеров.

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

Несмотря на повсеместное использование объектов для представления общих системных ресурсов, Windows, в строгом смысле слова, объектно-ориентированной системой не является. Основная часть кода операционной системы написана на языке C для решения задач переносимости. Этот язык программирования не поддерживает напрямую такие объектно-ориентированные конструкции, как динамическое связывание типов данных, полиморфные функции или наследования классов. Поэтому имеющаяся в Windows реализация объектов на основе языка C заимствует свойства, присущие объектно-ориентированным языкам, но не зависит от них.

Exit mobile version