Архитектура современных ос
Ядро операционной системы, его виды и его архитектура
Ядро́ (kernel) — центральная часть ОС, обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память, внешнее аппаратное обеспечение, внешнее устройство ввода и вывода информации. Также обычно ядро предоставляет сервисы файловой системы и сетевых протоколов.
Как основополагающий элемент ОС, ядро представляет собой наиболее низкий уровень абстракции для доступа приложений к ресурсам системы, необходимым для их работы. Как правило, ядро предоставляет такой доступ исполняемым процессам соответствующих приложений за счёт использования механизмов межпроцессного взаимодействия и обращения приложений к системным вызовам ОС.
Виды архитектур ядер операционных систем:
Монолитное ядро ОС
Представляет богатый набор оборудования. Все компоненты монолитного ядра находятся в одном адресном пространстве. Эта схема ОС, когда все части ее ядра — это составные части одной программы. Монолитное ядро — самый старый способ организации ОС.
Достоинства: высокая скорость работы, простая разработка модулей.
Недостатки: Ошибка работы одного из компонентов ядра нарушает работу всей системы.
Модульное ядро ОС
Это современная модификация монолитных ядер ОС, но в отличие от них модульное ядро не требует полной перекомпиляции ядра при изменения аппаратного обеспечения компьютера. Более того модульные ядра имеют механизм погрузки модулей ядра. Погрузка бывает статической- с перезагрузкой ОС, и динамической — без перезагрузки ОС.
Микроядро ОС
Представляет только основные функции управления процессами и минимальный набор для работы с оборудованием.
Достоинства: устойчивость к сбоям и ошибкам оборудования и компонентов системы, высокая степень ядерной модульности, что упрощает добавление в ядро новых компонентов и процесс отладки ядра.
Недостатки: Передача информации требует больших расходов и большого количества времени.
Экзоядро ОС
Такое ядро ОС, которое предоставляет лишь функции взаимодействия процессов, безопасное выделение и распределение ресурсов. Доступ к устройствам на уровне контроллеров позволяет решать задачи, которые нехарактерны для универсальной ОС.
Наноядро ОС
Такое ядро выполняет только единственную задачу- обработку аппаратных прерываний, образуемых устройствами ПК. После обработки наноядро посылает данные о результатах обработки далее идущему в цепи программному обеспечения при помощи той же системы прерываний.
Гибридное ядро ОС
Модификация микроядер, позволяющая для ускорения работы впускать несущественные части в пространство ядра. На архитектуре гибкого ядра построены последние операционные системы от Windows, в том числе и Windows 7-10.
Основные концепции построения ОС. Архитектура ОС;
Примеры реализации ОС (на примере ОC Windows)
Инструментарий разработки и отладки компонент ОС
64. Утилиты по ОС Windows XP. Основные возможности инструментария по анализу и разработке компонент ОС: памяти, процессов и потоков, ввода-вывода, отладки. Использование дампа.
Основные концепции построения ОС.
0) Принцип модульности.
Модуль – функционально законченный элемент, выполняемый в соответствии с принятым межмодульным интерфейсом. Модуль выделяется по функциональному признаку. Модульная организация позволяет легко (из)заменять неправильно работающие модули в ОС.
1) Принцип функциональной избирательности.
Для организации эффективной работы ОС, необходимо выделить и хранить в ОЗУ некоторые модули, составляющие ядро:
· Модули по управлению системы прерываний;
· Средство управления выполнения программ (загрузка, приостановка, остановка);
· Модули по управлению процессом (распределение процессорного времени), т.е. диспетчеры программ;
· Модули по управлению выделения памяти. В зависимости от ОС в ядро могут ещё входить другие модули;
· Транзитные модули (загружаются в ОЗУ по мере необходимости, при нехватке ОЗУ могут быть выгружены).
2) Принцип генерируемости ОС.
Подразумевает собой возможность генерации ОС в зависимости от аппаратного обеспечения. Процесс генерации обычно производится один раз, перед достаточно долгим режимом эксплуатации. Для генерации необходимо наличие нескольких компонентов:
· Исходный код ОС;
· Компилятор с языка программирования на котором система написана;
· Специальная программа и входной язык для неё, который позволяет управлять процессом генерации.
3) Принцип функциональной избыточности.
В состав ОС должно входит несколько типов ПО для выполнения одинаковых функций (поддержка разных ФС).
4) Принцип виртуализации.
Позволяет представить ресурсы ОС в виде определённого набора планировщиков и мониторов и использует единую схему распределения ресурсов. Наибольшее проявление – концепция виртуальной машины (воспроизводит архитектуру реальной машины, но может обладать произвольными характеристиками).
5) Принцип независимости программ от внешних устройств.
Связь программ с конкретным внешним устройством производится не на этапе трансляции, а на этапе выполнения программы. Получается выгода: не нужна лишняя «перекомпиляция».
6) Принцип совместимости.
Способность выполнять программы для другой ОС или даже для другой аппаратной платформы.
2 уровня совместимости:
· По выполняемому коду (бинарная). Условия совместимости:
◦ На уровне команд процессора (одна и та же платформа);
◦ Совместимость на уровне системных вызовов;
◦ Совместимость на уровне библиотечных вызовов, если являются динамично связываемыми.
· По исходному коду. Требуется выполнение следующих условий:
◦ Наличие компилятора платформы, на котором написана программа;
◦ Совместимость на уровне системных вызовов;
◦ Совместимость на уровне библиотечных вызовов.
7) Принцип открытой наращиваемой ОС (открыт исходный код).
Целостность ОС сохраняется (UNIX).
8) Принцип мобильности (переносимости).
ОС должна легко переноситься на другую аппаратную платформу. Правила создания переносимых ОС:
· ОС должна быть написана на языке высокого уровня, для которой существует компилятор на аппаратной платформе.
· Необходимо избегать кода, который непосредственно работает с аппаратным обеспечением.
9) Принцип обеспечения безопасности и защиты.
19. Защита системы от пользователя;
20. Защита от несанкционированного доступа.
Архитектура ОС.Различают 3 базовых типа архитектуры операционных систем:
ОС не имеет явно выраженной внутренней структуры. Это просто набор процедур, использующих общие глобальные данные, и вызываемые друг другом или пользователем.
Данную архитектуру имели самые первые поколения операционных систем.
· Имеются проблемы: расширяемости, переносимости исовместимости ОС;
появилась как ответ на ограничения монолитной архитектуры в плане расширяемости, переносимости и совместимости.
0) Полная функциональность операционной системы разделяется на уровни, например уровень управления аппаратурой, уровень управления памятью, уровень файловой системы, уровень управления процессами и т.п.
1) Для каждого уровня определяются интерфейс взаимодействия, т.е. некоторый набор правил, согласно которым следует обращаться за услугами данного уровня.
2) Взаимодействие уровней строится таким образом, что каждый уровень может обращаться за услугами только к соседнему нижележащему уровню через его интерфейс.
3) Внутренние структуры данных каждого уровня не доступны другим уровням, а реализации процедур уровня скрыты и не зависят от реализаций процедур внутри других уровней.
Обязательное условие для разбиения функциональности на уровни – взаимодействие только между соседними уровнями. Запрещаются прямые обращения к любым уровням, минуя соседний уровень.
Характерно вертикальное иерархическое распределение функциональности.
• Архитектура типа клиент-сервер на основе микроядра.
Является наиболее совершенной с точки зрения расширяемости и переносимости операционных систем.
Идея: все компоненты ОС разделяются на программы–поставщики услуг (программы серверы, выполняющие определенные действия по запросам других программ), и программы–потребители услуг (программы клиенты, обращающиеся к серверам для выполнения определенных действий).
Запущенные в системе процессы-серверы постоянно находится в состоянии ожидания клиентских запросов. Клиенты посылают серверам запросы на оказание требуемых им услуг, которые сервер выполняет, после чего отсылает клиенту сообщение о завершении задания и результаты работы.
Клиенты и серверы не общаются напрямую. Если процесс нуждается в услугах со стороны ОС, то он посылает соответствующее сообщение диспетчеру в составе микроядра ОС. Получив запрос, микроядро определяет сервер, который может его обслужить, пробуждает его процесс и переадресовывает ему запрос клиента. При этом микроядро само является сервером по отношению к запросам, связанным с управлением аппаратурой. При выполнения запросов от пользовательских программ, системные серверы, обращаются за аппаратно-зависимыми услугами к микроядру, при этом сами серверы операционной системы выполняются в режиме задачи, наравне с пользовательскими процессами, и не имеют прямого доступа к аппаратуре.
Характерно горизонтальное разделение функциональности между равноправными серверами. При этом, каждый сервер отвечает за выполнение отдельной достаточно простой операции и ни в коей мере не является эквивалентом уровня в многоуровневой архитектуре.
Архитектура современных ОС
ОС является программной средой. Для каждой программной среды понимается программная и функциональная структура.
Функциональная структура – выполняемые функции программной средой.
Программная структура – состав и взаимодействие программных компонент, которые реализуют указанные функции.
Программная структура ОС. Наиболее общим подходом к построению является разбиение ОС на ядро и обеспечивающие модули.
Ядро – программная структура. Как правило, состоит из двух основных частей:
а) резидентная часть ядра – постоянно находится в реальной ОП, не подвергается страничному обмену;
б) нерезидентная часть – модули находятся в виртуальной памяти ядра и загружаются по мере необходимости. Как правило, модули ядра являются реентерабельными (повторно используемыми). Идея: после выполнения модуля изменения в нем не происходят и его могут использовать еще раз. Т.е. во время выполнения модуль не пишет и не изменяет свои области.
Разделение на резидентную и нерезидентную часть условно и осуществляется в различных ОС на различных подходов. В целях сокращения операций ввода/вывода наиболее часто используемые модули ядра помещают резидентную часть. В некоторых ОС существует инструментарий оптимизации, с помощью которого можно определить, какие модули наиболее часто подвергаются страничному обмену и вводу/выводу в целом и сделать их резидентными.
Ядро ОС имеет многослойную программную структуру:
а) модули по управлению средствами аппаратной поддержки – управляют обработкой команд на той или иной платформе;
б) машинно-зависимые модули – экранируют основные компоненты ядра от специфики аппаратуры, что позволяет разрабатывать модули более высокого уровня как машинно-независимые компоненты;
в) модули базовых механизмов ядра – выполняют наиболее примитивные операции ядра, являются исполнительным механизмом модулей более высокого уровня;
г) модули менеджера ресурсов (диспетчера) реализуют алгоритмы планирования, учета, выделения и освобождения ресурсов системы при организации вычислительного процесса.
Функциональная структура ядра. В общем случае для всех ОС в той или иной мере характерны следующие основные функции, сосредоточенные в ядре. Замечание: некоторые функции, перечисленные ниже, непосредственно не связаны с ядром, но являются функциональной компонентой ядра:
а) загрузчик (IPL, initial program loader) – представляет программу, которая, как правило, в зависимости от ОС, записывается в нулевой сектор диска, который опрашивается первым. Программа может записываться различными способами: при форматировании носителя или процесса генерации ОС.
б) программа инициализации ядра (NID, nuclear initial program) – программа APL, выполняясь, загружает в реальную ОП часть ядра, которая подготавливает информацию для дальнейшей загрузки. В некоторых ОС программа NID грузится в старшие адреса реальной ОП, чтобы в младшие адреса загрузить ядро. После того, как APL отработала, выполняется NIP, определяющая состояние аппаратных средств, устанавливающая место загрузки ядра в ОП, устанавливающая размер ОП и др. После этого NIP загружает в реальную ОП ядро ОС и передает ему управление. Область реальной ОП, где находилась NIP, освобождается.
в) поддержка привилегированного режима – в ОС предусмотрена функция корректного перевода процессора из пользовательского режима в режим ядра. В режиме ядра может использоваться все команды по управлению системой, вводом/выводом и аппаратной поддержкой. Если такая команда начинает выполняться в пользовательском режиме, возникает прерывание по привилегированной операции.
г) средства трансляции виртуальных адресов в реальные. Создание и актуализация таблиц для поддержки того или иного способа организации виртуальной памяти.
д) средства обработки прерываний – обработка прерываний происходит по-разному в зависимости от аппаратной платформы и типа ОС. Общим подходом является то, что сигнал прерывания того или иного типа, если он не замаскирован, осуществляет смену PSV, некой структуры, которая отслеживает автоматически аппаратно состояние системы в текущий момент времени, в т. ч. в ней находится адрес следующей выполняемой команды. PSV хранится в регистрах и может быть загружена в них с помощью машинной команды (например loadpsv ). С этого момента следующей командой, которая будет выполняться, является та команда, адрес которой указан в загруженном новом PSV. Старая PSV сохраняется и после обработки прерывания загружается и вновь становится текущим, возобновляя прерванный процесс.
Операционные системы
Операцио́нная систе́ма, ОС (англ. Operating system) — базовый комплекс управляющих и обрабатывающих программ, обеспечивающий эффективное управление аппаратными средствами компьютера, работу с файлами, ввод-вывод данных и управление ими, выполнение прикладных программ и утилит, а также взаимодействие с пользователем.
Содержание
ОС позволяет абстрагироваться от деталей реализации аппаратного обеспечения, предоставляя разработчикам программного обеспечения минимально необходимый набор функций.
Понятие операционной системы
Операционные системы являются основой программного обеспечения вычислительных машин (ВМ)и их систем – вычислительных систем (ВС). Идея о том, что ОС прежде всего система, обеспечивающая удобный интерфейс пользователям, соответствует рассмотрению ее сверху вниз. Другой взгляд, снизу вверх, дает представление об ОС как о некотором механизме, распределяющим и управляющим всеми компонентами и ресурсами ВМ и ВС с целью обеспечения максимальной эффективности их функционирования.
Каковы причины смены ОС в компании?
Решение сменить операционную систему приходит в виду разных обстоятельств.
Во-первых, когда новая версия приложения, используемая для решения повседневных задач, требует функций новой ОС. В поддержке же других версий приложений (для старых ОС) разработчик не заинтересован.
Во-вторых, компания хочет предоставить сотрудникам возможность работы с корпоративными ресурсами, например, с мобильных устройств, а ограничения в ОС не дают такой функциональности. Что, в свою очередь, сказывается на производительности.
И, в-третьих, самая главная причина перехода на новые версии ОС, это угрозы информационной безопасности и как следствие риск потери информации. Особенно остро этот вопрос стоит в компаниях, работающих с персональными данными пользователей. Согласно федеральному закону о персональных данных (ФЗ-152) оператор должен обеспечить техническую защиту вверенных ему данных. В разрезе операционной системы это означает, что оператор обязан изучить бюллетень безопасности, оценить риски и установить обновления безопасности, выпускаемые разработчиком, в противном случае операционная система становится уязвимой для угроз, описанных в бюллетене.
Основные принципы построения операционных систем
- Принцип модульности — обособление составных частей ОС в отдельные модули (функционально законченные элементы системы), выполненное в соответствии с принятыми межмодульными интерфейсами;
- Принцип генерируемости ОС — определяет такой способ исходного представления ядра ОС и основных компонентов ОС, который позволяет производить их настройку, исходя из конкретной конфигурации конкретного вычислительного комплекса и круга решаемых задач;
- Принцип функциональной избыточности — учитывает возможность проведения одной и той же работы различными средствами;
- Принцип виртуализации — представляет структуру системы в виде определенного набора планировщиков процессов и распределителей ресурсов и позволяет использовать единую централизованную схему распределения ресурсов, организуя тем самым работу виртуальной машины;
- Принцип независимости программ от внешних устройств — связь программ с конкретными устройствами производится не на уровне трансляции программы, а в период планирования ее исполнения;
- Принцип совместимости — способность ОС выполнять программы, написанные для других ОС или для более ранних версий данной операционной системы, а также для другой аппаратной платформы;
- Принцип открытой и наращиваемой ОС — позволяет не только использовать возможности генерации, но и вводить в ее состав новые модули;
- Принцип обеспечения безопасности при выполнении вычислений — является желательным свойством для любой многопользовательской системы;
Архитектура операционной системы
Многозадачность и распределение полномочий требуют определённой иерархии привилегий компонентов самой ОС. В составе ОС различают три группы компонентов:
- ядро, содержащее планировщик; драйверы устройств, непосредственно управляющие оборудованием; сетевую подсистему, файловую систему;
- системные библиотеки и
- оболочку с утилитами.
Большинство программ, как системных (входящих в ОС), так и прикладных, исполняются в непривилегированном («пользовательском») режиме работы процессора и получают доступ к оборудованию (и, при необходимости, к другим ядерным ресурсам, а также ресурсам иных программ) только посредством системных вызовов. Ядро исполняется в привилегированном режиме: именно в этом смысле говорят, что ОС (точнее, её ядро) управляет оборудованием.
В определении состава ОС значение имеет критерий операциональной целостности (замкнутости): система должна позволять полноценно использовать (включая модификацию) свои компоненты. Поэтому в полный состав ОС включают и набор инструментальных средств (от текстовых редакторов до компиляторов, отладчиков и компоновщиков). Большинство современных операционных систем представляет собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые платформы. Один из вариантов структуризации ОС — выделение монолитную и микроядерную архитектуры.
Функции
Основные функции (простейшие ОС):
- Загрузка приложений в оперативную память и их выполнение;
- Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода);
- Управление оперативной памятью (распределение между процессами, виртуальная память);
- Управление доступом к данным на энергонезависимых носителях (таких как Жёсткий диск, Компакт-диск и т. д.), как правило с помощью файловой системы;
- Пользовательский интерфейс;
- Сетевые операции, поддержка стека протоколов
Эволюция операционных систем и основные идеи
Предшественником ОС следует считать служебные программы (загрузчики и мониторы), а также библиотеки часто используемых подпрограмм, начавшие разрабатываться с появлением универсальных компьютеров 1-го поколения (конец 1940-х годов). Служебные программы минимизировали физические манипуляции оператора с оборудованием, а библиотеки позволяли избежать многократного программирования одних и тех же действий (осуществления операций ввода-вывода, вычисления математических функций и т. п.).
История ОС насчитывает примерно полвека. Она во многом определялась и определяется развитием элементной базы и вычислительной аппаратурой.
40-е годы. Первые цифровые вычислительные машины без ОС. Организация вычислительного процесса решается программистом с пульта управления.
50-е годы. Появление прообраза ОС — мониторных систем, реализующих систему пакетной обработки заданий.
1965-1980 г.г. Переход к интегральным схемам. IBM/360. Реализованы практически все основные концепции, присущие современным ОС: разделение времени и многозадачность, разделение полномочий, реальный масштаб времени, файловые структуры и файловые системы. Реализация мультипрограммирования потребовала внесения очень важных изменений в аппаратуру компьютера: привилегированный и пользовательский режимы, средства защиты областей памяти, развитой системы прерываний.
Конец 70-х. Создан рабочий вариант стека протоколов TCP/IP. В 1983 году он был стандартизирован. Независимость от производителей, гибкость и эффективность, доказанные успешной работой Интернет, сделала этот стек протоколов основным стеком для большинства ОС.
80-е годы. Появление персональных компьютеров. Бурный рост локальных сетей. Поддержка сетевых функций стала необходимым условием. Приняты основные стандарты на коммуникационные технологии локальных сетей: Ethernet, Token Ring, FDDI. Это позволило обеспечить совместимость сетевых ОС на нижних уровнях.
Начало 90-х. Практически все ОС стали сетевыми. Появились специализированные сетевые ОС (например IOS, работающая в маршрутизаторах)
Последнее десятилетие. Особое внимание корпоративным сетевым ОС, для которых характерны высокая степень масштабируемости, поддержка сетевой работы, развитые средства обеспечения безопасности, способность работать в гетерогенной среде, наличие средств централизованного администрирования.
ОС на мировом рынке
С 1990-х наиболее распространёнными операционными системами для персональных компьютеров и серверов являются:
ОС для корпоративного сектора
Эффективная работа IT-инфраструктуры любой современной компании невозможна без грамотно выбранной серверной операционной системы.
Назначение серверной операционной системы — это управление приложениями, обслуживающими всех пользователей корпоративной сети и внешних пользователей (СУБД, средства анализа и управления сетями, службы каталогов, средства обмена сообщениями и групповой работы, Web-серверы, почтовые серверы, корпоративные брандмауэры, серверы приложений, серверные части бизнес-приложений).
Выбор серверной операционной системы и аппаратной платформы для нее в первую очередь определяется кругом решаемых задач, и тем, какие требования предъявляются к ее производительности, стабильности и доступности. Основными игроками на рынке серверных операционных систем являются ОС семейств Windows и Unix.
Операционные системы семейства Windows
Cерверные версии операционной системы Windows сегодня применяются довольно широко — благодаря удобству администрирования и невысокой совокупной стоимости владения.
Операционные системы семейства UNIX
UNIX — группа многозадачных многопользовательских операционных систем. В данный момент существует большое количество вариаций ОС в данной сфере — как коммерческих, так и с открытым кодом.
Большинство российских серверов работают под управлением тех или иных клонов от Unix. По данным выборочного исследования, проведенного порталом RuMetrika (данные за 2006 г. на российских серверах безусловно лидирует Free BSD (53%), на втором месте Linux (32%) , количество серверов, на которых установлена ОС Windows составило 9%, реже встречается Solaris — всего 5%.
«Unix», стандартизация ОС и POSIX
Задуманная и реализованная в 1969 году Кеном Томпсоном при участии нескольких коллег (включая Денниса Ричи и Брайана Кернигана), ОС «Unix» («Unix»; первоначально «UNICS», что обыгрывало название «MULTICS») вобрала в себя многие черты более ранних ОС, но обладала целым рядом свойств, отличающих её от большинства предшественниц:
- простая метафорика (два ключевых понятия: вычислительный процесс и файл);
- компонентная архитектура: принцип «одна программа — одна функция» плюс мощные средства связывания различных программ для решения возникающих задач («оболочка»);
- минимизация ядра (кода, выполняющегося в «реальном» («привилегированном») режиме процессора) и количества системных вызовов;
- независимость от аппаратной архитектуры и реализация на машиннонезависимом языке программирования (язык программирования «Си» стал «побочным продуктом» разработки «Unix»);
Благодаря конкурентности реализаций архитектура ОС «Unix» стала вначале фактическим отраслевым стандартом, а затем обрела статус и стандарта юридического — ISO/IEC 9945.
ОС, следующие стандарту или опирающиеся на него, называют «POSIX-совместимыми»
Стандартизация ОС гарантирует возможность безболезненной замены самой ОС и/или оборудования при развитии вычислительной системы или сети и дешёвого переноса прикладного программного обеспечения (строгое следование стандарту предполагает полную совместимость программ на уровне исходного текста; из-за профилирования стандарта и его развития некоторые изменения бывают всё же необходимы, но перенос программы между POSIX-совместимыми системами обходится на порядки дешевле, чем между альтернативными), а также преемственность опыта пользователей.
Самым заметным эффектом существования этого стандарта стало эффективное разворачивание Интернета в 90-х годах.
«Post Unix» архитектуры ОС
Коллектив, создавший ОС «Юникс», попытался позднее повторить свой успех, обобщив и дополнив исходную концепцию. Таким образом появились ОС «Plan9» и «Inferno», не получившие, впрочем, широкого распространения..
Позднее на основе «Plan9» в Испании были разработаны ОС «Off++» и «Plan B», носящие экспериментальный характер.
К попыткам создать постюниксовскую архитектуру можно также отнести разработку системы программирования и операционной среды «Оберон» в Швейцарском федеральном технологическом институте (ETH Zurich) под руководством проф. Никлауса Вирта.
Архитектура операционных систем
Архитектура операционных систем
ОС – сложная программно-аппаратная система.
Архитектура система – фундаментальный способ организации системы, включая:
- состав и взаимоотношения компонентов, а также компонентов и окружающей среды, принципы проектирования и развития системы. (Стандарт ANSI/IEEE )
Общие тенденции в реализации архитектуры ОС
Ос состоит из множества программных модулей. Модуль ОС – функционально законченный элемент системы, выполненный в соответствии с принятыми межмодульными интерфейсами.
Во всех ОС модули делятся на две группы:
- Ядро операционной системы – модули, исполняющие базовые функции. Это наиболее часто используемые системные модули (как правило, модуль управления системой прерываний, модуль управления процессами, модуль управления файловой системой, модуль управления памятью).
Модули ядра постоянно располагаются а памяти (резидентные модули), оформлены в виде модулей специального формата.
- Вспомогательные модули – модули, загружаемые в память только при необходимости (транзитные модули): утилиты обслуживания диска, системы инструментальные, текстовые и графические редакторы ОС, графические пользовательские интерфейсы, библиотеки API и др.
2. Поддержка специального режима работы
Для повышения надежности и безопасности системы ядро ОС и низкоуровневые драйверы, управляющие работой каналов и устройств ввода-вывода, должны работать в специальном (привилегированном) режиме работы процессора, недоступном пользовательским программам. Вспомогательные модули ОС и пользовательские программы работают в пользовательском режиме.
Поддержка привилегированного и пользовательского режимов невозможна без специальных аппаратных решений процессора. Процессор Intel Pentium поддерживает 4 уровня привилегий (4 кольца: 0 ‑ самый высокий уровень привилегий, 3 – самый низкий), но операционные системы Windows и Unix используют только два.
Процессы, работающие в режиме ядра (привилегированный режим)
— имеют прямой доступ к аппаратному обеспечению;
— имеют доступ ко всей памяти компьютера;
— не могут быть вытеснены в страничный файл на жестком диске;
— выполняются с большим приоритетом, чем процессы режима пользователя.
Компоненты режима ядра защищены архитектурно: процессор предотвращает их изменение другой программой.
Процессы режима пользователя
— не имеют прямого доступа к аппаратуре, это защищает систему от неисправных приложений или неавторизированного доступа;
— ограничены выделенным им адресным пространством. Этим обеспечивается целостность ОС;
— могут быть вытеснены из физической памяти в страничный файл на жестком диске.
— выполняются с меньшим приоритетом, чем процессы режима ядра.
Процессор не должен позволять обращаться пользовательским программам к своим специальным системным регистрам. Попытка вызвать запрещенную команду или обратиться к запрещенному регистру должна вызывать прерывание (исключение).
Прикладные программы обращаются к модулям ядра операционной системы с соответствующим запросом (вызов функций API). При этом процессор переключается в привилегированный режим.
Недостаток: дополнительные затраты времени на переключение режимов.
3. Реализация многослойной структуры ОС
Все модули ОС и модули ядра работают как множество слоев (уровней иерархии). Самый нижний уровень – аппаратный (машинно-зависимый). Он пишется на языке ассемблера и ориентирован на работу с конкретной аппаратной реализацией. Это позволяет обеспечить переносимость ОС на новую платформу, не изменяя содержимого остальных модулей. Другие модули ядра обращаются с аппаратурой только через модуль аппаратной поддержки.
Модули одного слоя общаются друг с другом непосредственно, модули более высокого слоя обращаются только к модулям ближайшего нижнего слоя через межмодульный интерфейс.
«Молодые» (развивающиеся) ОС (например, Linux) имеют более многослойное ядро, чем «старые» (Unix).
Такая организация повышает надежность и защищенность работы системы, поддерживает переносимость, но приводит к замедлению работы ядра.
4. Совместимость с другими ОС и поддержка множественных прикладных сред
Современные операционные системы поддерживают как приложения, оптимизированные для работы в них, так и приложения, написанные для реализации в других ОС.
Прикладная среда – совокупность средств ОС, предназначенных для организации выполнения приложений, использующих
- определенную систему команд, определенный тип API, определенный формат исполняемой программы.
Способы построения множественных прикладных средств:
- эмуляция (моделирование выполнения каждой команды), например, режим эмуляции MS DOS в операционных системах Windows; трансляция системных вызовов. В пользовательском режиме запускается транслятор, переводящий каждую функцию обращения «чужого» приложения к «чужому» API в обращение к функции «родного» API; встраивание в ядро ОС множества прикладных средств. Так реализована работа с множественными прикладными средами в OS2.
Микроядерные ОС – ОС, в состав ядра которых включено минимально необходимое количество модулей. Как правило, это 5 сервисов (сервис – совокупность клиента и сервера):
- управление виртуальной памятью, поддержка заданий и потоков, взаимодействие между процессами управление поддержкой ввода-вывода и прерываниями, сервисы главного компьютера сети и процессора.
Другие подсистемы и функции операционной системы оформляются как обычные пользовательские системы или как системные сервисы, работающие в режиме пользователя. По этому принципу организована ОС QNX.
Микроядерные ОС поддерживают модель клиент-сервер при организации обращения пользовательских программ к системным модулям, работающим в режиме пользователя, и для поддержки механизма вызова между серверами ОС. Микроядро при этом исполняет роль транспортных средств (рис. 1). Защита системных модулей, работающих в режиме пользователя, реализуется на уровне процессора (все приложения в многопроцессорной операционной системе изолированы!).
- простое и оптимизированное ядро (например, для работы в реальном времени), возможность наращивания и изменения функций ОС без изменения ядра, надежность организации, так как запуск или остановка каждого компонента, который представляет собой независимый процесс системы не отражается на работоспособности остальных процессов.
Монолитные (макроядерные) ОС – ОС, ядро которых не делится на центральную часть и периферийные модули (Unix).
Добавление новых функций и изменение существующих для монолитных ОС требует хорошего знания всей архитектуры операционной системы и больших усилий.
Операционная система Windows NT не является настоящей микроядерной ОС, но в ней реализован принцип клиент-сервер во взаимодействиях между модулями управляющей части.
Архитектура Windows 2000
Большинство операционных систем (ОС) представляют собой хорошо структурированные модульные системы. Обычно модули делятся на две группы:
· ядро – модули, выполняющие основные функции ОС,
· модули, выполняющие вспомогательные функции.
Для надежного и безопасного управления ходом выполнения приложений ОС должна иметь по отношению к приложениям определенные привилегии. Средства аппаратной поддержки (архитектура процессора) позволяют поддерживать два режима работы – пользовательский и привилегированный, который также называется режимом ядра.
Наиболее важные части ОС выполняются в режиме ядра. Программы, работающие в режиме ядра имеют доступ к системным данным и к аппаратному обеспечению. Программы пользовательского режима имеют ограниченный доступ к системным данным.
На рис. 1 представлена общая структура ОС Windows 2000.
API (Application Programming Interface) – стандартизованная библиотека программных средств, используемая разработчиками прикладных программ для создания приложений, совместимых с определенной ОС и принятым графическим интерфейсом и для доступа к сервисам ОС.
Рис. 1. Архитектура операционной системы Windows 2000
Для обеспечения аппаратной независимости (возможности работы ОС на разных аппаратных платформах) большая часть модулей ОС общается с аппаратурой как с абстрактными данными, которые связывают с конкретными аппаратными модулями через такие программные модули, как HAL (Hardware Abstraction Layer), микроядро и драйверы устройств.
Назначение и имена системных файлов представлены в таблицах 1 и 2.
Таблица 2. Системные модули режима пользователя