0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Единица работы в Linux - процесс. Каждый раз, когда мы что-то запускаем, то стартует процесс и, возможно, не один. Нормально, когда одна программа состоит из множества процессов и порождает их во время работы. Зачем это сделано? Что вообще такое процесс? Операционная система сама по себе является программой, и она управляет тем, что мы запускаем внутри неё. Процесс - это представление запущенной программы внутри операционной системы. Благодаря<a>вытесняющей многозадачности</a>, современные операционные системы способны запускать и исполнять сотни и больше процессов вместе. Мы привыкли слушать музыку, серфить в браузере и рядом чатиться практически одновременно, и у нас не вызывает вопросов, как это вообще возможно.</p>
1
<p>Единица работы в Linux - процесс. Каждый раз, когда мы что-то запускаем, то стартует процесс и, возможно, не один. Нормально, когда одна программа состоит из множества процессов и порождает их во время работы. Зачем это сделано? Что вообще такое процесс? Операционная система сама по себе является программой, и она управляет тем, что мы запускаем внутри неё. Процесс - это представление запущенной программы внутри операционной системы. Благодаря<a>вытесняющей многозадачности</a>, современные операционные системы способны запускать и исполнять сотни и больше процессов вместе. Мы привыкли слушать музыку, серфить в браузере и рядом чатиться практически одновременно, и у нас не вызывает вопросов, как это вообще возможно.</p>
2
<p>Хороший пример - браузер. У современных браузеров одна вкладка - один процесс. Такой подход позволяет переложить обеспечение одновременной работы разных вкладок на саму операционную систему. Кроме того, процессы в операционной системе изолированы друг от друга. Сбой в одном процессе, как правило, не влияет на другие процессы. Поэтому мы видим, как одна зависшая вкладка не мешает работать с другими. Раньше было не так, и зависшая вкладка приводила к полной блокировке браузера.</p>
2
<p>Хороший пример - браузер. У современных браузеров одна вкладка - один процесс. Такой подход позволяет переложить обеспечение одновременной работы разных вкладок на саму операционную систему. Кроме того, процессы в операционной системе изолированы друг от друга. Сбой в одном процессе, как правило, не влияет на другие процессы. Поэтому мы видим, как одна зависшая вкладка не мешает работать с другими. Раньше было не так, и зависшая вкладка приводила к полной блокировке браузера.</p>
3
<p><em>Процессы внутри себя могут делиться на потоки для обеспечения более высокой производительности или для параллельного запуска. Но это значительно усложняет сам код</em></p>
3
<p><em>Процессы внутри себя могут делиться на потоки для обеспечения более высокой производительности или для параллельного запуска. Но это значительно усложняет сам код</em></p>
4
<p>Каждому процессу внутри операционной системы соответствует структура данных, внутри которой находится вся информация по процессу. Главный параметр - PID (Process IDentifier), то есть идентификатор процесса. Кроме этого там хранится информация о том, какой файл был запущен, от какого пользователя, из какой рабочей директории и так далее. Много данных, которые целиком описывают окружение запуска.</p>
4
<p>Каждому процессу внутри операционной системы соответствует структура данных, внутри которой находится вся информация по процессу. Главный параметр - PID (Process IDentifier), то есть идентификатор процесса. Кроме этого там хранится информация о том, какой файл был запущен, от какого пользователя, из какой рабочей директории и так далее. Много данных, которые целиком описывают окружение запуска.</p>
5
<p>С процессами связано понятие сигналов, позволяющее управлять процессами или взаимодействовать с ними снаружи. Простой пример. Мы хотим завершить какую-то программу. Как это сделать? Существует сигнал SIGTERM, который говорит процессу, что его хотят завершить. Код процесса должен поймать этот сигнал и завершить своё выполнение. Отправка сигнала в Linux выглядит так:</p>
5
<p>С процессами связано понятие сигналов, позволяющее управлять процессами или взаимодействовать с ними снаружи. Простой пример. Мы хотим завершить какую-то программу. Как это сделать? Существует сигнал SIGTERM, который говорит процессу, что его хотят завершить. Код процесса должен поймать этот сигнал и завершить своё выполнение. Отправка сигнала в Linux выглядит так:</p>
6
<p>Сигнал SIGTERM не обрабатывается сам по себе. Нужно прямо написать код, который его ловит и выполняет остановку сервиса. Вот пример на JS:</p>
6
<p>Сигнал SIGTERM не обрабатывается сам по себе. Нужно прямо написать код, который его ловит и выполняет остановку сервиса. Вот пример на JS:</p>
7
<p>Сигнал SIGTERM не даёт гарантии завершения. Процесс может его вообще проигнорировать или быть настолько загруженным, что он просто не успеет его выполнить за разумный срок. Поэтому в особо важных случаях используют другой сигнал - SIGKILL. Этот сигнал перехватить невозможно, он не попадает внутрь процесса. Операционная система завершает процесс, которому послан такой сигнал, принудительно, в ту же секунду. Процесс будет прерван в любом месте, а значит, скорее всего, он что-то обработает не до конца.</p>
7
<p>Сигнал SIGTERM не даёт гарантии завершения. Процесс может его вообще проигнорировать или быть настолько загруженным, что он просто не успеет его выполнить за разумный срок. Поэтому в особо важных случаях используют другой сигнал - SIGKILL. Этот сигнал перехватить невозможно, он не попадает внутрь процесса. Операционная система завершает процесс, которому послан такой сигнал, принудительно, в ту же секунду. Процесс будет прерван в любом месте, а значит, скорее всего, он что-то обработает не до конца.</p>
8
<p>Разных видов сигналов довольно много и они активно используются в администрировании. Некоторые программы используют сигналы, как команду перечитать файлы конфигурации, что позволяет обновляться без остановки.</p>
8
<p>Разных видов сигналов довольно много и они активно используются в администрировании. Некоторые программы используют сигналы, как команду перечитать файлы конфигурации, что позволяет обновляться без остановки.</p>