Приветствую Вас Гость | RSS

Уже всё СкаченО

Суббота, 08.02.2025, 14.41.37
Главная » Статьи » Основы UNIX » Основы операционной системы UNIX

Контекст процесса
Каждый процесс UNIX имеет контекст, под которым понимается вся информация, требуемая для описания процесса. Эта информация сохраняется, когда выполнение процесса приостанавливается, и восстанавливается, когда планировщик предоставляет процессу вычислительные ресурсы.

Контекст процесса в ОС UNIX состоит из нескольких частей:
Адресное пространство процесса в пользовательском режиме
Сюда входят код, данные и стек процесса, а также другие области, например, разделяемая память или код и данные динамических библиотек.
Управляющая информация
Ядро использует две основные структуры для управления процессом - proc и user. Сюда же входят данные, необходимые для отображения виртуального адресного пространства процесса в физическую память.
Среда процесса
Переменные среды процесса, значения которых задаются в командном интерпретаторе или в самом процессе с помощью системных вызовов, а также наследуются порожденным процессом от родительского и обычно хранятся в нижней части стека. Среду процесса можно получать или изменять с помощью функций.
Аппаратный контекст
Сюда входят значения общих и ряда системных регистров процессора, в частности, указатель текущей инструкции и указатель стека (см. в начале раздела). 

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

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

Первые два случая соответствуют добровольному переключению контекста и действия ядра при этом достаточно просты. Ядро вызывает процедуру переключения контекста из функций sleep или exit.

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

Категория: Основы операционной системы UNIX | Добавил: Fishing (12.10.2009)
Просмотров: 2666 | Комментарии: 5 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]