Архитектура (структура) операционных систем
Наиболее общим подходом к структуризации ОС является разделение всех ее модулей на две группы: - ядро - модули, выполняющие основные функции ОС; - модули, выполняющие вспомогательные функции ОС. Модули ядра выполняют такие базовые функции ОС, как управление процессами, памятью, устройствами ввода/вывода и т.п. Ядро составляет сердцевину ОС, без него ОС является полностью неработоспособной. В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка страниц, обработка прерываний. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них прикладную программную среду. Приложения могут обращаться к ядру с запросами - системными вызовами - для выполнения тех или иных действий, например, для открытия файла, вывода информации на дисплей и т.д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования - Application Programming Interface (API). Остальные модули ОС выполняют менее обязательные функции, например, дефрагментацию диска. Обычно они подразделяются на следующие группы: - утилиты - программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования и т.п.; - системные обрабатывающие программы - текстовые или графические редакторы, компиляторы, компоновщики, отладчики; - программы предоставления пользователю дополнительных услуг - специальный вариант пользовательского интерфейса, калькулятор и даже игры; - библиотеки процедур различного назначения, упрощающие разработку приложений, например, библиотека математических функций, функций ввода/вывода и т.п.
Для надежного управления ходом выполнения приложений ОС должна иметь по отношению к ним определенные привилегии. Иначе некорректно работающее приложение может вмешаться в работу ОС и, например, разрушить часть ее кодов. Также ОС должна обладать исключительными полномочиями, для того, чтобы играть роль арбитра в споре приложений за системные ресурсы в мультипрограммном режиме. Обеспечить привилегии ОС невозможно без специальных средств аппаратной поддержки. Аппаратура компьютера должна поддерживать как минимум два режима работы - пользовательский и привилегированный (режим ядра или супервизора). Так как ядро выполняет основные функции ОС, то чаще всего именно оно работает в привилегированном режиме. Иногда работа в привилегированном режиме служит основным определением понятия «ядро». Вычислительную систему (ВС), работающую под управлением ОС на основе ядра, можно рассматривать как систему, состоящую из трех иерархически расположенных слоев: нижний слой образует аппаратура, промежуточный - ядро, а утилиты, обрабатывающие программы и приложения, составляют верхний слой системы (рис. 1), каждый слой может взаимодействовать только со смежными слоями. Рисунок 1 - Слоистая структура ВС
Многослойный подход является универсальным и эффективным способом декомпозиции сложных систем любого типа, в том числе и программных. В соответствии с этим подходом система состоит из иерархии слоев, каждый из которых обслуживает вышележащий слой, выполняя для него некоторый набор функций, которые образуют межслойный интерфейс. Поскольку ядро представляет собой сложный многофункциональный комплекс, то многослойный подход обычно распространяется и на структуру ядра. Оно может состоять из слоев: Средства аппаратной поддержки ОС - средства поддержки привилегированного режима, систему прерываний, средства переключения контекстов процессоров, средства защиты областей памяти и т.п.
Машинно-зависимые компоненты ОС - программные модули, в которых отражается специфика аппаратной платформы компьютера. В идеале этот слой полностью экранирует вышележащие слои от особенностей аппаратуры, что позволяет разрабатывать вышележащие слои на основе машинно-независимых модулей, существующих в единственном экземпляре для всех типов аппаратных платформ, поддерживаемых данной ОС. Базовые механизмы ядра - программное переключение контекстов процессоров, диспетчеризацию прерываний, перемещение страниц памяти на диск и обратно и т.п. Модули этого слоя не принимают решений о распределении ресурсов - они только отрабатывают принятые «наверху» решения, что и дает повод называть их исполнительными механизмами для модулей верхних слоев. Менеджеры ресурсов - модули, реализующие стратегические задачи по управлению основными ресурсами вычислительной системы. Обычно на данном слое работают менеджеры (диспетчеры) процессов, ввода-вывода, файловой системы и оперативной памяти. Интерфейс системных вызовов - самый верхний слой ядра, взаимодействующий непосредственно с приложениями и системными утилитами. Приведенное разбиение ядра является достаточно условным. Для ускорения работы в некоторых случаях происходит непосредственное обращение с верхнего слоя к функциям нижних слоев, минуя промежуточные. Выбор количества слоев ядра является ответственным и сложным делом: увеличение числа слоев ведет к некоторому замедлению работы ядра за счет дополнительных накладных расходов на межслойное взаимодействие, а их уменьшение ухудшает расширяемость и логичность системы. Микроядерная архитектура является альтернативой классическому способу построения ОС. Ее суть состоит в следующем. В привилегированном режиме выполняется небольшая часть ОС, называемая микроядром, в состав которого входят базовые функции по управлению процессами, обработке прерываний, управлению виртуальной памятью, пересылке сообщений и управлению устройствами ввода/вывода, связанные с загрузкой или чтением регистров устройств. Набор функций микроядра обычно соответствует функциям слоя базовых механизмов обычного ядра. Все остальные функции ядра оформляются в виде приложений, работающих в пользовательском режиме, при этом многие менеджеры ресурсов, являющиеся неотъемлемыми частями обычного ядра - файловая система, подсистемы управления виртуальной памятью и процессами, менеджер безопасности и т.п., - становятся модулями, работающими в пользовательском режиме.
Работа таких менеджеров имеет принципиальные отличия от утилит и обрабатывающих программ ОС, которые также оформляются в виде пользовательских приложений. Утилиты и обрабатывающие программы вызываются, в основном, пользователями, и их функции редко требуются другим приложениям. Основным назначением многих менеджеров является именно обслуживание запросов других приложений, например, создание процесса, проверка прав доступа к ресурсу и т.д. Именно поэтому менеджеры ресурсов, вынесенные в пользовательский режим, называются серверами ОС. Из этого вытекает необходимость наличия в ОС удобного и эффективного механизма вызова процедур одного процесса из другого, а его поддержка является одной из главных задач микроядра. Схематично этот механизм выглядит следующим образом. Клиент, которым может быть любая прикладная программа или другой компонент ОС, запрашивает выполнение некоторой функции у соответствующего сервера, посылая ему сообщение. Непосредственная передача сообщений между приложениями невозможна, т.к. их адресные пространства изолированы друг от друга. Микроядро, имеющее доступ к адресным пространствам всех приложений, выступает посредником при передаче сообщения. Сначала оно передает имя и параметры вызываемой процедуры серверу, затем сервер выполняет запрошенную операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения. ОС, основанные на концепции микроядра, в высокой степени удовлетворяют большинству требований, предъявляемых к современным ОС, обладая переносимостью, расширяемостью, надежностью и создавая хорошие предпосылки для поддержки распределенных приложений. За это приходится платить снижением производительности, которое является основным недостатком микроядерной архитектуры.
Читайте также: I. Системы массового обслуживания и их применение при моделировании средств вычислительной техники. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|