Управление процессами
Что такое процесс?
Выводы:
- Процесс - это программа, запущенная на выполнение в оперативной памяти.
- Одна программа может порождать несколько процессов.
- Одну программу можно запустить несколько раз, и это будут разные процессы.
- Все процессы выполняются независимо друг от друга, они изолированы операционной системой.
- У каждого процесса есть свой выделенный участок памяти, в память других процессов ему доступ запрещен.
Что такое многозадачность?
Выводы:
- В каждый момент в операционной системе выполняется множество процессов.
- На одном ядре ЦП может выполняться только одна последовательность инструкций одновременно.
- Операционная система постоянно переключает процессы на выполнение.
- Иногда переключение происходит добровольно, но чаще - нет.
- Сам процесс не имеет контроля над тем, когда его переключат.
- Большинство современных операционных систем реализуют вытесняющую многозадачность.
В каких состояниях может находиться процесс?
Выводы:
- Создание нового процесса - довольно длительный для компьютера процесс.
- После создания процесс в состоянии готовности становится в очередь.
- Когда очередь подходит, он начинает выполняться на процессоре.
- Если во время выполнения процесс завершается, ОС его уничтожает и очищает память.
- Если во время выполнения проходит квант времени, ОС опять ставит его в очередь.
- Если во время выполнения процесс блокируется, ОС его приостанавливает.
- Когда придет внешнее событие, разблокирующее процесс, он опять становится в состояние готовности.
- Существует много разных реализаций очереди процессов, с приоритетами и без.
Какую информацию ОС хранит о процессе?
Выводы:
- У каждого процесса есть численный идентификатор.
- С каждым процессом связан пользователь-владелец.
- У каждого процесса (за исключением одного) есть процесс-родитель.
- ОС хранит информацию о процессах в специальном разделе - файловой системе /proc.
- ОС запоминает статистическую информацию о потреблении процессами ресурсов.
- Большая часть информации о процессах скрыта. Например, открытые файловые дескрипторы.
Как процессы связаны с терминалами?
Выводы:
- Каждый процесс при запуске связывается с определенным терминалом.
- Это может быть виртуальный терминал, графическая программа или эмулятор.
- Это связывание используется для разделения потоков ввода-вывода.
- При запуске процесса терминал блокируется.
- Некоторые процессы не связаны с терминалами.
Как посмотреть выполняемые процессы?
Выводы:
- Самая распространенная команда - ps.
- По умолчанию она показывает только процессы текущего пользователя, связанные с текущим терминалом.
- Полный список процессов можно посмотреть командой ps aux.
- Интерактивную информацию о процессах показывает программа top.
- Существует улучшенный вариант top - htop.
- С помощью htop можно проводить полноценный мониторинг системы, выполнять операции над процессами.
Что такое процессы-демоны?
Выводы:
- Демоны не связаны с терминалами и не имеют пользовательского интерфейса.
- Они используются для выполнения фоновых операций.
- Большинство демонов - системные службы.
- Можно создать свою собственную программу-демона.
- Существует специальная программа для управления службами.
Как снять процесс?
Выводы:
- Завершить текущий процесс в терминале можно комбинацией Ctrl + C.
- Интерактивные программы нужно стараться завершать штатно.
- Снять индивидуальный процесс можно с помощью программы kill.
- Формально, это послание сигнала процессу.
- Для мягкого завершения используется сигнал 15.
- Для того, чтобы снять зависший процесс может понадобится сигнал 9.
- Убить все процессы по имени команды можно командой killall.
Как связаны родитель и потомок?
Выводы:
- Для каждого процесса, кроме самого первого существует процесс-родитель.
- Поэтому процессы в Linux образуют дерево.
- При завершении родителя, все его потомки тоже завершаются.
- Процесс наследует от родителя пользователя и права доступа.
- В редких случаях пользователь может измениться.
Что такое приоритет процесса?
Выводы:
- Приоритет процесса - это число, определяющее, как часто процесс будет получать процессорное время.
- В Linux также используется число nice value - величина, обратная приоритету.
- Nice измеряется от -20 (высший приоритет) до 19 (низший приоритет).
- Пользователь может понизить приоритет своих процессов.
- Повысить приоритет может только суперпользователь.
- Можно запустить процесс с нестандартным приоритетом командой nice -n.
- Можно изменить приоритет уже выполняемого процесса командой renice -n.
- Эти команды задают числа, которые прибавляются к nice value.
Что такое фоновые процессы?
Выводы:
- Можно запустить процесс без привязки к терминалу, в фоновом режиме с помощью &.
- Если мы хотим перевести процесс в состояние остановленный, используется сочетание клавиш «Ctrl + z».
- Можем переместить остановленный процесс на передний план командой fg.
- Можно продолжить выполнение остановленного процесса в фоновом режиме командой bg.
- Используя команду jobs мы можем получить список остановленных и фоновых процессов.