- •Лекция№16-17
- •Понятие ресурса.
- •Понятие виртуальной машины.
- •Основные параметры, определяющие различия “чистой” и виртуальной машин.
- •Типы ос Однопользовательские системы
- •Контроль процессов
- •Файловые вопросно-ответные системы
- •Системы поддержки транзакций
- •Системы общего пользования
- •Сетевые операционные системы
- •Структура ос
- •Монолитная ос (Monolithic Operating Systems )
- •Уровневая ос (Layered Operating Systems)
- •Клиент-сервер
- •Функции, характеристики и желаемые черты ос Функции ос
- •Характеристики ос
- •Желаемые черты oc.
Уровневая ос (Layered Operating Systems)
Другой способ структурирования ОС состоит в том, чтобы разделить ее на модули, которые составляют уровни; каждый уровень обеспечивает множество функций, которые зависят только от нижних уровней. Самые нижние уровни - это те, которые наиболее критичны по надежности, мощи и производительности.
Таким образом, к чистой машине разработчик добавляет слой программного обеспечения. Программное обеспечение вместе с низлежащей аппаратурой обеспечивает выполнение некоторого множества команд, определяющих новую виртуальную машину. На следующем шаге выделяется новое нужное свойство, добавляется новый слой программного обеспечения и получается еще более удобная виртуальная машина.
Слои программного обеспечения добавляются последовательно, причем каждый слой реализует одно или несколько желаемых свойств до тех пор, пока не будет получена требуемая виртуальная машина.
Преимуществом этой структуры является то, что модульный подход уменьшает зависимость между различными компонентами системы, сокращая нежелательные взаимодействия. Только несколько используемых сейчас ОС являются образцом такого построения в чистом виде. Значимыми примерами таких ОС являются T.H.E. (Dijkstra, 1968) и RC-4000 (Hansen, 1970). В коммерческом мире - это VME для ICL 29000 - серии (Кeedy, 1979, Huxtable and Pinkerton, 1977) и VMS для DEC VAX и Alpha (Goldenberg и др. 1991). Unix также является уровневой операционной системой. Самый внутрениий слой – это оборудование, которое предоставляет сервисы для операционной системы. Операционная система, применительно к UNIX, называемая ядром (kernel) непосредственно взаимодействует с оборудованием и представляет услоги для пользовательских программ. Этим пользовательским программам не требуется никаких знаний об оборудовании. Они должны знать только как взаимодействовать с ядром.
Проектирование современных процессоров часто включает службы, которые также включают уровневость; ими являются ICL 2900 (Buckle, 1978), Intel 80486 (Intel, 1990) и DEC Alpha (Sites, 1993).
Клиент-сервер
Другим подходом, также заключающимся в делении системы на модули, является наделение модулей некоторым множеством функций. Однако, вместо ранжирования по уровням, модули являются более или менее равноправными. Они взаимодействуют не вызовом процедур из друг друга, а посылкой сообщений через центральный обработчик сообщений. Сообщения идут в обоих направлениях, результаты возвращаются то тому же пути, что и запрос.
Модуль, посылающий первоначальное сообщение известен как клиент, модуль, получающий его ( и предоставляющий соответствующий сервис) известен как сервер. Статус данного модуля не всегда один и тот же; сервер может быть запросом для предоставления искомого сервиса, для предоставления которого может быть необходимо послать запрос еще другому модулю; и поэтому в этом случае этот модуль выступает как клиент. Этот подход предлагает те же преимущества, что и уровневый подход, но с увеличением изоляции и сокращением зависимости между модулями (с расширением возможности запуска клиента и сервера на разных процессорах или даже разных системах). Количество критического кода также сокращается. Центральной компонентой такой системы является, конечно, та, что производит обработку сообщений и обеспечивает базисные функции; т.е. то, что часто называют микроядром.
Одним из примеров клиент-сервер ОС является Windows NT (Custer, 1993).`
