SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Операционные Системы
3. Архитектура ОС
Брагин Алексей Владимирович
aleksey@reactos.org
ИУ9, МГТУ им. Н.Э. Баумана
В этой лекции…
• Системные вызовы
• Архитектура современных ОС
• Виртуализация
• Многопроцессорность
© 2013 Брагин А.В. 2
© 2013 Брагин А.В. 3
Системные вызовы
• Интерфейс между процессом и ядром ОС
– Предоставляет доступ к сервисам СО
– Явный вызов ядра через программное
прерывание
– Каждому системному вызову сопоставлен
номер
– Системный вызов выполняется в режиме ядра
© 2013 Брагин А.В. 4
Системные вызовы 2
• Системные вызовы – единственная точка
входа в ядро для пользовательских
программ
• Категории системных вызовов
– Управление процессами
– Управление памятью
– Управление файлами
– Управление устройствами
– Коммуникации
© 2013 Брагин А.В. 5
API и системные вызовы
• В ОС обычно присутствует библиотека,
которая реализует набор API-функций,
инкапсулирующих системные вызовы
– Написана на ЯВУ
– В случае с Unix/Linux это стандартная
библиотека языка Си – libc
– В общем случае каждому системному вызову
соответствует API-функция, которые используют
разработчики ПО
© 2013 Брагин А.В. 6
Стандартизация API
• Были предприняты попытки
стандартизировать API
– POSIX. Стандарт, реализуемый многими
архитектурами:
• Ядра Unix, Linux, Mac OS X, Windows NT, ReactOS
– WinAPI.
• Старая реализация (Win16 API) была
стандартизована, как ECMA-234.
• Новая реализация (Win32 API) стала «стандартом
де-факто». Стив Балмер в 2010 озвучил цифру 4
миллиона программ под Win32 API.
© 2013 Брагин А.В. 7
Выполнение системного вызова
• Системный вызов определяется номером
– Вызывающий процесс передаёт ядру номер
того системного вызова, который ему
необходимо выполнить
• В ОС есть таблица указателей на функции,
реализующие системные вызовы
• Номер системного вызова – индекс в этой
таблице
© 2013 Брагин А.В. 8
Выполнение системного вызова 2
© 2013 Брагин А.В. 9
Режим пользователя
Режим ядра
NtCreateEvent()
Программа
Системный вызов № i
Ядро
Таблица
системных
вызовов
NtCreateEvent()i
Библиотека NTDLL
Функция в ядре
Передача параметров
• Как и при вызове обычных подпрограмм, есть три
способа передачи параметров
– Через регистры
• Параметры сохраняются в регистрах процессора
• Очень ограниченное количество
– Через память
• Параметры сохраняются в блоке памяти
• Функции передаётся указатель на этот блок памяти
• Так реализован системный вызов в Linux
– Через стек
• Пользовательская программа помещает параметры в стек
• Функция-обработчик системного вызова берёт параметры из
стека
• Так реализован системный вызов в ReactOS и Windows.
© 2013 Брагин А.В. 10
Современные ОС
– Микроядерная архитектура
– Многопоточность
– Симметричная мультипроцессорность
– Виртуализация
– Распределённые операционные системы
© 2013 Брагин А.В. 11
Архитектура ядра
• Ядро – основной и самый важный
компонент ОС
• Различные подходы к проектированию и
реализации
– Монолитное ядро
– Слои/уровни
– Микроядро
– Модули ядра
© 2013 Брагин А.В. 12
Монолитное ядро
• Преимущественно операционных системы сейчас
используют большое монолитное ядро (большинство
Unix-систем, Linux)
• Монолитное ядро содержит
– Планирование процессов
– Управление файловой системой
– Сетевое взаимодействие
– Драйверы устройств
– Управление памятью и т.д.
• Преимущества
– Производительность
• Недостатки
– Неустойчивость к сбоям
© 2013 Брагин А.В. 13
Монолитный подход - простейший
• Первые ОС были монолитными
• Нет определённой структуры
• Нет уровней
• Нет разделения на модули
• Вначале были небольшие простые системы
• Пример: MS-DOS
– Больше функциональности, меньше места
– Разделения на уровни не было, программы могли
работать с оборудованием напрямую
© 2013 Брагин А.В. 14
MS-DOS
© 2013 Брагин А.В. 15
Прикладное ПО
BIOS (драйверы устройств в BIOS)
Драйверы устройств в MS-DOS
Резидентные программы
Монолитный подход - уровни
• Простая неорганизованная структура – это плохо
• Улучшение: ОС разбивается на ряд уровней (слоёв),
каждый последующий базируется на предыдущем
– Самый нижний уровень – это аппаратное обеспечение
– Самый верхний уровень – это интерфейс пользователя
• Каждый уровень использует только функции
(сервисы), предоставляемые нижестоящим
уровнем.
• Все, или почти все уровни работают в режиме ядра
• Примеры таких ОС: MULTICS, VAX/VMS
© 2013 Брагин А.В. 16
Простой поуровневый подход
• Используется оригинальным ядром Unix
– Небольшое число больших, монолитных слоев
– Нет инкапсуляции, функции и сервисы,
предоставляемые на разных уровнях доступны
всей системе
– По сути это ядро – набор процедур, которые могут
вызвать любые другие процедуры
– Огромное количество функциональности в ядре
• Современные системы более чётко разделены
на уровни
© 2013 Брагин А.В. 17
Ядро Unix
© 2013 Брагин А.В. 18
Пользователи
Оболочка, интерпретаторы командной строки,
системные библиотеки
Символьный ввод/вывод, блочный ввод/вывод,
драйверы терминалов, файловая система, дисковые
драйверы, планировщик, виртуальная память, …
Интерфейс системных вызовов
Интерфейс с аппаратурой
Терминалы
Контроллеры
дисков
Физическая
память
Поуровневый подход
• Если уровни строго разделены
– над ними можно независимо работать
– можно независимо заменять
• Например, сетевой стек TCP/IP является
примером строго разделения на уровни
• Сложности
– Как определить эти слои
– Разделение на уровни возможно только при
наличии иерархии вызовов и отсутствии
циклических зависимостей
© 2013 Брагин А.В. 19
Поуровневый подход 2
• Циклические зависимости
– Например, в драйвере диска
• Драйвер устройства может ожидать завершения
операции ввода/вывода, это означает обращение к
уровню планировщика времени ЦП
• ЦП может вызывать драйвер устройства для выгрузки и
подгрузки процессов
• Чем больше уровней, тем больше возникает
подобных ситуаций
• Отход от строгой поуровневой модели и
возврат к небольшому числу слоёв с большой
функциональностью
© 2013 Брагин А.В. 20
Микроядро
• Микроядро – ядро, содержащее только самые необходимые
функции
• Идея: минимизировать ядро и вынести как можно больше
функциональности в режим пользователя (т.е. исполнять эту
функциональность в виде обычных процессов)
• Многие сервисы становятся пользовательскими процессами:
– Драйверы устройств
– Файловые системы
– Менеджер виртуальной памяти
– Оконные системы
– Службы безопасности
• Такой подход популяризован ядром Mach («Мак»).
• На основе Mach - Mac OS X и GNU Hurd
© 2013 Брагин А.В. 21
Структура микроядра
• Компоненты ОС, являющиеся внешними к
микроядру реализуются в виде серверных
процессов
– Взаимодействие с ними через обмен сообщениями
• Микроядро основывается на механизме обмена
сообщениями
– Проверяет корректность сообщений
– Передаёт их между компонентами
– Проверяет, разрешён ли обмен сообщениями
• Предоставляет доступ к оборудованию
• Фактически реализует клиент-серверную
архитектуру на одном компьютере
© 2013 Брагин А.В. 22
Микроядро: преимущества
• Унифицированные интерфейсы: процессы могут
обмениваться сообщениями, нет разницы между
режимом пользователя и ядра, все сервисы
предоставляются через обмен сообщениями в клиент-
серверной архитектуре
• Расширяемость: Легче расширить, новые сервисы
добавляются как новые программы
• Портируемость: На новое оборудование нужно
перенести только микроядро
• Надёжность и безопасность: меньше кода выполняется
в режиме ядра, ошибки программ в режиме
пользователя не влияют на остальную часть системы
© 2013 Брагин А.В. 23
Микроядро: недостатки
• Больше расходов на взаимодействие между
системными сервисами
– Каждое взаимодействие требует переключения режимов
(переход из режима пользователя в режим ядра и обратно)
– Системные сервисы работающие в режиме пользователя –
это процессы, ОС нужно их планировать
• Решение 1: реинтеграция таких сервисов обратно в
ядро
– Улучшается производительность: меньше переключений,
одно адресное пространство
– Такое было сделано в ядре Mach
• Решение 2: сделать ядро ещё меньше –
экспериментальные архитектуры (нано-ядра, пико-
ядра)
© 2013 Брагин А.В. 24
Микроядро 3
• Минимальная функциональность в
микроядре:
– Низкоуровневое управление памятью
• Отображение страниц на физическую память
• Все остальные механизмы предоставляются
сервисами, работающими в режиме пользователя
– Защита адресного пространства
– Механизмы замещения страниц
– Управление виртуальной памятью
– Межпроцессное взаимодействие (IPC)
– Ввод/вывод и обработка прерываний
© 2013 Брагин А.В. 25
Модули ядра
• Многие ОС реализуют поддержку модульности
ядра
– Например, Linux
• Каждый ключевой компонент – отдельный модуль
• Взаимодействие через определенные интерфейсы
• Загружаются по требованию
• Модули – нечто среднее между поуровневым и
микроядерным подходом
– Удобно для разработки
– Модули в режиме ядра, меньше затраты на
взаимодействие
– Компромисс ради производительности
© 2013 Брагин А.В. 26
Модульный подход
• Операционная система Mac OS X
– Гибридный подход: ядро Mach (микроядро) комбинированное с BSD
ядром
– Ядро BSD: Предоставляет поддержку интерфейса командной строки, сеть,
файловую систему, POSIX API и потоки
– Ядро Mach: управление памятью, RPC, IPC, обмен сообщениями
© 2013 Брагин А.В. 27
BSD
Mach
Среда приложений
Сервисы коммуникаций
Ядро
Виртуализация
• Отдельная большая тема
• Сейчас виртуализация есть практически
везде
– планшет с Android
– Телефон с Java
– Веб-сервер
• Рассмотрим ключевые понятия в
виртуализации
© 2013 Брагин А.В. 28
Виртуальные машины
• Впервые коммерчески доступны в мейнфреймах
IBM в 1972 году
• Виртуальная машина – дальнейшее развитие
поуровнего подхода
– Создаёт виртуальное аппаратное окружение
(процессор, память, ввод/вывод), реализованное
программно
– Работает как приложение в операционной системе
– Виртуализация позволяет одному ПК или серверу
одновременно выполнять несколько ОС или несколько
сессий одной ОС на одной платформе
– Таким образом ПК может выполнять множество
различных программ, работающих на различных ОС
© 2013 Брагин А.В. 29
Виртуальные машины 2
© 2013 Брагин А.В. 30
Ядро Ядро Ядро
Поддержка виртуальных машин
Аппаратное обеспечение
ВМ1 ВМ2 ВМ3
Процессы Процессы Процессы
Ядро
Аппаратное обеспечение
Процессы
Многопроцессорность
• Улучшает производительность за счёт
введения истинного параллелизма
выполнения программ
• Симметричная мультипроцессорность
– Два или больше процессоров
– Процессоры используют одну общую память и
устройства ввода/вывода
– Общий набор инструкций
– ОС поддерживает архитектуру SMP при
планировании, синхронизации
© 2013 Брагин А.В. 31
Преимущества SMP
• Производительность
– На каждом процессоре может работать один
или больше процессов
• Доступность
– Отказ одного процессора не приведёт к отказу
всей системы
• Расширяемость
– Увеличение производительности за счёт
добавления процессоров
© 2013 Брагин А.В. 32
Изменения в архитектуре ОС
• Многопроцессорная ОС должна предоставлять всё тоже, что и
однопроцессорная
• Плюс учитывать сложности многопроцессорности
• Ключевые вопросы
– Реентерабельность ядра: Один и тот же код может выполняться
одновременно несколькими процессорами
– Планирование: Процессы планируются на разных процессорах
– Синхронизация: Истинный параллелизм выполнения процессов и
доступ к общим ресурсам (память, ввод/вывод) требуют
эффективной синхронизации
– Управление памятью: Общая физическая память – нужно
управлять этим ресурсом (механизмы замещения страниц)
– Надёжность и устойчивость к сбоям: Если один процессор
отказывает, задачи надо расределить на другие.
© 2013 Брагин А.В. 33
Многоядерные процессоры
• Процессор содержит несколько
вычислительных ядер
– Параллелизм в рамках одного процессора
– Каждое ядро – по сути отдельный процессор
• Преимущества
– Несколько процессоров в одном чипе
существенно увеличивает производительность
– Введение различных уровней кэш-памяти
© 2013 Брагин А.В. 34
Распределенные ОС
• Распределенные операционные системы
предоставляют
– Единое пространство общей памяти
– Унифицированные средства доступа
• Очевидно, что по скорости доступа к
ресурсам они медленнее, чем
однопроцессорные и SMP системы
© 2013 Брагин А.В. 35

Weitere ähnliche Inhalte

Was ist angesagt?

Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Ontico
 
6 кареев киров
6 кареев киров6 кареев киров
6 кареев киров
qasib
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Ontico
 
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Ontico
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Ontico
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Ontico
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
dddpaul
 
Операционные системы
Операционные системыОперационные системы
Операционные системы
yaevents
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
Andrew Avdeev
 
Kubasov 1 7_deploy
Kubasov 1 7_deployKubasov 1 7_deploy
Kubasov 1 7_deploy
kuchinskaya
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
AvitoTech
 

Was ist angesagt? (20)

Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
 
6 кареев киров
6 кареев киров6 кареев киров
6 кареев киров
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
 
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
 
2056
20562056
2056
 
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"
 
Операционные системы
Операционные системыОперационные системы
Операционные системы
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
Kubasov 1 7_deploy
Kubasov 1 7_deployKubasov 1 7_deploy
Kubasov 1 7_deploy
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
 

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

Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Vasily Sartakov
 
42
4242
42
JIuc
 
Aum Cluster
Aum Cluster Aum Cluster
Aum Cluster
Mik Hail
 
Конкурентные преимущества продуктов и технологий Microsoft. Сценарии применен...
Конкурентные преимущества продуктов и технологий Microsoft. Сценарии применен...Конкурентные преимущества продуктов и технологий Microsoft. Сценарии применен...
Конкурентные преимущества продуктов и технологий Microsoft. Сценарии применен...
MUK
 
Обзор MUK Microsoft VAD
Обзор MUK Microsoft VAD Обзор MUK Microsoft VAD
Обзор MUK Microsoft VAD
MUK
 
022
022022
022
JIuc
 
26
2626
26
JIuc
 
Понятие ОС
Понятие ОСПонятие ОС
Понятие ОС
IvaNTour
 

Ähnlich wie Операционные системы 2015, лекция № 3 (20)

Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
 
Prezentatsia Elina
Prezentatsia ElinaPrezentatsia Elina
Prezentatsia Elina
 
Архитектура Операционных Систем
Архитектура Операционных СистемАрхитектура Операционных Систем
Архитектура Операционных Систем
 
Информатика (архитектура ПО)
Информатика (архитектура ПО)Информатика (архитектура ПО)
Информатика (архитектура ПО)
 
ос
осос
ос
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
 
42
4242
42
 
Aum Cluster
Aum Cluster Aum Cluster
Aum Cluster
 
Конкурентные преимущества продуктов и технологий Microsoft. Сценарии применен...
Конкурентные преимущества продуктов и технологий Microsoft. Сценарии применен...Конкурентные преимущества продуктов и технологий Microsoft. Сценарии применен...
Конкурентные преимущества продуктов и технологий Microsoft. Сценарии применен...
 
Обзор MUK Microsoft VAD
Обзор MUK Microsoft VAD Обзор MUK Microsoft VAD
Обзор MUK Microsoft VAD
 
022
022022
022
 
26
2626
26
 
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
 
45695
4569545695
45695
 
Как devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеКак devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальше
 
Solaris OS
Solaris OSSolaris OS
Solaris OS
 
RUNOS OpenFlow controller (ru)
RUNOS OpenFlow controller (ru)RUNOS OpenFlow controller (ru)
RUNOS OpenFlow controller (ru)
 
Понятие ОС
Понятие ОСПонятие ОС
Понятие ОС
 
Программное обеспечение, его классификация. Понятие операционных систем
Программное обеспечение, его классификация. Понятие операционных системПрограммное обеспечение, его классификация. Понятие операционных систем
Программное обеспечение, его классификация. Понятие операционных систем
 
Myaso
MyasoMyaso
Myaso
 

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

  • 1. Операционные Системы 3. Архитектура ОС Брагин Алексей Владимирович aleksey@reactos.org ИУ9, МГТУ им. Н.Э. Баумана
  • 2. В этой лекции… • Системные вызовы • Архитектура современных ОС • Виртуализация • Многопроцессорность © 2013 Брагин А.В. 2
  • 4. Системные вызовы • Интерфейс между процессом и ядром ОС – Предоставляет доступ к сервисам СО – Явный вызов ядра через программное прерывание – Каждому системному вызову сопоставлен номер – Системный вызов выполняется в режиме ядра © 2013 Брагин А.В. 4
  • 5. Системные вызовы 2 • Системные вызовы – единственная точка входа в ядро для пользовательских программ • Категории системных вызовов – Управление процессами – Управление памятью – Управление файлами – Управление устройствами – Коммуникации © 2013 Брагин А.В. 5
  • 6. API и системные вызовы • В ОС обычно присутствует библиотека, которая реализует набор API-функций, инкапсулирующих системные вызовы – Написана на ЯВУ – В случае с Unix/Linux это стандартная библиотека языка Си – libc – В общем случае каждому системному вызову соответствует API-функция, которые используют разработчики ПО © 2013 Брагин А.В. 6
  • 7. Стандартизация API • Были предприняты попытки стандартизировать API – POSIX. Стандарт, реализуемый многими архитектурами: • Ядра Unix, Linux, Mac OS X, Windows NT, ReactOS – WinAPI. • Старая реализация (Win16 API) была стандартизована, как ECMA-234. • Новая реализация (Win32 API) стала «стандартом де-факто». Стив Балмер в 2010 озвучил цифру 4 миллиона программ под Win32 API. © 2013 Брагин А.В. 7
  • 8. Выполнение системного вызова • Системный вызов определяется номером – Вызывающий процесс передаёт ядру номер того системного вызова, который ему необходимо выполнить • В ОС есть таблица указателей на функции, реализующие системные вызовы • Номер системного вызова – индекс в этой таблице © 2013 Брагин А.В. 8
  • 9. Выполнение системного вызова 2 © 2013 Брагин А.В. 9 Режим пользователя Режим ядра NtCreateEvent() Программа Системный вызов № i Ядро Таблица системных вызовов NtCreateEvent()i Библиотека NTDLL Функция в ядре
  • 10. Передача параметров • Как и при вызове обычных подпрограмм, есть три способа передачи параметров – Через регистры • Параметры сохраняются в регистрах процессора • Очень ограниченное количество – Через память • Параметры сохраняются в блоке памяти • Функции передаётся указатель на этот блок памяти • Так реализован системный вызов в Linux – Через стек • Пользовательская программа помещает параметры в стек • Функция-обработчик системного вызова берёт параметры из стека • Так реализован системный вызов в ReactOS и Windows. © 2013 Брагин А.В. 10
  • 11. Современные ОС – Микроядерная архитектура – Многопоточность – Симметричная мультипроцессорность – Виртуализация – Распределённые операционные системы © 2013 Брагин А.В. 11
  • 12. Архитектура ядра • Ядро – основной и самый важный компонент ОС • Различные подходы к проектированию и реализации – Монолитное ядро – Слои/уровни – Микроядро – Модули ядра © 2013 Брагин А.В. 12
  • 13. Монолитное ядро • Преимущественно операционных системы сейчас используют большое монолитное ядро (большинство Unix-систем, Linux) • Монолитное ядро содержит – Планирование процессов – Управление файловой системой – Сетевое взаимодействие – Драйверы устройств – Управление памятью и т.д. • Преимущества – Производительность • Недостатки – Неустойчивость к сбоям © 2013 Брагин А.В. 13
  • 14. Монолитный подход - простейший • Первые ОС были монолитными • Нет определённой структуры • Нет уровней • Нет разделения на модули • Вначале были небольшие простые системы • Пример: MS-DOS – Больше функциональности, меньше места – Разделения на уровни не было, программы могли работать с оборудованием напрямую © 2013 Брагин А.В. 14
  • 15. MS-DOS © 2013 Брагин А.В. 15 Прикладное ПО BIOS (драйверы устройств в BIOS) Драйверы устройств в MS-DOS Резидентные программы
  • 16. Монолитный подход - уровни • Простая неорганизованная структура – это плохо • Улучшение: ОС разбивается на ряд уровней (слоёв), каждый последующий базируется на предыдущем – Самый нижний уровень – это аппаратное обеспечение – Самый верхний уровень – это интерфейс пользователя • Каждый уровень использует только функции (сервисы), предоставляемые нижестоящим уровнем. • Все, или почти все уровни работают в режиме ядра • Примеры таких ОС: MULTICS, VAX/VMS © 2013 Брагин А.В. 16
  • 17. Простой поуровневый подход • Используется оригинальным ядром Unix – Небольшое число больших, монолитных слоев – Нет инкапсуляции, функции и сервисы, предоставляемые на разных уровнях доступны всей системе – По сути это ядро – набор процедур, которые могут вызвать любые другие процедуры – Огромное количество функциональности в ядре • Современные системы более чётко разделены на уровни © 2013 Брагин А.В. 17
  • 18. Ядро Unix © 2013 Брагин А.В. 18 Пользователи Оболочка, интерпретаторы командной строки, системные библиотеки Символьный ввод/вывод, блочный ввод/вывод, драйверы терминалов, файловая система, дисковые драйверы, планировщик, виртуальная память, … Интерфейс системных вызовов Интерфейс с аппаратурой Терминалы Контроллеры дисков Физическая память
  • 19. Поуровневый подход • Если уровни строго разделены – над ними можно независимо работать – можно независимо заменять • Например, сетевой стек TCP/IP является примером строго разделения на уровни • Сложности – Как определить эти слои – Разделение на уровни возможно только при наличии иерархии вызовов и отсутствии циклических зависимостей © 2013 Брагин А.В. 19
  • 20. Поуровневый подход 2 • Циклические зависимости – Например, в драйвере диска • Драйвер устройства может ожидать завершения операции ввода/вывода, это означает обращение к уровню планировщика времени ЦП • ЦП может вызывать драйвер устройства для выгрузки и подгрузки процессов • Чем больше уровней, тем больше возникает подобных ситуаций • Отход от строгой поуровневой модели и возврат к небольшому числу слоёв с большой функциональностью © 2013 Брагин А.В. 20
  • 21. Микроядро • Микроядро – ядро, содержащее только самые необходимые функции • Идея: минимизировать ядро и вынести как можно больше функциональности в режим пользователя (т.е. исполнять эту функциональность в виде обычных процессов) • Многие сервисы становятся пользовательскими процессами: – Драйверы устройств – Файловые системы – Менеджер виртуальной памяти – Оконные системы – Службы безопасности • Такой подход популяризован ядром Mach («Мак»). • На основе Mach - Mac OS X и GNU Hurd © 2013 Брагин А.В. 21
  • 22. Структура микроядра • Компоненты ОС, являющиеся внешними к микроядру реализуются в виде серверных процессов – Взаимодействие с ними через обмен сообщениями • Микроядро основывается на механизме обмена сообщениями – Проверяет корректность сообщений – Передаёт их между компонентами – Проверяет, разрешён ли обмен сообщениями • Предоставляет доступ к оборудованию • Фактически реализует клиент-серверную архитектуру на одном компьютере © 2013 Брагин А.В. 22
  • 23. Микроядро: преимущества • Унифицированные интерфейсы: процессы могут обмениваться сообщениями, нет разницы между режимом пользователя и ядра, все сервисы предоставляются через обмен сообщениями в клиент- серверной архитектуре • Расширяемость: Легче расширить, новые сервисы добавляются как новые программы • Портируемость: На новое оборудование нужно перенести только микроядро • Надёжность и безопасность: меньше кода выполняется в режиме ядра, ошибки программ в режиме пользователя не влияют на остальную часть системы © 2013 Брагин А.В. 23
  • 24. Микроядро: недостатки • Больше расходов на взаимодействие между системными сервисами – Каждое взаимодействие требует переключения режимов (переход из режима пользователя в режим ядра и обратно) – Системные сервисы работающие в режиме пользователя – это процессы, ОС нужно их планировать • Решение 1: реинтеграция таких сервисов обратно в ядро – Улучшается производительность: меньше переключений, одно адресное пространство – Такое было сделано в ядре Mach • Решение 2: сделать ядро ещё меньше – экспериментальные архитектуры (нано-ядра, пико- ядра) © 2013 Брагин А.В. 24
  • 25. Микроядро 3 • Минимальная функциональность в микроядре: – Низкоуровневое управление памятью • Отображение страниц на физическую память • Все остальные механизмы предоставляются сервисами, работающими в режиме пользователя – Защита адресного пространства – Механизмы замещения страниц – Управление виртуальной памятью – Межпроцессное взаимодействие (IPC) – Ввод/вывод и обработка прерываний © 2013 Брагин А.В. 25
  • 26. Модули ядра • Многие ОС реализуют поддержку модульности ядра – Например, Linux • Каждый ключевой компонент – отдельный модуль • Взаимодействие через определенные интерфейсы • Загружаются по требованию • Модули – нечто среднее между поуровневым и микроядерным подходом – Удобно для разработки – Модули в режиме ядра, меньше затраты на взаимодействие – Компромисс ради производительности © 2013 Брагин А.В. 26
  • 27. Модульный подход • Операционная система Mac OS X – Гибридный подход: ядро Mach (микроядро) комбинированное с BSD ядром – Ядро BSD: Предоставляет поддержку интерфейса командной строки, сеть, файловую систему, POSIX API и потоки – Ядро Mach: управление памятью, RPC, IPC, обмен сообщениями © 2013 Брагин А.В. 27 BSD Mach Среда приложений Сервисы коммуникаций Ядро
  • 28. Виртуализация • Отдельная большая тема • Сейчас виртуализация есть практически везде – планшет с Android – Телефон с Java – Веб-сервер • Рассмотрим ключевые понятия в виртуализации © 2013 Брагин А.В. 28
  • 29. Виртуальные машины • Впервые коммерчески доступны в мейнфреймах IBM в 1972 году • Виртуальная машина – дальнейшее развитие поуровнего подхода – Создаёт виртуальное аппаратное окружение (процессор, память, ввод/вывод), реализованное программно – Работает как приложение в операционной системе – Виртуализация позволяет одному ПК или серверу одновременно выполнять несколько ОС или несколько сессий одной ОС на одной платформе – Таким образом ПК может выполнять множество различных программ, работающих на различных ОС © 2013 Брагин А.В. 29
  • 30. Виртуальные машины 2 © 2013 Брагин А.В. 30 Ядро Ядро Ядро Поддержка виртуальных машин Аппаратное обеспечение ВМ1 ВМ2 ВМ3 Процессы Процессы Процессы Ядро Аппаратное обеспечение Процессы
  • 31. Многопроцессорность • Улучшает производительность за счёт введения истинного параллелизма выполнения программ • Симметричная мультипроцессорность – Два или больше процессоров – Процессоры используют одну общую память и устройства ввода/вывода – Общий набор инструкций – ОС поддерживает архитектуру SMP при планировании, синхронизации © 2013 Брагин А.В. 31
  • 32. Преимущества SMP • Производительность – На каждом процессоре может работать один или больше процессов • Доступность – Отказ одного процессора не приведёт к отказу всей системы • Расширяемость – Увеличение производительности за счёт добавления процессоров © 2013 Брагин А.В. 32
  • 33. Изменения в архитектуре ОС • Многопроцессорная ОС должна предоставлять всё тоже, что и однопроцессорная • Плюс учитывать сложности многопроцессорности • Ключевые вопросы – Реентерабельность ядра: Один и тот же код может выполняться одновременно несколькими процессорами – Планирование: Процессы планируются на разных процессорах – Синхронизация: Истинный параллелизм выполнения процессов и доступ к общим ресурсам (память, ввод/вывод) требуют эффективной синхронизации – Управление памятью: Общая физическая память – нужно управлять этим ресурсом (механизмы замещения страниц) – Надёжность и устойчивость к сбоям: Если один процессор отказывает, задачи надо расределить на другие. © 2013 Брагин А.В. 33
  • 34. Многоядерные процессоры • Процессор содержит несколько вычислительных ядер – Параллелизм в рамках одного процессора – Каждое ядро – по сути отдельный процессор • Преимущества – Несколько процессоров в одном чипе существенно увеличивает производительность – Введение различных уровней кэш-памяти © 2013 Брагин А.В. 34
  • 35. Распределенные ОС • Распределенные операционные системы предоставляют – Единое пространство общей памяти – Унифицированные средства доступа • Очевидно, что по скорости доступа к ресурсам они медленнее, чем однопроцессорные и SMP системы © 2013 Брагин А.В. 35