- •Что такое процесс?
- •Адресное пространство
- •Набор ресурсов
- •Объект-процесс
- •Что такое поток?
- •Многозадачность и мультипроцессорная обработка
- •Многопоточность
- •Объект-поток
- •История
- •Опорная модель osi
- •Встроенная сетевая поддержка
- •Сетевые api
- •Разрешение имен
- •Встроенные сетевые компоненты
- •Открытая архитектура
- •Доступ пользовательского режима к удаленным файловым системам
- •Транспортные протоколы
- •Среда ndis для сетевых драйверов
- •Среда распределенных приложений
- •Удаленный вызов процедур
- •Именованные каналы
- •Корпоративные сети и распределенная защита
Объект-поток
Процесс NT остается безжизненным, пока у него нет потока, который можно направить на выполнение. Если у процесса есть поток, последний может создать дополнительные потоки.
Как и процессы, потоки исполнительной системы NT реализованы в виде объектов, создаваемых и уничтожаемых диспетчером объектов. Диспетчер процессов определяет тело объекта-потока и сервисы, используемые для работы с потоками после их создания. Объект-поток изображен на рис. 4—9.
Рис. 4-9. Объект-поток.
В табл. 4-2 описаны атрибуты потока.
Некоторые атрибуты потока напоминают атрибуты объекта. Одни атрибуты, такие как процессорное сродство потока и динамический приоритет, фактически усиливают или ослабляют ограничения, заданные для процесса в целом. Например, процессорное сродство каждого потока — это неполное подмножество (равно или меньше) процессорного сродства процесса. Следовательно, можно заставить разные потоки процесса выполняться на разных группах процессоров.
Таблица 4-2. Атрибуты объекта-потока
Атрибут |
Назначение |
Идентификатор |
Уникальное значение, идентифицирующее поток при |
клиента |
вызове им сервера |
Контекст потока |
Набор значений регистров и других непостоянных данных, |
|
определяющих состояние выполнения потока |
Динамический |
Приоритет потока на данный момент |
приоритет |
|
Базовый приоритет |
Нижний предел динамического приоритета потока |
Процессорное сродство потока |
Набор процессоров, на которых может исполняться поток, (неполное) подмножество процессорного сродства процесса |
|
потока |
Время выполнения |
Общее время выполнения потока в пользовательском |
потока |
режиме и режиме ядра |
Статус оповещения |
Флаг, указывающий на необходимость отработки потоком асинхронного вызова процедуры (АРС) |
Счетчик |
Количество приостановок выполнения потока без |
приостановок |
последующего возобновления |
Маркер |
Временный маркер доступа, позволяющий потоку |
имперсонации |
выполнять действия от имени другого процесса |
|
(используется подсистемами) |
Порт завершения |
Канал коммуникации между процессами, в который диспетчер процессов посылает сообщение при завершении потока (используется подсистемами) |
Код завершения |
Причина завершения потока |
потока |
|
Аналогично, каждый поток имеет базовый уровень приоритета, который лежит в диапазоне от двух уровней ниже базового приоритета процесса до двух уровней выше этого приоритета, как показано на рис. 4-10.
На этом рисунке показан также динамический приоритет потока, нижней границей которого является базовый приоритет потока, а верхняя зависит от вида работ, исполняемых потоком. Например, если поток обрабатывает пользовательский ввод, то ядро NT поднимает его динамический приоритет; если же он выполняет вычисления, то ядро постепенно снижает его приоритет до базового. Снижая приоритет одного процесса и поднимая приоритет другого, подсистемы могут управлять относительной приоритетностью потоков внутри процесса. Базовый приоритет процесса определяет, сколь сильно могут различаться приоритеты потоков процесса и как они соотносятся с приоритетами потоков других процессов.
Как и приоритеты, другие атрибуты объекта-потока предназначены для того, чтобы предоставить ОС (и в частности, подсистемам среды) возможность управления созданным ею потоком. Например, контекст потока содержит все, что нужно ОС для возобновления исполнения прерванного потока: а именно, содержимое регистров процессора и стеков пользователя и ядра. Приостановив поток, изменив его контекст и запустив поток снова, подсистема среды может изменить его поведение или начать его выполнение с адреса, отличного от точки останова. (Этот способ могут также использовать отладчики пользовательского режима для управления выполнением потоков.
Рис. 4-10. Соотношение приоритетов
Другой сервис, предоставляемый объектам—потокам, — посылка потоку оповещений — это средство, позволяющее подсистемам среды или другим частям ОС асинхронно уведомлять поток о необходимости выполнения им заданной процедуры. Поток, предполагающий, что может быть получено оповещение, может вызвать сервис для проверки его наличия (см. разд. 4.2.5).
Порт завершения потока похож на порт исключений и отладки процесса. Он позволяет подсистеме среды получать уведомление о завершении потока одного из ее клиентских процессов. При получении такого уведомления подсистема может обновить поддерживаемую ею информацию о потоке или процессе, в котором он находится.
Сервис текущего потока позволяет потоку быстро получить собственный описатель, не открывая его в явном виде. Этот описатель может использоваться, например, для получения потоком информации о себе, такой как общее время выполнения, текущий приоритет и процессорное сродство.
Сеть:
Сеть в Windows NT. История. Опорная модель OSI.
