- •Понятие операционной системы. Функции операционной системы. Классификация операционных систем.
- •Компоненты операционной системы. Виды ядер.
- •Монолитная структура операционной системы
- •4. Структура операционной системы unix
- •Ядро операционной системы unix
- •Основные понятия ос: системные вызовы, прерывания, исключительные ситуации, файлы, процессы и нити.
- •Процессы. Состояния процесса.
- •Process Control Block и контекст процесса.
- •9. Одноразовые и многоразовые операции. Переключение контекста.
- •10. Планирование процессов. Критерии планирования и требования к алгоритмам.
- •11. Вытесняющее и невытесняющее планирование
- •12.Алгоритм планирования fcfs.
- •13. Алгоритм планирования rr.
- •14. Поток в пространстве ядра, поток в пространстве пользователя.
- •15. Таблица потоков. Информация в таблице потоков
- •16. Алгоритмы планирования: fifo.
- •17. Алгоритмы планирования: «кратчайшая задача – первая»
- •18. Алгоритмы планирования: приоритетное планирование.
- •19. Алгоритмы планирования: планирование в системах реального времени.
- •20. Функция создания процесса CreateProcess()
- •21. Взаимоблокировка процессов. Тупики.
- •22. Методы борьбы с взаимоблокировками. Безопасное и небезопасное состояние.
- •25. Кооперация процессов. Логическая организация механизма передачи информации.
- •26.Адресации: прямая и непрямая.
- •27. Линии связи. Буферизация.
- •28. Поток ввода/вывода и сообщения.
- •29.Алгоритмы синхронизации. Критическая секция.
- •30. Механизмы синхронизации. Семафоры, мониторы и сообщения.
- •31. Управление памятью. Физическая организация памяти компьютера.
- •32. Анализ производительности многозадачных систем.
- •33. Распределение памяти с фиксированными разделами.
- •34. Управление памятью. Физическая организация памяти компьютера.
- •35. Методы без использования внешней памяти.
- •36. Распределение памяти с динамическими разделами.
- •37.Основные методы распределения памяти: с фиксированными разделами и динамическими разделами. Перемещение и рост разделов.
- •38. Сегментная архитектура памяти. Абсолютный и относительный адреса.
21. Взаимоблокировка процессов. Тупики.
Если несколько процессов конкурируют за обладание конечным числом ресурсов и запрашиваемый процессом ресурс недоступен, процесс переходит в состояние ожидания. В случае если требуемый ресурс удерживается другим ожидающим процессом, то первый процесс не сможет сменить свое состояние. Такая ситуация называется тупиком. Говорят, что в мультипрограммной системе процесс находится в состоянии тупика, дедлока (deadlock) или клинча, если он ожидает события, которое никогда не произойдет. Системная тупиковая ситуация или зависание системы является следствием того, что один или более процессов находятся в состоянии тупика.
Тупики также могут иметь место в ситуациях, не требующих выделенных ресурсов. Например, в системах управления базами данных процессы могут локализовывать записи, чтобы избежать гонок. В этом случае может получиться так, что один из процессов заблокировал записи, требуемые другому процессу и наоборот. Т.о. тупики могут иметь место, как на аппаратных, так и на программных ресурсах.
22. Методы борьбы с взаимоблокировками. Безопасное и небезопасное состояние.
Четыре стратегии избегания взаимоблокировок:
1.Пренебрежением проблемой в целом (вдруг пронесет).
2.Обнаружение и устранение (взаимоблокировка происходит, но оперативно ликвидируется).
3.Динамическое избежание тупиков.
4.Предотвращение четырех условий, необходимых для взаимоблокировок.
Безопасные и небезопасные состояния
В безопасном состоянии система может гарантировать, что все процессы закончат свою работу. Следовательно в небезопасном состоянии система не может гарантировать что все процессы закончат свою работу.
23. Алгоритм банкира для одного и нескольких ресурсов.
Алгоритм банкира для одного вида ресурсов
"Банкира", потому что аналогия такая, клиенты-процессы, кредиты-ресурсы.
Рассмотрим систему: Банкир может дать 10 кредитов (ресурсы). К нему попеременно обращаются 4-ре клиента.
Алгоритм банкира:
1.Банкиру поступает запрос от клиента на получение кредита
2.Банкир проверяет, приводит ли этот запрос к небезопасному состоянию.
3.Банкир в зависимости от этого дает или отказывает в кредите.
24. Механизмы синхронизации: семафор, монитор.
Семафор представляет собой целую переменную, принимающую неотрицательные значения, доступ любого процесса к которой, за исключением момента ее инициализации, может осуществляться только через две атомарные операции: P (от датского слова proberen – проверять) и V (от verhogen – увеличивать). Классическое определение этих операций выглядит следующим образом:
P(S): пока S == 0 процесс блокируется;
S = S – 1;
V(S): S = S + 1;
Эта запись означает следующее: при выполнении операции P над семафором S сначала проверяется его значение. Если оно больше 0, то из S вычитается 1. Если оно меньше или равно 0, то процесс блокируется до тех пор, пока S не станет больше 0, после чего из S вычитается 1. При выполнении операции V над семафором S к его значению просто прибавляется 1. В момент создания семафор может быть инициализирован любым неотрицательным значением.
Мониторы представляют собой тип данных, который может быть с успехом внедрен в объектно-ориентированные языки программирования. Монитор обладает собственными переменными, определяющими его состояние. Значения этих переменных извне могут быть изменены только с помощью вызова функций-методов, принадлежащих монитору. В свою очередь, эти функции-методы могут использовать в работе только данные, находящиеся внутри монитора, и свои параметры.
Важной особенностью мониторов является то, что в любой момент времени только один процесс может быть активен, т. е. находиться в состоянии готовность или исполнение, внутри данного монитора. Поскольку мониторы представляют собой особые конструкции языка программирования, компилятор может отличить вызов функции, принадлежащей монитору, от вызовов других функций и обработать его специальным образом, добавив к нему пролог и эпилог, реализующий взаимоисключение. Так как обязанность конструирования механизма взаимоисключений возложена на компилятор, а не на программиста, работа программиста при использовании мониторов существенно упрощается, а вероятность возникновения ошибок становится меньше.