В предыдущей главе был рассмотрен
контекст процесса и описаны
алгоритмы для работы с ним; в данной
главе речь пойдет об использовании
и реализации системных функций,
управляющих контекстом процесса.
Системная функция fork создает новый
процесс, функция exit завершает
выполнение процесса, а wait дает
возможность родительскому
процессу синхронизировать свое
продолжение с завершением
порожденного процесса. Об
асинхронных событиях процессы
информируются при помощи сигналов.
Поскольку ядро синхронизирует
выполнение функций exit и wait при
помощи сигналов, описание
механизма сигналов предваряет
собой рассмотрение функций exit и wait.
Системная функция exec дает процессу
возможность запускать "новую"
программу, накладывая ее адресное
пространство на исполняемый образ
файла. Системная функция brk
позволяет динамически выделять
дополнительную память; теми же
самыми средствами ядро динамически
наращивает стек задачи, выделяя в
случае необходимости
дополнительное пространство. В
заключительной части главы дается
краткое описание основных групп
операций командного процессора shell
и начального процесса init. На Рисунке 7.1 показана
взаимосвязь между системными
функциями, рассматриваемыми в
данной главе, с одной стороны, и
алгоритмами, описанными в
предыдущей главе, с другой. Почти во
всех функциях используются
алгоритмы sleep и wakeup, отсутствующие
на рисунке. Функция exec, кроме того,
взаимодействует с алгоритмами
работы с файловой системой, речь о
которых шла в главах 4
и 5. Рисунок 7.1.
Системные функции управления
процессом и их связь с другими
алгоритмами
ГЛАВА 7. УПРАВЛЕНИЕ
ПРОЦЕССАМИ
| Системные функции, имеющие | Системные функции, | Функции |
| ющие дело с управлением па- | связанные с синхро- | смешанного |
| мятью | низацией | типа |
+-------+-------+-------+-----+--+----+------+----+-+-----+------+
| fork | exec | brk | exit |wait|signal|kill|setrgrр|setuid|
+-------+-------+-------+--------+----+------+----+-------+------+
|dupreg |detach-|growreg| detach-| |
|attach-| reg | | reg | |
| reg |alloc- | | | |
| | reg | | | |
| |attach-| | | |
| | reg | | | |
| |growreg| | | |
| |loadreg| | | |
| |mapreg | | | |