Для возможности выполнять работу нескольких программ, ОС нужно определить и сформировать единицы работы, которые будут между собой разделять процесс и различные ресурсы ПК. ОС выделяет два вида таких единиц – процесс и поток. Сегодня разберем первое понятие.
Что такое процесс
Процесс в ОС – одна из самых крупных внутренних единиц активности работы, который запрашивает использование более мелких – потоков, для корректного функционирования.
Простым языком, процесс возникает в момент выполнения определенной программы. Происходит этот процесс должен последовательными действиями.
Процесс состоит из трех частей:
- Код исполнения.
- Информация, которая необходима для выполнения требуемой программы.
- Контекст — данные для ОС в управлении процессами (переключения между ними).
Любой процесс имеет своё виртуальное пространство, код выполняемой программы, список файловых дескрипторов или «хэндлов», инструменты безопасности, состояние процесса.
ОС регистрирует все наименования процессов, они могут быть простыми и поэтапно усложняться.
Данная схема показывает, что виртуальное адресное пространство берет начало с 0 и доходит до максимума. На максимальном располагается стек, потом куча (они растут в разных друг к другу направлениях), данные, и завершает код программы.
Какие процессы существуют
Всего выделяют 3 вида процесса:
- Системные – происходят в момент загрузки ОС, находится в ОЗУ. Процессы способны вызывать функции, также обращаться к данным, которые не имеют доступа к другим процессам (диспетчер свопинга).
- Фоновые – неинтерактивные процессы, которые выполняют свою работу в фоновом режиме. Пользователь не способен ими управлять. Выполняет работу различных подсистем – сетевой доступ, почта, печать и др.
- Прикладной – процессы, которым управляет пользователь. Они совершаются в момент
работы системы, при отключении все процессы стираются.
Состояние процессов на примере ОС Linux
Процесс может находиться попеременно в одном из состояний:
R — ожидает очереди или исполняется;
D — ждет определенного момента (непрерываемый сон);
S — ждет какого-то сигнала (прерываемый сон);
T — приостановился процесс;
Z — прошел к завершению, но не отправил родительскому процессу необходимый код возврата.