Лекция: Машинно-зависимый комплекс ОС

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

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

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

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

Для компьютеров на основе процессоров Intel x86/Pentium разработка экранирующего машинно-зависимого слоя ОС несколько упрощается за счет встроенной в постоянную память компьютера базовой системы ввода-вывода – BIOS. BIOS содержит драйверы для всех устройств, входящих в базовую конфигурацию компьютера: жестких и гибких дисков, клавиатуры, дисплея и т. д. Эти драйверы выполняют весьма примитивные операции с управляемыми устройствами, например чтение группы секторов данных определенной дорожки диска, но за счет этих операций экранируются различия аппаратных платформ ПК и серверов на процессорах Intel разных производителей. Разработчики ОС могут пользоваться слоем драйверов BIOS как частью машинно-зависимого слоя ОС, а могут заменить все или часть драйверов BIOS компонентами ОС.

 

еще рефераты
Еще работы по информатике