Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие_Unix.doc
Скачиваний:
10
Добавлен:
26.11.2019
Размер:
2.41 Mб
Скачать

3 Подсистема управления процессами

3.1 Понятие процесса

Процесс - это экземпляр выполняемой программы. Процесс – это нечто выполняющее программу и создающее среду для ее функционирования.

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

Атрибуты процесса

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

  1. Идентификатор процесса (PID)

  2. Идентификатор родительского процесса (PPID)

  3. Текущий приоритет PRI

  4. Поправка приоритета (NICE) – относительный приоритет

  5. Терминальная линия (TTY)

  6. Реальный (UID) и эффективный (EUID) идентификаторы пользователя

  7. Реальный (GID) и эффективный (EGID) идентификаторы группы

PID

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

Формируются процессы с 0 до N-1, где N - предельное число процессов, которые система может одновременно обрабатывать. Это параметр настройки ОС. (обычно - 65737)

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

PPID

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

PRI

приоритет выполнения, на основании которого віполняется рраспределение процессорных ресурсов. Это величина переменная и динамически изменяется планировщиком.

NICE

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

TTY

Терминал или псевдотерминал, связанный с процессом. С этим терминалом по умолчанию связаны стандартные потоки: входной, выходной и поток сообщений об ошибках. Процессы-демоны не связаны с терминалом.

UID EUID

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

Эффективный идентификатор служит для определения прав доступа процесса к системным ресурсам.

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

EUID EGID

Реальный идентификатор группы равен идентификатору основной или текущей группы пользователя, запустившего процесс.

Эффективный идентификатор служит для определения прав доступа к системным ресурсам от имени группы. Обычно эффективный идентификатор группы совпадает с реальным. Но если для выполняемого файла установлен бит SGID, такой файл выполняется с эффективным идентификатором группы-владельца.

Типы процессов

В ОС UNIX выделяется три типа процессов:

  • системные,

  • демоны

  • прикладные процессы.

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

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

Демоны - это не интерактивные процессы, которые запускаются обычным образом - путем загрузки в память соответствующих им программ, и выполняются в фоновом режиме. Обычно демоны запускаются при инициализации системы, но после инициализации ядра и обеспечивают работу различных подсистем UNIX: системы терминального доступа, системы печати, сетевых служб и т.д. Демоны не связаны ни с одним пользователем. Большую часть времени демоны ожидают, пока тот или иной процесс запросит определенную услугу.

Типичным демоном является cron. Этот демон планирует активность системы на минуты, часы, дни и месяцы вперед. Он просыпается каждую минуту, проверяя, не нужно ли чего сделать. Если у него есть работа, он ее выполняет и отправляется спать дальше.

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

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