Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodychka-lab_OS.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.35 Mб
Скачать

1.3 Об’єкти синхронізації

Об’єкти синхронізації - це такі об’єкти, дескриптор котрих може використовуватись в одній з функцій очікування для корегування виконання багатьох потоків. Більше ніж один процес може мати дескриптор до одного і того ж об’єкту синхронізації, таким чином роблячи міжпроцесову синхронізацію можливою.

Дані типи об’єктів використовуються виключно для синхронізації процесів та потоків:

  • Event – повідомляє один або декілька очікуючих процесів/потоків про те що подія відбулась.

  • Mutex – може бути використовуваним тільки одним процесом/потоком для доступу до розділеного ресурсу.

  • Semaphore – вміщує лічильник від нуля до якогось максимального значення. Даний лічильник містить кількість процесів/потоків котрі одночасно хочуть мати доступ до розділеного ресурсу.

  • Waitable timer – повідомляє один або декілька процесів/потоків про завершення визначеного часу.

Наступні об’єкти також можуть використовуватись для синхронізації процесів/потоків:

  • Change notification – даний об’єкт створюється функцією FindFirstChangeNotification. Стан даного об’єкту змінюється в сигналізований, коли відбувається визначений тип змін.

  • Console input – даний об’єкт створюється під час створення консолі. Стан даного об’єкту змінюється в сигналізований, коли є ще не прочитаний ввід в буфері вводу консолі. У випадку, коли буфер вводу консолі пустий - стан об’єкту змінюється в несигналізований.

  • Job - даний об’єкт створюється під час виклику функції CreateJobObject. Стан даного об’єкту змінюється в сигналізований під час завершення всіх процесів даного об’єкту або у випадку закінчення ліміту часу вказаного для даного процесу.

  • Process - даний об’єкт створюється під час виклику функції CreateProcess. Поки процес виконується, його об’єкт у несигналізованому стані. Під час завершення процесу об’єкт встановлюється у сигналізований стан.

  • Thread - даний об’єкт створюється під час виклику функції CreateThread або CreateRemoteThread. Під час виконання процесу його об’єкт у несигналізованому стані. Коли процес завершується, його об’єкт встановлюється у сигналізований стан.

1.4 Очікуючі функції

Очікуючі функції – це функції, котрі не передають керування іншій частині програми поки не виконається вказаний в них критерій, або поки не завершиться час очікування на даний критерій. Вказаний критерій визначає тип функції.

Існують три типи очікуючих функцій:

  • Одно – об’єктні (single-object)

  • Багато – об’єктні (multiple-object)

  • Функції застереження (alertable)

До одно-об’єктних відносять такі очікуючі функції: SignalObjectAndWait, WaitForSingleObjet (див. додаток 1,2), WaitForSingleObjectEx. Дані функції мають два критерії очікування: об'єкт, якого очікують завершив своє виконання та у випадку коли закінчився вказаний час очікування.

До багато – об’єкних відносять: WaitForMultipleObjects, WaitForMultipleObjectsEx, MsgWaitForMultipleObjects, MsgWaitForMultipleObjectsEx. Дані функції мають два критерії очікування: об'єкт або об’єкти, яких очікують завершили своє виконання та у випадку коли закінчився вказаний час очікування.

До функцій застереження відносять: MsgWaitForMultipleObjects, SignalObjectAndWait, WaitForMultipleObjectsEx, WaitForSingleObjectEx. Дані функції відрізняються від попередніх тим, що вони можуть виконувати застережені операції очікування.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]