
- •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. Дисковый кеш. Ускорение выполнения дисковых операций: традиционный дисковый кеш, кеш на основе механизма виртуальной памяти.

40. Предотвращение взаимоблокировки. Алгоритм банкира для одного вида ресурсов.
3 состояния
Шаг 1 - Начальное
Все процессы имеют 0 ресурсов, свободных ресурсов — 10.
Потребности соответствуют столбцу Макс
Система безопасна, так как свободно 10 ресурсов и их достаточно, чтобы завершить хотя бы 1 процесс, после ресурсы освободятся и мы сможем продолжить.
Шаг 2 - Выделение ресурсов
Свободно - 2
Потребности:
А - 6 -1 = 5 B - 5 -1 = 4 C - 4 - 2 = 2 D - 7 -4 = 3

Проверка безопасности:
1. 2 ресурсов достаточно, чтобы завершить С 2. Завершаем С, теперь доступно 4 ресурса, достаточно для В
3. Завершаем В, теперь доступно 4 + 1 = 5 ресурсов. Достаточно для А 4. Завершаем А, теперь доступно 5 + 1 = 6, достаточно для D
5. Завершаем D, свободно 10
Состояние безопасно С - В - А - Д
Шаг 3 Доп.запрос
Потребности:А - 6 -1 = 5 B - 5 -2 = 3 C - 4 - 2 = 2 D - 7 -4 = 3
Свободно - 1, нельзя завершить ни 1 процесс
Состояние небезопасно, алгоритм банкира не разрешил бы этот запрос ( для В)
41. Предотвращение взаимоблокировки. Алгоритм банкира для нескольких видов ресурсов.

Вектора: E=(6342) - существующие ресурсы, P=(5322) - занятые ресурсы, A=(1020) - доступные ресурсы.
Шаг 1 - матрица потребностей уже есть, это 2я
Шаг 2 Сравниваем процессы с доступными
1 1 0 0 - 1 0 2 0 НЕТ,0 1 1 2 - 1 0 2 0 нет, 3 1 0 0 - 1 0 2 0 нет,
0 0 1 0 - 1 0 2 0 ДА, 2 1 1 0 - 1 0 2 0 нет
Завершаем D и освобождаем ресурсы.
Шаг 3 - Свободные (1 0 2 0) + (1 1 0 1) = (2 1 2 1) 1 1 0 0 - Да Завершаем А
Шаг 4 - Свободные (2 1 2 1) + (3 0 1 1) = (5 1 3 2)
0 1 1 2 - Да Завершаем В
Шаг 5 - Свободные (5 1 3 2) + (0 1 0 0) = (5 2 3 2)
3 1 0 0 - Да
Завершаем С
Шаг 6 - завершаем Е
Система в безопасном состоянии Д-А-В-С-Е

42. Синхронизирующие объекты ОС: системные семафоры, мьютексы, события, сигналы, барьеры, ждущие таймеры.
В случае синхронизации потоков разных процессов операционная система должна предоставлять потокам системные объекты синхронизации, которые были бы видны для всех потоков, даже если они принадлежат разным процессам и работают в разных адресных пространствах. Примерами таких синхронизирующих объектов ОС являются системные семафоры, мьютексы, события, таймеры и другие.
Все синхронизирующие объекты могут находиться в двух состояниях:
● сигнальном
● несигнальном (свободном).
Мьютексы (от MUTual Exclusion - взаимоисключения) – объекты ядра, которые позволяют координировать взаимное исключение доступа к разделяемому ресурсу

Семафор - это защищенная переменная, значение которой можно опрашивать и менять только при помощи специальных операций wait, signal и операции инициализации init. Двоичные семафоры могут принимать только значения 0 и 1. Семафоры со счетчиками могут принимать неотрицательные целые значения. Принцип действия мьютексов, но в них заложена возможность подсчета ресурсов, что позволяет заранее определенному числу потоков одновременно войти в синхронизуемый участок кода.

Условная переменная — примитив синхронизации, обеспечивающий блокирование одного или нескольких потоков до момента поступления сигнала от другого потока о выполнении некоторого условия или до истечения максимального промежутка времени ожидания
В отличие от мьютексов, они не принадлежат ни одному потоку. Объект-событие обычно используется не для доступа к данным, а для того, чтобы оповестить другие
потоки о том, что некоторые действия завершены.
Сигнал, или виртуальное прерывание, является сообщением, которое система посылает процессу или один процесс посылает другому.
Источники сигналов:
●терминал (Ctrl-C, Ctrl-Z)
●ядро
•при возникновении аппаратных исключений (недопустимых инструкций, нарушениях при обращении в память, системных сбоях и т. п.)
•ошибочных системных вызовах
•для информирования о событиях ввода-вывода
●процесс (один процесс посылает сигнал другому или самому себе)
С точки зрения пользователя получение процессом сигнала выглядит как возникновение прерывания. Процесс прерывает исполнение, и управление
передается функции-обработчику сигнала. По окончании обработки сигнала процесс может возобновить регулярное исполнение
Наборы сигналов определяются при помощи типа sigset_t, которыиопределен в заголовочном фаиле . Выбрать определенные сигналы можно, начав либо с полного набора сигналов и удалив ненужные сигналы, либо с пустого набора, включив в него
нужные.
Получая (не блокированный) сигнал, процесс реагирует на него одним из трех способов:
1.Реакция по умолчанию. (Default)
2.Игнорировать. (Ignore)
3.Перехватывать сигнал и вызвать обработчик сигнала . (Catch). Сигналы SIGKILL и SIGSTOP нельзя игнорировать или перехватывать .

Для различных сигналов применяется один из следующих вариантов реакции процесса на полученный сигнал по умолчанию:
1.Terminated — завершение процесса.
2.Ignored — сигнал игнорируется.
3.Stopped – остановка процесса с возможностью возобновления по сигналу SIGCONT
4.Core dump – в текущем каталоге создается файл core , содержащий дамп памяти процесса для анализа, и процесс завершается
Барьерная синхронизация — метод синхронизации в распределённых вычислениях, при котором выполнение параллельного алгоритма или его части можно разделить на несколько этапов, разделённых барьерами. В частности, с помощью барьера можно организовать точку сбора частичных результатов вычислений, в которой подводится итог этапа вычислений. Использование барьеров как примитивов синхронизации особенно полезно при циклической организации этапов.
Главная особенность, отличающая ждущие таймеры от системных, — то, что ждущие
таймеры могут совместно использоваться несколькими приложениями.
Процессы получают дескрипторы ждущих таймеров так же, как они получают дескрипторы мьютексов: дублированием, наследованием или открытием по имени.