Многопоточность
Каждая исполняющаяся в NT программа представляется как
процесс.
Процесс (process) - это программа (статическая
последовательность команд и данные) и системные ресурсы, необходимые для
ее работы. ОС предоставляет каждому процессу адресное пространство, выделенное
для программы, и гарантирует, что программа каждого процесса будет направляться
на выполнение в определенном порядке и в нужное время. Чтобы процесс смог
заработать, он должен включать, по крайней мере, один поток исполнения
(thread of execution).
Поток (thread) - единица исполнения в NT.
Поток - это сущность внутри процесса, которую ядро направляет на исполнение,
он может принадлежать только одному процессу. Поток состоит из указателя
текущей команды, пользовательского стека, стека ядра и набора значений
регистров. Все потоки процесса имеют одинаковый доступ к его адресному
пространству, описателям объектов и другим ресурсам. Потоки реализованы
как объекты-потоки.
Начальный поток возникает при создании процесса, и затем он может создать
дополнительные потоки.
Каждый поток имеет свой собственный приоритет, в соответствии с которым,
ОС будет принимать решение о его запуске. При этом принадлежность потока
к конкретному процессу не учитывается.