Системное программное обеспечение - Учебное пособие (Терехин А.Н.)

3.2      тело процесса.

Тело процесса состоит из  сегмента кода и сегмента данных[3].

Сегмент кода содержит машинные команды и неизменяемые константы соответствующей процессу программы. Данные в этом сегменте не подлежат изменению.

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

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

Рис. 7 Разделение сегмента кода разными экземплярами программы

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

Аппаратный контекст.

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

Системный контекст.

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

идентификатор родительского процесса

текущее состояние процесса

приоритет процесса

реальный и эффективный идентификатор пользователя-владельца

реальный и эффективный идентификатор группы, к которой принадлежит владелец

список областей памяти

таблица открытых файлов процесса

диспозиция сигналов, т.е. информация о том, какая реакция установлена на тот или иной сигнал

информация о сигналах, ожидающих доставки в данный процесс

сохраненные значения аппаратной составляющей (когда выполнение процесса приостановлено)

Поясним сказанное выше.

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

Рис. 8 Формирование контекста процесса.