Контекст процесса
Каждому процессу соответствует
контекст, в котором он выполняется.
Этот контекст включает содержимое
пользовательского адресного
пространства - пользовательский
контекст (т.е. содержимое сегментов
программного кода, данных, стека,
разделяемых сегментов и сегментов
файлов, отображаемых в виртуальную
память), содержимое аппаратных
регистров - регистровый контекст
(таких, как регистр счетчика команд,
регистр состояния процессора,
регистр указателя стека и
регистров общего назначения), а
также структуры данных ядра
(контекст системного уровня),
связанные с этим процессом.
Контекст процесса системного
уровня в ОС UNIX состоит из
"статической" и
"динамических" частей. У
каждого процесса имеется одна
статическая часть контекста
системного уровня и переменное
число динамических частей.
Статическая часть контекста
процесса системного уровня
включает следующее:
A.Описатель процесса, т.е. элемент
таблицы описателей существующих в
системе процессов. Описатель
процесса включает, в частности,
следующую информацию:
- состояние процесса;
- физический адрес в основной
или внешней памяти u-области
процесса;
- идентификаторы пользователя,
от имени которого запущен
процесс;
- идентификатор процесса;
- прочую информацию, связанную с
управлением процессом.
B. U-область (u-area), индивидуальная
для каждого процесса область
пространства ядра, обладающая тем
свойством, что хотя u-область
каждого процесса располагается в
отдельном месте физической памяти,
u-области всех процессов имеют один
и тот же виртуальный адрес в
адресном пространстве ядра. Именно
это означает, что какая бы
программа ядра не выполнялась, она
всегда выполняется как ядерная
часть некоторого
пользовательского процесса, и
именно того процесса, u-область
которого является "видимой"
для ядра в данный момент времени.
U-область процесса содержит:
- указатель на описатель
процесса;
- идентификаторы пользователя;
- счетчик времени, которое
процесс реально выполнялся
(т.е. занимал процессор) в
режиме пользователя и режиме
ядра;
- параметры системного вызова;
- результаты системного вызова;
- таблица дескрипторов открытых
файлов;
- предельные размеры адресного
пространства процесса;
- предельные размеры файла, в
который процесс может писать;
- и т.д.
Динамическая часть контекста
процесса - это один или несколько
стеков, которые используются
процессом при его выполнении в
режиме ядра. Число ядерных стеков
процесса соответствует числу
уровней прерывания, поддерживаемых
конкретной аппаратурой.
[Предыдущая глава]
[Оглавление] [Следующая
глава]
|