Системные процессы – являются частью ядра и всегда расположены в оперативной памяти. Системные процессы не имеют соответствующих им программ в виде исполняемых файлов и запускаются при инициализации ядра системы. Выполняемые инструкции и данные этих процессов находятся в ядре системы. К этим процессам относятся различного рода диспетчеры (диспетчер страничного замещения, памяти ядра и др.). К системным процессам относится и init, являющийся прародителем всех остальных процессов в UNIX. Хотя init не является частью ядра и его запуск происходит из исполнительного файла.
Демоны – не интерактивные процессы, которые запускаются обычным образом – путем загрузки в память соответствующих им программ и выполняются в фоновом режиме. Обычно демоны запускаются при инициализации системы, но после инициализации ядра и обеспечивают работу различных подсистем UNIX: системы терминального доступа, системы печати, сетевого доступа и т.п. Демоны не связаны ни с одним пользователем и не могут непосредственно им управляться. Большую часть времени демоны ожидают пока какой-либо процесс запросит определенную услугу, например печать документа.
Прикладные процессы. К ним относятся все остальные процессы, выполняющиеся в системе. Как правило, эти процессы, порожденные в рамках пользовательского сеанса работы. Пользовательские процессы могут работать как в интерактивном, так и в фоновом режиме, но в любом случае время их жизни определено сеансом работы пользователя.
Процесс в UNIX имеет несколько атрибутов, позволяющих операционной системе эффективно управлять его работой. Рассмотрим важнейшие из них:
¨ Идентификатор процесса Process ID (PID). Каждый процесс имеет уникальный идентификатор PID, позволяющий ядру системы различать процессы. Когда создается новый процесс, ядро присваивает ему следующий свободный идентификатор. Присвоение идентификаторов происходит по возрастающей, то есть идентификатор нового процесс больше, чем идентификатор процесса, созданного перед ним. Если идентификатор достиг максимального значения, то следующий процесс получит минимальный свободный PID и цикл повторяется.
¨ Идентификатор родительского процесса Parent Process ID (PPID) - идентификатор процесса, породившего данный процесс.
¨ Приоритет процесса (Nice Number). Относительный приоритет процесса учитывается планировщиком при определении очередности запуска. Фактическое же распределение процессорных ресурсов определяется приоритетом выполнения, зависящим от нескольких факторов. Относительный приоритет не изменяется системой на протяжении жизни процесса в отличие от приоритета выполнения, динамически обновляемого ядром.
¨ Терминальная линия (TTY). Терминал или псевдотерминал, ассоциированный с процессом, если такой существует. Процессы-демоны не имеют ассоциированного терминала.
¨ Реальный (RID) и эффективный (EVID) идентификаторы пользователя. Реальным идентификатором пользователя данного процесса является идентификатор пользователя, запустившего процесс. Эффективный идентификатор служит для определения прав доступа процесса к системным ресурсам. Обычно реальный и эффективный идентификаторы эквивалентны, т.е. процесс имеет те же права, что и пользователь, его запустивший. Однако существует возможность задать процессу более широкие права путем установки флага SVID, когда эффективному идентификатору присваивается значение идентификатора владельца исполняемого файла.
¨ Реальный (RGID) и эффективный (EGID) идентификаторы группы. Определяются аналогично идентификаторам пользователя.