Виды архитектур ядер операционных систем.
1) Монолитная - вопрос №9
2) Многослойная (слоисто-монолитная) – вопрос №10
3) Микроядерная – вопрос №11
4) Наноядерная
5) Экзоядерная
6) Гибридные ядра
4.Наноядерная архитектура
-умеет обрабатывать только прерывания
-минимальное количество операций
-все остальное работает в пользовательском режиме
-используется, когда даем полное равноправие процессам
5. Экзоядерная
-защита механизма распределения ресурсов
-высокая эффективность, при условии, что у стороннего приложения нет возможности нарушить защиту
-приложение не будет выполняться, если оно потенциально может нарушить безопасность
6. Гибридные ядра
-архитектура позволяет включать или не включать некоторые слои в зависимости от ситуации
-баланс проблемы эффективность/безопасность
-только на экспериментальных ОС, промышленных нет
Монолитная архитектура ядра операционной системы.
1. Монолитная.
Soft1 Soft2
\ /
0 //
/ / | \ \ // ядро
0 0 0 0 0 // сервисные процедуры; единое адресное пространство
| \ / | /\ |\ /|\ // при добавлении драйвера надо перекомпилировать ядро
H1 H2 H3 H4
Многослойная архитектура ядра операционной системы.
Слоисто-монолитное ядро (на каждом слое имеем модули, между которыми есть программные интерфейсы)
software
Hard
1. 1 слой: средства аппаратной поддержки ядра, прерывания, в т.ч. по таймеру, средства поддержки виртуальной памяти, аппаратные средства переключения контестов
2. 2 слой: машинно-зависимые модули(HAL)
3. 3 слой: базовые механизмы ядра; уровень исполнителя
4. 4 слой: менеджеры и ресурсы (PDCA)
5. 5 слой: интерфейс системных вызовов
при замене слоя на другой необходимо перелинковать все заново; перекомпилировать не надо, но надо пересобрать ручками
Soft | User mode ___ system call ___
OS | Kernel mode delta t\____________/:delta t 2 delta t
Микроядерная архитектура операционной системы.
2. Микроядерная
Servers of processes, memory, print) and apps
^
|| //типа двусторонняя стрелочка
V
Базовые механизмы
HAL
||
Hard
Что значит перезагрузить ОС? Выгрузить из памяти и загрузить назад ядро
Soft app____ __app_ __app_
OS \______/ \_______/
Ядро ядро
Микроядерная менее надежна и менее безопасна, чем монолитная
FreeBDSM – пример микроядерной архитектуры
12. Понятие процесса, потока, нити, задания.
Процесс – совокупность набора исполняющихся команд, ассоциированных с ним ресурсов и текущего момента выполнения.
Процессы начинают делить на потоки. Поток – обособленный набор команд и свое собственно состояние. Поток (тред) – единица планирования процессорного времени. Каждый поток делится на фибы (нить/волокна). ОС ничего не знает о волокнах, они управлются самостоятельно внутри тредов внутренним планировщиком.
Процессы могут быть объединены в задание (task - win)/ Control group (linux). Задания могут быть ограниченны ресурсами и временем исполнения, etc.
Мы считаем, что один процесс реализован в рамках одного потока.
Особенности реализации Windows
Используется четыре понятия:
· Задание - набор процессов с общими квотами и лимитами
· Процесс - контейнер ресурсов (память ...), содержит как минимум один поток.
· Поток - именно исполняемая часть, планируемая ядром.
· Волокно - облегченный поток, управляемый полностью в пространстве пользователя. Один поток может содержать несколько волокон.
Потоки работают в режиме пользователя, но при системных вызовах переключаются в режим ядра. Из-за переключения в режим ядра и обратно, очень замедляется работа системы. Поэтому было введено понятие волокна. У каждого потока может быть несколько волокон.)
Функции подсистемы управления процессами.
Система управления задачами; функции: (Подсистема управления процессами и ее функции)
a. Создание процессов.
b. Обеспечение процесса необходимыми ресурсами – изначальное и динамическое.
c. Изоляция процессов.
d. Планирование выполнения процессов.
e. Диспетчеризация процессов.
f. Организация межпроцесного взаимодействия.
g. Синхронизация процессов.
h. Завершение и уничтожение процессов.
Методы создания процессов.
(Linux) Процесс порождается с помощью системного вызова fork(). При этом вызове происходит проверка на наличие свободной памяти, доступной для размещения нового процесса. Если требуемая память доступна, то создается процесс-потомок текущего процесса, представляющий собой точную копию вызывающего процесса. Этому процессу присваивается новый уникальный идентификатор, а идентификатор родительского процесса запоминается в блоке управления процессом (PCB).
Создание Win32 процесса осуществляется вызовом одной из таких функций, как CreateProcess, CreateProcessAsUser (для Win NT/2000) и CreateProcessWithLogonW (начиная с Win2000) и происходит в несколько этапов:
- Открывается файл образа (EXE), который будет выполняться в процессе. Если исполняемый файл не является Win32 приложением, то ищется образ поддержки (support image) для запуска этой программы. Например, если исполняется файл с расширением .bat, запускается cmd.exe и т.п.
- Создается объект Win32 "процесс".
- Создается первичный поток (стек, контекст и объект "поток").
- Подсистема Win32 уведомляется о создании нового процесса и потока.
- Начинается выполнение первичного потока.
- В контексте нового процесса и потока инициализируется адресное пространство (например, загружаются требуемые DLL) и начинается выполнение программы.