Аппаратная зависимость и переносимость операционных систем.

Не существует 100% переносимости ОС.

Переносимость – это не бинарное состоянии (переносима или нет), а понятие степени.

Понятие «степень переносимости» - усилия, которые необходимы, чтобы перенести ОС с одной платформы на другую

 

С точки зрения переносимости ОС состоит из 2 частей –

- аппаратно-независимая часть, пишется на ЯВУ, и переводится на язык конкретной машины с помощью транслятора С для этой машины

- аппаратно-зависимая часть, пишется на Ассемблере специально для этой машины.

 

Для увеличения степени переносимости ОС нужно

· уменьшить объем аппаратно-зависимой части

· писать большую часть системы на ЯВУ и пользоваться транслятором.

· Локализовать аппаратно-зависимую часть в нескольких модулях (чтобы она не была разбросана по всей системе)

 

Например, в Виндовс НТ:

· Существует специальный слой HAL (Hardware Abstraction Level), в котором локализованы все машинно зависимые функции ОС. Этот слой аппаратно зависимый, и включает в себя поддержку разного железа (х86, Итаниум, МИПС и тд). Он абстрагирован от архитектуры ОС.

 

Эти части системы, которые являются аппаратно-зависимыми, пишутся на ассемблере:

- обработчики прерываний,

- переключение контекста

- средства поддержки привилегированного режима

- системный таймер

- средства защиты областей памяти

- средства трансляции адреса.

Все остальное ПО в системе контактирует с ней через этот слой.

 

· Все остальные компоненты ядра пишутся на С

- Исполнительная система, утилиты, драйверы

- UI и подсистема GDI

Эти функции переводятся на язык разных процессоров с помощью трансляторов.

 

В системе реализована многослойная архитектура, и специфичные для этой архитектуры функции локализуются в ядре.