
- •1. Требования, предъявляемые к алгоритмам организации взаимодействия процессов.
- •2. Способы реализации взаимного исключения: запрещение прерываний
- •3. Способы реализации взаимного исключения: переменная-замок
- •4. Способы реализации взаимного исключения: строгое чередование
- •5. Способы реализации взаимного исключения: флаги готовности
- •6. Способы реализации взаимного исключения: алгоритм Петерсона
- •7. Способы реализации взаимного исключения: алгоритм булочной
- •8. Аппаратная реализация взаимоисключений.
- •9. СемафорныепримитивыДейкстры. Решение задачи производителя и потребителя с помощью семафоров.
- •10. Монитор Хоара как примитив синхронизации высокого уровня. Решение задачи производителя и потребителя с помощью мониторов.
- •11. Тупиковые ситуации.
- •12. Методы борьбы с тупиками: Игнорирование проблемы тупиков.
- •13. Методы борьбы с тупиками: Предотвращение тупиков.
- •14. Методы борьбы с тупиками: Алгоритм Банкира.
- •15. Методы борьбы с тупиками: Нарушение условий возникновения тупиков.
- •16. Методы борьбы с тупиками: Обнаружение тупиков.
- •17. Методы борьбы с тупиками: Восстановление после тупиков.
- •18. Иерархия памяти. Локальность.
- •22. Динамическое распределение памяти: разделы с подвижными границами. Уплотнение памяти. Свопинг.
- •23. Сегментная организация памяти.
- •24. Страничная организация памяти.
- •25. Таблицы страниц: одноуровневые, многоуровневые, инвертированные.
- •26. Сегментно-страничная организация памяти
- •27. Понятие виртуальной памяти. Страничный механизм трансляции.
- •28. Стратегии управления виртуальной памятью
- •29. Дисциплины замещения страниц: fifo
- •30. Дисциплины замещения страниц: оптимальный алгоритм
- •31. Дисциплины замещения страниц: выталкивание дольше всего не использовавшейся страницы.
- •32. Дисциплины замещения страниц: выталкивание редко используемой страницы.
- •33. Модель рабочего множества. Трешинг. Страничные демоны.
1. Требования, предъявляемые к алгоритмам организации взаимодействия процессов.
Требования:
Условие взаимоисключения
Условие конечного ожидания: Процесс кот. Необходимо войти в критическую секцию должен получить возможность сделать это в конечное время.
Условие прогресса: Только процессы, кот. Необходимо войти в критическую секцию должны определять, которому из них будет дан доступ в критическую секцию. Процессы, кот. Не нужен доступ в критическую секцию в данный момент не должны влиять на принятие решения.
Пролог критической секции – действия с разделяемыми переменными или механизмами синхронизации, кот обеспечивают доступность критической секции только для одного процесса.
Эпилог – действие, кот разрешают доступ в критическую секцию для других процессов.
Алгоритм синхронизации должен быть реализован на обычном процессоре с обычным набором команд.
2. Способы реализации взаимного исключения: запрещение прерываний
В качестве пролога мы запрещаем прерывание, а в качестве эпилога – разрешаем его.
Достоинства: простота
Недостатки:
В критической секции процесс может находиться сколь угодно долго в том числе может зациклиться или сбоить и т.д. Вследствие чего эпилог так и не будет вызван и система не сможет получить прерывание таймера для того, чтобы снять этот процесс с выполнения.
В критической секции процессу не доступны прерывания, что ограничивает его функциональность.
3. Способы реализации взаимного исключения: переменная-замок
Переменнаяlok=0
While (true)
{
While(lok)
Lok=1
…
Критическая секция
…
Lok=0
…
Рабочая секция (remaindersection)
…
Достоинство – простота.
Недостатки:
Большое количество бесполезной работы, кот. Выполняется в виде проверки значения переменной «замка» в цикле пролога, причем значение этой переменной может измениться только при выполнении другого процесса, а значит результат проверки в течении всего кванта времени выделенной данному процессу остается неизменным.
Нарушение условия взаимоисключения вызваннымнеатомарностью пролога. Если после выполнения проверки при открытом замке квант времени заканчивается, то процесс прекращает выполнение до того как закроет замок. Другой процесс находясь в своем прологе также видит открытый замок и переходит к его закрытию и к критической секции после чего в свой квант времени 1-ый процесс закрывает замок и входит в критическую секцию. Результат – 2 раза закрытый замок и 2 процесса в критической секции.
4. Способы реализации взаимного исключения: строгое чередование
Sharedintturn=0; //предполагается, что есть 2 идентификатора со значениями 0 и 1
While (true) {
While (turn!=id); // id=0 и id=1 – идентификатор процесса
Critical sect.
Turn=1-turn;
Remainder sect.
}
Процессы получают возможность вхождения в критическую область строго по очереди. В прологе процесс ожидает, пока разделяемая переменная turn не станет равной его идентификатору. В эпилоге процесс устанавливает turn, равный идентификатору другого процесса, позволяя войти тому в критическую секцию.
Недостатки: условие прогресса не выполняется, когда процессу, который предоставлен вход не нужно входить в критическую секцию. Он выполняется в remaindersect., а другой процесс в прологе может ожидать изменение переменной turn, которое может произойти только в эпилоге после вхождения первого процесса в критическую секцию. Таким образом, процесс, находящийся в remaindersect. И не нуждающийся вхождению в критическую секцию, препятствует входу в неё другому процессу.