CAREERUNDERHOOD Telegram 309
Евгений Козлов пишет про 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.

Предлагайте темы для будущих постов, задавайте вопросы или оставляйте отзывы/пожелания.😊



tgoop.com/careerunderhood/309
Create:
Last Update:

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.

Предлагайте темы для будущих постов, задавайте вопросы или оставляйте отзывы/пожелания.😊

BY Евгений Козлов пишет про IT


Share with your friend now:
tgoop.com/careerunderhood/309

View MORE
Open in Telegram


Telegram News

Date: |

Judge Hui described Ng as inciting others to “commit a massacre” with three posts teaching people to make “toxic chlorine gas bombs,” target police stations, police quarters and the city’s metro stations. This offence was “rather serious,” the court said. In the “Bear Market Screaming Therapy Group” on Telegram, members are only allowed to post voice notes of themselves screaming. Anything else will result in an instant ban from the group, which currently has about 75 members. Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations. The administrator of a telegram group, "Suck Channel," was sentenced to six years and six months in prison for seven counts of incitement yesterday. To upload a logo, click the Menu icon and select “Manage Channel.” In a new window, hit the Camera icon.
from us


Telegram Евгений Козлов пишет про IT
FROM American