Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Processes - Metodicka (edited) with MPI - last....doc
Скачиваний:
59
Добавлен:
22.12.2018
Размер:
1.59 Mб
Скачать

Часть II. Реализация процессов.

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

  1. Реализация процессов в ос unix

    1. Понятие процесса в unix.

Выше уже говорилось, что в каждой конкретной ОС существует свое системно-ориентированное определение понятия процесса. В ОС UNIX процесс можно определить, с одной стороны, как единицу управления и потребления ресурсов, с другой стороны – как объект, зарегистрированный в таблице процессов ядра UNIX. Каждому процессу в UNIX сопоставлено некое уникальное целое число, называемое идентификатором процессаPID. Это число находится в диапазоне от нуля до некоторого предельного номера, характеризующего максимально возможное количество одновременно существующих процессов в данной ОС. Некоторые значения идентификаторов являются зарезервированными и назначаются специальным процессам ОС, например, процесс с PID=0 ассоциируется с работой ядра ОС, а процесс с PID=1 – это процесс init, работа которого будет подробно рассмотрена ниже.

      1. Контекст процесса.

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

С точки зрения логической структуры контекст процесса в UNIX состоит из:

  • пользовательской составляющей или тела процесса (иногда используется термин «пользовательский контекст»)

  • аппаратной составляющей (иногда используется термин «аппаратный контекст»)

  • системной составляющей ОС UNIX (иногда называемой «системным контекстом» или «контекстом системного уровня»)

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

Рассмотрим подробнее каждую из составляющих контекста процесса.

Рис. 6 Контекст процесса

      1. Тело процесса.

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]