Приоритетность процессов

Существует категория так называемых «жадных» программ, которые способны захватить ресурсы компьютерной системы в ущерб другим процессам. Например, программа, имеющая право повышать свой приоритет, может захватить все время центрального процессора и уйти в вечный цикл. «Жадная» программа может затребовать непомерно большой объем виртуальной памяти и вызвать ее дефицит.

Все сущности в операционной системе имеют свои номера. Не являются исключением и процессы. Каждому из них система назначает уникальный 16-разрядный идентификатор (process identifier - PID). Таким образом, в системе может быть одновременно запущено громадное число - 65536 процессов. Идентификационные номера присваиваются процессам по порядку, по мере их создания. Обычно первая сотня номеров присваивается системным процессам и демонам, поскольку они запускаются первыми. При завершении процесса система освобождает его идентификатор.

Процессы в UNUX «размножаются» путем бинарного деления. Для этого запускающий процесс должен создать своего «двойника», вызывая системный запрос, именуемый fork (дословно - вилка). Выполняя этот запрос, система создает дочерний процесс, являющийся почти полной копией родительского, но имеющий свой идентификатор PID и выполняющийся в собственном адресном пространстве. Дочерний процесс сохраняет значение идентификатора родительского процесса Parent Process ID (PPID). «Родственники» могут взаимодействовать друг с другом посредством сигналов, общего адресного пространства и др.

Пользовательским процессам присваивается еще один идентификатор -UID, уникальный номер пользователя, который их запустил. Пользователь не может манипулировать файловыми объектами непосредственно, и это делает за него программа. Обычные пользовательские программы имеют право делать только то, что разрешено пользователю, запустившему их. Например, пользователь, запустивший процесс Is -la /root с целью просмотра содержимого подкаталога администратора, получит сообщение "permission denied". На самом деле отказ в доступе получил процесс, запущенный от имени пользователя. Но тот же процесс, запущенный с правами root, будет выполнен безукоризненно.