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

Процессы

< Лекция 6 || Лекция 7: 123456 || Лекция 8 >
Аннотация: Определяются основные понятия, ассоциированные с процессами. Описываются служебные программы и функции для опроса и изменения атрибутов процессов, а также для создания и завершения процессов.
Ключевые слова: POSIX, определение, процесс, идентификатор процесса, время жизни процесса, ПО, поток, адресное пространство, идентификатор, завершение процесса, зомби-процесс, родительский процесс, идентификатор родительского процесса, группа процессов, время жизни группы процессов, задание, управление заданиями, сеанс, группа, время жизни сеанса, лидер сеанса, управляющий терминал, очередь, управляющий процесс, терминал, приоритетный процесс, фоновый процесс, реальный идентификатор пользователя процесса, пользователь, реальный идентификатор группы процессов, действующий идентификатор пользователя процесса, действующий идентификатор группы процесса, режим файла, действующий идентификатор, сохраненный ПДП-идентификатор, сохраненный ПДГ-идентификатор, идентификатор группы процесса, идентификаторы дополнительных групп процесса, маска режима создания файлов, режим доступа, атрибут процесса, поток управления, идентификатор потока управления, политика планирования, значение, память, автоматические переменные, исключение, функция, активный поток управления, готовый к выполнению поток управления, вытесненный поток управления, блокированный поток управления, список потоков управления, планирование, блокирование процесса, область планирования размещения, область планирования конкуренции, процессор, утилита, информация, процессорное время, имя программы, права доступа, список, целый, аргумент опции, заголовки, PPID, процент, астрономическое время, командная строка, getpid, getppid, присоединение, программа, опрос, интерфейс, дополнительная группа, массив, аргумент, число элементов в массиве, SETUID, пдп-идентификатор, идентификатор пользователя процесса, бит ПДИП, маска режима создания, бит, маска, биты режима, синтаксис, опция, описание открытого файла, потомок, переменная, указатель, маршрутное имя, простое имя, поиск, статус завершения, элемент множества, запрос, байт, макрос, константы, файл

Основные понятия

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

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

Процессы могут создаваться и завершаться. Время жизни процесса – это период от его создания до возврата идентификатора операционной системе.

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

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

Завершение процесса может быть нормальным или аварийным. Нормальное завершение происходит, в частности, при возврате из функции main().

Зомби-процесс – завершившийся процесс, подлежащий ликвидации после того, как код его завершения будет передан ожидающему этого другому процессу.

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

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

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

Задание – это набор процессов, составляющих конвейер, а также порожденных ими процессов, входящих в одну группу.

Под управлением заданиями подразумеваются предоставленные пользователям средства выборочно (при)останавливать и затем продолжать (возобновлять) выполнение процессов. На отдельные задания ссылаются с помощью идентификаторов.

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

Время жизни сеанса представляет собой период от создания сеанса до истечения времени жизни всех групп процессов, принадлежавших сеансу.

Лидер сеанса – процесс, создавший данный сеанс.

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

Управляющий процесс – это лидер сеанса, установивший соединение с управляющим терминалом. Если в дальнейшем терминал перестанет быть управляющим для сеанса, лидер сеанса утратит статус управляющего процесса.

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

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

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

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

Поведение процесса определяется исполняемой в его рамках программой – последовательностью инструкций для решения определенной задачи. Программы хранятся в файлах. В режим файлов входят биты переустановки действующих идентификаторов пользователя (ПДИП) и группы (ПДИГ). Если эти биты взведены, то при запуске программы на выполнение действующие идентификаторы пользователя и группы процесса могут наследоваться у файла.

Стандартом POSIX-2001 предусмотрены также сохраненные переустановленные действующие идентификаторы пользователя ( сохраненные ПДП-идентификаторы ) и группы ( сохраненные ПДГ-идентификаторы ) процесса. Эти атрибуты расширяют возможности, связанные со сменой действующих идентификаторов пользователя и группы процесса.

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

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

Текущий и корневой каталоги и набор дескрипторов открытых файлов также относятся к числу атрибутов процессов.

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

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

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

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

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

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

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

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

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

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

Политика планирования воздействует на порядок процессов (потоков управления) по крайней мере в следующих ситуациях:

  • когда активный процесс (поток управления) блокируется или вытесняется;
  • когда блокированный процесс (поток управления) становится готовым к выполнению.

Область планирования размещения – это набор процессоров, по отношению к которым в какой-то момент времени планируется поток управления.

Областью планирования конкуренции называется свойство потока управления, определяющее набор потоков, с которыми он конкурирует за ресурсы (например, за процессор). В стандарте POSIX-2001 предусмотрены две подобные области – PTHREAD_SCOPE_SYSTEM и PTHREAD_SCOPE_PROCESS.

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

< Лекция 6 || Лекция 7: 123456 || Лекция 8 >
Антон Коновалов
Антон Коновалов

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