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

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

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

■                Уникальный идентификатор, названный ID процесса (PID).

■                По крайней мере один поток выполнения. У каждого потока в процессе есть полный доступ ко всем ресурсам, на которые ссылается контейнер процесса.

■                Виртуальное адресное пространство, которое является рядом адресов виртуальной памяти, которые процесс может использовать для хранилища, справочных данных и кода.

■                Исполнимая программа, которая определяет начальный код и данные и отображается в виртуальное адресное пространство процесса.

■                Список открытых дескрипторов к различным системным ресурсам, таким как семафоры, коммуникационные порты и файлы.

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

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

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

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

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

Инструментарий управления Windows (WMI) загружает своих агентов в отдельные хост процессы, которые управляют заданием по ограничению потребление памяти.

Как отмечалось раннее, процесс - просто контейнер. Технически, это не процесс, который выполняется, выполняются его потоки. Поток - объект в пределах процесса, который Windows планирует для выполнения, и он включает следующие важные составляющие:

 

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

■                Два стека, один для потока, чтобы использовать его для выполнения в режиме ядра и один для того, чтобы использовать в пользовательском режиме.

■                Область сохранения, называемая локальной памятью потока (TLS) для использования подсистемами, библиотеками времени выполнения, и динамически подключаемыми библиотеками (DLL).

■                Уникальный идентификатор, называемый ID потока (TID). ID процесса и ID потока сгенерированы, таким образом, что они никогда не перекрываются.

■                У потоков иногда есть свой собственный контекст защиты, который часто используется многопоточными приложениями сервера, которые являются предстваляют собой контекстом защиты клиентов, которыми они управляют.

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

Потоки не могут ссылаться на адресное пространство другого процесса, однако, только если какой-нибудь другой процесс не делает доступным часть своего адресного пространства как раздел разделяемой памяти (названный объектом отображения файла в API Windows, file mapping object) или когда один процесс имеет право открыть другой процесс, с целью использовать функции по обращению к его памяти.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: