больше идентификатора процесса, созданного перед ним. Если идентификатор достиг максимально возможного значения, то следующий процесс получит минимальный свободный идентификатор и цикл выделяет индетификатор повторно. Когда процесс завершит свою работу, ядро освобождает занятый им идентификатор. Т.о.:
· Принципиально в ОС можно породить ограниченное число процессов.
· Ограничение на максимальное число процессов одного пользователя.
· С каждым процессом связано уникальное имя.
· Есть система идентификатора для процессов.
· Чтобы создать новый процесс, необходимо освобождать идентификатор завершения процессов.
2. Идентификатор родительского процесса PPID(ParentProcessID) ¾ идентификатор процесса, породившего данный процесс.
3. Приоритет процесса ViceNumber- относительный приоритет процесса, учитываемый планировщиком процессов при очерёдности запуска. Фактически распределение процессорных ресурсов определяется приоритетом выполнения, зависящим от нескольких факторов (в том числе и от относительного приоритета процессов). Относительный приоритет не изменяется системой на всём протяжении жизни процесса, но может быть изменён пользователем или администратором,в отличие от приоритета выполнения,динамически обновляемого ядром.
4. Терминальная линия TTY ¾ это терминал (псевдотерминал), ассоциированный с процессом,если таковой существует. Демоны не имеют ассоциированного терминала.
5. Реальный (RID) и эффективный (EUID) идентификаторы пользователя. Реальный идентификатор ¾ это идентификатор пользователя, запустившего процесс, а эффективный идентификатор используется для определения прав доступа процесса к системным ресурсам, в первую очередьк рессурсам файловой системы. В большинстве случаев, реальный и эффективный идентификаторы совпадают, однако есть возможность задать процессу более широкие права, путём установки специального флага SUID. В этом случае эффективный идентификатор пользователя получит значение идентификатора владельца выполняемого файла.
6. Реальный (RGID) и эффективный (EGID) идентификаторы группы. Реальный идентификатор группы равен идентификатору первичной группы пользователя, запустившего процесс. Эффективный идентификатор служит для определения прав доступа к системным ресурсам по классу доступа групп. Также можно его модифицировать с помощью SUID.
ПРОЦЕСС СОЗДАНИЯ И ЗАПУСКА ПРОГРАММ
#include <sys\types.h> #include <unistd.h>
pid_t fork(void);
pid_tgetpid (void); //функция, возвращающая идентификатор данного процесса.
pid_tgetppid (void); //системный вызов, возвращающий идентификатор процесса-отца для текущего процесса.
#include <sys/types.h>
#include <unistd.h>
main( )
{
int pid;
pid = fork( );
if (pid == -1)
{
printf(“Ошибка создания процесса”);
exit(-1);
}
if (pid == 0)
{
printf(“\n Процесс-потомок”);
}
else
{ printf(“\nПроцесс-родитель”);
. . .
}
}
Новый процесс порождается с помощью системного вызова fork. Процесс, сделавший вызов forkназывается родительским, а вновь созданный процесс – дочерним (или процессом-сыном).
Новый процесс является точной копией породившего его процесса. Он имеет те же инструкции и данные, что и его родитель. Выполнение родительского и дочернего процесса начинается с одной и той же инструкции (команды), следующей за вызовом fork.
Процесс сын следующие атрибуты родительского процесса:
· идентификатор пользователя и группы
· переменные окружения
· диспозиция сигналов и их обработчики
· ограничения, накладываемые на процесс
· текущий и корневой каталоги
· маска создания файлов
· все файловые дескрипторы, включая файловые указатели
· управляющий терминал.
Но между порождающим и порожденным процессом имеются отличия:
· процессу-сыну присваивается уникальный идентификатор PID
· родительские идентификаторы для процесса-отца и процесса-сына
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.