♦ NICE
— показатель уступчивости. Процессы выполняются в режиме разделения времени, то есть время центрального процессора делится между готовыми к выполнению процессами с учетом их приоритета. Чем выше показатель уступчивости, тем ниже приоритет.♦ Переменные окружения
.Каждый процесс порождается другим процессом, использующим для этого системный вызов
/etc/inittab
), которые, в свою очередь, при участии пользователя порождают другие процессы.В результате системного вызова
Может случиться и так, что процесс выполняет вызов
Рис. 3.3
. Как размножаются процессыКаждый процесс, завершившись, возвращает родительскому процессу какое-то значение, называемое кодом завершения или кодом возврата. По соглашению разработчиков, нулевой код возврата означает успешное завершение, а ненулевые — разнообразные ошибки. Процесс-родитель может приостановить свое выполнение до завершения потомка и выполнить разные действия в зависимости от возвращенного дочерним процессом значения, а может и не делать этого.
Моментальный снимок протекающих в системе процессов можно посмотреть с помощью команды ps
(ps --help
. Вот некоторые полезные из них:♦ -p <список_PID>
: только процессы с указанными ID;♦ -u <список_USERID>
: только запущенные указанными пользователями;♦ -е
: все процессы в системе;♦ -f
: полная форма вывода;♦ -Н
: вывод иерархии процессов в форме дерева.Рис. 3.4
. Фрагмент иерархии процессовПредставление о динамике процессов дает команда top
. Она выводит список процессов, отсортированный по количеству запятой памяти или использованного процессорного времени, и обновляет его через указанные промежутки времени (по умолчанию через каждые 3 секунды).Процессы делятся на три категории:
♦ Системные
. Они порождаются ядром особым образом в процессе загрузки и выполняют системные функции (например, планирование процессов или смену страниц виртуальной памяти). Выполняемая ими программа берется не из исполняемого файла, а является частью ядра.♦ Пользовательские
. Как правило, они порождаются во время сеанса работы пользователя и связаны с терминалом. Если пользовательский процесс работает в интерактивном режиме, то он захватывает терминал в монопольное владение и, пока он не завершится, пользователь не имеет доступа к командной строке на этом терминале. Пользовательские процессы могут работать также в фоновом режиме, освободив командную строку.♦ Демоны
. Запускаются после инициализации ядра. Выполняются в фоновом режиме, не связаны ни с одним пользователем, обеспечивают работу различных служб (например, управление сетью). Главным демоном считаетсяНазвание «демон» (
3.3. Взаимодействие процессов
Из всех средств межпроцессного взаимодействия, которыми так богаты UNIX-подобные ОС, в этой главе мы рассмотрим только конвейеры и сигналы.
3.3.1. Конвейер (pipe)
В главе 2 вы познакомились с командой-фильтром more
, вызываемой так:< команда_выводящая_много_строк > | more