Введение и идентификатор Linux-процесса

что такое процесс

В нашей повседневной жизни мы немного больше используем Windows, и когда мы используем Windows, мы можем открыть наш диспетчер задач и увидеть различные запущенные процессы.

 Итак, процесс равен нашей программе?

Много раз, когда мы читаем книги, будет написано, что процесс относится к программе, работающей в памяти компьютера.

Это утверждение на самом деле не является исчерпывающим.

Если операционная система хочет управлять процессом, она должна сначала собрать текущие данные программы, а затем управлять ими.Поэтому операционная система должна иметь модуль, который может хорошо собирать и запрашивать все рабочие данные.Этот модуль называемый PCB (блок управления процессом) модуль управления процессом.

В PCB все задачи управления процессами не связаны напрямую с программой, соответствующей процессу.Управление процессом операционной системой тесно связано с PCB и требует только работы с PCB.

А процесс есть процесс = печатная плата + ваши программные данные и код.

Что такое печатные платы? Что в ней?

Информация о процессе помещается в структуру данных, называемую блоком управления процессом, который можно понимать как набор атрибутов процесса.

В системе Linux его печатная плата называется struct task_struct{...}, что по сути можно понимать как структуру, а данные и статус процесса хранятся внутри структуры, хотите ли вы искать процесс или Чтобы удалить, вы должны сначала проверить его task_struct, прежде чем вы сможете работать с этим процессом.

Итак, какую именно информацию хранит эта структура?

В нем хранится много всего, в том числе различная информация и текущее состояние процесса, мы лишь вводим некоторые важные.

Идентификатор

Идентификатор: Уникальный идентификатор, описывающий этот процесс, используется для различения других процессов.

Идентификатор процесса называется PID, а PID — это уникальный идентификатор процесса, представляющий собой уникальное кодовое имя процесса.

Чтобы облегчить наблюдение за PID процесса, мы сначала пишем случайную программу и позволяем ей работать.

Вышеупомянутые функции getpid() и getppid() предназначены для получения его PID и PPID соответственно, и необходимо включить заголовочный файл unistd.h.

Слева наша программа с бесконечным циклом продолжает работать.

С правой стороны мы используем команду ps axj | head -1 && ps axj | grep myproc для просмотра информации о нашем процессе, а PID — это уникальный идентификатор нашего процесса.

PID каждого процесса также хранится в печатной плате.

А PPID — это PID родительского процесса.

Здесь мы ввели новую вещь, что такое родительский процесс? Есть ли соответствующий дочерний процесс? Да.

 Мы можем использовать функцию fork() для создания дочернего процесса.Если fork успешно создаст дочерний процесс, он вернет PID дочернего процесса родительскому процессу и вернет 0 дочернему процессу.Если создание не удается, он вернет число <0. .

Используйте функцию fork для создания другого потока, реализации кода, двух процессов, один из которых называется родительским процессом, а другой называется дочерним процессом, и дочерний процесс и родительский процесс могут иметь разные результаты выполнения.

выполнить код

 используйте команду пс

На данный момент мы видим, что есть два процесса с одинаковыми именами, и мы можем более подробно рассмотреть их PID и PPID.

Приведенный выше процесс с PID 23700 является родительским процессом для процесса с PID 23701.

Но кто является родительским процессом 15604 для процесса с PID 23700?

Ищем процесс 15604 командами ps и grep

 Здесь мы видим, что это наш bash (интерпретатор командной строки).

Если вы продолжите прослеживать источник вверх, вы сможете проследить источник до нашей операционной системы.Вы можете спуститься и попробовать сами.

Подведем итог

1. Знайте, что процесс состоит из данных и кода печатной платы и процесса. (акцент)

2. Знайте, как использовать функцию fork для создания другого потока, реализации кода, двух процессов, один из которых называется родительским процессом, а другой называется дочерним процессом, а дочерний процесс и родительский процесс могут иметь разные результаты выполнения.

3. Научился использовать команду ps для просмотра соответствующей информации о процессе.

рекомендация

отblog.csdn.net/fengjunziya/article/details/130478463