3.2. Жизнь процесса

3.2. Жизнь процесса

Таблица процессов

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

PID — идентификатор процесса. Он принудительно назначается планировщиком при запуске процесса.

PPID — идентификатор родительского процесса (о порождении процессов — дальше в этом же параграфе).

TTY — имя управляющего терминала (терминал, с которого запущен процесс).

WD — текущий каталог процесса, от которого отсчитываются относительные пути.

RID, RGID — реальные ID и групповой ID пользователя, запустившего процесс.

EUID, EGID — эффективные ID и GID: см. п.2.1.4.8.

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

Переменные окружения.

Системные вызовы fork() и exec() или как размножаются процессы

Каждый процесс порождается другим процессом, использующим для этого системный вызов fork(). Таким образом, структура процессов, подобно файловой системе, древовидна. Корнем этого дерева служит init — процесс инициализации системы. Он запускается ядром первым, получает идентификатор 1 и порождает еще несколько процессов (сколько и каких, можно узнать из его конфигурационного файла /etc/inittab), которые, в свою очередь, при участии пользователя порождают другие процессы.

В результате системного вызова fork() родительский процесс полностью копирует свое окружение, включая адресное пространство, в дочерний, так что в момент рождения дочерний процесс отличается только своим ID. Потом дочерний процесс с помощью вызова exec() загружает в свое адресное пространство какой-нибудь исполняемый файл и начинает исполнять содержащуюся в нем программу.

Может случиться и так, что процесс выполняет вызов exec() без fork(): тогда не возникает нового процесса, но в старом начинает выполняться другая программа. Например, программа login выполняется с привилегиями суперпользователя, поскольку ей нужен доступ к файлу паролей. Проверив пароль, она устанавливает себе права зарегистрировавшегося пользователя и выполняет вызов exec(), замещая свой код кодом командной оболочки. После этого из командной оболочки изменить свои привилегии обратно на root нельзя, потому что кода программы login в текущем процессе уже нет.

Рис. 3.3. Как размножаются процессы

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

Снимок протекающих в системе процессов — команда ps

Моментальный снимок протекающих в системе процессов можно посмотреть с помощью команды ps (process status). Без аргументов она покажет список процессов, связанных с текущей консолью (или виртуальным терминалом). Список возможных ключей команды можно, как обычно, получить по команде ps --help. Вот некоторые полезные из них:

-p <список_PID>: только процессы с указанными ID;

-u <список_USERID>: только запущенные указанными пользователями;

: все процессы в системе;

-f: полная форма вывода;

: вывод иерархии процессов в форме дерева.

Рис. 3.4. Фрагмент иерархии процессов

Динамика процессов — команда top

Представление о динамике процессов дает команда top. Она выводит список процессов, отсортированный по количеству запятой памяти или использованного процессорного времени, и обновляет его через указанные промежутки времени (по умолчанию через каждые 3 секунды).

Категории процессов

Процессы делятся на три категории:

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

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

Демоны. Запускаются после инициализации ядра. Выполняются в фоновом режиме, не связаны ни с одним пользователем, обеспечивают работу различных служб (например, управление сетью). Главным демоном считается init — процесс инициализации системы.

Примечание

Название «демон» (daemon) не имеет ничего общего с потусторонними существами: это просто сокращение от Disk And Execution MONitor.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Жизнь насекомых

Из книги Журнал «Компьютерра» №43 от 22 ноября 2005 года автора Журнал «Компьютерра»

Жизнь насекомых Вряд ли в далеких сороковых годах инженеры, доставшие из чрева компьютера Mark II виновницу замыкания - крохотную мошку, могли предвидеть, какая судьба уготована брошенному ими мимоходом словечку «bug». В наши дни, когда не в меру расплодившиеся компьютерные


«Жизнь» в Интернете

Из книги Блоги. Новая сфера влияния автора Попов Антон Валерьевич

«Жизнь» в Интернете Билл Гейтс и Рей Оззи (новый технический директор Microsoft) обратились к сотрудникам с призывом, практически повторяющим строки нашей известной песни: «Вставай, страна огромная, вставай на смертный бой:». Все на приступ Интернета. Большая Игра в


Жизнь до блога

Из книги Журнал `Компьютерра` N733 автора Журнал «Компьютерра»

Жизнь до блога Сфера влияния и сфера забот В «Семи навыках высокоэффективных людей» Стивен Кови вводит понятия «круг влияния» и «круг забот». Если рассматривать их в трехмерном мире, то круги становятся сферами. Чтобы блогосфера не превратилась для вас в сферу забот, вы


Жизнь с блогом

Из книги Журнал «Компьютерра» № 5 от 06 февраля 2007 года автора Журнал «Компьютерра»

Жизнь с блогом Важное и несрочное дело Блогородная репутация Метки: репутацияКогда компания обычно задумывается над своей репутацией? Как правило, когда уже нет времени на ее исправление: в кризисной ситуации, или при усилившейся конкуренции, или перед изменением


Жизнь без прокладки

Из книги Журнал «Компьютерра» № 14 от 10 апреля 2007 года автора Журнал «Компьютерра»

Жизнь без прокладки Автор: Алекс ЭкслерБольшинство домашних пользователей компьютера в какой-то момент вдруг выясняют, что в их квартире - в которой, казалось бы, проложены все мыслимые и немыслимые провода, - не хватает одного-единственного, но очень важного проводочка -


Лучшая жизнь в трехмерном онлайне: Жизнь в метаверсе как часть «просто жизни»

Из книги Модель зрелости процессов разработки программного обеспечения автора Паулк Марк

Лучшая жизнь в трехмерном онлайне: Жизнь в метаверсе как часть «просто жизни» Автор: Анатолий ЛевенчукЯ не буду даже обсуждать многопользовательские онлайн-игры — где есть понятие квеста, где есть геймплей. Я буду обсуждать метаверсы — многопользовательские


Утопия и жизнь

Из книги Цифровой журнал «Компьютерра» № 11 [10.3.2010 — 16.3.2010] автора Журнал «Компьютерра»

Утопия и жизнь Автор: Киви БердЖурналисты английской газеты Daily Mail провели любопытное исследование нынешних масштабов государственной слежки за населением. Для максимальной выразительности, вероятно, в качестве объекта анализа была выбрана квартира Джорджа Оруэлла на


7.3.2. Концепции, касающиеся основных средств производственного процесса организации Основные средства производственного процесса организации (ППО)

Из книги Цифровой журнал «Компьютерра» № 16 [10.05.2010 — 16.05.2010] автора Журнал «Компьютерра»

7.3.2. Концепции, касающиеся основных средств производственного процесса организации Основные средства производственного процесса организации (ППО) Организация устанавливает и сопровождает набор основных средств производственного процесса, как показано на рис. 4.1. К


Наука и жизнь

Из книги Цифровой журнал «Компьютерра» № 17 [17.05.2010 — 23.05.2010] автора Журнал «Компьютерра»

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


Наука и жизнь

Из книги Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript автора Розенцвейг Гэри

Наука и жизнь "Великое объединение" для нейтронных звезд Сергей Попов (ГАИШ МГУ) Опубликовано 12 мая 2010 года В современной физике высоких энергий есть такое важное и красивое понятие, как «Великое объединение». Это та самая «теория всего» или


Наука и жизнь

Из книги Домены. Все, что нужно знать о ключевом элементе Интернета автора Венедюхин Александр

Наука и жизнь


Игра" Жизнь"

Из книги Компьютерные террористы [Новейшие технологии на службе преступного мира] автора Ревяко Татьяна Ивановна

Игра" Жизнь" Исходный файл: gameoflife.fla Игра "Жизнь" известна как результат серьезных разработок в области искусственного интеллекта и одновременно как популярная игра. Она была изобретена математиком Джоном Конвэйем и приобрела известность благодаря опубликованной в 1970


Жизнь

Из книги Вопросы истории: UNIX, Linux, BSD и другие автора Федорчук Алексей Викторович

Жизнь В зависимости от правил администрирования домена первого уровня возможна регистрация имен на различные периоды времени. Например, в домене COM можно регистрировать имена на срок от одного года до десяти лет. Обычно в течение первых 30–60 дней после регистрации смена