Хелпикс

Главная

Контакты

Случайная статья





Переносимость



1.1.2 Переносимость

Требование переносимости кода тесно связано с расширяемостью. Расширяемость

позволяет улучшать операционную систему, в то время как переносимость дает

возможность перемещать всю систему на машину, базирующуюся на другом процессоре

или аппаратной платформе, делая при этом по возможности небольшие изменения в коде..

Вопрос не в том, может ли быть система перенесена, а в том, насколько легко можно это

сделать.

Во-первых, большая часть кода должна быть написана на языке, который имеется на

всех машинах, куда предполагается переносить систему. Это означает, что код должен быть

написан на языке высокого уровня, предпочтительно стандартизованном, например, на языке С.

Во-вторых, следует учесть, в какое физическое окружение программа должна быть

перенесена. Например, ОС, построенная на 32-битовых адресах, не может быть перенесена на

машину с 16-битовыми адресами.

В-третьих, важно минимизировать или, если возможно, исключить те части кода,

которые непосредственно взаимодействуют с аппаратными средствами.

В-четвертых, если аппаратно зависимый код не может быть полностью исключен, то

он должен быть изолирован в нескольких хорошо локализуемых модулях.

Для легкого переноса ОС при ее разработке должны быть соблюдены следующие

требования:

Переносимый язык высокого уровня. Большинство переносимых ОС

написано на языке С (стандарт ANSI X3.159-1989). Разработчики выбирают язык С

потому, что он стандартизован, и потому, что С-компиляторы широко доступны.

Ассемблер используется только для тех частей системы, которые должны непосредственно

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

которые требуют максимальной скорости (например, целочисленная арифметика

повышенной точности). Однако непереносимый код должен быть тщательно изолирован

внутри тех компонентов, где он используется.

Изоляция процессора. Некоторые низкоуровневые части ОС должны иметь

доступ к процессорно-зависимым структурам данных и регистрам. Однако код, который

делает это, должен содержаться в небольших модулях, которые могут быть заменены

аналогичными модулями для других процессоров.

Изоляция платформы. Зависимость от платформы заключается в различиях

между рабочими станциями разных производителей, построенными на одном и том же

процессоре. Должен быть введен программный уровень, абстрагирующий аппаратуру

вместе со слоем низкоуровневых программ таким образом, чтобы высокоуровневый код не

нуждался в изменении при переносе с одной платформы на другую.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.