Поделиться через


Сведения о процессах и потоках

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

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

Microsoft Windows поддерживает вытесняющую многозадачность, что создает эффект одновременного выполнения нескольких потоков из нескольких процессов. На компьютере с несколькими процессорами система может одновременно выполнять столько потоков, сколько процессоров на компьютере.

Объект задания позволяет управлять группами процессов как единицей. Объекты задания — это именуемые, защищаемые, совместно используемые объекты, управляющие атрибутами процессов, связанных с ними. Операции, выполняемые в объекте задания, влияют на все процессы, связанные с объектом задания.

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

Планирование в пользовательском режиме (UMS) — это легковесный механизм, который приложения могут использовать для управления собственными потоками. Приложение может переключаться между потоками UMS в пользовательском режиме без участия системного планировщика и восстановить контроль над процессором, если поток UMS блокируется в ядре. Каждый поток UMS имеет собственный контекст потока вместо совместного использования контекста потока одного потока. Возможность переключения между потоками в пользовательском режиме делает UMS более эффективным, чем пулы потоков для краткосрочных рабочих элементов, требующих нескольких системных вызовов.

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

Дополнительные сведения см. в следующих разделах: