Все, что вам нужно знать, это статья о самом высоком соотношении сигнал/шум, которую я могу написать.
Форк, погоди, пиды..и зомби. Очевидно.
Процессы являются неотъемлемой частью любой UNIX-подобной операционной системы, однако они часто остаются загадочными для обычного пользователя. Итак, давайте вместе отправимся в путешествие, чтобы понять, что на самом деле представляют собой процессы и их значение в нашем цифровом мире.
Статическое и активное
Думайте о приложении как о книге. Когда они лежат на полке (на диске, во флэш-памяти или в облаке), это просто потенциальные знания, ожидающие своего усвоения. Точно так же, как книга не передает знания, пока кто-то ее не прочтет, приложение не выполняет свою задачу до тех пор, пока оно не будет запущено. Как только вы берете в руки книгу для чтения или запускаете приложение, она преображается.
- Приложение: статический объект. Это твоя книга ждет на полке.
- Процесс: активный объект. Это процесс чтения книги и усвоения информации.
Представьте себе, что вы запускаете текстовый редактор. В тот момент, когда вы это сделаете, это приложение станет процессом. Самая захватывающая часть? Если вы откроете один и тот же текстовый редактор дважды, вы создадите два разных процесса. Это похоже на близнецов с одинаковым генетическим кодом, но, взаимодействуя с миром, они приобретают уникальный опыт и воспоминания. Каждый процесс, хотя и происходит из одного и того же приложения, будет иметь свое уникальное состояние, зависящее от его взаимодействия.
Но всегда ли он работает?
Процесс не обязательно означает постоянную деятельность. Подумайте о том, чтобы сделать паузу и поразмышлять над абзацем в книге. Процесс может ожидать ввода пользователя или, возможно, если у вас одноядерный процессор, ждать своей очереди, пока работает другой процесс.
TL;DR
- Приложения подобны книгам на полке, таящим в себе потенциал.
- Процессы — это чтение и интерпретация этой книги, делающие ее активной.
- Даже если процесс активен, это не означает, что он всегда «работает».
Понимание функции fork()
в C
Одной из основополагающих концепций языка программирования C и Unix-подобных операционных систем является способность управлять процессами и межпроцессным взаимодействием. Функция fork()
играет в этой области ключевую роль. Представьте себе невероятные возможности…