Читать «Разработка ядра Linux» онлайн - страница 26
Роберт Лав
В современных операционных системах процессы предусматривают наличие двух виртуальных ресурсов: виртуального процессора и виртуальной памяти. Виртуальный процессор создает для процесса иллюзию, что этот процесс монопольно использует всю компьютерную систему, за исключением, может быть, только того, что физическим процессором совместно пользуются десятки других процессов. В главе 4, "Планирование выполнения процессов", эта виртуализация обсуждается более подробно. Виртуальная память предоставляет процессу иллюзию того, что он один располагает всей памятью компьютерной системы. Виртуальной памяти посвящена глава 11, "Управление памятью". Потоки
Следует подчеркнуть, что сама по себе программа процессом не является; процесс — это fork()
(буквально, ветвление или вилка), который создает новый процесс путем полного копирования уже существующего. Процесс, который вызвал системную функцию fork()
, называется exec*()
позволяет создать новое адресное пространство и загрузить в него новую программу. В современных ядрах Linux функция fork()
реализована через системный вызов clone()
, который будет рассмотрен в следующем разделе.
Выход из программы осуществляется с помощью системного вызова exit()
. Эта функция завершает процесс и освобождает все занятые им ресурсы. Родительский процесс может запросить о состоянии порожденных им процессов с помощью системного вызова wait4()
, который заставляет один процесс ожидать завершения другого. Когда процесс завершается, он переходит в специальное состояние wait()
или waitpid()
.
Иное название для процесса —