Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5.14.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.68 Mб
Скачать

Объект-поток

Процесс NT остается безжизненным, пока у него нет потока, который можно направить на выполнение. Если у процесса есть поток, последний может со­здать дополнительные потоки.

Как и процессы, потоки исполнительной системы NT реализованы в виде объектов, создаваемых и уничтожаемых диспетчером объектов. Диспетчер процессов определяет тело объекта-потока и сервисы, используемые для ра­боты с потоками после их создания. Объект-поток изображен на рис. 4—9.

Рис. 4-9. Объект-поток.

В табл. 4-2 описаны атрибуты потока.

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

Таблица 4-2. Атрибуты объекта-потока

Атрибут

Назначение

Идентификатор

Уникальное значение, идентифицирующее поток при

клиента

вызове им сервера

Контекст потока

Набор значений регистров и других непостоянных данных,

определяющих состояние выполнения потока

Динамический

Приоритет потока на данный момент

приоритет

Базовый приоритет

Нижний предел динамического приоритета потока

Процессорное сродство потока

Набор процессоров, на которых может исполняться поток, (неполное) подмножество процессорного сродства процесса

потока

Время выполнения

Общее время выполнения потока в пользовательском

потока

режиме и режиме ядра

Статус оповещения

Флаг, указывающий на необходимость отработки потоком асинхронного вызова процедуры (АРС)

Счетчик

Количество приостановок выполнения потока без

приостановок

последующего возобновления

Маркер

Временный маркер доступа, позволяющий потоку

имперсонации

выполнять действия от имени другого процесса

(используется подсистемами)

Порт завершения

Канал коммуникации между процессами, в который диспетчер процессов посылает сообщение при завершении потока (используется подсистемами)

Код завершения

Причина завершения потока

потока

Аналогично, каждый поток имеет базовый уровень приоритета, который лежит в диапазоне от двух уровней ниже базового приоритета процесса до двух уровней выше этого приоритета, как показано на рис. 4-10.

На этом рисунке показан также динамический приоритет потока, нижней границей которого является базовый приоритет потока, а верхняя зависит от вида работ, исполняемых потоком. Например, если поток обрабатывает поль­зовательский ввод, то ядро NT поднимает его динамический приоритет; если же он выполняет вычисления, то ядро постепенно снижает его приоритет до базового. Снижая приоритет одного процесса и поднимая приоритет другого, подсистемы могут управлять относительной приоритетностью потоков внут­ри процесса. Базовый приоритет процесса определяет, сколь сильно могут различаться приоритеты потоков процесса и как они соотносятся с приорите­тами потоков других процессов.

Как и приоритеты, другие атрибуты объекта-потока предназначены для того, чтобы предоставить ОС (и в частности, подсистемам среды) возмож­ность управления созданным ею потоком. Например, контекст потока содер­жит все, что нужно ОС для возобновления исполнения прерванного потока: а именно, содержимое регистров процессора и стеков пользователя и ядра. При­остановив поток, изменив его контекст и запустив поток снова, подсистема среды может изменить его поведение или начать его выполнение с адреса, отличного от точки останова. (Этот способ могут также использовать отлад­чики пользовательского режима для управления выполнением потоков.

Рис. 4-10. Соотношение приоритетов

Другой сервис, предоставляемый объектам—потокам, — посылка потоку оповещений — это средство, позволяющее подсистемам среды или другим ча­стям ОС асинхронно уведомлять поток о необходимости выполнения им за­данной процедуры. Поток, предполагающий, что может быть получено опо­вещение, может вызвать сервис для проверки его наличия (см. разд. 4.2.5).

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

Сервис текущего потока позволяет потоку быстро получить собственный описатель, не открывая его в явном виде. Этот описатель может использовать­ся, например, для получения потоком информации о себе, такой как общее время выполнения, текущий приоритет и процессорное сродство.

Сеть:

  1. Сеть в Windows NT. История. Опорная модель OSI.

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