Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,214 views

Published on

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

Видео можно посмотреть на канале http://www.youtube.com/playlist?list=PLjSDyY6BQPVe2Zhxew5rJy2S-2_9t1vvn

  • Login to see the comments

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

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

×