35
Операционные Системы 3. Архитектура ОС Брагин Алексей Владимирович [email protected] ИУ9, МГТУ им. Н.Э. Баумана

Операционные системы 2015, лекция № 3

Embed Size (px)

Citation preview

Page 1: Операционные системы 2015, лекция № 3

Операционные Системы

3. Архитектура ОС

Брагин Алексей Владимирович[email protected]

ИУ9, МГТУ им. Н.Э. Баумана

Page 2: Операционные системы 2015, лекция № 3

В этой лекции…

• Системные вызовы

• Архитектура современных ОС

• Виртуализация

• Многопроцессорность

© 2013 Брагин А.В. 2

Page 3: Операционные системы 2015, лекция № 3

© 2013 Брагин А.В. 3

Page 4: Операционные системы 2015, лекция № 3

Системные вызовы

• Интерфейс между процессом и ядром ОС

– Предоставляет доступ к сервисам СО

– Явный вызов ядра через программное прерывание

– Каждому системному вызову сопоставлен номер

– Системный вызов выполняется в режиме ядра

© 2013 Брагин А.В. 4

Page 5: Операционные системы 2015, лекция № 3

Системные вызовы 2

• Системные вызовы – единственная точка входа в ядро для пользовательских программ

• Категории системных вызовов– Управление процессами

– Управление памятью

– Управление файлами

– Управление устройствами

– Коммуникации

© 2013 Брагин А.В. 5

Page 6: Операционные системы 2015, лекция № 3

API и системные вызовы

• В ОС обычно присутствует библиотека, которая реализует набор API-функций, инкапсулирующих системные вызовы

– Написана на ЯВУ

– В случае с Unix/Linux это стандартная библиотека языка Си – libc

– В общем случае каждому системному вызову соответствует API-функция, которые используют разработчики ПО

© 2013 Брагин А.В. 6

Page 7: Операционные системы 2015, лекция № 3

Стандартизация API

• Были предприняты попытки стандартизировать API– POSIX. Стандарт, реализуемый многими

архитектурами:• Ядра Unix, Linux, Mac OS X, Windows NT, ReactOS

– WinAPI.• Старая реализация (Win16 API) была

стандартизована, как ECMA-234.

• Новая реализация (Win32 API) стала «стандартом де-факто». Стив Балмер в 2010 озвучил цифру 4 миллиона программ под Win32 API.

© 2013 Брагин А.В. 7

Page 8: Операционные системы 2015, лекция № 3

Выполнение системного вызова

• Системный вызов определяется номером

– Вызывающий процесс передаёт ядру номер того системного вызова, который ему необходимо выполнить

• В ОС есть таблица указателей на функции, реализующие системные вызовы

• Номер системного вызова – индекс в этой таблице

© 2013 Брагин А.В. 8

Page 9: Операционные системы 2015, лекция № 3

Выполнение системного вызова 2

© 2013 Брагин А.В. 9

Режим пользователя

Режим ядра

NtCreateEvent()

Программа

Системный вызов № i

Ядро

Таблица системных

вызовов

NtCreateEvent()i

Библиотека NTDLL

Функция в ядре

Page 10: Операционные системы 2015, лекция № 3

Передача параметров

• Как и при вызове обычных подпрограмм, есть три способа передачи параметров– Через регистры

• Параметры сохраняются в регистрах процессора• Очень ограниченное количество

– Через память• Параметры сохраняются в блоке памяти• Функции передаётся указатель на этот блок памяти• Так реализован системный вызов в Linux

– Через стек• Пользовательская программа помещает параметры в стек• Функция-обработчик системного вызова берёт параметры из

стека• Так реализован системный вызов в ReactOS и Windows.

© 2013 Брагин А.В. 10

Page 11: Операционные системы 2015, лекция № 3

Современные ОС

– Микроядерная архитектура

– Многопоточность

– Симметричная мультипроцессорность

– Виртуализация

– Распределённые операционные системы

© 2013 Брагин А.В. 11

Page 12: Операционные системы 2015, лекция № 3

Архитектура ядра

• Ядро – основной и самый важный компонент ОС

• Различные подходы к проектированию и реализации

– Монолитное ядро

– Слои/уровни

– Микроядро

– Модули ядра

© 2013 Брагин А.В. 12

Page 13: Операционные системы 2015, лекция № 3

Монолитное ядро

• Преимущественно операционных системы сейчас используют большое монолитное ядро (большинство Unix-систем, Linux)

• Монолитное ядро содержит– Планирование процессов– Управление файловой системой– Сетевое взаимодействие– Драйверы устройств– Управление памятью и т.д.

• Преимущества– Производительность

• Недостатки– Неустойчивость к сбоям

© 2013 Брагин А.В. 13

Page 14: Операционные системы 2015, лекция № 3

Монолитный подход - простейший

• Первые ОС были монолитными

• Нет определённой структуры

• Нет уровней

• Нет разделения на модули

• Вначале были небольшие простые системы

• Пример: MS-DOS– Больше функциональности, меньше места

– Разделения на уровни не было, программы могли работать с оборудованием напрямую

© 2013 Брагин А.В. 14

Page 15: Операционные системы 2015, лекция № 3

MS-DOS

© 2013 Брагин А.В. 15

Прикладное ПО

BIOS (драйверы устройств в BIOS)

Драйверы устройств в MS-DOS

Резидентные программы

Page 16: Операционные системы 2015, лекция № 3

Монолитный подход - уровни

• Простая неорганизованная структура – это плохо

• Улучшение: ОС разбивается на ряд уровней (слоёв), каждый последующий базируется на предыдущем– Самый нижний уровень – это аппаратное обеспечение

– Самый верхний уровень – это интерфейс пользователя

• Каждый уровень использует только функции (сервисы), предоставляемые нижестоящим уровнем.

• Все, или почти все уровни работают в режиме ядра

• Примеры таких ОС: MULTICS, VAX/VMS

© 2013 Брагин А.В. 16

Page 17: Операционные системы 2015, лекция № 3

Простой поуровневый подход

• Используется оригинальным ядром Unix– Небольшое число больших, монолитных слоев

– Нет инкапсуляции, функции и сервисы, предоставляемые на разных уровнях доступны всей системе

– По сути это ядро – набор процедур, которые могут вызвать любые другие процедуры

– Огромное количество функциональности в ядре

• Современные системы более чётко разделены на уровни

© 2013 Брагин А.В. 17

Page 18: Операционные системы 2015, лекция № 3

Ядро Unix

© 2013 Брагин А.В. 18

Пользователи

Оболочка, интерпретаторы командной строки, системные библиотеки

Символьный ввод/вывод, блочный ввод/вывод, драйверы терминалов, файловая система, дисковые

драйверы, планировщик, виртуальная память, …

Интерфейс системных вызовов

Интерфейс с аппаратурой

ТерминалыКонтроллеры

дисковФизическая

память

Page 19: Операционные системы 2015, лекция № 3

Поуровневый подход

• Если уровни строго разделены– над ними можно независимо работать

– можно независимо заменять

• Например, сетевой стек TCP/IP является примером строго разделения на уровни

• Сложности– Как определить эти слои

– Разделение на уровни возможно только при наличии иерархии вызовов и отсутствии циклических зависимостей

© 2013 Брагин А.В. 19

Page 20: Операционные системы 2015, лекция № 3

Поуровневый подход 2

• Циклические зависимости– Например, в драйвере диска

• Драйвер устройства может ожидать завершения операции ввода/вывода, это означает обращение к уровню планировщика времени ЦП

• ЦП может вызывать драйвер устройства для выгрузки и подгрузки процессов

• Чем больше уровней, тем больше возникает подобных ситуаций

• Отход от строгой поуровневой модели и возврат к небольшому числу слоёв с большой функциональностью

© 2013 Брагин А.В. 20

Page 21: Операционные системы 2015, лекция № 3

Микроядро

• Микроядро – ядро, содержащее только самые необходимые функции

• Идея: минимизировать ядро и вынести как можно больше функциональности в режим пользователя (т.е. исполнять эту функциональность в виде обычных процессов)

• Многие сервисы становятся пользовательскими процессами:– Драйверы устройств– Файловые системы– Менеджер виртуальной памяти– Оконные системы– Службы безопасности

• Такой подход популяризован ядром Mach («Мак»).• На основе Mach - Mac OS X и GNU Hurd

© 2013 Брагин А.В. 21

Page 22: Операционные системы 2015, лекция № 3

Структура микроядра

• Компоненты ОС, являющиеся внешними к микроядру реализуются в виде серверных процессов– Взаимодействие с ними через обмен сообщениями

• Микроядро основывается на механизме обмена сообщениями– Проверяет корректность сообщений– Передаёт их между компонентами– Проверяет, разрешён ли обмен сообщениями

• Предоставляет доступ к оборудованию• Фактически реализует клиент-серверную

архитектуру на одном компьютере

© 2013 Брагин А.В. 22

Page 23: Операционные системы 2015, лекция № 3

Микроядро: преимущества

• Унифицированные интерфейсы: процессы могут обмениваться сообщениями, нет разницы между режимом пользователя и ядра, все сервисы предоставляются через обмен сообщениями в клиент-серверной архитектуре

• Расширяемость: Легче расширить, новые сервисы добавляются как новые программы

• Портируемость: На новое оборудование нужно перенести только микроядро

• Надёжность и безопасность: меньше кода выполняется в режиме ядра, ошибки программ в режиме пользователя не влияют на остальную часть системы

© 2013 Брагин А.В. 23

Page 24: Операционные системы 2015, лекция № 3

Микроядро: недостатки

• Больше расходов на взаимодействие между системными сервисами– Каждое взаимодействие требует переключения режимов

(переход из режима пользователя в режим ядра и обратно)– Системные сервисы работающие в режиме пользователя –

это процессы, ОС нужно их планировать

• Решение 1: реинтеграция таких сервисов обратно в ядро– Улучшается производительность: меньше переключений,

одно адресное пространство– Такое было сделано в ядре Mach

• Решение 2: сделать ядро ещё меньше –экспериментальные архитектуры (нано-ядра, пико-ядра)

© 2013 Брагин А.В. 24

Page 25: Операционные системы 2015, лекция № 3

Микроядро 3

• Минимальная функциональность в микроядре:– Низкоуровневое управление памятью

• Отображение страниц на физическую память

• Все остальные механизмы предоставляются сервисами, работающими в режиме пользователя– Защита адресного пространства

– Механизмы замещения страниц

– Управление виртуальной памятью

– Межпроцессное взаимодействие (IPC)

– Ввод/вывод и обработка прерываний

© 2013 Брагин А.В. 25

Page 26: Операционные системы 2015, лекция № 3

Модули ядра

• Многие ОС реализуют поддержку модульности ядра– Например, Linux

• Каждый ключевой компонент – отдельный модуль• Взаимодействие через определенные интерфейсы• Загружаются по требованию

• Модули – нечто среднее между поуровневым и микроядерным подходом– Удобно для разработки– Модули в режиме ядра, меньше затраты на

взаимодействие– Компромисс ради производительности

© 2013 Брагин А.В. 26

Page 27: Операционные системы 2015, лекция № 3

Модульный подход

• Операционная система Mac OS X– Гибридный подход: ядро Mach (микроядро) комбинированное с BSD

ядром– Ядро BSD: Предоставляет поддержку интерфейса командной строки, сеть,

файловую систему, POSIX API и потоки– Ядро Mach: управление памятью, RPC, IPC, обмен сообщениями

© 2013 Брагин А.В. 27

BSD

Mach

Среда приложенийСервисы коммуникаций

Ядро

Page 28: Операционные системы 2015, лекция № 3

Виртуализация

• Отдельная большая тема

• Сейчас виртуализация есть практически везде

– планшет с Android

– Телефон с Java

– Веб-сервер

• Рассмотрим ключевые понятия в виртуализации

© 2013 Брагин А.В. 28

Page 29: Операционные системы 2015, лекция № 3

Виртуальные машины

• Впервые коммерчески доступны в мейнфреймах IBM в 1972 году

• Виртуальная машина – дальнейшее развитие поуровнего подхода– Создаёт виртуальное аппаратное окружение

(процессор, память, ввод/вывод), реализованное программно

– Работает как приложение в операционной системе– Виртуализация позволяет одному ПК или серверу

одновременно выполнять несколько ОС или несколько сессий одной ОС на одной платформе

– Таким образом ПК может выполнять множество различных программ, работающих на различных ОС

© 2013 Брагин А.В. 29

Page 30: Операционные системы 2015, лекция № 3

Виртуальные машины 2

© 2013 Брагин А.В. 30

Ядро Ядро Ядро

Поддержка виртуальных машин

Аппаратное обеспечение

ВМ1 ВМ2 ВМ3

Процессы Процессы Процессы

Ядро

Аппаратное обеспечение

Процессы

Page 31: Операционные системы 2015, лекция № 3

Многопроцессорность

• Улучшает производительность за счёт введения истинного параллелизма выполнения программ

• Симметричная мультипроцессорность– Два или больше процессоров

– Процессоры используют одну общую память и устройства ввода/вывода

– Общий набор инструкций

– ОС поддерживает архитектуру SMP при планировании, синхронизации

© 2013 Брагин А.В. 31

Page 32: Операционные системы 2015, лекция № 3

Преимущества SMP

• Производительность– На каждом процессоре может работать один

или больше процессов

• Доступность– Отказ одного процессора не приведёт к отказу

всей системы

• Расширяемость– Увеличение производительности за счёт

добавления процессоров

© 2013 Брагин А.В. 32

Page 33: Операционные системы 2015, лекция № 3

Изменения в архитектуре ОС

• Многопроцессорная ОС должна предоставлять всё тоже, что и однопроцессорная

• Плюс учитывать сложности многопроцессорности• Ключевые вопросы

– Реентерабельность ядра: Один и тот же код может выполняться одновременно несколькими процессорами

– Планирование: Процессы планируются на разных процессорах– Синхронизация: Истинный параллелизм выполнения процессов и

доступ к общим ресурсам (память, ввод/вывод) требуют эффективной синхронизации

– Управление памятью: Общая физическая память – нужно управлять этим ресурсом (механизмы замещения страниц)

– Надёжность и устойчивость к сбоям: Если один процессор отказывает, задачи надо расределить на другие.

© 2013 Брагин А.В. 33

Page 34: Операционные системы 2015, лекция № 3

Многоядерные процессоры

• Процессор содержит несколько вычислительных ядер

– Параллелизм в рамках одного процессора

– Каждое ядро – по сути отдельный процессор

• Преимущества

– Несколько процессоров в одном чипе существенно увеличивает производительность

– Введение различных уровней кэш-памяти

© 2013 Брагин А.В. 34

Page 35: Операционные системы 2015, лекция № 3

Распределенные ОС

• Распределенные операционные системы предоставляют

– Единое пространство общей памяти

– Унифицированные средства доступа

• Очевидно, что по скорости доступа к ресурсам они медленнее, чем однопроцессорные и SMP системы

© 2013 Брагин А.В. 35