Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Многослойная структура ОС






 

Вычислительную систему, работающую под управлением ОС, можно рассматривать как систему, состоящую из трех иерархически расположенных слоев: нижний слой образует аппаратура, промежуточный - ядро, а утилиты, обрабатывающие программы и приложения, составляют верхний слой системы.

 

Многослойный подход - универсальный и эффективный способ декомпозиции сложных систем. В соответствии с этим подходом система состоит из иерархии слоев. Каждый слой обслуживает вышележащий слой, выполняя для него некоторый набор функций, которые образуют межслойный интерфейс (рисунок 2).

 

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

 

Такая организация системы имеет много достоинств. Она упрощает разработку системы, так как позволяет сначала определить «сверху вниз» функции слоев и межслойные интерфейсы, а затем при детальной реализации постепенно наращивать мощность функций слоев, двигаясь «снизу вверх». При модернизации системы можно изменять модули внутри слоя без необходимости производить какие-либо изменения в остальных слоях, если при этих внутренних изменениях межслойные интерфейсы остаются без изменений.

 

Ядро представляет собой сложный многофункциональный комплекс и многослойный подход обычно распространяется и на структуру ядра (рисунок 3).

 

Ядро может состоять из следующих слоев.

 

1. Средства аппаратной поддержки ОС. Часть функций ОС может выполняться аппаратными средствами. Иногда можно встретить определение операционной системы как совокупности программных и аппаратных средств. К операционной системе относят не все аппаратные устройства компьютера, а только средства аппаратной поддержки ОС, которые прямо участвуют в организации вычислительных процессов: средства поддержки привилегированного режима, систему прерываний, средства переключения контекстов процессов, средства защиты областей памяти.

 

 

2. Машинно-зависимые компоненты ОС. Этот слой образуют программные модули, в которых отражается специфика аппаратной платформы компьютера. В идеале этот слой полностью экранирует вышележащие слои ядра от особенностей аппаратуры, что позволяет разрабатывать вышележащие слои на основе машинно-независимых модулей, существующих в единственном экземпляре для всех типов аппаратных платформ, поддерживаемых данной ОС.

 

Linux, Mac OS, Windows NT – имеют четко определенный слой программных модулей (HAL, Hardware Abstraction Layer), экранирующих особенности аппаратуры.

 

3. Базовые механизмы ядра. Этот слой выполняет наиболее примитивные операции ядра (программное переключение контекстов процессов, диспетчеризацию прерываний, перемещение страниц из памяти на диск и обратно и т.п.). Модули данного слоя не принимают решений о распределении ресурсов, являются только исполнительными механизмами для модулей верхних слоев и выполняют их решения.

 

4. Менеджеры ресурсов. Этот слой состоит из функциональных модулей, реализующих стратегические задачи по управлению основными ресурсами ВС. Обычно на данном слое работают менеджеры (диспетчеры) процессов, ввода-вывода, файловой системы и оперативной памяти. Каждый из менеджеров ведет учет свободных и используемых ресурсов определенного типа и планирует их распределение в соответствии с запросами приложений. Например, менеджер виртуальной памяти управляет перемещением страниц из оперативной памяти на диск и обратно. Менеджер должен отслеживать интенсивность обращений к страницам, время пребывания их в памяти, и многие другие параметры, на основании которых он время от времени принимает решения о том, какие страницы необходимо выгрузить и какие - загрузить. Для исполнения принятых решений менеджер обращается к слою базовых механизмов с запросами. Внутри слоя менеджеров существуют тесные взаимные связи, так как для выполнения процессу нужен доступ одновременно к нескольким ресурсам - процессору, области памяти, возможно, к определенному файлу или устройству ввода-вывода. Например, при создании процесса менеджер процессов обращается к менеджеру памяти, который должен выделить процессу определенную область памяти.

 

5. Интерфейс системных вызовов. Это самый верхний слой ядра и взаимодействует непосредственно с приложениями и системными утилитами, образуя прикладной программный интерфейс операционной системы (read(fd, buffer, count)). Системные вызовы обычно обращаются за помощью к функциям слоя менеджеров ресурсов, причем для выполнения одного системного вызова может понадобиться несколько таких обращений.

 

Приведенное разбиение ядра ОС на слои является достаточно условным. В реальной системе количество слоев и распределение функций между ними может быть и иным. Слой машинно-зависимых модулей может сливаться со слоем базовых механизмов и частично со слоем менеджеров ресурсов. Базовые механизмы могут не выделяться в отдельный слой и эти функции выполняют менеджеры ресурсов.

 

 

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

 

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

 

Выбор количества слоев ядра - ответственная и сложная задача: увеличение числа слоев ведет к замедлению работы ядра за счет дополнительных накладных расходов на межслойное взаимодействие, а уменьшение числа слоев ухудшает расширяемость и логичность системы. Обычно ОС, прошедшие долгий путь развития (ранние версии Unix) имеют неупорядоченной ядро с небольшим числом четко выделенных слоев, у ОС развивающихся недавно ядро структурировано в большей степени.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.