Отправляет email-рассылки с помощью сервиса Sendsay

Внутренее устройство Windows

  Все выпуски  

Внутренее устройство Windows


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

В большинстве многопользовательских операционных систем приложения отделены от собственно операционной системы: код ее ядра выполняется в привилигированном режиме процессора (называемом режимом ядра),который обеспечивает доступк системным данным и оборудованию.Код приложений выполняется и не в привилигированном режиме процессора (называемом пользовательским) с не полным набором интерфейсов,ограниченным доступом к системным данным и без прямого доступа к оборудованию.Когда прорамма пользовательского режима вызывает системный сервис,процессор перехватывает вызов и переключает вызывающий поток в режим ядра.По окончании работы системного сервиса операционная система переключает контекст потока обратно в пользовательский режим и продолжает его выполнение.
 Windows,как и большинство UNIX-систем,является моголитной операционной системой - в том смысле,что большая часть ее кода и драйверов использует одно и тоже пространство защищенной памяти режима ядра.Это значит,что любой компонент операционной системы или драйвер устройства потенциально способен повредить данные,используемые другими компонентами операционной системы.
 Основана ли Windows на микроядре?Хотя некоторые объявляют ее таковой,Windows неявляется операционной системой на основе микроядра в классическом понимании этого термина.В подобных системах основные компоненты операционной системы (диспетчеры памяти,процессов,ввода-вывода) выпоняются как отдельные процессы в собственных адресных пространствах и представляют собой надстройки над примитивными сервисами микроядра.Пример современной системы с архитектурой на основе микроядра - операционная система Mach,разработанная в Carniege Melon University.Она реализует крошечное ядро,которое включает сервисы планирования потоков,передачи сообщений,виртуальной памяти и драйверов устройств.Все остальное,в том числе разнообразные API,файловые системы и поддержка сетей,работает в пользовательском режиме.Однако в коммерческих реализациях на основе микроядра Mach код файловой системы,поддержки сетей и управления памятью выполняется в режиме ядра.Причина проста: системы,построенные строго по принципу микроядра,непрактичны с коммерческой точки зрения из-за слишком низкой эффективности.
 Означает ли тот факт,что большая часть Windows работает в режиме ядра,ее меньшую надежность в сравнении с операционными системами на основе микроядра?Вовсе нет.Рассмотрим следующий сценарий.Допустим,в коде файловой системы имеется ошибка,которая время от времени приводит к краху системы.Ошибка в коде режима ядра (например,в диспетчере памяти или файловой системы) скорее всего вызовет полный крах традиционной операционной системы.В истинной операционной системе на основе микроядра подобные компоненты выполняются в пользовательском режиме,поэтому теоретически ошибка приведет лишь к завершению процесса соответсвующего компонента.Но на практике такая ошибка все равно вызовет крах системы,так как востановление после сбоя столь критически важного процесса невозможно.
 Все эти компоненты операционной системы,конечно,полностью защищены от сбойных приложений,поскольку такие программы не имеют прямого доступа к коду и данным привилигированной части операционной системы (хотя и способны вызывать сервисы ядра).Эта защита - одна из причин,по которым Windows заслужила репутацию отказоустойчивой и стабильной операционной системы в качестве сервера приложений и платформы рабочих станций,обеспечивающей быстродействие основных системных сервисов вроде поддержки виртуальной памяти,файлового ввода-вывода,работы с сетями и доступа к общим файлам и принтерам.
 Компоненты Windows режима ядра также построены на принципах объектно-ориентированного программированния.Так,для получения информации о каком-либо компоненте они,как правило,не обращаются к его структурам данных.Вместо этого для передачи параметров,доступа к структурам данных и их изменения используются формальные интерфейсы.
 Однако,несмотря на широкое использование объектов,представляющих разделяемые системные ресурсы,Windows не является объектно-ориентированной системой в строгом понимании этого термина.Большая часть системного кода написана на С в целях переносимости и из-за широкой распространенности средств разработки на С.В этом языке нет прямой поддержки конструкций и механизмов ООП вроде динамического связывания типов данных,полиморфных функций или наследования классов.

В избранное