Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Тема: Базовые понятия Архитектуры ОС
Механизмы и политика В ОС прежде всего необходимо выделить набор фундаментальных возможностей, которые предоставляют ее компоненты; эти базовые возможности являются механизмом. С другого бака, необходимо принимать решения относительно использования указанных возможностей; такие решения определяют политику. Т.о., механизм показывает, что реализовано компонентом, а политика – как это можно использовать. Когда за реализацию механизма и политики отвечают разные компоненты, упрощается разработка системы и повышается ее гибкость. Примером отделения механизма от политики является управление вводом-выводом. Базовые механизмы доступа к периферийным устройствам реализуют драйверы. Политику использования этих механизмов задает ПО, которое осуществляет ввод-вывод.
Ядро системы. Привилегированный режим и режим пользователя Базовые компоненты ОС, которые отвечают за важнейшие ее функции, обычно находятся в памяти постоянно и используются в привилегированном режиме. Эти компоненты называют ядром ОС. Важнейшие функции ОС, за выполнение которых отвечает ядро: обработка прерываний, управление памятью, управление вводом-выводом. Для обеспечения эффективного управления ресурсами компьютера ОС должна иметь определенные привилегии относительно прикладных программ. Необходимо, чтобы прикладные программы не вмешивались в работу ОС, и в то же время ОС должна иметь возможность вмешиваться в работу любой программы, например для переключения процессора или разрешения конфликта в борьбе за ресурсы. Для реализации таких привилегий необходима аппаратная поддержка: процессор должен поддерживать как минимум два режима работы – привилегированный (защищенный режим) и режим пользователя. В режиме пользователя недопустимы команды, которые являются критичными для работы системы (переключение задач, обращение к памяти вне заданных границ, доступ к устройствам ввода-вывода). Применение режимов. После загрузки ядро переключает процессор в привилегированный режим и получает полный контроль над компьютером. Каждое приложение запускается и выполняется в режиме пользователя, где оно не имеет доступа к ресурсам ядра и других программ. Когда необходимо выполнить действие, реализованное в ядре, приложение делает системный вызов. Ядро перехватывает его, переключает процессор в привилегированный режим, выполняет действие, переключает процессор назад в режим пользователя и возвращает результат приложения. Системный вызов выполняется медленнее вызова функции, реализованной в режим пользователя, из-за того, что процессор дважды переключается между режимами. Для повышения продуктивности в некоторых ОС часть функциональности реализована в режим пользователя, поэтому для доступа к ней системные вызовы выполнять не нужно.
Системное программное обеспечение Кроме ядра, важными составляющими работы ОС является также приложения режима пользователя, которые выполняют системные функции. К такому системному программному обеспечению принадлежат: 1. Системные программы (утилиты), например: командный интерпретатор, программы резервного копирования и восстановления данных, средства диагностики и администрирования. 2. Системные библиотеки, в которых реализованы функции, которые используются в приложениях пользователя. Системное программное обеспечение может разрабатываться отдельно от ОС. Например, может быть несколько реализаций командного интерпретатора, средства диагностики и т.д. Системные программы и библиотеки взаимодействуют с ядром так же, как и прикладные программы.
Реализация архитектуры операционных систем Большинство современных ОС представляют собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые платформы. Какой-либо единой унифицированной архитектуры ОС не существует, но известны универсальные подходы к структурированию ОС. Принципиально важными универсальными подходами к разработке архитектуры ОС являются: 1. Модульная организация; 2. Функциональная избыточность; 3. Функциональная избирательность; 4. Параметрическая универсальность; 5. Концепция многоуровневой иерархической вычислительной системы, по которой ОС представляется многослойной структурой; 6. Разделение модулей на две группы по функциям: ядро – модули, выполняющие основные функции ОС, и модули, выполняющие вспомогательные функции ОС; 7. Разделение модулей ОС на две группы по размещению в памяти вычислительной системы: резидентные, постоянно находящиеся в оперативной памяти, и транзитные, загружаемые в оперативную память только на время выполнения своих функций; 8. Реализация двух режимов работы вычислительной системы: привилегированного режима (режима ядра – Kernel mode), или режима супервизора (supervisor mode), и пользовательского режима (user mode), или режима задачи (task mode); 9. Ограничение функций ядра (а следовательно, и количества модулей ядра) до минимального количества необходимых самых важных функций. Существует несколько подходов к реализации архитектуры операционных систем. В реальных ОС обычно используют некоторую комбинацию этих подходов.
Монолитные системы ОС, в которых все базовые функции сконцентрированы в ядре, называют монолитными системами. В случае реализации монолитного ядра ОС становится производительнее ( процессор не переключается между режимами во время взаимодействия между ее компонентами), но менее надежной (весь ее код выполняется в привилегированном режиме, и ошибка в каждом из компонентов является критичной). Монолитность ядра не означает, что все его компоненты должны постоянно находиться в памяти. Современные ОС дают возможность динамично размещать в адресном пространстве ядра фрагменты кода (модули ядра). Реализация модулей ядра дает возможность так же достичь его расширяемости (для добавления новой функциональности достаточно разработать и загрузить в память соответствующий модуль).
Многоуровневые системы Компоненты многоуровневых систем создают иерархию уровней, каждый из которых основывается на функции предшествующего уровня. Низший уровень непосредственно взаимодействует с аппаратным обеспечением, на высшем уровне реализуются системные вызовы. В традиционных многоуровневых ОС передача управления с верхнего уровня на нижний реализуется как системный вызов. Верхний уровень должен иметь права на выполнение этого вызова, поверка этих прав выполняется с помощью аппаратного обеспечения. Примером такой системы является ОС Multics, разработанная в 60-е годы. Практическое применение именно этого подхода сегодня ограничено из-за низкой продуктивности. Чисто программные ОС сейчас не существуют. Как правило, в современных системах всегда есть средства аппаратной поддержки ОС, которые прямо участвуют в организации вычислительных процессов. К ним относятся: система прерываний, средства поддержки привилегированного режима, средства поддержки виртуальной памяти, системный таймер, средства переключения контекстов процессов (информация о состоянии процесса в момент его приостановки), средства защиты памяти и др. Уровни могут выделяться и в монолитном ядре; в этом случае они поддерживаются программно и дают возможность упростить реализацию системы. Уровни монолитного ядра: 1. Средства абстрагирования от оборудования, которые взаимодействуют с аппаратным обеспечением непосредственно, освобождая от реализации такого взаимодействия другие компоненты системы. 2. Базовые средства ядра, которые отвечают за самые фундаментальные, простейшие действия ядра, такие как запись блока данных на диск. С помощью этих средств выполняются указания верхних уровней, связанных с управлением ресурсами. 3. Средства управления ресурсами (или менеджер ресурсов), которые реализуют основные функции ОС (управление процессами, памятью, вводом-выводом и т.д.). На этом уровне принимаются важнейшие решения по управлению ресурсами, которые выполняются с использованием базовых средств ядра. 4. Интерфейс системных вызовов, который служит для реализации связи с системным и прикладным ПО. Размежевание базовых средств ядра и менеджеров ресурсов соответствует отделению механизмов от политик в архитектуре системы. Базовые средства ядра определяют механизмы функционирования системы, менеджеры ресурсов реализуют политику. Рис. 2.1 – Обработка системного вызова Недостатки многоуровневых ОС: значительные изменения одного из уровней могут иметь трудно предвидимое влияние на смежные уровни; многочисленные взаимодействия между соседними уровнями усложняют обеспечение безопасности.
Системы с микроядром Одно из направления развития современных ОС состоит в том, что в привилегированном режиме реализована только малая часть функций ОС, называемая микроядром. Микроядро защищено от остальных частей ОС и приложений. В его состав входят машинно-зависимые модули, а также модули, выполняющие базовые механизмы обычного ядра. Все остальные более высокоуровневые функции ядра оформляются как модули, и выполняются процессами в пользовательском режиме (сервера). Поскольку назначением этих компонентов ОС является обслуживание запросов приложений пользователей, утилит и системных обрабатывающих программ, менеджеры ресурсов, вынесенные в пользовательский режим, называются серверами ОС, т.е. модулями, основным назначением которых является обслуживание запросов локальных приложений и других модулей ОС. Серверы могут отвечать за поддержку файловой системы, за работу с процессами, памятью и т.д. Внешние по отношению к микроядру компоненты ОС реализуются как обслуживающие процессы. Между собой они взаимодействуют как равноправные партнеры с помощью обмена сообщениями, которые передаются через микроядро. Микроядро осуществляет связь между компонентами системы и выполняет базовое распределение ресурсов. Чтобы выполнить системный вызов, процесс (клиент) обращается к микроядру. Микроядро отсылает серверу запрос, сервер выполняет работу и пересылает ответ назад, а микроядро пересылает его клиенту (см. рис. 2.2). Клиентами могут быть как процессы пользователя, так и модули ОС. Рисунок 2.2 – Системный вызов в архитектуре с микроядром
Достоинства микроядерного подхода: 1. Небольшие размеры микроядра, что упрощает его разработку и настройку. 2. Высокая надежность системы, вследствие того, что серверы работают в режиме пользователя, и у них нет прямого доступа к аппаратному обеспечению. 3. Большая гибкость и расширяемость системы (ненужные компоненты не занимают место в памяти, расширение функциональности системы сводится к добавлению в нее нового сервера). 4. Возможность адаптации к условиям сети (способ обмена данными между клиентом и сервером не зависти от того, связаны они сетью или находятся на одном компьютере). Главным недостатком микроядерного подхода является снижение продуктивности. Вместо двух переключений режима процессора в случае системного вызова происходит четыре (два – во время обмена между клиентом и микроядром, два – между сервером и микроядром). Данный недостаток является скорее теоретическим, на практике продуктивность и надежность микроядра зависит от качества его реализации.
Системы с гибридным ядром Гибридное ядро (англ. Hybrid kernel) – модифицированные микроядра (минимальная реализация основных функций ядра операционной системы компьютера), позволяющие для ускорения работы запускать «несущественные» части в пространстве ядра. Имеют «гибридные» достоинства и недостатки. Рисунок 2.3 – ОС с разными ядрами
Все рассмотренные подходы к построению операционных систем имеют свои достоинства и недостатки. В большинстве случаев современные операционные системы используют различные комбинации этих подходов. Так, например, сейчас, ядро «Linux» представляет собой монолитную систему с отдельными элементами модульного ядра. При компиляции ядра можно разрешить динамическую загрузку и выгрузку очень многих компонентов ядра – так называемых модулей. В момент загрузки модуля его код загружается на уровне системы и связывается с остальной частью ядра. Внутри модуля могут использоваться любые экспортируемые ядром функции. Существуют варианты ОС GNU (Debian GNU/Hurd), в которых вместо монолитного ядра применяется ядро Mach (такое же, как в Hurd), а поверх него в пользовательском пространстве работают те же самые процессы, которые при использовании Linux были бы частью ядра. Другим примером смешанного подхода может служить возможность запуска операционной системы с монолитным ядром под управлением микроядра. Так устроены 4.4BSD и MkLinux, основанные на микроядре Mach. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляется монолитным ядром. Данный подход сформировался в результате попыток использовать преимущества микроядерной архитектуры, сохраняя по возможности хорошо отлаженный код монолитного ядра. Наиболее тесно элементы микроядерной архитектуры и элементы монолитного ядра переплетены в ядре Windows NT. Хотя Windows NT часто называют микроядерной операционной системой[1], это не совсем так. Микроядро NT слишком велико (более 1 Мбайт, кроме того, в ядре системы находится, например, ещё и модуль графического интерфейса), чтобы носить приставку «микро». Компоненты ядра Windows NT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений[1][2], как и положено в микроядерных операционных системах. В то же время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром. Причина проста: чисто микроядерный дизайн коммерчески менее выгоден, поскольку менее эффективен (за счет накладных расходов на передачу сообщений там, где можно было обойтись вызовами функций)[источник не указан 363 дня]. Таким образом, Windows NT можно с полным правом назвать гибридной операционной системой. Смешанное ядро, в принципе, должно объединять преимущества монолитного ядра и микроядра: казалось бы, микроядро и монолитное ядро — крайности, а смешанное — золотая середина. В них возможно добавлять драйвера устройств двумя способами: и внутрь ядра, и в пользовательское пространство. Но на практике концепция смешанного ядра часто подчёркивает не только достоинства, но и недостатки обоих типов ядер.
Концепция виртуальных машин В системах виртуальных машин программным путем создают копии аппаратного обеспечения (происходит его эмуляция). Эти копии (виртуальные машины) работают параллельно, на каждой из них функционирует ПО, с которым взаимодействуют прикладный программы и пользователи. Рисунок 2.4 – Архитектура ВМ
См рисунок 2.4. Ядро системы, называемое монитором виртуальных машин (МВМ), выполняется на физической машине, непосредственно взаимодействуя с ее аппаратным обеспечением. Монитор реализует набор виртуальных машин (ВМ). Каждая ВМ является точной копией аппаратного обеспечения, на ней может быть запущена любая ОС, разработанная для данной архитектуры. На разных ВМ одновременно могут функционировать разные ОС. Когда программа из под ОС ВМ выполняет системный вызов, его перехватывает соответствующая ВМ, и выполняет соответствующие аппаратные инструкции (например, ввод-вывод для чтения диска). Эти аппаратные инструкции перехватывает монитор (МВМ) и преобразовывает их на аппаратные инструкции физической машины. ВМ совмесно используют ресурсы реального компьютера (например, дисковое пространство разделяется между ними в виде виртуальных дисков).
Популярное:
|
Последнее изменение этой страницы: 2016-05-28; Просмотров: 1130; Нарушение авторского права страницы