Опубликован: 15.06.2004 | Доступ: свободный | Студентов: 2290 / 579 | Оценка: 4.35 / 3.96 | Длительность: 27:47:00
ISBN: 978-5-9556-0011-6
Лекция 14:

Заключение

< Лекция 13 || Лекция 14: 12345678910

Процессы

Согласно стандарту POSIX -2001, процесс - это адресное пространство вместе с выполняемыми в нем потоками управления, а также системными ресурсами , которые этим потокам требуются.

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

Процесс, создавший данный, называется родительским.

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

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

Поведение процесса определяется исполняемой в его рамках программой.

Для выдачи информации о процессах служит утилита ps.

Опрос идентификаторов процесса, родительского процесса и группы процессов выполняется посредством функций getpid() и getppid() getpgrp().

Для установки идентификатора группы процессов предназначена функция setpgid().

За создание сеанса и установку идентификатора группы процессов отвечает функция setsid().

Опрос реальных и действующих идентификаторов пользователя и группы вызывающего процесса осуществляется с помощью функций getuid(), geteuid(), getgid(), getegid().

Функция getgroups() предназначена для получения идентификаторов дополнительных групп вызывающего процесса.

Переустановить действующий идентификатор пользователя вызывающего процесса позволяют функции setuid() и seteuid(). Аналогичные функции для переустановки идентификаторов группы процесса называются setgid() и setegid().

Опрос и/или изменение маски режима создания файлов вызывающего процесса осуществляет служебная программа umask и одноименная функция.

Новые процессы создаются при помощи функции fork().

Обычно процесс-потомок, используя функцию семейства exec(), подменяет программу, которая определяет поведение процесса, и передает ей управление и список аргументов. К числу функций этого семейства принадлежат execl(), execv(), execle(), execve(), execlp(), execvp().

Родительский процесс реализует ожидание завершения процессов-потомков и получает информацию о статусе завершения от функций семейства wait() - wait() и waitpid().

Процесс может вызвать собственное завершение, обратившись к функциям семейства exit() - exit(), _Exit(), _exit().

Функция atexit() позволяет зарегистрировать функции, которые будут вызываться, если процесс завершается, обращаясь к exit() или возвращаясь из main().

Для терминирования процессов извне предназначена служебная программа kill.

< Лекция 13 || Лекция 14: 12345678910
Антон Коновалов
Антон Коновалов

В настоящее время актуальный стандарт - это POSIX 2008 и его дополнение POSIX 1003.13
Планируется ли актуализация материалов данного очень полезного курса?

Павел Храмцов
Павел Храмцов
Россия
Денис Комаров
Денис Комаров
Россия, Москва