Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У. Столлингс ГЛАВА 4 Потоки.doc
Скачиваний:
49
Добавлен:
11.05.2015
Размер:
6.22 Mб
Скачать

Многопоточность

Операционная система W2K поддерживает параллельное выполнение процессов, потому что потоки различных процессов могут выполняться одно­временно. Более того, нескольким потокам одного и того же процесса могут быть выделены различные процессоры, и эти потоки также могут выпол­няться одновременно. Параллелизм достигается в многопоточном процессе без накладных расходов на использование нескольких процессов. Потоки од­ного и того же процесса могут обмениваться между собой информацией с по­мощью общего адресного пространства и имеют доступ к совместным ресур­сам процесса. Потоки, принадлежащие разным процессам, могут обменивать­ся между собой информацией с помощью общей области памяти, установленной для этих двух процессов.

Объектно-ориентированный многопоточный процесс является эффективным средством реализации серверных приложений. Например, один обслуживающий процесс может обслуживать несколько клиентов. Каждый запрос клиента приво­дит к созданию в сервере нового потока.

Состояния потоков

Поток, созданный в операционной системе W2K, может находиться в одном из шести состояний (см. рис. 4.14). Перечислим эти состояния.

  • Готовый к выполнению. Поток, который может быть направлен на выпол­нение. Диспетчер микроядра отслеживает все готовые к выполнению потоки и осуществляет их планирование в соответствии с приоритетом.

  • Резервный. Поток, который будет запущен следующим на данном процес­соре. Поток находится в этом состоянии до тех пор, пока процессор не осво­бодится. Если приоритет резервного потока достаточно высок, то он может вытеснить выполняющийся в данный момент поток. В противном случае резервный поток ждет, пока не произойдет блокировка выполняющегося потока или пока не истечет выделенный ему промежуток времени.

  • Выполняющийся. Как только микроядро переключит поток или процесс, резервный поток перейдет в состояние выполнения и будет пребывать в этом состоянии до тех пор, пока не произойдет одно из следующих событий: поток будет вытеснен, закончится отведенный ему интервал времени, поток будет блокирован или завершен. В первых двух случаях поток снова переходит в состояние готовности.

  • Ожидающий. Поток входит в состояние ожидания, если (1) он блокирован каким-то событием (например, операцией ввода-вывода), (2) он добровольно ждет синхронизации или (3) среда подсистемы предписывает потоку, чтобы он сам себя приостановил. После того как условия ожидания будут удовлетворены, поток переходит в состояние готовности, если все его ресурсы бу­дут доступны.

  • Переходный. Поток переходит в это состояние, если он готов к выполне­нию, но ресурсы недоступны (например, страницы стека потока могут нахо­диться на диске). После того как необходимые ресурсы станут доступны, процесс переходит в состояние готовности.

Завершающийся. Завершение потока может быть инициировано самим по­током, другим потоком или может произойти вместе с завершением роди­тельского процесса. После завершения необходимых операций освобожде­ния ресурсов и т.п. поток удаляется из системы (или может быть сохранен исполнительной системой для дальнейшей повторной инициализации).