Виды архитектур ядер операционных систем.

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) и начинается выполнение программы.

Наши рекомендации