Все, что вам нужно знать, это статья о самом высоком соотношении сигнал/шум, которую я могу написать.

Форк, погоди, пиды..и зомби. Очевидно.

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

Статическое и активное

Думайте о приложении как о книге. Когда они лежат на полке (на диске, во флэш-памяти или в облаке), это просто потенциальные знания, ожидающие своего усвоения. Точно так же, как книга не передает знания, пока кто-то ее не прочтет, приложение не выполняет свою задачу до тех пор, пока оно не будет запущено. Как только вы берете в руки книгу для чтения или запускаете приложение, она преображается.

  • Приложение: статический объект. Это твоя книга ждет на полке.
  • Процесс: активный объект. Это процесс чтения книги и усвоения информации.

Представьте себе, что вы запускаете текстовый редактор. В тот момент, когда вы это сделаете, это приложение станет процессом. Самая захватывающая часть? Если вы откроете один и тот же текстовый редактор дважды, вы создадите два разных процесса. Это похоже на близнецов с одинаковым генетическим кодом, но, взаимодействуя с миром, они приобретают уникальный опыт и воспоминания. Каждый процесс, хотя и происходит из одного и того же приложения, будет иметь свое уникальное состояние, зависящее от его взаимодействия.

Но всегда ли он работает?

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

TL;DR

  • Приложения подобны книгам на полке, таящим в себе потенциал.
  • Процессы — это чтение и интерпретация этой книги, делающие ее активной.
  • Даже если процесс активен, это не означает, что он всегда «работает».

Понимание функции fork() в C

Одной из основополагающих концепций языка программирования C и Unix-подобных операционных систем является способность управлять процессами и межпроцессным взаимодействием. Функция fork() играет в этой области ключевую роль. Представьте себе невероятные возможности…