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

Свойства операционных систем

Расширяемость. Код должен быть написан таким образом, чтобы можно было

легко внести дополнения и изменения, без нарушения целостности системы.

Переносимость. Код должен легко переноситься с процессора одного типа на

процессор другого типа и с аппаратной платформы (которая включает наряду с типом

процессора и способ организации всей аппаратуры компьютера) одного типа на

аппаратную платформу другого типа.

Надежность и отказоустойчивость. Система должна быть защищена как от

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

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

Совместимость. ОС должна иметь средства для выполнения прикладных

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

интерфейс должен быть совместим с существующими системами и стандартами.

Безопасность. ОС должна обладать средствами защиты ресурсов одних

пользователей от других.

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

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

Расширяемость

В то время как аппаратная часть компьютера устаревает за несколько лет,

полезная жизнь операционных систем может измеряться десятилетиями. Примером может

служить ОС UNIX. Изменения ОС обычно представляют собой приобретение ею новых

свойств. Например, поддержка новых устройств; возможность связи с сетями нового типа,

поддержка таких технологий как графический интерфейс пользователя или объектно-

ориентированное программное окружение; использование более чем одного процессора.

Расширяемость может достигаться за счет модульной структуры ОС, при которой

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

функциональный интерфейс.

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

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

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

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

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

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

сделать.

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

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

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

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

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

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

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

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

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

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

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

требования:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: