Объекты процессов и потоков
Объектно-ориентированная структура операционной системы W2K облегчает разработку подсистемы для работы с процессами. Разработчики W2K воспользовались двумя типами связанных с процессами объектов: процессами и потоками. Процесс — это объект, соответствующий заданию или приложению пользователя, который владеет своими собственными ресурсами, такими, как память и открытые файлы. Поток — это диспетчеризуемая единица работы, которая выполняется последовательно и является прерываемой, что позволяет процессору переключиться на выполнение другого потока.
Каждый процесс в операционной системе W2K представлен объектом, общая структура которого показана на рис. 4.13,а. Каждый процесс определяется некоторым числом атрибутов и может предоставлять определенные сервисы, которые он выполняет после получения соответствующего сообщения-запроса. Единственный способ вызвать такой сервис — отправка сообщения процессу, который его предоставляет. При создании нового процесса операционная система W2K использует класс или тип объектов, определенный как шаблон процесса для генерации новых экземпляров объектов. Во время создания объекта его атрибутам присваиваются конкретные значения. В табл. 4.3 приводится краткое описание каждого атрибута процессов.
Таблица 4.3. Атрибуты процесса в операционной системе Windows 2000
Идентификатор процесса Уникальное значение, идентифицирующее процесс в операционной системе Дескриптор защиты Описывает, кто создал объект, кто обладает правом доступа к нему или может им пользоваться и кто определяет права доступа к объекту Базовый приоритет Базовый приоритет выполнения потока, принадлежащего процессу Процессор по умолчанию Заданный по умолчанию набор процессоров, на котором возможно выполнение потоков процесса Квоты Максимальное количество страничной и прочей системной памяти, объем в страничном файле и процессорное время, доступные данному процессу Время выполнения Суммарное время, затраченное на выполнение всех потоков процесса Счетчики ввода-вывода Переменные, в которые заносятся сведения о количестве и типе операций ввода-вывода, выполненных потоками процесса |
Счетчики операций Переменные, в которые заносятся сведения о количестве и с виртуальной памятью типе операций с виртуальной памятью, выполненных потоками процесса Порты Каналы обмена информацией между процессами, в которые исключений/отладки диспетчер процессов должен отправить сообщение при возникновении исключительной ситуации из-за одного из потоков процесса Статус выхода Причина завершения процесса |
В операционной системе W2K процесс перед выполнением должен содержать хотя бы один поток, который затем может создавать другие потоки. В многопроцессорной системе несколько потоков одного и того же процесса могут выполняться параллельно. На рис. 4.13,6 изображена структура объекта потока, а в табл. 4.4 определены его атрибуты. Заметим, что некоторые атрибуты потока подобны атрибутам процесса. Значения таких атрибутов потока извлекаются из значений соответствующих атрибутов процесса. Например, в многопроцессорной системе сродные потоку процессоры — это множество процессоров, на которых может выполняться данный поток; это множество совпадает с множеством процессоров, сродных процессу, или является его подмножеством.
Таблица 4.4. Атрибуты потока в операционной системе Windows 2000 Идентификатор потока Уникальное значение, идентифицирующее поток, когда он вызывает сервис Контекст потока Набор значений регистров и другие данные, которыми определяется состояние выполнения потока Динамический приоритет Приоритет выполнения потока в данный момент времени Базовый приоритет Нижний предел динамического приоритета потока Процессоры потока Множество процессоров, на которых может выполняться поток. Это множество является подмножеством процессоров, сродных процессу потока, или совпадает с ним Время выполнения потока Совокупное время, затраченное на выполнение потока в пользовательском режиме и в режиме ядра Статус оповещения Флаг, который указывает, следует ли потоку выполнять асинхронный вызов процедуры Счетчик приостановок В нем указывается, сколько раз выполнение потока было приостановлено без последующего возобновления Признак имперсонации Временный признак доступа, позволяющий потоку выполнять операции от имени другого процесса (используется подсистемами) Порт завершения Канал обмена информацией между процессами, на который диспетчер процессов должен отправить сообщение при завершении потока (используется подсистемами) Статус выхода потока Причина завершения потока |
Заметим, что одним из атрибутов процесса является его контекст. Содержащаяся в контексте информация позволяет операционной системе приостанавливать и возобновлять потоки. Более того, приостановив поток и изменив его контекст, можно изменить его поведение.
Многопоточность
Операционная система W2K поддерживает параллельное выполнение процессов, потому что потоки различных процессов могут выполняться одновременно. Более того, нескольким потокам одного и того же процесса могут быть выделены различные процессоры, и эти потоки также могут выполняться одновременно. Параллелизм достигается в многопоточном процессе без накладных расходов на использование нескольких процессов. Потоки одного и того же процесса могут обмениваться между собой информацией с помощью общего адресного пространства и имеют доступ к совместным ресурсам процесса. Потоки, принадлежащие разным процессам, могут обмениваться между собой информацией с помощью общей области памяти, установленной для этих двух процессов.
Объектно-ориентированный многопоточный процесс является эффективным средством реализации серверных приложений. Например, один обслуживающий процесс может обслуживать несколько клиентов. Каждый запрос клиента приводит к созданию в сервере нового потока.
Состояния потоков
Поток, созданный в операционной системе W2K, может находиться в одном из шести состояний (см. рис. 4.14). Перечислим эти состояния.
• Готовый к выполнению. Поток, который может быть направлен на выполнение. Диспетчер микроядра отслеживает все готовые к выполнению потоки и осуществляет их планирование в соответствии с приоритетом.
• Резервный. Поток, который будет запущен следующим на данном процессоре. Поток находится в этом состоянии до тех пор, пока процессор не освободится. Если приоритет резервного потока достаточно высок, то он может вытеснить выполняющийся в данный момент поток. В противном случае резервный поток ждет, пока не произойдет блокировка выполняющегося потока или пока не истечет выделенный ему промежуток времени.
• Выполняющийся. Как только микроядро переключит поток или процесс, резервный поток перейдет в состояние выполнения и будет пребывать в этом состоянии до тех пор, пока не произойдет одно из следующих событий: поток будет вытеснен, закончится отведенный ему интервал времени, поток будет блокирован или завершен. В первых двух случаях поток снова переходит в состояние готовности.
• Ожидающий. Поток входит в состояние ожидания, если (1) он блокирован каким-то событием (например, операцией ввода-вывода), (2) он добровольно ждет синхронизации или (3) среда подсистемы предписывает потоку, чтобы он сам себя приостановил. После того как условия ожидания будут удовлетворены, поток переходит в состояние готовности, если все его ресурсы будут доступны.
• Переходный. Поток переходит в это состояние, если он готов к выполнению, но ресурсы недоступны (например, страницы стека потока могут находиться на диске). После того как необходимые ресурсы станут доступны, процесс переходит в состояние готовности.
Завершающийся. Завершение потока может быть инициировано самим потоком, другим потоком или может произойти вместе с завершением родительского процесса. После завершения необходимых операций освобождения ресурсов и т.п. поток удаляется из системы (или может быть сохранен исполнительной системой для дальнейшей повторной инициализации).
Дата добавления: 2016-06-05; просмотров: 2410;