- •1 Свойства и классификация процессов
- •2. Управление процессами в ос. Граф существования и трасса процесса
- •3. С войства и классификация ресурсов. Критический ресурс.
- •4. Свойства и классификация ресурсов. Потребляемые и восстанавливаемые ресурсы
- •5. Типовые задачи синхронизации. Взаимное исключение
- •6. Типовые задачи синхронизации. Производитель-потребитель
- •7. Типовые задачи синхронизации. Читатели и писатели
- •8. Типовые задачи синхронизации. Обедающие философы
- •10. Механизмы синхронизации. Использование механизма прерываний
- •11. Механизмы синхронизации. Двухступенчатая схема
- •9. Механизмы синхронизации. Свойства и классификация
- •12. Механизмы синхронизации. Семафоры Дейкстры
- •13. Механизмы синхронизации. Решение задачи реактивации
- •14. Механизмы синхронизации. Модификации семафоров
- •15. Механизмы синхронизации. Семафороподобные средства
- •16. Организация и управление подпроцесами в Java
- •17. Решение задачи взаимного исключения в Java
- •18. Событийные переменные в java.
- •19. Семафоры в java.
- •20. Организация подзадач в Win
- •21. Организация подзадач в Win32. Класс tThread
- •22. Механизмы синхронизации Win32. Мьютексы
- •23. Механизмы синхронизации Win32. События
- •24. Механизмы синхронизации Win32. Семафоры
- •25. Монитороподобные средства синхронизации. Критическая область.
- •26. Критическая область. Основные модификации
- •27. Мониторы Хоара
- •28. Распределенное программирование. Основные понятия
- •Каналы и передача сообщений
- •Распределенное программирование. Фильтры и сети
- •Распределенное программирование. Схемы взаимодействия
- •Распределенное программирование. Сети и сокеты.
12. Механизмы синхронизации. Семафоры Дейкстры
S: semaphore
P(s) - close
V(s) - open
Семафор относится к низкоуровневым средствам синхронизации, работает по двуступенчатой схеме в режиме пассивного ожидания.
Семафор — целочисленная переменная в отношении которой выполняется операции двух видов: открытие и закрытие. Операция открытия увеличивает значение семафора на 1, операция закрытия — уменьшает на 1. Если значение семафора больше 0, то он считается открытым, а если равен 0, то закрытым.
Если процесс выполняет операцию закрытия для открытого семафора, процесс продолжает свою работу, в противном случае процесс переводится в режим ожидания. Если процесс открывает семафор и в очереди ожидания есть ожидающий процесс, он переходит с состояние готовности.
Неделимость операций
Примитивы — это неделимые операции. При попытке выполнить примитив над семафором из разных процессов приведет к успеху только одного действия, выполняемого потоком, причем неизвестно каким.
13. Механизмы синхронизации. Решение задачи реактивации
При реализации семафоров необходимо решение задачи реактивации — определение правил поведения процесса, который выбирается из очереди ожидания и переходит в состояние готовности в результате открытия семафора.
Возможны 2 варианта:
- процесс должен повторно выполнить операцию закрытия (считая попытку неуспешной)
- процесс при перемещении в очередь готовности отмечается как успешно выполненный т е его выполнение начнётся со следующей команды.
Возможны ситуации тупика.
1)Пусть процесс 2 успешно выполнил операцию закрытия, значение семафора = 0, далее процесс 1 пытается выполнить операцию закрытия (не удается), т.е., 1 процесс останавливается на семафоре. Знач. семафора = -1. При выходе из крит. обл, процесс 2 открывает семафор, знач семафора = 0. Процесс 1 переходит в очередь готовности. Если он повторно выполнит операцию закрытия, значение семафора = -1, а 1-ый процесс остановится. Соответсвтенно, попытка 2-ого процесса войти в крит. область также будет заблокирована.
2) Пусть процесс 2 открывает семафор, т.е. значение семафора =0. Если 2 процесс повторно пытается закрыть семафор, он остановится, а значение семафора станет равным -1. 1-ый процесс при переходе в активное состояние входит в крит. обл. и при выходе устанавливает значение семафора = 0. "Освобожденный" 2-ой процесс также повтороно попадает в крит. обл., открывает семафор, значение семафора =1.
14. Механизмы синхронизации. Модификации семафоров
Множественные — особенностью данного механизма является возможность обрабатывать в рамках одного примитива сразу несколько семафоров. Операция Р приводит к закрытию семафоров и считается выполненной, если оба семафора были открытыми.
Счётные — в этой модификации при каждом исполнении примитива допускается изменение счетчика семафора на значение больше еденицы. Начальное значение устанавливается равным количеству читателей. Каждый читатель закрывает семафор на 1, а писатель — на максимальное открывает.
В зависимости от логики работы может наблюдаться дискриминация процессов разных видов, например писатель может голодать при высокой активности запросов на чтение.
Тест-семафоры — для этой модификации вводится усложненная логика примитива V. В качестве параметров кроме семафора указывается величина R, на которую нужно изменить значение и величина Q, с которой сравнивается новое значение счетчика семафора. Если в результате разность > 0 — продолжается работа процесса, иначе — останавливается.
