
- •2. Структура ос
- •2.1. Понятие ядра, способы построения ос (Лекция 4)
- •2.1.1. Типы архитектур ядер ос
- •2.1.1.1. Понятие ядра, монолитные системы
- •2.1.1.2. Многоуровневые системы
- •2.1.1.3. Виртуальные машины
- •2.1.1.4. Экзоядро
- •2.1.1.5. Микроядерная архитектура. Модели "клиент-сервер"
- •2.1.1.6. Модульное ядро
- •2.1.1.7. Гибридное ядро
2.1.1.2. Многоуровневые системы
Обобщением предыдущего подхода является организация ОС в виде иерархий уровней. Первая система THE, построенная таким образом, имела шесть уровней:
0 – многозадачность;
1 – управление памятью;
2 – связь пользователь-процесс;
3 – управление в/в;
4 – программы пользователя;
5 – пользователь.
Уровень 0 занимался распределением времени процессора, переключая процессы при возникновении прерывания или при срабатывании таймера. Над уровнем 0 система состояла из последовательных процессов, каждый из которых можно было запрограммировать, не заботясь о том, что на одном процессоре запущено несколько процессов. Таким образом, уровень 0 обеспечивал базовую многозадачность процессора.
Уровень 1 управлял памятью. Он выделял процессам пространство в оперативной памяти и на магнитном барабане объемом 512 K слов для тех частей процессов, которые не помещались в оперативной памяти. Процессы более высоких уровней не заботились о том, находятся ли в данный момент они в памяти или на барабане. Программное обеспечение уровня 1 обеспечивало попадание страниц в оперативную память по мере необходимости.
Уровень 2 управлял связью между консолью оператора и процессами. Таким образом, все процессы выше этого уровня имели свою собственную консоль оператора.
Уровень 3 управлял устройствами ввода-вывода и буферизовал потоки информации к ним и от них. Любой процесс выше уровня 3 мог обращаться к абстрактным устройствам ввода-вывода, имеющим удобные для пользователя характеристики.
На уровне 4 работали пользовательские программы, которым не надо было заботиться о процессах, памяти или консоли, и управлении устройствами ввода-вывода.
Процесс системного оператора размещался на 5 уровне.
Дальнейшее обобщение многоуровневой концепции было сделано в ОС Multics. Уровни представляли собой концентрические кольца, внутренние кольца являлись более привилегированными, чем внешние.
В системе THE многоуровневая схема представляла собой конструкционное решение и все части, в конечном счете, были связаны в один объектный файл, в то время как вMulticsмеханизм разделения колец действовал во время исполнения на аппаратном уровне.
2.1.1.3. Виртуальные машины
OS/360->VM/370. Исходная версияOS/360 была системой пакетной обработки. Однако множество пользователей системы желали работать в системе с разделением времени. Группа из научного центраIBM в Кембридже, штат Массачусетс, разработала системуCP/CMS, позднее переименованную вVM/370, которая выполняла функции многозадачности и расширенной машины с более удобным интерфейсом, чем тот, который предоставляется оборудованием напрямую. Сердце системы, называемое монитором виртуальной машины, работает с оборудованием и обеспечивает многозадачность, предоставляя пользователю не одну, а несколько виртуальных машин. Эти виртуальные машины не являются расширенными. Они представляют собой точные копии голой аппаратуры, включая режимы ядра и пользователя, ввод-вывод данных, прерывания и т.д. Так как каждая виртуальная машина идентична настоящему оборудованию, на каждой из них может работать любая ОС (в частности,CMS), которая запускается прямо на аппаратуре. На разных виртуальных машинах могут функционировать различные ОС. Когда программа ОСCMS выполняет системный вызов, он прерывает ОС на своей собственной виртуальной машине, а не наVM/370. ЗатемCMS выдает обычные команды ввода-вывода для чтения своего виртуального диска или другие команды, которые могут ей понадобиться для выполнения вызова. Эти команды ввода/вывода перехватываютсяVM/370, которая выполняет их в рамках моделирования реального оборудования. Такая модель существует вWindowsдля поддержки старых 16-битных программ. Но ключевое отличие:VMпредоставляет только 8086, а неPentium.VM/370 позволяла запустить саму себя на виртуальной машине.