- •1 Определение, назначение, основные функции операционных систем.
- •6 Понятие процесса. Состояния процесса.
- •9 Задачи планирования процессов. Критерии планирования, требования к алгоритмам.
- •11Алгоритмы планирования процессов fcfs, Round Robin, sjf, их сравнение, преимущества, недостатки.
- •12Гарантированное планирование процессов. Приоритетное планирование. Их преимущества, недостатки.
- •14Особенности передачи информации с помощью линий связи.
- •15Нити исполнения.
- •16Критическая секция.
- •17Программные алгоритмы организации взаимодействия процессов.
- •18Механизмы синхронизации: семафоры, мониторы, сообщения.
- •19Тупиковые ситуации. Условия возникновения. Борьба с тупиками.
- •20Тупиковые ситуации. Предотвращение возникновений тупиков. Обнаружение тупиков. Восстановление после тупиков.
- •22. Логическая и физическая память. Связывание адресов.
- •23.Функции системы управления памятью. Схема управления памятью с фиксированными разделами. Оверлейная структура.
- •24. Динамическое распределение памяти. Свопинг. Схема управления памятью с переменными разделами.
- •25. Страничная организация памяти. Сегментная организация памяти.
- •26. Понятие виртуальной памяти. Преимущества, варианты реализации.
- •27.Страничная виртуальная память. Структура таблицы страниц. Размер страницы.
- •28. Исключительные ситуации при работе с памятью.
- •29. Алгоритмы замещения страниц fifo, opt, lpu, nfu. Сравнение алгоритмов. Аномалия Биледи.
- •30. Управление количеством страниц, выделенных процессу. Трешинг. Модель рабочего множества.
- •31. Основные функции любой
- •33. Директория -сущность в файловой системе, упрощающая организацию файлов.
- •36.Физические принципы организации ввода-вывода
- •39. . Устройства обычно принято разделять по преобладающему типу интерфейса на следующие типы:
- •40. Блокирующиеся системные вызовы (приводят к блокировке инициировавшего его процесса).
- •41. Организация ввода-вывода: буферизация и кэширование данных. Спулинг и захват устройств.
- •42.Устройство жесткого диска. Алгоритмы планирования запросов к жесткому диску fcfs, sstf, scan, look, их сравнение.
- •43.Причины объединения компьютеров в сети. Сетевые операционные системы.
- •44.Логическая организация передачи информации между удаленными процессами. Понятие протокола.
- •45.Многоуровневая модель построения сетевых вычислительных систем.
- •46.Проблемы адресации в сети. Удаленная адресация. Разрешение адресов.
- •47.Локальная адресация. Понятие порта. Понятие сокета.
- •48.Угрозы информационной безопасности. Криптографические методы обеспечения информационной безопасности.
- •49.Идентификация и аутентификация. Методы аутентификации.
- •50.Авторизация. Разграничение прав доступа к объектам операционной системы.
16Критическая секция.
Критическая секция — часть программы, в которой есть обращение к совместно используемым данным. При нахождении в критической секции двух (или более) процессов, возникает состояние «гонки» («состязания»). Для избежания данной ситуации необходимо выполнение четырех условий: ♦Два процесса не должны одновременно находиться в критических областях. ♦В программе не должно быть предположений о скорости или количестве процессоров. ♦Процесс, находящийся вне критической области, не может блокировать другие процессы.
♦Невозможна ситуация, в которой процесс вечно ждет попадания в критическую область.
Критическая секция (англ. critical section) — объект синхронизации потоков, позволяющий предотвратить одновременное выполнение некоторого набора операций (обычно связанных с доступом к данным) несколькими потоками. Критическая секция выполняет те же задачи, что и мьютекс.
Между мьютексом и критической секцией есть терминологические различия, так процедура, аналогичная захвату мьютекса, называется входом в критическую секцию, снятию блокировки мьютекса — выходом из критической секции. Процедура входа и выхода из критических секций обычно занимает меньшее время, нежели аналогичные операции мьютекса, что связано с отсутствием необходимости обращаться к ядру ОС.
В операционных системах семейства Microsoft Windows разница между мьютексом и критической секцией в том, что мьютекс является объектом ядра и может быть использован несколькими процессами одновременно, критическая секция же принадлежит процессу и служит для синхронизации только его потоков.
Критические секции Windows имеют оптимизацию, заключающуюся в использовании атомарно изменяемой переменной наряду с объектом «событие синхронизации» ядра. Захват критической секции означает атомарное увеличение переменной на 1. Переход к ожиданию на событии ядра осуществляется только в случае, если значение переменной до захвата было уже больше 1, то есть происходит реальное «соревнование» двух или более потоков за ресурс.
Таким образом, при отсутствии соревнования захват/освобождение критической секции обходятся без обращений к ядру.
Кроме того, захват уже занятой критической секции до обращения к ядру какое-то небольшое время (англ. spin count) ждёт в цикле опроса переменной, и, если переменная становится равной 0, то захват происходит без обращений к ядру.
Сходный объект в ядре Windows называется FAST_MUTEX (ExAcquire/ReleaseFastMutex). Он отличается от критической секции отсутствием поддержки рекурсивного повторного захвата тем же потоком.
17Программные алгоритмы организации взаимодействия процессов.
Требования, предъявляемые к алгоритмам
Организация взаимоисключения для критических участков, конечно, позволит избежать возникновения race condition, но не является достаточной для правильной и эффективной параллельной работы кооперативных процессов. Сформулируем пять условий, которые должны выполняться для хорошего программного алгоритма организации взаимодействия процессов, имеющих критические участки, если они могут проходить их в произвольном порядке.♦Задача должна быть решена чисто программным способом на обычной машине, не имеющей специальных команд взаимоисключения. При этом предполагается, что основные инструкции языка программирования (такие примитивные инструкции, как load, store, test ) являются атомарными операциями.♦Не должно существовать никаких предположений об относительных скоростях выполняющихся процессов или числе процессоров, на которых они исполняются.♦Если процесс Pi исполняется в своем критическом участке, то не существует никаких других процессов, которые исполняются в соответствующих критических секциях. Это условие получило название условия взаимоисключения (mutual exclusion).
♦Процессы, которые находятся вне своих критических участков и не собираются входить в них, не могут препятствовать другим процессам входить в их собственные критические участки. Если нет процессов в критических секциях и имеются процессы, желающие войти в них, то только те процессы, которые не исполняются в remainder section, должны принимать решение о том, какой процесс войдет в свою критическую секцию. Такое решение не должно приниматься бесконечно долго. Это условие получило название условия прогресса (progress) .
♦Не должно возникать неограниченно долгого ожидания для входа одного из процессов в свой критический участок. От того момента, когда процесс запросил разрешение на вход в критическую секцию, и до того момента, когда он это разрешение получил, другие процессы могут пройти через свои критические участки лишь ограниченное число раз. Это условие получило название условия ограниченного ожидания (bound waiting) .
Надо заметить, что описание соответствующего алгоритма в нашем случае означает описание способа организации пролога и эпилога для критической секции.
Запрет прерываний
Наиболее простым решением поставленной задачи является следующая организация пролога и эпилога:
while (some condition) {
запретить все прерывания
critical section
разрешить все прерывания
remainder section
}
Поскольку выход процесса из состояния исполнение без его завершения осуществляется по прерыванию, внутри критической секции никто не может вмешаться в его работу. Однако такое решение может иметь далеко идущие последствия, поскольку позволяет процессу пользователя разрешать и запрещать прерывания во всей вычислительной системе. Допустим, что пользователь случайно или по злому умыслу запретил прерывания в системе и зациклил или завершил свой процесс. Без перезагрузки системы в такой ситуации не обойтись.