Управление процессами
Процесс – не что иное, как исполнение программы. Так как программа записана в виде последовательности действий в текстовый файл, процессом она становится только при запуске.
Загруженная в память программа может быть условно разделена на четыре части: стек, кучу, контекст и данные.
- Stack: стек процесса содержит временные данные, такие как параметры метода, адрес возврата и локальные переменные.
- Heap: это динамически распределяемая память процесса времени его выполнения.
- Text: хранит состояние регистров, состояние программного счетчика, режим работы процессора, незавершенные операции ввода-вывода, информацию о выполненных системных вызовах.
- Data: раздел содержит глобальные и статические переменные.
Когда процесс выполняется, он проходит через разные состояния. Эти этапы могут различаться в разных операционных системах.
Общая схема выглядит так:
- Start: начальное состояние при создании процесса.
- Ready: процесс ожидает исполнения на процессоре. В течение работы процессор может переключаться между процессами, переводя одни в режим готовности, другие – в режим исполнения.
- Running: выполнение инструкций.
- Wait: процесс переходит в состояние ожидания. Например, ждёт ввода данных или получения доступа к файлу.
- Terminated: как только процесс завершится, он перейдёт в это состояние и будет ожидать удаления.
Блок управления процессов (Process Control Block) – это структура данных, поддерживаемая операционной системой для каждого процесса. PCB имеет идентификатор PID. Именно PCB хранит всю информацию, необходимую для отслеживания процесса.
- Process ID: идентификатор каждого из процессов в ОС.
- State: текущее состояние процесса.
- Privileges: разрешения доступа к системным ресурсам.
- Pointer: указатель на родительский процесс.
- Priority: приоритет процесса и другая информация, которая требуется для планирования процесса.
- Program Counter: указатель на адрес следующей команды, которая должна быть выполнена.
- CPU registers: регистры процессора, необходимые для состояния исполнения.
- Accounting Information: уровень нагрузки на процессор, статистика и другие данные.
- I/O Information: список ресурсов, использующих чтение и запись.