Операционные системы. Программирование в операционной среде Windows
29 8. Как остановить поток? 9. Как возобновить выполнение потока? 10. Как поток может отказаться от своего кванта времени? 11.В чем состоит проблема синхронизации потоков? 12. Что такое критические секции и для чего они используются? 13. Достоинства, недостатки, ограничения при использовании критических секций. 14. Какие правила необходимо соблюдать при использовании критических секций? 3. Синхронизация потоков с помощью объектов ядра 3.1.Объекты ядра Операционная система позволяет создавать несколько типов объектов ядра (ОЯ): - маркеры доступа (access token objects), - файлы (file objects), - проекции файлов (file-mapping objects), - порты завершения ввода-вывода (I/O completion port objects), - задания (job objects), - почтовые ящики (mailslot objects), - мьютексы (mutex objects), - каналы (pipe objects), - процессы (process objects), - семафоры (semaphore objects), - потоки (thread objects), - ожидаеме таймеры (waitable timer objects). Каждый ОЯ — это блок памяти, выделенный ядром и доступный только ему. Этот блок представляет собой структуру данных, в элементах которой содержится информация об объекте. Во всех ОЯ присутствуют дескриптор защиты, счетчик числа пользователей и некоторые другие элементы. ОЯ принадлежат ядру, а не процессу. Доступ к ОЯ может быть получен только через специальные функции ОС Windows, которые позволяют обрабатывать структуры ОЯ по строго определенным правилам. При вызове функции, которая создает ОЯ, она возвращает описатель, идентифицирующий созданный объект. В каждом ОЯ есть счетчик числа его пользователей. В момент создания объекта счетчику присваивается единица. При обращении другого процесса к существующему ОЯ, счетчик увеличивается на единицу. А когда какой-то процесс завершается, счетчики всех используемых им ОЯ автоматически уменьшаются на единицу. Как только счетчик какого-либо объекта обнуляется, ядро уничтожает этот объект.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy