- •Тема 1. Операционные системы
- •Тема 2. История ос
- •0.Аналитическая машина Чарльза Бэббиджа
- •Тема 3. Архитектура ос
- •Тема 4. Процессы и потоки
- •Тема 5. Обработка прерываний
- •Тема 6. Управление процессами и потоками
- •Тема 10.Взаимоблокировки
- •Тема 11.Управление памятью
- •Тема 12.Виртуальная память
- •Тема 13. Стратегии замещения виртуальной памяти
- •Тема 13.Файловые системы
- •Тема 14. Реализация некоторых подсистем ос Windows
- •Ipc (обмен)
- •Ipc (синхронизация)
- •Тема 15. Реализация некоторых подсистем ос Linux
- •Тема 7. Межпроцессное взаимодействие (Inter-Process Communication, ipc)
- •6.2) Аппаратная поддержка (xchg)
- •Тема 8. Примитивы межпроцессного взаимодействия
- •1) Семафоры
- •2) Мьютексы (mutex)
- •3) Мониторы
- •4) Очереди сообщений
- •5) Барьеры
- •Тема 9. Классические проблемы межпроцессного взаимодействия
Тема 3. Архитектура ос
Состав ОС:
Ядро
Модули поддержки оборудования
Системные вызовы
Пользовательское окружение
Ядро ОС — наиболее интенсивно используемая часть ОС, резидентно размещаемая в оперативной памяти и исполняемая в привилегированном режиме работы процессора
Ядро должно стремиться к абсолютной портируемости (переносимости), то есть максимальной независимости от платформы
Задачи ядра:
Обработка прерываний
Управление процессами и потоками
Обеспечение межпроцессного взаимодействия
Управление памятью
Управление вводом-выводом
Обеспечение защиты
Модуль поддержки оборудования (драйвер) — программа, позволяющая корректно работать с некоторым аппаратным устройством или классом устройств
Драйвер может и должен быть платформозависимым
Многие производители выпускают устройства под разными брендами, но на одинаковом наборе системной логики (например, Realtek 8139B/C/D)
Системные вызовы — средство взаимодействия с ОС, её интерфейс (API)
Системные вызовы служат мостом между пространством ядра и пространством пользователя
Популярные наборы системных вызовов стандартизуются (POSIX API, Win32 API, Cocoa)
Пользовательское окружение — средства, предоставляемые ОС пользователю для работы с ней
В пользовательское окружение входят:
командный интерпретатор;
библиотеки системных вызовов;
утилиты для работы с оборудованием.
Виды архитектуры ОС:
Монолитная ОС
Многоуровневая ОС
Микроядерная ОС
Виртуальная машина
Экзоядро
Монолитная ОС:
Вся ОС — единая программа, состоящая из набора процедур
Могут вводиться уровни иерархии процедур
Возможна поддержка расширений
Минусы:
громоздкость;
нет устойчивости к ошибкам.
Плюсы:
Быстродействие.
Многоуровневая ОС(пример ОС THE):
Развитие идеи иерархии процедур — организация всей ОС в виде слоёв
Каждый слой выполняет строго определённую задачу
У процедур вышележащих слоёв нет непосредственного доступа ко всем процедурам нижележащих слоёв
Развитие идеи слоёв — идея колец с одной процедурой-интерфейсом на нижележащий уровень и аппаратная поддержка (MULTICS)
Преимущества:
повышенная безопасность;
разные слои могут разрабатываться разными людьми;
Недостатки:
повышенная сложность разработки;
желательность аппаратной поддержки;
не решены проблемы монолитных ОС.
Микроядерная ОС
В пространстве ядра запускается только ядро ОС
Задачи микроядра:
обработка прерываний;
управление процессами;
планирование;
межпроцессное взаимодействие.
Остальные части ОС — пользовательские процессы с урезанными полномочиями
Преимущества:
устойчивость к сбоям вне ядра;
Недостатки:
пониженное быстродействие;
высокая сложность разработки.
Структура микроядерной ОС MINIX 3
Виртуальная машина:
На реальном оборудовании исполняется только гипервизор (монитор) виртуальных машин
Виртуальная машина может управляться как специально разработанной ОС, так и ОС общего назначения
Гипервизор эмулирует реальное оборудование и перехватывает прерывания от исполняемых ОС
Виды виртуализации:
Аппаратная виртуализация
Программная виртуализация
Динамическая трансляция
Паравиртуализация
Изолированные окружения
Гипервизор 1 типа
Гипервизор 2 типа
Современные системы виртуализации
Программное обеспечение
OpenVZ / Virtuozzo / BSD Jail / Linux LXC
VMWare
Parallels
XEN
Qemu
KVM
Hyper-V
Аппаратное обеспечение:
Intel VT-x/VMX (Virtual Machine eXecution mode)
Инструкции VT-x:
1)VMXON / VMXOFF
2)VMCLEAR
3)VMWRITE / VMREAD
4)VMPTRLD / VMPTRST
5)VMLAUNCH
6)VMCALL
7)VMRESUME
Работа с VT-x
AMD AMD-V/SVM (Secure Virtual Machine)
AMD Pacifica
Инструкции AMD Pacifica
1)VMRUN
2)VMMCALL
3)VMLOAD / VMSAVE
4)SKINIT
Работа с AMD Pacifica:
I/O MMU (Input/Output Memory Management Unit)
Intel VT-d
AMD AMD-Vi
Экзоядро
Не клонировать аппаратное обеспечение, а разделять его
Экзоядро — программа нижнего уровня, выделяющая ресурсы и следящая за безопасностью выделенных ресурсов
Позволяет повысить эффективность виртуализации
Single-Root I/O Virtualization (SR-IOV) — разделение физического устройства на множество виртуальных
SR-IOV
Эффект от SR-IOV