Общая структура операционной системы Windows 2000

Операционная система Windows 2000 представляет собой улучшенную версию Windows NT 4.0 с интерфейсом Windows 98, благодаря которому она осуществляла полную поддержку устройств plug-and-play, шины USB, стандарта IEEE 1394 (FireWire), IrDA (Infrared Data Association – стандарт на инфракрасную передачу данных и вывод на печать, разработанный ассоциацией IrDA), управление питанием. Кроме того, были добавлены новые функций, не присутствовавших ранее в других операционных системах корпорации Microsoft:

- каталоговая служба Active Directory;

- система безопасности Kerberos;

- поддержка смарт-карт;

- инструменты мониторинга системы;

- лучшая интеграция ноутбуков и настольных компьютеров;

- инфраструктура системного администрирования;

- рабочие объекты;

- интернационализация (при установке системы и даже для каждого пользователя можно выбрать язык, который будет использоваться во время работы системы);

- операционная система MS-DOS заменена на новую 32-х разрядную программу, включающую функциональность системы MS-DOS и ряд новых функций;

- добавлена новая функция файловой системы NTFS, при использовании которой два пользователя могут совместно использовать один связанный файл; как только один из пользователей начинает запись в этот файл, автоматически создается копия файла.

Несмотря на многочисленные свойства, способствующие переносимости системы с точки зрения программ, аппаратуры, языков и пр., операционная система Windows 2000 обладает меньшей переносимостью, чем Windows NT 4.0. Она работает только на двух платформах: Pentium и Intel IA-642. Изначально операционная система Windows NT поддерживала дополнительные платформы: PowerPC, MIPS и Alpha, но по коммерческим соображениям корпорация Microsoft перестала поддержи­вать эти процессоры.

Как и предыдущие версии Windows NT, Windows 2000 поставляется в виде нескольких уровней продукта: Professional, Server, Advanced server и Datacenter Server. Однако различия между версиями незначительны, так как в них используется один и тот же исполняемый двоичный код. При установке системы тип продукта записывается во внутренней базе данных (системном реестре). Во время загрузки операционная система проверяет содержимое реестра, определяя версию программного продукта. Формально различием в версиях управляют в нескольких местах программы всего две переменные, считываемые из реестра: ProductType и ProductSuite. В зависимости от их значений выполняется слегка отличный код. Изменение значений этих переменных рассматривается как нарушение лицензии. Кроме того, система перехватывает любые попытки изменить их и регистрирует эти попытки нестираемым способом, так что впоследствии можно доказать факт нарушения лицензии.

Кроме основной операционной системы, корпорация Microsoft также разработала несколько инструментальных программ для продвинутых пользователей: Support Tools, Software Development Kit, Driver Development Kit и Resource Kit. Это большие наборы утилит для отладки и мониторинга системы. Инструментарий поддержки распространяется на компакт-диске Windows 2000 в каталоге \ support \ tools. Файлы не устанавливаются стандартной процедурой, но их можно установить специальной программой setup.exe, расположенной в этом же каталоге.

Операционная система 2000 состоит из двух основных частей: модуля операционной системы, работающей в режиме ядра, и подсистем окружения, работающих в режиме пользователя. Подсистемы окружения представляют собой отдельные подпрограммы, помогающие пользователю выполнять определенные функции.

Одно из многих усовершенствований операционной системы Windows NT заключалось в ее модульной структуре – относительно небольшого ядра, работавшего в привилегированном режиме, и нескольких серверных процессов, работавших в режиме пользователя. Процессы пользователя взаимодействовали с серверными процессами с помощью модели «клиент-сервер»: клиент посылал серверу сообщение, а сервер выполнял определенную работу и возвращал клиенту результат в ответном сообщении. Такая модульная структура упрощала перенос системы на другие платформы. В результате операционная система Windows NT была успешно перенесена на платформы с процессорами, отличными от процессоров Intel: Alpha корпорации DEC, Power PC корпорации IBM и MIPS фирмы SGI. Кроме того, такая структура защищала ядро от ошибок в коде серверов. Однако для увеличения производительности, начиная с версии Windows NT 4.0, большая часть операционной системы (например, управление системными вызовами и вся экранная графика) были возвращены в ядро. Такая схема сохранилась и в Windows 2000.

Система подразделяется на несколько уровней, каждый из которых пользуется службами нижележащего уровня (рис. 4.2). Исполняющая подсистема представлена системными службами, разделенными на модули, каждый из которых выполняет определенную функцию и имеет определенный интерфейс для взаимодействия с другими модулями. Два нижних уровня программного обеспечения: уровень аппаратных абстракций (HAL, Hardware Abstraction Layer) и ядро написаны на языке С и ассемблере и являются частично машинно-зависимыми. Верхние уровни написаны только на языке С и полностью машинно-независимы. Драйверы написаны на языке С или C++.

 
 

1. Уровень HAL. Одна из целей создания Windows 2000 и Windows NT заключалась в возможности переносить систему на другие платформы. Теоретически на новой машине для запуска операционной системы достаточно перекомпилировать операционную систему новым компилятором для данной машины. Можно добиться полной переносимости верхних уровней операционной системы, так как в основном они имеют дело с внутренними структурами данных. Нижние же уровни работают с регистрами устройств, прерываниями, контроллером прямого доступа к памяти и другими аппаратными устройствами, которые могут сильно отличаются на разных машинах. Хотя большая часть кода нижнего уровня написана на языке С, но его нельзя просто перенести с процессора одного типа на процессор другого типа, перекомпилировать и перезагрузить из-за большого количества мелких различий между разными типами процессоров.

Корпорация Microsoft решила скрыть многие из аппаратных различий в тонком уровне аппаратных абстракций (HAL, Hardware Abstraction Layer). Работа уровня заключается в том, чтобы предоставлять остальной системе абстрактные аппаратные устройства, свободные от индивидуальных отличительных особенностей аппаратного обеспечения. Эти устройства представляются в виде машинно-независимых служб, (процедурных вызовов и макросов), которые могут использоваться остальной операционной системой и драйверами. Поскольку драйверы и ядро пользуются службами HAL и не обращаются напрямую к устройствам, требуется значительно меньше изменений для их переноса на другую платформу. Перенос уровня HAL достаточно прост, так как весь машинно-зависимый код сконцентрирован в одном месте. В уровень HAL включены службы, которые зависят от набора микросхем материнской платы и меняются от машины к машине в разумных предсказуемых пределах:

- доступ к регистрам устройств;

- адресация к устройствам, независящим от шины;

- обработка прерываний и возврат из прерываний;

- операции DMA (Direct Memory Access – прямой доступ к памяти);

- управление таймерами, часами реального времени, блокировками нижнего уровня;

- синхронизация многопроцессорных конфигураций;

- интерфейс с BIOS и доступ к CMOS -памяти.

Уровень HAL не предоставляет абстракций или служб для специфических устройств ввода-вывода (клавиатур, мышей, дисков), а также блоков управления памятью. Так как уровень HAL является машинно-зависимым, он должен соответствовать системе, на которую установлен, поэтому набор различных уровней поставляется на установочном компакт-диске Windows 2000. Во время установки системы выбирается подходящий уровень и копируется на жесткий диск в системный каталог \ winnt \ system32 \ в виде файла hal.dll. Хотя эффективность уровня высока, для мультимедийных приложений корпорация Microsoft дополнительно поставляет пакет программного обеспечения DirectX, расширяющий функциональность уровня HAL дополнительными процедурами и предоставляющий пользовательским процессам прямой доступ к аппаратному обеспечению.

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

Назначение ядра заключается в том, чтобы сделать остальную часть операционной системы независимой от аппаратуры и легко переносимой на другие платформы. Ядро получает доступ к аппаратуре через уровень HAL. Оно построено на низкоуровневых службах уровня HAL, формируя из них абстракции более высоких уровней.

Например, уровень HAL содержит вызовы для связывания процедур обработки прерываний с прерываниями и установки их приоритетов, а ядро предоставляет полный механизм для переключения контекста: сохраняет все регистры центрального процессора, изменяет таблицы страниц, сохраняет кэш центрального процессора и т.д. Когда все действия выполнены, работавший ранее поток[2] оказывается полностью сохраненным в таблицах, расположенных в памяти. Затем ядро настраивает карту памяти нового потока и загружает его регистры, после чего новый поток готов к работе.

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

Третья ключевая функция ядра заключается в: предоставлении низкоуровневой поддержки двум классам объектов – управляющим объектам и объектам диспетчеризации, которые представляют собой внутренние объекты, на основе которых исполняющая система строит объекты пользователя. Управляющие объекты – это объекты, управляющие системой, включая примитивные объекты процессов, объекты прерываний, объект DPC (Deferred Procedure Call), отложенный вызов процедуры; объект АРС (Asynchronous Procedure Call), асинхронный вызов процедуры.

Объект DPC используется, чтобы отделить часть процедуры обработки прерываний, для которой время является критичным, от той ее части, для которой время некритично. Как правило, процедура обработки прерываний сохраняет несколько аппаратных регистров, связанных с прерывающим устройством ввода-вывода, чтобы их можно было восстановить, и разрешает аппаратуре продолжать работу. Очередь DPC представляет собой механизм напоминания о том, что есть работа, которую следует выполнить позднее. Объект АРС отличается тем, что асинхронный вызов процедуры выполняется в контексте определенного процесса. К объектам диспетчеризации относятся: семафоры [3], мьютексы [4], события [5], таймеры [6] и другие объекты, изменение состояния которых могут ждать потоки. Эти объекты напрямую связаны с планированием потоков, поэтому частично обрабатываются ядром.

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

- Менеджер объектов управляет всеми объектами операционной системы: процессами, потоками, файлами, каталогами, семафорами устройствами ввода-вывода, таймерами и др.; кроме того, управляет пространством имен, в которое помещается созданный объект, чтобы впоследствии к нему можно было обратиться по имени. При создании объекта менеджер объектов получает в адресном пространстве ядра блок виртуальной памяти и возвращает этот блок в список свободных блоков, когда объект уничтожается.

- Менеджер ввода-вывода формирует каркас для управления устройствами ввода-вывода и предоставляет общие службы ввода-вывода. Он предоставляет остальной части системы независимый от устройств ввод-вывод, вызывая для выполнения физического ввода-вывода соответствующий драйвер. Файловые системы формально являются драйверами устройств под управлением менеджера ввода-вывода.

- Менеджер процессов управляет процессами и потоками, включая их создание и завершение, он является ключевым элементом многозадачности. Менеджер процессов основывается на объектах потоков и процессов ядра и добавляет к ним дополнительные функции.

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

- Менеджер безопасности приводит в исполнение механизм безопасности, удовлетворяющий требованиям класса С2 Оранжевой книги Министерства обороны США.

- Менеджер кэша хранит в памяти блоки диска, которые использовались в последнее время, чтобы ускорить доступ к ним в случае, если они понадобятся вновь. Количество памяти, выделенной для кэша, динамически изменяется и может увеличиваться или уменьшаться при необходимости. Менеджер кэша будет описан в разделе «Кэширование в Windows 2000».

- Менеджер plug-and-play получает все уведомления об установленных новых устройствах. Некоторые устройства проверяются при загрузке системы, другие – могут подключаться в любое время. При подключении запускается пересылка сообщения менеджеру plug-and-play, который находит и загружает соответствующий драйвер.

- Менеджер энергопотребления управляет потреблением электроэнергии: отключает монитор и диски, если к ним не было обращений в течение определенного интервала времени; следит за состоянием батарей на переносных компьютерах и сообщает работающим программам об их состоянии.

- Менеджер конфигурации отвечает за состояние реестра. Он добавляет новые записи и ищет запрашиваемые ключи.

- Менеджер вызова локальной процедуры обеспечивает высокоэффективное взаимодействие между процессами и их подсистемами.

4. Интерфейс графических устройств. Исполняющий модуль Win32 GDI (Graphic Device Interface) изначально располагался в пространстве пользователя, но в версии Windows NT 4.0 был перенесен в пространство ядра для увеличения производительности. Win32 GDI управляет графическими изображениями для монитора и принтеров. Он содержит оконный менеджер и драйвер дисплея и предоставляет системные вызовы, позволяющие пользовательским программам выводить данные на монитор и принтеры независящим от устройств способом.

5. Уровень системных служб. Уровень располагается над исполняющей системой. Его функция заключается в предоставлении интерфейса к исполняющей системе – приеме системных вызовов Windows 2000 и вызове других частей исполняющей системы для их выполнения.

При загрузке операционная система Windows 2000 загружается в память как набор файлов. Основная часть операционной системы, состоящая из ядра и исполняющей системы, хранится в файле ntoskml.exe. Уровень HAL представляет собой библиотеку общего доступа, расположенную в отдельном файле hal.dll. Интерфейс Win32 и интерфейс графических устройств хранятся вместе в файле win32k.sys. После загрузки ядра операционной системы и исполняющих модулей загружаются драйвера устройств, большинство из которых имеет расширение. sys.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: