Аппаратная зависимость и переносимость операционных систем.
Не существует 100% переносимости ОС.
Переносимость – это не бинарное состоянии (переносима или нет), а понятие степени.
Понятие «степень переносимости» - усилия, которые необходимы, чтобы перенести ОС с одной платформы на другую
С точки зрения переносимости ОС состоит из 2 частей –
- аппаратно-независимая часть, пишется на ЯВУ, и переводится на язык конкретной машины с помощью транслятора С для этой машины
- аппаратно-зависимая часть, пишется на Ассемблере специально для этой машины.
Для увеличения степени переносимости ОС нужно
· уменьшить объем аппаратно-зависимой части
· писать большую часть системы на ЯВУ и пользоваться транслятором.
· Локализовать аппаратно-зависимую часть в нескольких модулях (чтобы она не была разбросана по всей системе)
Например, в Виндовс НТ:
· Существует специальный слой HAL (Hardware Abstraction Level), в котором локализованы все машинно зависимые функции ОС. Этот слой аппаратно зависимый, и включает в себя поддержку разного железа (х86, Итаниум, МИПС и тд). Он абстрагирован от архитектуры ОС.
Эти части системы, которые являются аппаратно-зависимыми, пишутся на ассемблере:
- обработчики прерываний,
- переключение контекста
- средства поддержки привилегированного режима
- системный таймер
- средства защиты областей памяти
- средства трансляции адреса.
Все остальное ПО в системе контактирует с ней через этот слой.
· Все остальные компоненты ядра пишутся на С
- Исполнительная система, утилиты, драйверы
- UI и подсистема GDI
Эти функции переводятся на язык разных процессоров с помощью трансляторов.
В системе реализована многослойная архитектура, и специфичные для этой архитектуры функции локализуются в ядре.