Контекст системного уровня
Запись таблицы процессов Определяет состояние процесса; эта информация всегда доступна операционной системе
Пользовательская область Информация по управлению процессом, необходимая только в контексте данного процесса
Таблица областей процесса Задает отображение виртуальных адресов в физические; содержит также поле полномочий, в котором указывается тип доступа, на который процесс имеет право: только для чтения, для чтения и записи или для записи и выполнения
Стек ядра Содержит кадр стека процедур ядра при работе процесса в режиме ядра
В контекст пользовательского уровня (user-level context) входят основные элементы пользовательских программ; он может генерироваться непосредственно из скомпилированных объектных файлов. Каждая пользовательская программа разделена на две части, одна из которых размещается в текстовой области, а другая — в области данных. Текстовая область предназначена только для чтения; в ней хранятся команды пользовательских программ. Во время выполнения процессор использует пользовательский стек для вызовов и возвратов из процедур, а также для передачи параметров. Совместно используемая область памяти — это область данных, доступ к которой одновременно предоставляется различным процессам. Хотя в системе имеется только одна физическая копия совместно используемой области памяти, при использовании виртуальной памяти эта область находится в адресном пространстве каждого процесса, который ее использует.
Когда процесс не выполняется, соответствующая информация по состоянию процессора хранится в области контекста регистров (register context).
В контексте системного уровня (system-level context) находится остальная информация, которая нужна операционной системе для управления процессом. Эта информация состоит из статической части фиксированного размера, который остается неизменным на протяжении всего времени жизни процесса, и динамической части, размер которой меняется. Одним из компонентов статической части является запись таблицы процессов, которая фактически является частью таблицы процессов, поддерживаемой операционной системой, в которой каждому процессу соответствует одна запись. Запись таблицы процессов содержит информацию по управлению процессом, доступную ядру в любой момент времени. Таким образом, в системе виртуальной памяти все записи таблицы процессов постоянно остаются в основной памяти. В табл. 3.11 перечислены компоненты записи таблицы процессов. Пользовательская область содержит дополнительную управляющую информацию, которая нужна ядру при работе в контексте этого процесса; эта информация используется также при загрузке и выгрузке страниц процесса из основной памяти. В табл. 3.12 приведено содержимое этой таблицы
Таблица 3.11. Элемент таблицы процессов в системе UNIX
Состояние процесса | Текущее состояние процесса |
Указатели | Пользовательская область и область памяти процесса (текст, данные, стек) |
Размер процесса | Дает возможность операционной системе определить, сколько памяти потребуется процессу |
Идентификаторы пользователя | Реальный идентификатор пользователя (real user ID) указывает, кто из пользователей несет ответственность за выполняющийся процесс. Фактический идентификатор пользователя (effective user ID) может использоваться процессом для предоставления временных привилегий, связанных с определенной программой; на время выполнения этой программы в составе процесса последний использует фактический идентификатор пользователя |
Идентификаторы процесса | Идентификатор данного и родительского процессов. Эти идентификаторы присваиваются процессу в состоянии создания |
Дескриптор событий | Используется, когда процесс находится в спящем состоянии; с наступлением события процесс переходит в состояние готовности |
Приоритет | Используется при планировании процессов |
Сигнал | Перечисляет отправленные, но еще не обработанные сигналы |
Таймеры | Включают время выполнения процесса, использование ресурсов ядром, а также пользовательские таймеры для отправки сигналов в определенное время |
Р-связь | Указатель на следующий элемент в очереди готовых к выполнению процессов (используется, когда процесс находится в состоянии готовности) |
Статус памяти | Указывает, находится ли образ процесса в основной памяти или выгружен из нее. Если процесс загружен в память, в этом поле также указывается, можно ли его выгрузить или он временно блокирован в основной памяти |
Таблица 3.12. Пользовательская область UNIX
Указатель таблицы процессов | Указывает запись, соответствующую области пользователя |
Идентификаторы пользователя | Реальный и фактический идентификаторы пользователя. Используются для определения пользовательских привилегий |
Таймеры | Записывают время, затраченное на выполнение данного и дочерних процессов в пользовательском режиме и в режиме ядра |
Массив обработчиков сигналов | Указывает, как будет реагировать процесс на каждый из пяти типов сигналов, заданных в системе (выходить из системы, игнорировать сигнал, выполнять заданную пользователем функцию) |
Управляющий терминал | Указывает, с какого терминала был запущен процесс (если этот терминал существует) |
Поле ошибок | Содержит записи об ошибках, произошедших во время системного вызова |
Возвращаемое значение | Содержит результат выполнения системных вызовов |
Параметры ввода-вывода | Задает объем передаваемых данных, адрес массива данных в пользовательском пространстве, а также смещения в файлах при вводе-выводе |
Файловые параметры | Текущий и корневой каталоги описывают файловую систему процесса |
Таблица дескрипторов файлов пользователя | Содержит записи об открытых файлах |
Граничные поля | Ограничивают размер процесса и размер файла, который он может записать |
Поля режимов доступа | Установки режима доступа к создаваемым процессом файлам |
Различия между записью таблицы процессов и пользовательской областью отражают тот факт, что ядро системы UNIX всегда выполняется в контексте какого-нибудь процесса. Большую часть времени ядро работает с контекстом текущего процесса, однако иногда ядру нужен доступ к информации и о других процессах, например при работе планировщика.
Третьей статической частью, входящей в контекст системного уровня, является таблица областей процесса, которая используется системой управления памятью. И, наконец, стек ядра — это динамическая часть контекста системного уровня. Этот стек используется при выполнении процесса в режиме ядра и содержит информацию, которую нужно сохранять и восстанавливать во время вызовов процедур и прерываний.
Дата добавления: 2016-06-05; просмотров: 2134;