Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Общая характеристика структуры ОС Windows 2000,основные изменения в ней по сравнению с ОС Windows NT



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

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

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

ОС Windows 2000 разделена на несколько уровней, каждый из которых пользуется службами лежащего ниже уровня. Эта структура показана на рис. 7.4. Затененная область обозначает исполняющую систему, квадратики, помеченные символом D, обозначают драйверы устройств. Сервисные процессы являются системными демонами (системными службами). Один из уровней разделен горизонтально на множество модулей. У каждого модуля есть определенная функция, а также четко определенный интерфейс для взаимодействия с другими модулями. Два нижних уровня программного обеспечения - уровень аппаратных абстракций (HAL, Hardware Abstraction Layer) и ядро - написаны на языке С и ассемблере и являются частично машинно-зависимыми. Верхние уровни написаны исключительно на С и почти полностью машинно-независимы. Драйверы написаны на С или в некоторых случаях на C++. Хотя и можно добиться полной переносимости верхних уровней ОС, нижние уровни работают с регистрами устройств, прерываниями, DMA и другими аппаратными особенностями, которые очень сильно отличаются на разных машинах.

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


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

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

В уровень HAL включены те службы, которые зависят от набора микросхем материнской платы и меняются от машины к машине в разумных предсказуемых пределах. Другими словами, он разработан так, чтобы скрывать различия между материнскими платами различных производителей, но не различия между процессорами, например, Pentium и Alpha. Программы HAL находятся в файле hal.dll каталога %System Root%\system32. Операционная система связывается с драйвером устройства, драйвер - с механизмом HAL, который непосредственно разговаривает с аппаратными средствами.

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

Уровень HAL не предоставляет абстракций или служб для специфических устройств ввода-вывода - клавиатур, мышей или дисков, а также блоков управления памятью MMU (Memory Management Unit). В качестве примера того, что делает уровень аппаратных абстракций, рассмотрим вопрос устройств ввода-вывода с отображаемыми на память регистрами устройств ввода-вывода, доступ к которым осуществляется через порты.

На некоторых машинах используется один способ доступа к устройствам ввода-вывода, а на других машинах -другой. Как должен быть запрограммирован драйвер- на использование портов или регистров? Вместо того чтобы заставлять делать выбор в пользу одного или другого метода, что приведет к невозможности переноса драйвера с одной платформы на другую, уровень HAL предоставляет три процедуры для чтения регистров устройств и еще три для записи в них: uc = READ_PORT_UCHAR(port); WRITE_PQRT_UCHAR(port, uc); us = READ_PORT_USHORT(port); WRITE_PORT_ USHORT (port, us); ul - READ_ PORT_ULONG(port); WRITE_PORT_ USHORT (port, ul);

Эти процедуры читают и пишут соответственно 8-, 16- и 32-разрядные целые числа без знака в указанный порт. Реализацией этих действий в виде обращения к физическим портам или регистрам, отображаемым на память, занимается уровень HAL. Таким образом, драйвер без каких-либо изменений может быть перемещен на другую платформу. После загрузки ОС уровень HAL общается с BIOS и CMOS, чтобы определить, какие шины и устройства ввода-вывода содержатся в системе и как их следует настроить. Затем эта информация помещается в реестр, чтобы другие компоненты системы могли просматривать их, не обращаясь напрямую к BIOS- или CMOS-памяти. Схематично набор функций, выполняемый уровнем HAL, показан на рис. 7.5.

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

Во время установки системы из них выбирается подходящий уровень и копируется на жесткий диск в каталог \winnt\system32 в виде файла hal.dll. При всех последующих запусках ОС используется эта версия уровня HAL. Если удалить этот файл, то система загрузиться не сможет. Следует отметить, что использование HAL означает увеличение времени на прохождение запроса от программы пользователя до требуемого устройства. Возникает вопрос оценки потерь производительности системы. Поэтому иногда поставщики предлагают пользовательские версии HAL для оптимизации Windows 2000.





Дата публикования: 2014-11-04; Прочитано: 578 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...