Проектирование реляционных баз данных. Ковалев А.В - 71 стр.

UptoLike

73
как CD-ROM, возможность связи с сетями нового типа, поддержка многообещающих техноло-
гий, таких как графический интерфейс пользователя или объектно-ориентированное программ-
ное окружение, использование более чем одного процессора. Сохранение целостности кода,
какие бы изменения не вносились в операционную систему, является главной целью разработ-
ки.
Расширяемость может достигаться за счет модульной структуры ОС, при которой про-
граммы строятся из набора отдельных модулей, взаимодействующих только через функцио-
нальный интерфейс. Новые компонен ты могут быть добавлены в операционную систему мо-
дульным путем, они выполняют свою работу, используя интерфейсы, поддерживаемые сущест-
вующими компонентами.
Использование объектов для представления системных ресурсов также улучшает расши-
ряемость системы. Объекты - это абстрактные типы данных, над которыми можно производить
только те действия, которые предусмотрены специальным набором объектных функций. Объ-
екты позволяют единообразно управлять системными ресурсами. Добавление новых объектов
не разрушает существующие объекты и не требует изменений существующего кода.
Прекрасные возможности для расширения предоставляет подход к структурированию
ОС по типу клиент-сервер с использованием микроядерной технологии. В соответствии с этим
подходом ОС строится как совоку пность привилегированной управляющей программы и набо-
ра непривилегированных услуг-серверов. Основная часть ОС может оставаться неизменной в то
время, как могут быть добавлены новые серверы или улучшены старые.
Средства вызова удаленных процедур (RPC) также дают возможность расширить функ-
циональные возможности ОС. Новые программные процедуры могут быть добавлены в любую
машину сети и немедленно поступить в распоряжение прикладных программ на других маши-
нах сети.
Некоторые ОС для улучшения расширяемости поддерживают загружаемые драйверы,
которые могут быть добавлены в систему во время ее работы. Новые файловые системы, уст-
ройства и сети могут поддерживат ься путем написания драйвера устройства, драйвера файло-
вой системы или транспортного драйвера и загрузки его в систему.
4.6.3. Переносимость
Требование переносимости кода тесно связано с расширяемостью. Расширяемость по-
зволяет улучшать операционную систему, в то время как переносимость дает возможность пе-
ремещать всю систему на машину, базирующуюся на другом процессоре или аппаратной плат-
форме, делая при этом по возможности небольшие изменения в коде. Хотя ОС часто описыва-
ются либо как переносимые, либо как непереносимые, переносимость - это не бинарное состоя-
ние. Вопрос не в том, может ли быть система перенесена, а в том, насколько легко можно это
сделать. Написание переносимой ОС аналогично написанию любого переносимого кода - нуж-
но следовать некоторым правилам.
Во-первых, большая часть кода должна быть написана на языке, который имеется на
всех машинах, куда вы хотите переносить систему . Обычно это означает, что код должен быть
написан на языке высокого уровня, предпочтительно стандартизованном, например, на языке С.
Программа, написанная на ассемблере, не является переносимой, если только вы не собираетесь
переносить ее на машину, обладающую командной совместимостью с вашей.
Во-вторых, следует учесть, в какое физическое окружение программа должна быть пере-
несена. Различная аппаратура требует различных решений при создании ОС. Например, ОС,
построенная на 32-битовых адресах, не может быть перенесена на машину с 16-битовыми адре-
сами (разве что с огромными трудностями).
В-третьих, важно минимизировать или , если возможно, исключить те части кода, кото-
рые непосредственно взаимодействуют с аппаратными средствами. Зависимость от аппаратуры
как CD-ROM, возможность связи с сетями нового типа, поддержка многообещающих техноло-
гий, таких как графический интерфейс пользователя или объектно-ориентированное программ-
ное окружение, использование более чем одного процессора. Сохранение целостности кода,
какие бы изменения не вносились в операционную систему, является главной целью разработ-
ки.
       Расширяемость может достигаться за счет модульной структуры ОС, при которой про-
граммы строятся из набора отдельных модулей, взаимодействующих только через функцио-
нальный интерфейс. Новые компоненты могут быть добавлены в операционную систему мо-
дульным путем, они выполняют свою работу, используя интерфейсы, поддерживаемые сущест-
вующими компонентами.
       Использование объектов для представления системных ресурсов также улучшает расши-
ряемость системы. Объекты - это абстрактные типы данных, над которыми можно производить
только те действия, которые предусмотрены специальным набором объектных функций. Объ-
екты позволяют единообразно управлять системными ресурсами. Добавление новых объектов
не разрушает существующие объекты и не требует изменений существующего кода.
       Прекрасные возможности для расширения предоставляет подход к структурированию
ОС по типу клиент-сервер с использованием микроядерной технологии. В соответствии с этим
подходом ОС строится как совокупность привилегированной управляющей программы и набо-
ра непривилегированных услуг-серверов. Основная часть ОС может оставаться неизменной в то
время, как могут быть добавлены новые серверы или улучшены старые.
       Средства вызова удаленных процедур (RPC) также дают возможность расширить функ-
циональные возможности ОС. Новые программные процедуры могут быть добавлены в любую
машину сети и немедленно поступить в распоряжение прикладных программ на других маши-
нах сети.
       Некоторые ОС для улучшения расширяемости поддерживают загружаемые драйверы,
которые могут быть добавлены в систему во время ее работы. Новые файловые системы, уст-
ройства и сети могут поддерживаться путем написания драйвера устройства, драйвера файло-
вой системы или транспортного драйвера и загрузки его в систему.

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

       Требование переносимости кода тесно связано с расширяемостью. Расширяемость по-
зволяет улучшать операционную систему, в то время как переносимость дает возможность пе-
ремещать всю систему на машину, базирующуюся на другом процессоре или аппаратной плат-
форме, делая при этом по возможности небольшие изменения в коде. Хотя ОС часто описыва-
ются либо как переносимые, либо как непереносимые, переносимость - это не бинарное состоя-
ние. Вопрос не в том, может ли быть система перенесена, а в том, насколько легко можно это
сделать. Написание переносимой ОС аналогично написанию любого переносимого кода - нуж-
но следовать некоторым правилам.
       Во-первых, большая часть кода должна быть написана на языке, который имеется на
всех машинах, куда вы хотите переносить систему. Обычно это означает, что код должен быть
написан на языке высокого уровня, предпочтительно стандартизованном, например, на языке С.
Программа, написанная на ассемблере, не является переносимой, если только вы не собираетесь
переносить ее на машину, обладающую командной совместимостью с вашей.
       Во-вторых, следует учесть, в какое физическое окружение программа должна быть пере-
несена. Различная аппаратура требует различных решений при создании ОС. Например, ОС,
построенная на 32-битовых адресах, не может быть перенесена на машину с 16-битовыми адре-
сами (разве что с огромными трудностями).
       В-третьих, важно минимизировать или, если возможно, исключить те части кода, кото-
рые непосредственно взаимодействуют с аппаратными средствами. Зависимость от аппаратуры

                                               73