Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек_1_11_Процессы_пользовательский аспект.doc
Скачиваний:
4
Добавлен:
21.09.2019
Размер:
129.02 Кб
Скачать

Отношение между процессами.

Отношения подчинения:

Родительский – Дочерний (parent-child). Родительский процесс для выполнения конвейера может породить одновременно несколько работающих дочерних процессов. Он может ждать, а может и не ждать завершения дочернего процесса, а выполняться параллельно и независимо.

Процессы связанные отношениями подчинения образуют дерево П.

Отношения объединения:

  1. Все процессы, которые запускает пользователь во время одной рабочей сессии; объединяются в сессию. Сессия имеет процесс-прародитель - лидер сессии. Лидер сессии имеет связь с терминалом. В большинстве версий UNIX – это оболочка; в другом случае login, который ждет окончания работы оболочки.

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

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

Возвращение статуса.

При завершении любой процесс передает ОС статус завершения, который может быть проанализирован Родительским процессом. Это целое число 0~255. Принято соглашение, что 0 возвращается при нормальном завершении, а все другие значения свидетельствуют об ошибках. В оболочках для статуса определенны специальные переменные errno в bash и ksh и status в tcsh.

Команда ps.

Выводит информацию о запущенных процессах (их 2 версии). Информация может быть представлена в «пользовательском» или «полном» формате: ключи (опции) -u или -f соответственно. В Linux ps работает в обоих стилях (стиль BSD и стиль System V). В стиле System V можно указать набор колонок с помощью ключа –o, назв_кол, назв_кол, назв_кол,… названия переключаются через запятую, без пробелов.

См. справочную систему.

Наиболее важные атрибуты и параметры процессов.

Атрибуты – признаки, отличающие один процесс от другого.

Параметры – значения, которые могут меняться в течении жизненного цикла.

PID (Process IDentifier) – идентификатор процесса, целое положительное число. Максимальное число зависит от ОС. Уникальный атрибут, ОС управляет процессом и его PID на 1 больше (если он не занят другим процессом) или ближайший не занятый номер, чем имел предыдущий запущенный процесс, не зависимо от того, завершился он или нет. После достижения max N счетчик номеров сбрасывается. Новые процессы начинают нумерацию с наименьших свободных NN. Первым (PID=1) всегда является init.

При запуске дочернего процесса, родительский процесс получает от ОС его PID и наоборот и тем самым может посылать ему сигналы, следить за его завершением, за его статусом.

PPID Parent PID – идентификатор родительского процесса. Этот идентификатор процесса получает во время запуска и может тоже получить информацию о родителе и передавать ему сигналы.

Если родительский процесс завершается раньше , чем дочерний процесс, то ОС назначает процесс init родительским по отношению к дочернему процессу и изменяет PPID у дочернего процесса на значение 1.

UID – реальный идентификатор пользователя,

GID – реальный идентификатор группы,

EUID – эффективный идентификатор пользователя,

EGID – эффективный идентификатор группы.

Эти атрибуты определяют принадлежность процесса и его права доступа к ресурсам ЭВМ. Реальные идентификаторы совпадают с идентификаторами пользователя, который запустил процесс, и группы, которой он принадлежит. Программа login устанавливает оболочке сессии те оболочки UID и GID, которые указаны в файле паролей данного пользователя. Эти атрибуты наследуются всеми дочерними процессами, и не могут быть изменены.

Права доступа процесса к ресурсам ЭВМ определяются EUID и EGID равными UID и GID. Пользовательские процессы обычно имеют те же права, что и пользователь. Но, есть исключение(!) : Если у исполняемого файла установлен атрибут SUID, при запуске программы эффективный идентификатор пользователя устанавливается равным идентификатору владельца файла. Права доступа такого процесса равны правам доступа владельца файла. То же относится и к группе, если файл имеет атрибут SGID.

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

Список таких программ различается в разных версиях ОС(это: ps, top(в Linux нет), passwd, mail, pine, slogin, ssh, lpr, lpg).