Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
НА ЭГЗО.doc
Скачиваний:
19
Добавлен:
17.09.2019
Размер:
2.16 Mб
Скачать

Примеры архитектуры реальных операционных систем Архитектура операционной системы unix

Операционная система UNIX использует традиционную архитектуру, несмотря на выделение нескольких уровней, тяготеющую скорее к монолитной, чем к многоуровне-вой. Упрощенная архитектура операционной системы UNIX показана на рисунке.

На верхнем уровне иерархии операционной системы находятся процессы пользовательского режима, которые взаимодействуют с ядром операционной системы через интерфейс системных вызовов. Интерфейс системных вызовов перенаправляет запросы процессов подсистемам ядра. Подсистемы ядра обеспечивают выполнение процессов пользовательского режима и через уровень управления аппаратурой взаимодействуют с аппаратурой ЭВМ. Ядро UNIX включает традиционные подсистемы, такие как файловая подсистема, подсистема ввода-вывода, подсистема управления процессами и памятью, назначение которых мы уже рассматривали на предыдущих лекциях.

Архитектура операционной системы Windows

Операционная система Windows использует многоуровневую архитектуру, с работой большей части компонентов в режиме ядра, но, тем не менее, в состав ядра не входящих. Упрощенная архитектура Windows показана на рисунке.

Еще при разработке операционной системы Windows NT, во главу угла были поставлены задачи переносимости и совместимости, что в основном и определило ее архитектуру. Сравнивая архитектуру UNIX и Windows, легко заметить, что архитектура Windows гораздо более структурирована. Как и в системе UNIX, на верхнем уровне иерархии находятся процессы пользовательского режима. Это могут быть как пользователь-ские процессы, так и серверы самой системы. Процессы пользовательского режима взаимодействуют с операционной системой через документированные интерфейсы, предоставляемые динамическими библиотеками подсистем окружения. Windows поддерживает три подсистемы окружения – POSIX, OS/2 и Win32, причем подсистема Win32 является необходимым компонентом для работы всей операционной системы, т.к. обслуживает клавиатуру, мышь и экран. Заметим, что подсистема Win32 имеет компоненты, работающие как в режиме задачи, так и в режиме ядра. В отличие от подсистемы Win32, которая запускается на этапе загрузки операционной системы, подсистемы POSIX и OS/2 не являются обязательными, и запускаются по требованию, при необходимости запуска соответствующих приложений, а после запуска работают вплоть до перегрузки системы. Хотя динамические библиотеки подсистем окружения способны самостоятельно обслужить некоторые запросы процессов, в большинстве случаев они переадресуют запрос исполнительной подсистеме Windows через недокументированный интерфейс системных вызовов. Можно сказать, что именно недокументированный интерфейс, реализуемый библиотекой Ntdll.dll является истинным интерфейсом системных вызовов, собственно и реализующим переход из режима задачи в режим ядра. Исключение составляет интерфейс GDI, полностью реализуемый подсистемой Win32 самостоятельно. Исполнительная система операционной системы Windows обеспечивает работу подсистем окружения, реализуя большинство стратегий управления операционной системы, и включает в себя такие подсистемы, как: • диспетчер конфигурации – обеспечивает управление системным реестром; • диспетчер процессов и потоков – обеспечивает управление процессами и потоками, запущенными в системе, например, создает и уничтожает процессы и потоки; • монитор безопасности – реализует политики безопасности на локальном компьютере; • диспетчер ввода-вывода – реализует аппаратно независимый ввод-вывод и отвечает за пересылку информации ввода-вывода соответствующим драйверам; • диспетчер Plug and Play – определяет, какие драйверы нужны для поддержки каждого устройства и загружает эти драйверы; • диспетчер электропитания – координирует работу драйверов устройств, обеспечивая, например, переключение периферийных устройств в экономичный режим при их длительном простое; • диспетчер кэша файловой системы – реализует буферизацию ввода-вывода, отложенную запись и упреждающее чтение данных файла; • диспетчер виртуальной памяти – реализует собственное виртуальное адресное пространство для каждого процесса и обеспечивает поддержку работы диспетчера кэша; Ниже исполнительной системы Windows располагается ядро системы, реализующее различные для каждой процессорной архитектуры фундаментальные механизмы, такие как планирование и диспетчеризация потоков, диспетчеризация прерываний и исключений. Ядро изолирует драйверы и исполнительную систему от особенностей архитектуры процессора, что обеспечивает переносимость операционной системы. Уровень абстрагирования от оборудования является самым нижним уровнем сис-темы. Он скрывает от операционной системы, включая ее ядро, специфику конкретной аппаратуры, т.к. даже при одинаковой архитектуре системы, например x86, могут быть аппаратные особенности реализации, например различные типы материнской платы. Объектно-ориентированная технология Изучая архитектуру операционных систем, необходимо особо прокомментировать использование технологии объектно-ориентированного программирования для написания кода операционных систем. Объектно-ориентированное программирование может с успехом применяться для разработки кода операционных систем в соответствии с любым типом архитектуры. На первый взгляд может показаться, что использование или не использование технологии объектно-ориентированного программирования скорее относится к стилю программирования, и не имеет отношения к архитектуре операционных систем. Но на практике, использование объектно-ориентированного программирования оказывает столь значительное влияние на структуру всей операционной системы, что вполне можно рассматривать использование объектно-ориентированного программирования как особенность архитектуры операционной системы. Основная идея объектно-ориентированного программирования состоит в том, чтобы сопоставить реальным объектам и ключевым абстракциям предметной области программные объекты. Применительно к операционным системам, такими программными объектами могут быть, например, объект-процесс, объект-сегмент виртуальной памяти, объект-проекция файла и т.п. При этом, технология объектно-ориентированного программирования позволяет выполнять аккумуляцию удачных решений в форме стандартных объектов, пригодных для повторного использования, и предоставляет возможность создания новых объектов на базе имеющихся с помощью механизма наследования. Использование программных объектов для представления ключевых абстракций изменяет концепцию разработки архитектуры программ, позволяет более естественно переложить на исходный код программы привычное для человека описание сложной системы на уровне взаимодействия объектов. Архитектура операционной системы получается более строго структурированной, и представляется скорее как система взаимодействующих объектов, а не как набор глобальных данных и процедур. Программные объекты объединяют в себе данные, описывающие состояние объекта, и методы, определяющие правила перехода между состояниями под влиянием внешних, по отношению к этому объекту, событий. При этом данные объекта недоступны для прямого доступа извне, и их модификация возможна только через методы самого объекта. В отличие от процедурного подхода, когда любые функции могут произвольно модифицировать глобальные данные, методы объектов контролируют корректность изменения данных, и не позволяют перевести объект в недопустимое состояние. В результате возрастает стабильность работы операционной системы. Кроме того, существенно упрощается отладка операционной системы, т.к. методы объектов позволяют зафиксировать некорректные обращение к объектам, что помогает легко локализовать неправильно работающие компоненты. Еще одно важное преимущество объектно-ориентированной технологии также основано на сокрытии данных внутри объекта. Действительно, так как данные непосредственно не доступны за пределами объекта, для работы операционной системы не имеет никакого значения их организация, важен только интерфейс, предоставляемый методами. Это значит, что можно изменить внутреннюю сущность любого объекта безо всякого влияния на другие объекты, например при смене аппаратной платформы. По-этому объектно-ориентированная операционная система в большей степени переносима, чем система с процедурной организацией.

  1. ---------

  1. -------

  2. -------

10,11,12,13. 2.1 Процессы