Процессы и потоки windows


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

С точки зрения программиста каждому процессу принадлежат ресурсы, пред­ставленные следующими компонентами:

 

· один или несколько потоков.

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

· один или несколько сегментов кода, включая код DLL.

· один или несколько сегментов данных, содержащих глобальные переменные.

· строки, содержащие информацию об окружении, например, информацию о текущем пути доступа к файлам.

· куча процесса.

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

 

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

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

· локальные области хранения потока (Thread Local Storage) — массивы указателей, используя которые каждый поток может создавать собствен­ную уникальную информационную среду.

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

· структура контекста, поддерживаемая ядром системы и содержащая зна­чения машинных регистров.

Процесс и его потоки (Windows)

Ресурсы

Ресурс – объект, который запрашивается, используется и освобождается процессами в период их активности.

Делимые ресурсы – ресурсы, которые несколько процессов могут использовать одновременно.

Используемые параллельно – в течение некоторого интервала времени процессы используют попеременно.

Unix

Создание нового процесса

Когда возникает необходимость создания нового процесса , текущий процесс выполняет системный вызов fork. При этом создаётся новый процесс, представляющий собой копию исходного процесса и его контекста. Новый процесс отличается тем, что у него другой PID, а родителем для него является запустивший процесс. Далее дочерний процесс с помощью системного вызова exec запускает вместо себя другую программу, заново проинициализировав свои код и данные.

Контекст процесса

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

Статическая часть контекста процесса системного уровня включает следующее:

1. Идентификатор процесса (PID)- уникальный номер, идентифицирующий процесс. По сути, это номер строки в таблице процессов — специальной внутренней структуре ядра операционной системы, хранящей информацию о процессах.

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

2. Идентификатор родительского процесса (PPID) - в операционной системе UNIX процессы выстраиваются в иерархию — новый процесс может быть создан только одним из уже существующих процессов, который выступает для него родительским.

Очевидно, что в такой схеме должен присутствовать один процесс с особым статусом: он должен быть порожден ядром операционной системы и будет являться родительским для всех остальных процессов в системе. В UNIX такой процесс имеет собственное имя — init.

Состояние процесса

Каждый процесс в любой момент времени находится в одном из нескольких определенных состояний: инициализация, исполнение, приостановка, ожидание ввода-вывода, завершение и т. п.

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



Дата добавления: 2017-01-26; просмотров: 2973;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.