
- •1. Определение ОС. Назначение и функции операционной системы. Место ОС в структуре вычислительной системы.
- •2. Области применения ОС: ОС мейнфреймов, серверные ОС, ОС многопроцессорных систем, персональных компьютеров, смартфонов и планшетов, встроенные ОС, ОС сенсорных узлов, смарт-карт, ОС для IoT устройств.
- •3. Понятие ресурса. Основные ресурсы вычислительной системы. Управление ресурсами.
- •4. Критерии эффективности и классы ОС.
- •5. Функциональные компоненты ОС персонального компьютера.
- •6. Понятие интерфейса прикладного программирования
- •7. Пользовательский интерфейс.
- •8. Системные вызовы.
- •9. Прерывания (понятие, классификация, обработка прерываний).
- •10. Обработка аппаратных прерываний.
- •11. Требования, предъявляемые к современным ОС.
- •12. Виртуализация. Гипервизор 1 и 2 типа. Контейнеры.
- •13. Классификации ОС
- •14. Архитектура ОС. Ядро и вспомогательные модули.
- •15. Классическая архитектура ОС. Монолитные и многослойные ОС.
- •16. Микроядерная архитектура ОС.
- •17. Процессы и потоки. Состояния потока.
- •18. Функции ОС по управлению процессами.
- •19. Планирование и диспетчеризация потоков, моменты перепланировки.
- •20. Кооперативная и вытесняющая многозадачность, достоинства и недостатки.
- •21. Алгоритм планирования, основанный на квантовании
- •22. Приоритетное планирование.
- •23. Алгоритмы планирования в ОС пакетной обработки: «первым пришел – первым обслужен», «кратчайшая задача – первая», «наименьшее оставшееся время выполнения».
- •24. Алгоритмы планирования в интерактивных ОС: циклическое, приоритетное, MLFQ.
- •25. Равномерные планировщики: гарантированное, лотерейное, справедливое планирование.
- •26. Планирование в многопроцессорных системах.
- •27. Планирование в системах реального времени.
- •28. Алгоритм планирования Windows NT.
- •29. Алгоритмы планирования Linux: О(1)
- •30. Алгоритмы планирования Linux: CFS
- •31. Планирование в ОС реального времени.
- •32. Межпроцессное взаимодействие (почему необходимы системные средства и в каких ситуациях применяются, примеры таких средств).
- •33. Синхронизация процессов и потоков: цели и средства синхронизации
- •34. Ситуация состязаний (гонки). Способы предотвращения.
- •35. Способы реализации взаимных исключений: блокирующие переменные, критические секции, семафоры.
- •36. Классические задачи синхронизации: «производители-потребители», «проблема обедающих философов», «проблема спящего брадобрея».
- •37. Взаимные блокировки. Условия, необходимые для возникновения тупика
- •38. Обнаружение взаимоблокировки при наличии одного ресурса каждого типа.
- •39. Обнаружение взаимоблокировки при наличии нескольких экземпляров ресурса каждого типа.
- •40. Предотвращение взаимоблокировки. Алгоритм банкира для одного вида ресурсов.
- •41. Предотвращение взаимоблокировки. Алгоритм банкира для нескольких видов ресурсов.
- •42. Синхронизирующие объекты ОС: системные семафоры, мьютексы, события, сигналы, барьеры, ждущие таймеры.
- •43. Организация обмена данными между процессами (каналы, разделяемая память, почтовые ящики, сокеты).
- •44. Функции ОС по управлению памятью.
- •45. Алгоритмы распределения памяти без использования внешних носителей (одиночное непрерывное распределение, фиксированные, динамические, перемещаемые разделы).
- •46. Понятие виртуальной памяти.
- •47. Страничное распределение памяти.
- •48. Таблицы страниц для больших объемов памяти.
- •49. Алгоритмы замещения страниц.
- •50. Сегментное распределение памяти.
- •51. Сегментно-страничное распределение памяти.
- •52. Кеш-память (понятие, принцип действия кеш-памяти).
- •53. Случайное отображение основной памяти на кеш.
- •54. Детерминированное отображение основной памяти на кеш.
- •55. Комбинированный способ отображения основной памяти на кеш.
- •56. Задачи ОС по управлению файлами и устройствами.
- •57. Многослойная модель подсистемы ввода-вывода.
- •58. Физическая организация диска. HDD, SSD устройства.
- •59. Файловая система. Определение, состав, типы файлов. Логическая организация файловой системы.
- •60. Физическая организация и адресация файлов.
- •61. FAT. Структура тома. Формат записи каталога. FAT12, FAT16, FAT32, exFAT.
- •62. ext2, ext3, ext4: структура тома, адресация файлов, каталоги, индексные дескрипторы.
- •63. NTFS: структура тома, типы файлов, организация каталогов.
- •64. Файловые операции. Процедура открытия файла.
- •65. Организация контроля доступа к файлам.
- •66. Отказоустойчивость файловых систем.
- •67. Процедура самовосстановления NTFS.
- •68. Избыточные дисковые подсистемы RAID.
- •69. Многоуровневые драйверы.
- •70. Дисковый кеш. Ускорение выполнения дисковых операций: традиционный дисковый кеш, кеш на основе механизма виртуальной памяти.
Пример работы:
Поток 2 удерживает ресурс, поток 1 ждёт его.
Поток 2 наследует приоритет потока 1 (становится выше, чем у потока 3). Поток 2 завершает критический раздел, освобождает ресурс.
Поток 1 захватывает ресурс и выполняется.
Поток 2 возвращается к своему низкому приоритету, и поток 3 получает процессор, если нет других задач с более высоким приоритетом.
29. Алгоритмы планирования Linux: О(1)
Планировщик O(1) (Linux 2.6 до 2.6.23) обеспечивает операции планирования за постоянное время (O(1)) для многопроцессорных систем и интерактивных задач.
Ключевые особенности:
● Структура: Для каждого CPU — активная и истёкшая очереди, организованные как массивы приоритетов (0–99 для реального времени, 100–139 для обычных задач).
● Кванты времени: Высокоприоритетные задачи получают большие кванты.
● Динамический приоритет: Переменная sleep_avg корректирует приоритет (±5) на основе времени ожидания (увеличивается при «сне», уменьшается при выполнении).
● Работа: Выбирает задачу с наивысшим приоритетом из активной очереди. После истечения кванта задача перемещается в истёкшую очередь, при пустой активной очереди они меняются.
Преимущества: Быстрота, поддержка многопроцессорности, интерактивность через sleep_avg.
Недостатки: Сложность настройки, ограниченная гибкость при высоких нагрузках. Заменён на CFS с ядра 2.6.23.
Пример: Задача с приоритетом 100 получает квант 100 мс, с 120 — 10 мс. Интерактивные задачи повышают приоритет через sleep_avg (например, с 120 до 115),
что ускоряет её выполнение при пробуждении.

30. Алгоритмы планирования Linux: CFS
Вполне равномерный планировщик.
Цель планирования: равномерно распределить процессорное время между всеми конкурирующими процессами.
Для каждого процесса поддерживают значение vruntime (виртуальное время выполнения).
В CFS все runnable процессы хранятся в red-black дереве, которое отсортировано по vruntime процесса, что является количеством процессорного времени в наносекундах, которое процесс использовал. Таким образом получается, что в левой части дерева находятся процессы, которые использовали меньше всего времени, а в правой части те, что больше всего. И когда CFS выбирает, какой задаче дать доступ к процессорному времени, он выбирает самую левую задачу в дереве,
то-есть ту, которая получила его меньше всех.
Когда задача получает доступ к процессорному времени, она получает его на заранее предопределённый промежуток времени, называемый slice. Он может увеличиваться и уменьшаться в зависимости от NICE значения процесса.
NICE – это показатель толерантности потока к другим потокам :). Чем это значение выше, тем охотнее поток будет делиться процессорным временем или своей очередью (зависит от планировщика, об этом ниже). Минимальное значение -20,
максимальное +19.
Таким образом, к примеру, чем меньше значение NICE, тем больше процессорного времени получит задача по сравнению с задачами, имеющими более высокое значение.
Несмотря на то, что CFS действительно хорошо справлялся с “честным” распределением времени процессора на все runnable процессы, у него были и серьёзные недостатки. Один из них это невозможность правильно работать с процессами, которые требуют время процессора, как можно скорее. Для того, чтобы подружить CFS с этой историей были внедрены так называемые latency nice патчи.
Они добавляли новое значение latency-nice, которое было зеркально существующему
nice значению, в том плане, что тоже имело ограничение от -20 до +19 и его понижение также, как и у nice, понижало толерантность к другим процессам. Если у нового процесса latency-nice был ниже, чем у того, который в текущее время работает в процессоре, то он мог заменить его. Таким образом задачи с низким latency-nice не получали больше процессорного времени, но получали право на его более быстрое выделение.
31. Планирование в ОС реального времени.
СМ ВОПРОС 27
32. Межпроцессное взаимодействие (почему необходимы системные средства и в каких ситуациях применяются, примеры таких средств).
IPC (Inter-Process Communication) — набор механизмов, позволяющих одновременно выполняющимся процессам обмениваться данными и синхронизировать свою работу.
•согласование действий процессов
•контроль над деятельностью процессов (Race Condition, Deadlock/Livelock, голодание, инверсия приоритетов …)
•передача информации от одного процесса другому
Почему необходимы системные средства?
1. Изоляция процессов: Каждый процесс имеет собственное адресное пространство, и прямой доступ к памяти другого процесса запрещён для предотвращения ошибок и уязвимостей.
2. Синхронизация: Процессы могут работать параллельно, и для предотвращения конфликтов (например, при доступе к общим ресурсам) нужны механизмы координации.
3. Обмен данными: Процессы часто должны передавать данные друг другу,
например, результаты вычислений или команды управления.
4. Надёжность и безопасность: Системные средства IPC предоставляются ОС, что гарантирует стандартизированный и безопасный способ взаимодействия.
Ситуации, в которых применяются IPC: ● Клиент-серверные приложения
● Многопроцессные приложения
● Параллельные вычисления ● Управление ресурсами
Примеры средств IPC:
● Мьютекс. Позволяет только одному иметь доступ к ресурсу.
● Семафоры. Управляют доступом к ресурсу. Могут быть бинарными (мьютекс) либо счетными.
● События. Нужны для уведомления одного или нескольких процессов о наступлении какого-либо события.
● Сигналы. Виртуальное прерывание, является сообщением, которое система посылает процессу или один процесс посылает другому.
Также рассмотрим средства для обмена данными:
● Канал (конвейер, pipe) – буфер в оперативной памяти, поддерживающий очередь байт по алгоритму FIFO.
● Очереди сообщений. Позволяют процессам обмениваться структурированными сообщениями.
● Сокеты. Обмен данными по сети или в пределах одной машины. ● Разделяемая память.
33. Синхронизация процессов и потоков: цели и средства синхронизации
Цели синхронизации:
Синхронизация процессов и потоков в мультипрограммных ОС необходима для:
● Исключения гонок и тупиков: Обеспечение корректного доступа к общим ресурсам (процессор, устройства ввода-вывода, данные).
● Координации взаимодействия: Согласование скоростей выполнения процессов/потоков для правильного обмена данными (например, ожидание данных в буфере).
● Управления ресурсами: Регулирование доступа к монопольным ресурсам, таким как порты или файлы.
● Реакции на события: Синхронизация с внешними или внутренними событиями
(например, нажатие клавиш или освобождение ресурса).
● Синхронизация требуется из-за асинхронного характера выполнения процессов в мультипрограммной среде, где время выполнения зависит от случайных
факторов: исходных данных, прерываний, очередей к ресурсам.
Средства синхронизации:
1. Семафоры:
Используются для управления доступом к общим ресурсам и предотвращения гонок.
Пример: POSIX-семафоры (sem_wait, sem_post) для ограничения доступа к файлу.
2. Мьютексы (Mutex):
Бинарные семафоры для монопольного доступа к ресурсу в многопоточной среде.
Пример: pthread_mutex_lock в POSIX для защиты критической секции.
3. Условные переменные:
Позволяют потокам ожидать определённого условия (например, поступления данных).