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

Рис. 4.3.  Структура ОС клиент-сервер

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

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

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

На одном края этого спектра находится разрабатываемая фирмой IBM на основе микроядра Mach операционная система Workplace OS, что придерживается чистой микроядерной доктрины, которая составляет в том, что все несущественные функции ОС должны выполняться не в режиме ядра, а в непривилегированном (користувальному) режиме. На другое - Windows NT, в составе которой есть исполняющая система (NT executive), что работает в режиме ядра и выполняет функции обеспечения безопасности, ввода вывода и другие.

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

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

Есть два пути решения этой проблемы. Один путь - разместить несколько таких, донимающих к режиму работы процессора, серверов, в просторные ядра, который обеспечит им полный доступ к аппаратуре и , в то же время, связь с другими процессами с помощью обычного механизма сообщений. Такой подход был использован, например, при разработке Windows NT: кроме микроядра, в привилегированном режиме работает часть Windows NT, называемая executive управляющей программой. Она включает ряд компонентов, которые управляют виртуальной памятью, объектами, выводом-внедрением-выводом и файловой системой (включая сетевые драйверы), взаимодействием процессов, и частично системой безопасности.

 

Возможно стоит прочитать: