Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_osi.doc
Скачиваний:
73
Добавлен:
11.02.2015
Размер:
218.11 Кб
Скачать

22. Идентификаторы

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

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

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

DAEMON - системный фоновый процесс. Запускается с правами системного фонового админа либо со специальной учетной записью. Web-сервер запускается с учетной записью .ftp – anonym.ftp

1) Идентификатор процесса P I D

Каждому процессу присваивается свой номер, уникальный в каждый момент времени и неизменный в течении всего срока выполнения. Может принимать знач от 1 до 32 000 либо до 65 535 в зависимости от реализации системы. 0 – зарегистрирован под планировщик процессов. Никакого др смысла, кроме как идентификации процессов номера не несут. По номеру нельзя ничего сказать о привилегии процесса. В Windows номера даются: ближайший свободный от 1. В UNIX используется специальный счетчик: номер дается равный значению счетчика +1, при условии, что задаваемый номер свободен. Когда доходит до конечного номера, то отсчет идет заново.

2) Идентификатор процесса, породнившего данный процесс PP I D

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

Когда он входит в систему он вводит login -> sh -> echo. Программа логин все процессы должна завершить. Если 1 из процессов не прин данному пользователю завершится не может, то его идентиф процесса предка становится = идентиф процесса (главному процессу системы). Далее процесс unit заботится об этом процессе.

UID – идентификатор пользователя, STIME –процессорное время, TIME – процессорное время, TTY– терминал, через который подключается пользователь

3) Идентификатор группы процессов.

Каждый процесс выполняется в рамках какой-либо группы. Состав группы может быть из 1 процесса либо из нескольких. Напр find/|grip virus| more.

Команда find/ выводит на экран список всех файлов системы, но из-за использования программного канала весь вывод передается не каждому grip который в свою очередь выводит на экран только те строки, в которых есть слово virus.

4) Реальные и эффективные идентификаторы пользователя.

Каждый пользователь в системе имеет своё идентифицированное значение, может быть 0,1,2,3,….. Они обозначаются UID. Пользователь обладающий идентификатором 0 называется супер-пользователь, системный администратор, привилегированный пользователь, ROOT. Ид. 1-99 зарезервированы под служебные цели.

23. Системные вызовы для управления процессами

Ядро системы предоставляет возможности (набор системных вызовов) для порождения новых процессов, отслеживания окончания порожденных процессов и т.д.

Каждый процесс может образовать полностью идентичный подчиненный процесс с помощью системного вызова fork() и дожидаться окончания выполнения своих подчиненных процессов с помощью системного вызова wait. Каждый процесс в любой момент времени может полностью изменить содержимое своего образа памяти с помощью одной из разновидностей системного вызова exec. Каждый процесс может установить свою собственную реакцию на "сигналы", производимые операционной системой в соответствие с внешними или внутренними событиями. Наконец, каждый процесс может повлиять на значение своего статического (а тем самым и динамического) приоритета с помощью системного вызова nice.

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

Для завершения процесса по его собственной инициативе используется системный вызов

Exit (status), где status - это целое число, возвращаемое процессу-предку для его информирования о причинах завершения процесса-потомка.