TGViewer
Евгений Козлов пишет про IT Евгений Козлов пишет про IT @careerunderhood · 2.84K subscribers
Post #309 2.85K
Евгений Козлов пишет про IT CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async. Часть 3. Процессы. Начало Сегодня поговорим о процессах операционной системы в контексте многозадачности. Процесс - это экземпляр компьютерной программы. Если компьютерная программа представляет…
CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async. Часть 4. Процессы в Linux

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

Факт №1. Каждый процесс в UNIX и Linux имеет Process ID или PID - идентификатор процесса в ОС. ОС гарантирует что только один процесс в момент времени закреплен за конкретным идентификатором. PID имеет тип данных Int а диапазон допустимых знаений - [0, /proc/sys/kernel/pid_max].

Факт №2. Иерархия процессов в Unix / Linux - древовидная. Есть процессы-родители а есть процессы-потомки, при этом процессы-потомки также могут быть родителями, то есть дерево может иметь большое количество уровней.

Факт №3. Для коммуникации между ОС и процессами а также для процессов между собой существует механизм сигналов - однонаправленная асинхронная комуникация.

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

Факт №5. Если родительский процесс не обрабатывает сигналы посылаемые ему от дочерних процессов то может наступить момент когда все процессы потомки превратились в "зомби процессы".

Факт №6. Для взаимодействия с ресурсами процессы всегда используют системные вызовы.


В Linux Kernel API доступно несколько syscall для работы с процессами:

- семейство вызовов exec для замещения одного процесса другим (process ID остается неизменным, но при этом все ресурсы текущего процесса заменяются новосозданным)
- системный вызов clone для создания клона текущего процесса. Самый важный системный вызов в контексте многопроцессности.
- fork и vfork для создания дочернего процесса. Используют под капотом тот самый системный вызов clone.

Bonus: библиотека POSIX для создания потоков под капотом использует ту же функцию clone и что и функция fork. Получается что потоки в Linux это процессы? Или все таки нет? Ответ на этот вопрос будет в следующем посте завтра 😊

-----

Напоминаю, что моя личка открыта для всех, а если в личку неудобно то можно написать через Google Forms.

Предлагайте темы для будущих постов, задавайте вопросы или оставляйте отзывы/пожелания.😊
  • 👍 14
  • 🔥 7
  • ❤ 6
More from @careerunderhood
  1. Oct 2, 2026Пока от темы Concurrency далеко не ушли. В последнем цикле я если и упоминал вопросы произ…
  2. Sep 30, 2026Результаты опроса меня впечатлили. Большинству интересны истории из работы. Поехали, начне…
  3. Sep 25, 2026Post #470
  4. Sep 21, 2026Concurrency, Synchronization and Consistency. Non-blocking. Оглавление Введение - Блокирую…
  5. Sep 21, 2026Concurrency and Consistency. Non-blocking, lock-free and async. Пост №12. Заключение. Когд…
  6. Sep 20, 2026Concurrency and Consistency. Non-blocking, lock-free and async. Пост №11. Самые важные фак…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →