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




Лекция Архитектура ОС

 

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

 

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

 

Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:

 

ядро — модули, выполняющие основные функции ОС;

 

модули, выполняющие вспомогательные функции ОС.

 

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

Ядро операционной системы (Kernel) - часть операционной системы:

  • постоянно находящаяся в оперативной памяти;
  • управляющая всей операционной системой;
  • содержащая: драйверы устройств, подпрограммы управления памятью, планировщик заданий;
  • реализующая системные вызовы и т.п.

Ядро представляет собой лишь небольшую часть кода операционной системы в целом, однако оно относится к числу наиболее интенсивно используемых компо­нент системы.

Ядро операционной системы, как правило, содержит программы для реализации следующих функций:

  • обработка прерываний;
  • создание и уничтожение процессов;
  • переключение процессов из состояния в состояние;
  • диспетчирование;
  • приостановка и активизация процессов;
  • синхронизация процессов;
  • организация взаимодействия между процессами;
  • манипулирование блоками управления процессами;
  • поддержка операций ввода-вывода;
  • поддержка распределения и перераспределения памяти;
  • поддержка работы файловой системы;
  • поддержка механизма вызова-возврата при обращении к процедурам;
  • поддержка определенных функций по ведению учета работы
  • машины.

 

В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка страниц, обработка прерываний. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами — системными вызовами — для выполнения тех или иных действий, например для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования — API.

 

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

Вспомогательные модули ОС обычно подразделяются на следующие группы:

 

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

системные обрабатывающие программы — текстовые или графические редакторы, компиляторы, компоновщики, отладчики;

 

программы предоставления пользователю дополнительных услуг — специальный вариант пользовательского интерфейса, калькулятор и даже игры;

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

 

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

 

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

 

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

 

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

Аппаратура компьютера должна поддерживать как минимум два режима работы — пользовательский режим (user mode) и привилегированный режим, который также называют режимом ядра (kernel mode), или режимом супервизора (supervisor mode). Подразумевается, что операционная система или некоторые ее части работают в привилегированном режиме, а приложения — в пользовательском режиме.

 

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

 

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

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

 

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

 

Рис. Концепция многослойного взаимодействия

 

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

 

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

 

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

 

В данной схеме выделены следующие слои.

Средства аппаратной поддержки ОС. Значительная часть функций ОС может выполняться аппаратными средствами [10]. Чисто программные ОС сейчас не существуют. Как правило, в современных системах всегда есть средства аппаратной поддержки ОС, которые прямо участвуют в организации вычислительных процессов. К ним относятся: система прерываний, средства поддержки привилегированного режима, средства поддержки виртуальной памяти, системный таймер, средства переключения контекстов процессов (информация о состоянии процесса в момент его приостановки), средства защиты памяти и др.

Машинно-зависимые модули ОС. Этот слой образует модули, в которых отражается специфика аппаратной платформы компьютера. Назначение этого слоя – "экранирование" вышележащих слоев ОС от особенностей аппаратуры (например, Windows 2000 – это слой HAL (Hardware Abstraction Layer), уровень аппаратных абстракций).

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

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

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

 

Дополнительно:

 

Крейт – это механический каркас, в который устанавливаются модули. Кроме того, в крейте располагаются магистраль, блок питания, система охлаждения. Часто крейты монтируются в специальную стойку.

 
 

Модули – это электронные блоки, выполняющие различные функции: измерения, генерации сигналов, хранения информации, преобразования сигналов и др. Модули устанавливаются в крейт и подключаются к магистрали.

 

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

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

Шины можно разделить на однонаправленные и двунаправленные. Однонаправленные шины позволяют передавать данные лишь в одном направлении – от источника к приёмнику. Двунаправленные шины позволяют источнику и приёмнику меняться местами.

Основными на магистрали являются шины адреса, данных, управления, команд и прерываний.

Шина адреса предназначена для выбора модуля, установленного в крейт, а также для адресации внутри модуля (выбора субадреса). Адресация может выполняться различными способами: двоичное кодирование, географическая адресация и т. д. В системах PXIe, применяющихся в практикуме, используется географическая (позиционная) адресация – каждому месту в крейте отводится отдельная сигнальная линия, служащая для выбора блока, к которому производится обращение. Другие шины, общие для всех модулей, используются для задания субадреса (см. прил. 2).

Шина данных предназначена для передачи данных. Чаще всего разрядность шины (количество проводников, сгруппированных в шину) кратна байту: 8, 16, 24, 32 разряда. Значит, за один такт по шине могут быть переданы соответственно 1, 2, 3, 4 байта.

Шина команд используется для управления операциями на магистрали. По шине передаются команды модулям, например: произвести чтение, обнулить данные, запретить генерацию запросов и т.п. Полный список команд, выполняемых модулем, определяется стандартом, в котором выполнена система автоматизации и структурой модуля.

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

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

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

 

 

Контрольные вопросы

 

  1. По какому принципу подразделяются все модули, входящие в состав ОС?
  2. Какие функции выполняют модули ядра ОС?
  3. Для чего модули ядра являются резидентными?
  4. Каковы функции вспомогательных модулей ОС?
  5. Что означает термин "транзитные модули"? Являются ли транзитными модули ядра ОС?
  6. Какие группы принято выделять в числе вспомогательных модулей ОС?
  7. В каком случае приложение может получить статус модуля операционной системы?

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-25 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: