
IV. Процессы и потоки
1. Процессы
Одно из базовых понятий ОС — это процесс, которым является выполняемая программа вместе с текущими значениями счетчика команд, регистров и переменных.
1.1. Образ процесса.
ОС манипулирует образом процесса, который представляет собой программный код (сегмент кода) и разделы данных процесса, определяющие среду выполнения.
С каждым процессом связывается его адресное пространство, из которого он может читать данные и в которое может их писать, и которое содержит:
текст программы – текстовый сегмент (сегмент кода) содержит реальные инструкции центральному процессору (ЦП), включающие скомпилированные строки, написанные пользователем, системный код, сгенерированный компилятором для ОС и обеспечивающий взаимодействие между программой и операционной системой;
данные к программе – сегмент данных – данные, связанные с процессом и являющиеся частью образа процесса, хранятся в регистрах (в области памяти, к которой ЦП оперативно получает доступ), для ускорения доступа обычно представленных регистрами процессора; регистры играют важную роль в работе процессов, с каждым процессом связывается набор регистров, обычно выделяются четыре регистра, имеющих специальное значение: счетчик команд (программный счетчик) PC (в процессоре) указывает на текущую строку кода – регистр, содержащий адрес следующей команды, стоящей в очереди на выполнение (после выбора команды из памяти счетчик команд корректируется, указатель переходит к следующей команде), PS указывает состояние процесса, указатель стека SP указывает на вершину стека, FP указывает на текущий фрейм стека. Для оперативного хранения данных существует динамическая память (куча – heap-область), выделяемая процессом при необходимости во время работы для предоставления дополнительная памяти; использование ее от процесса к процессу меняется;
стек программы – сегмент стека, в котором при запуске программы автоматически размещаются переменные; используется для хранения локальных переменных программы и передачи параметров. Когда процесс выполняет обращение к подпрограмме, в стек отправляется новая запись – фрейм, одной из частей которого является указатель на предыдущий фрейм, позволяющий легко вернуться из вызова подпрограммы; при этом важно знать местоположение текущего фрейма и вершину стека.
Процессы при выполнении или в режиме ожидания выполнения обычно находятся в оперативной памяти компьютера, достаточно большая часть которой резервируется ядром операционной системы, а пользователь может получить доступ только к оставшейся части оперативной памяти. Одновременно в оперативной памяти может находиться несколько процессов.
1.2. Режимы функционирования процессов.
Процессы могут функционировать в двух режимах: системном и пользовательском.
Системный режим является наиболее важным, поскольку в нем выполняется следующее:
обработка прерываний, вызванных внешними сигналами и системными вызовами, а также управлением доступа к диску;
распределение дополнительной динамической памяти и других ресурсов системы.
Пользовательский режим: процесс функционирует, когда выполняется код программы, заданный пользователем.