Операционные системы. Учебное пособие. Марапулец Ю.В. - 60 стр.

UptoLike

Составители: 

Объект типа семафор функционирует подобно многостворчатой двери, ограничи-
вая количество потоков, которые могут проходить через него одновременно.
Объект типа события передает глобальный сигнал, воспринимаемый любым пото-
ком, для которого он адресован.
Объект типа критический раздел аналогичен исключающему семафору, но рабо-
тает только в пределах одного процесса.
Все указные объекты являются системными и создаются менеджером объектов.
Хотя каждый синхронизирующий объект координирует определенный вид взаимодейст-
вия, все они функционируют сходным образом. Поток, который должен выполнить оп-
ределенную синхронизируемую операцию, ожидает ответ от одного из этих объектов и
осуществляет свои функции только после получения на то разрешения. Программа-
планировщик удаляет ожидающие объекты из очереди запуска, с тем чтобы они не за-
нимали времени центрального процессора. После получения соответствующего сигнала
планировщик возобновляет работу потока. Место и способ получения сигнала зависит
от конкретного объекта.
Исключающие семафоры, обычные семафоры и события позволяют координиро-
вать работу потоков, принадлежащих разным процессам, в то время как критические
разделы воспринимаются лишь потоками одного процесса. Если один процесс создает
другой процесс, дочерний процесс часто наследует дескрипторы имеющихся синхрони-
зирующих объектов. Объекты критических разделов не могу быть унаследованы.
С фундаментальной точке зрения, синхронизирующий объект, подобно другим
системным объектам, представляет собой структуру данных. Синхронизирующие объ-
екты могут находиться в двух состояниях: при наличии сигнала и при отсутствии тако-
вого. Потоки взаимодействуют с синхронизирующими объектами путем установки сиг-
нала или путем его ожидания. Поток, находящейся в состоянии ожидания, блокируется
и не выполняется. При наличии сигнала ожидающий поток завладевает объектом, вы-
ключает сигнал, выполняет определенные синхронизирующие операции, а затем опять
включает сигнал и освобождает объект.
Потоки могут ожидать разрешения не только от исключающих и обычных семафо-
ров, событий и критических разделов, но и от других объектов. Иногда возникает ситуа-
ция, когда необходимо ожидать разрешения от процесса, другого потока, таймера или
файлового объекта. Все эти объекты имеют свое предназначение, но подобно синхрони-
зирующим объектом они способны давать сигналы разрешения. Процессы и потоки сиг-
нализируют о своем завершении, объекты-таймеры - об истечении определенного ин-
тервала времени, а файловые объекты - о завершении операций чтения или записей
файлов. Потоки могут ожидать появления любого из этих сигналов.
2.2.2. API-функции для реализации механизма многозадачности
В Win32 API определены следующие функции работы с процессами и потоками [4]
(таблица 2.1.)
Таблица 2.1
Название функции Выполняемое действие
1 2
AttachThreadInput Переключение механизмов ввода с одной нити на дру-
гую
CommandLineToArgvW Производит разбор командной строки в Unicode
CreateProcess Создает процесс
CreateRemoteThread Создает поток в адресном пространстве другого про-
цесса
CreateThread Создает поток
62
      Объект типа семафор функционирует подобно многостворчатой двери, ограничи-
вая количество потоков, которые могут проходить через него одновременно.
      Объект типа события передает глобальный сигнал, воспринимаемый любым пото-
ком, для которого он адресован.
      Объект типа критический раздел аналогичен исключающему семафору, но рабо-
тает только в пределах одного процесса.
      Все указные объекты являются системными и создаются менеджером объектов.
Хотя каждый синхронизирующий объект координирует определенный вид взаимодейст-
вия, все они функционируют сходным образом. Поток, который должен выполнить оп-
ределенную синхронизируемую операцию, ожидает ответ от одного из этих объектов и
осуществляет свои функции только после получения на то разрешения. Программа-
планировщик удаляет ожидающие объекты из очереди запуска, с тем чтобы они не за-
нимали времени центрального процессора. После получения соответствующего сигнала
планировщик возобновляет работу потока. Место и способ получения сигнала зависит
от конкретного объекта.
      Исключающие семафоры, обычные семафоры и события позволяют координиро-
вать работу потоков, принадлежащих разным процессам, в то время как критические
разделы воспринимаются лишь потоками одного процесса. Если один процесс создает
другой процесс, дочерний процесс часто наследует дескрипторы имеющихся синхрони-
зирующих объектов. Объекты критических разделов не могу быть унаследованы.
      С фундаментальной точке зрения, синхронизирующий объект, подобно другим
системным объектам, представляет собой структуру данных. Синхронизирующие объ-
екты могут находиться в двух состояниях: при наличии сигнала и при отсутствии тако-
вого. Потоки взаимодействуют с синхронизирующими объектами путем установки сиг-
нала или путем его ожидания. Поток, находящейся в состоянии ожидания, блокируется
и не выполняется. При наличии сигнала ожидающий поток завладевает объектом, вы-
ключает сигнал, выполняет определенные синхронизирующие операции, а затем опять
включает сигнал и освобождает объект.
      Потоки могут ожидать разрешения не только от исключающих и обычных семафо-
ров, событий и критических разделов, но и от других объектов. Иногда возникает ситуа-
ция, когда необходимо ожидать разрешения от процесса, другого потока, таймера или
файлового объекта. Все эти объекты имеют свое предназначение, но подобно синхрони-
зирующим объектом они способны давать сигналы разрешения. Процессы и потоки сиг-
нализируют о своем завершении, объекты-таймеры - об истечении определенного ин-
тервала времени, а файловые объекты - о завершении операций чтения или записей
файлов. Потоки могут ожидать появления любого из этих сигналов.

     2.2.2. API-функции для реализации механизма многозадачности

     В Win32 API определены следующие функции работы с процессами и потоками [4]
(таблица 2.1.)
                                                                     Таблица 2.1
      Название функции                    Выполняемое действие
               1                                        2
AttachThreadInput             Переключение механизмов ввода с одной нити на дру-
                              гую
CommandLineToArgvW            Производит разбор командной строки в Unicode
CreateProcess                 Создает процесс
CreateRemoteThread            Создает поток в адресном пространстве другого про-
                              цесса
CreateThread                  Создает поток

                                         62