Контекст выполнения процесса.

Каждому процессу соответствует контекст, в котором он выполняется.

Этот контекст включает:

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

Контекст процесса системного уровня в ОС UNIX состоит из "статической" и "динамических" частей. У каждого процесса имеется одна статическая часть контекста системного уровня и переменное число динамических частей.

Статическая часть контекста процесса системного уровня включает следующее:
A. Описатель процесса, т.е. элемент таблицы описателей существующих в системе процессов. Описатель процесса включает, в частности, следующую информацию:

  1. ? состояние процесса;
  2. ? физический адрес в основной или внешней памяти u-области процесса;
  3. ? идентификаторы пользователя, от имени которого запущен процесс;
  4. ? идентификатор процесса;
  5. ? прочую информацию, связанную с управлением процессом.

B. U-область (u-area), индивидуальная для каждого процесса область пространства ядра, обладающая тем свойством, что хотя u-область каждого процесса располагается в отдельном месте физической памяти, u-области всех процессов имеют один и тот же виртуальный адрес в адресном пространстве ядра. Именно это означает, что какая бы программа ядра не выполнялась, она всегда выполняется как ядерная часть некоторого пользовательского процесса, и именно того процесса, u-область которого является "видимой" для ядра в данный момент времени. U-область процесса содержит:

  1. ? указатель на описатель процесса;
  2. ? идентификаторы пользователя;
  3. ? счетчик времени, которое процесс реально выполнялся (т.е. занимал процессор) в режиме пользователя и режиме ядра;
  4. ? параметры системного вызова;
  5. ? результаты системного вызова;
  6. ? таблица дескрипторов открытых файлов;
  7. ? предельные размеры адресного пространства процесса;
  8. ? предельные размеры файла, в который процесс может писать;
  9. ? и т.д.


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