
- •Лекция №2. Операционные системы реального времени
- •Историческая справка
- •Настоящее время
- •Общие сведения об ос
- •Модель клиент-сервер
- •Объектная модель
- •Симметричная мультипроцессорная обработка
- •Процессы и потоки
- •Что такое процесс?
- •Что такое поток?
- •Многозадачность и мультипроцессорная обработка
- •Многопоточность
- •Облегченные потоки
- •Планирование:
- •Синхронизация
- •Немного теории
- •Необходимые требования к операционной системе реального времени для обеспечения предсказуемости
Модель клиент-сервер
Существует множество способов структурирования кода ОС. Один подход, особенно часто применяемый в небольших ОС, например в MS-DOS, состоит в организации системы как набора процедур, каждую из которых может вызывать любая пользовательская процедура. Такая монолитная структура не обеспечивает изоляции данных; в разных участках кода используется информация об устройстве всей системы. Расширение ОС этого типа затруднительно, так как изменение некоторой процедуры может вызвать ошибки в других частях системы, на первый взгляд не имеющих к ней отношения.
Во всех монолитных ОС, кроме самых простых, приложения отделены от собственно ОС. Иными словами, код ОС исполняется в привилегированном режиме процессора —он часто называется режимом ядра(kernel mode) и имеет доступ к данным системы и к аппаратуре; приложения исполняются в непривилегированном, так называемомпользовательском режиме(user mode), в котором им предоставлен ограниченный набор интерфейсов и ограниченный доступ к системным данным. Когда программа пользовательского режима вызывает системный сервис, процессор перехватывает вызов и переключает вызывающий поток в режим ядра. Когда выполнение системного вызова завершается, ОС переключает поток обратно в пользовательский режим и дает возможность вызывающей программе продолжить выполнение. Структура монолитной ОС с разделением пользовательского режима и режима ядра показана на рис. 2-1.
Другой подход к структурированию системы предполагает разделение ее на модули, наслоенные один поверх другого. Каждый модуль предоставляет набор функций, которые могут вызываться другими модулями. Код, расположенный в некотором слое, вызывает код только из нижележащих слоев. В некоторых ОС, например, в VAX/VMSи в старой Multics,многослойность даже принудительно обуславливается аппаратурой (посредством использования иерархии режимов процессора). Одна из возможных послойных структур показана на рис. 2-2.
Одним из преимуществ послойной организации ОС является то, что код каждого слоя получает доступ только к необходимым ему интерфейсам (и структурам данных) нижележащих слоев; таким образом уменьшается объем кода, обладающего неограниченной властью. Кроме того, такая структура позволяет при отладке ОС начинать с самого нижнего слоя и добавлять по одному уровню до тех пор, пока вся система не станет работать правильно. Послойная структура облегчает и расширение системы; можно целиком заменить любой уровень, не затрагивая остальных частей.
Третий подход к структурированию ОС — это модель клиент-сервер. Идея его состоит в разделении ОС на несколько процессов, каждый из которых реализует один набор сервисов: например, распределение памяти, создание процессов или планирование процессов. Каждый сервер (server)выполняется в пользовательском режиме, проверяя в цикле, не обратился ли к нему за обслуживанием какой-либо клиент2. Клиент (client),которым может быть либо другой компонент ОС, либо прикладная программа, запрашивает выполнение сервиса, посылая серверу сообщение. Ядро (или микроядро) ОС, выполняющееся в режиме ядра, доставляет сообщение серверу; тот выполняет запрашиваемые действия, после чего ядро возвращает клиенту результаты в виде другого сообщения, как показано на рис. 2-3.
Рис. 2-1. Монолитная операционная система.
При использовании клиент-серверного подхода получается ОС, состоящая из автономных компонентов небольшого размера. Поскольку все серверы выполняются как отдельные процессы пользовательского режима, авария (и, возможно, перезапуск ) одного из них не нарушает работы остальных частей ОС. Более того, разные серверы могут выполняться на разных процессорах многопроцессорного компьютера или даже на разных компьютерах, что делает ОС пригодной для распределенных вычислительных сред.
Рис. 2-3. Клиент-серверная операционная система.
Теоретическая модель, показанная на рис. 2-3, — это идеализированное изображение системы клиент-сервер, где ядро состоит только из средств передачи сообщений. В действительности существует целый спектр клиент-серверных систем, часть которых выполняют в режиме ядра малый объем работы, в то время как другие — больший. Например, ОС Mach,один из современных примеров клиент-серверной архитектуры, имеет ядро минимального размера, в функции которого входит планирование потоков, передача сообщений, управление виртуальной памятью и драйверы устройств. Все остальное, включая различные интерфейсы прикладных программ (API),файловые системы и сетевую поддержку, работает в пользовательском режиме.
В структуре Windows NT, например,есть элементы как послойной, так и клиент-серверной модели. Часть Windows NT,работающая в режиме ядра, называетсяисполнительной системой NT (NT executive).В нее входит набор компонентов, реализующих управление виртуальной памятью, управление объектами (ресурсами), ввод-вывод и файловые системы (включая сетевые драйверы), взаимодействие между процессами и фрагменты системы защиты от несанкционированного доступа. Эти компоненты взаимодействуют между собой главным образом как модули, а не как слои. Каждый компонент вызывает другие посредством набора тщательно оговоренных внутренних процедур.
Однако послойная модель применяется в системе ввода-вывода исполнительной системы NT,описываемой далее, и в самых низкоуровневых частях исполнительной системы:ядре NT (NT kernel)ислое абстрагирования от оборудования (hardware abstraction layer, HAL).Все другие компоненты исполнительной системы NTрасположены поверх этих двух. Ядро NTвыполняет функции ОС низкого уровня, похожие на те, с которыми мы встречаемся в клиент-серверных ОС с микроядром — например, планирование потоков, обработку прерываний и исключений, а также многопроцессорную синхронизацию. Оно также предоставляет набор процедур и базовых объектов, используемых остальными частями исполнительной системы для реализации конструкций более высокого уровня. Ниже ядра располагаетсядинамически подключаемая библиотека (dynamic-link library, DLL) HAL— слой кода, изолирующий ядро и другие части исполнительной системы NTот платформенно-зависимых особенностей аппаратуры. HALработает непосредственно с оборудованием.
Как показывает рис. 2-4, модель клиент-сервер используется в Windows NTглавным образом для предоставления APIи средств, которые обычно рассматривают как среду ОС. Хотя защищенная подсистема (сервер) Win32 обеспечивает пользовательский интерфейс и необходима для работы системы, другие серверы также могут подключаться к исполнительной системе, причем они могут загружаться и выполняться одновременно в любой желаемой комбинации. Серверы взаимодействуют с процессами приложений при помощи средства передачи сообщений, предоставляемого исполнительной системой NT.
Использование модели клиент-сервер дает следующие преимущества:
Упрощает базу ОС — исполнительную систему NT.Одной из задач Windows NTбыло предоставить APIWin32, MS-DOS,16-разрядной Windows, POSIXи OS/2. Реализация каждого APIв отдельном сервере устраняет конфликты и дублирование в исполнительной системе и позволяет легко добавлять новые API.
Повышает надежность. Каждый сервер выполняется как отдельный процесс, имеющий собственную память, и, таким образом, защищен от других процессов. Более того, так как серверы работают в пользовательском режиме, они не имеют непосредственного доступа к аппаратуре и не могут изменить содержимое областей памяти, занятых исполнительной системой.
Прекрасно соответствует модели распределенных вычислений. Так как сетевые компьютеры используют модель клиент-сервер и общаются друг с другом посредством передачи сообщений, локальные серверы легко могут посылать сообщения удаленным машинам при обработке запросов от клиентских приложений. Клиентам не требуется знать, обслуживается их запрос локально или удаленно.
Рис. 2-4. Клиент-серверная структура Windows NT.