4. Создание процессов

Этот урок посвящен фундаментальным концепциям запуска новых процессов в системе Linux. Понимание этого механизма дает представление о внутренней работе операционной системы.

Модель Fork и Exec

Основной механизм создания процессов в Linux включает в себя существующий процесс, клонирующий себя с помощью системного вызова fork. Вызов fork создает почти идентичный дочерний процесс. Этот новый дочерний процесс получает свой собственный уникальный идентификатор процесса (PID), в то время как исходный процесс становится его родителем, идентифицируемым по идентификатору родительского процесса (PPID).

После форка дочерний процесс может либо продолжить выполнение той же программы, что и его родитель, либо, что более распространено, использовать системный вызов execve для загрузки и запуска новой программы. Вызов execve фактически заменяет адресное пространство памяти процесса на адресное пространство новой программы, позволяя начать выполнение другой задачи. Эта двухэтапная модель «fork-exec» является краеугольным камнем того, как создать процесс в Linux.

Наблюдение за отношениями родитель-потомок

Мы можем наблюдать эти отношения родитель-потомок в действии с помощью команды ps:

ps l

Опция l предоставляет представление в «длинном формате», показывая больше подробностей о запущенных процессах. Вы увидите столбец с пометкой PPID, что означает Parent Process ID (Идентификатор родительского процесса). Посмотрите на процесс вашей текущей оболочки (например, bash). Когда вы запускаете команду ps l, вы заметите, что PID процесса вашей оболочки совпадает с PPID процесса ps l. Это потому, что ваша оболочка форкнула себя для создания процесса ps.

Процесс Init

Если каждый процесс является потомком другого, должен существовать изначальный предок. Это процесс init. При загрузке системы ядро создает init как самый первый процесс в пространстве пользователя, присваивая ему PID, равный 1. Процесс init является конечным родителем всех остальных процессов и работает с привилегиями root для управления системой. Его нельзя завершить до выключения системы, и он отвечает за запуск многих служб, которые поддерживают работу системы.

Войдите, чтобы сохранить ваш прогресс обучения

Вход

Упражнения

Практика ведет к совершенству! Вот практическая лабораторная работа для закрепления вашего понимания процессов Linux и управления ими:

  • Управление и мониторинг процессов Linux - В этой лаборатории вы изучите основные навыки управления и мониторинга процессов в системе Linux. Вы узнаете, как взаимодействовать с процессами на переднем и заднем планах, просматривать их с помощью ps, отслеживать ресурсы с помощью top, изменять приоритет с помощью renice и завершать их с помощью kill.

Эта лаборатория поможет вам применить концепции идентификаторов процессов, идентификаторов родительских процессов и мониторинга процессов в реальном сценарии и повысить уверенность в управлении процессами.

Тест

Какой системный вызов создает новый процесс? (Пожалуйста, ответьте одним строчным английским словом.)