Процессы, потоки и задания

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

программы. Ha самом высоком уровне абстракции процесс в Windows включает следующее:

(o) закрытое виртуальное адресное пространство - диапазон адресов виртуальной памяти, которым может пользоваться процесс;

(o) исполняемую программу - начальный код и данные, проецируемые на виртуальное адресное пространство процесса;

(o) список открытых описателей (handles) различных системных ресурсов - семафоров, коммуникационных портов, файлов и других объектов, доступных всем потокам в данном процессе;

(o) контекст защиты (security context), называемый маркером доступа (access token) и идентифицирующий пользователя, группы безопасности и привилегии, сопоставленные с процессом;

(o) уникальный идентификатор процесса (во внутрисистемной терминологии называемый идентификатором клиента);

(o) минимум один поток.

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



17 из 285