
- •1 Свойства и классификация процессов
- •2. Управление процессами в ос. Граф существования и трасса процесса
- •3. С войства и классификация ресурсов. Критический ресурс.
- •4. Свойства и классификация ресурсов. Потребляемые и восстанавливаемые ресурсы
- •5. Типовые задачи синхронизации. Взаимное исключение
- •6. Типовые задачи синхронизации. Производитель-потребитель
- •7. Типовые задачи синхронизации. Читатели и писатели
- •8. Типовые задачи синхронизации. Обедающие философы
- •9. Механизмы синхронизации. Свойства и классификация
- •10. Механизмы синхронизации. Использование механизма прерываний
- •11. Механизмы синхронизации. Двухступенчатая схема
- •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. Распределенное программирование. Основные понятия
- •Каналы и передача сообщений
- •Распределенное программирование. Фильтры и сети
- •Распределенное программирование. Схемы взаимодействия
- •Распределенное программирование. Сети и сокеты.
22. Механизмы синхронизации Win32. Мьютексы
Мьютекс — глобальный механизм синхронизации, в отличии от критической секции, доступ к мьютексу осуществляется через дескриптор, что дает возможность использовать его не только в подзадаче, но и в программе.
Мьютекс решает задачу взаимного исключения. Может состоять в двух состояниях (занят или свободен). Занятие мьютекса разрешается только одному процессу. При создании мьютекса проверяется его имя: если такого нет — создается новый объект, если такой уже существует — выдается дескриптор объекта и увеличивается счетчик использования. Имя можно не указывать, если мьютекс используется в подзадаче.
Если мьютекс свободен он в сигнализирующем состоянии. Для захвата используется WaitFor(), для освобождения ReleaseMutex(handle).
23. Механизмы синхронизации Win32. События
Объект типа "событие" — простейший выбор для задач синхронизации. Он подобен дверному звонку — звенит до тех пор, пока его кнопка находится в нажатом состоянии, извещая об этом факте окружающих. Аналогично, и объект может находиться в двух состояниях, а "слышать" его могут многие потоки сразу. Событие может находиться в двух состояниях - активном (сигнализирущее состояние) и сброшенном (несигнализирующее состояние). В активное состояние событие переводится методом SetEvent, а сбрасывается методом ResetEvent. Событие может быть внутренним объектом потока, а может не принадлежать никакому потоку конкретно. Поток может ожидать только данного события с помощью метода Wait, либо использовать его дескриптор Handle для альтернативного ожидания.
Событие - это объект, синхронизирующий о том, что произошло какое-то событие, в отличиии от мьютекса владельцем кот. может быть один процесс в конкретное время, события могут управлять синхронизацией нескольких процессов:
//P или W в ручном или автономном режиме произошла работа.
function CreateEvent(sa:Pointer; ManResetType:boolean; initSingn:boolean; EventName:pChar):Thandle; CloseHandle(handle); закрыть событие
Setevent(handle); установить событие.
ResetEvent(handle); сбросить событие
PulseEvent(handle);
WaitFor...(...);
Если работа с событиями происходит в автоматическом режиме после установки событий освобождается 1 из ожидающихся процессов; соб-е автоматически переустаавливается не в сигнализирующее состояние. В ручном режиме независимо от набора ожидюпроцессов событие остается в сигнализирующем состоянии.
При автоматическо перустановке возможна работа в пульсирующем режиме, в этом случае операция пульс: освобождается все ожидающие роцессы и событие переустанавливается...
24. Механизмы синхронизации Win32. Семафоры
Теже семафоры, только вместо счетчика — указатель на ячейку памяти, где он хранится.
//Создание семафоров
function CreateSemaphore(
sa: Pointer; // Начальнео значение семафора
initialcount: integer;
maximumCount: integer; //максимальное значение
SemaphoreName: pChar): Thandle;//Имя семафора
CloseHandle(handle);
Семафор если он открыт находится в синхрониз. Состоянии
waitFor(...);
//Открытие
ReleaseSemaphore(
handle, //дескриптор
count. // знач. На которое изменяется счетчик семафора
poldcount); //Указатель на ячейку которая будет помещен предыдущее значение S