А. Ю. Кручинин

Операционные системы


Скачать книгу

с 4 программами. На рисунке 10, б представлены 4 процесса каждый со своим логическим счетчиком команд, идущие независимо друг от друга. На самом деле существует только один физический счетчик команд, который загружается и сохраняется при переключении процессов. На рисунке 10, в видно, что за достаточно большой промежуток времени изменилось состояние всех 4 процессов.

      Поскольку процессор переключается между программами, скорость, с которой процессор производит свои вычисления, будет непостоянной и, возможно, даже будет отличной при каждом новом запуске программы.

      Существует четыре основных события, приводящие к созданию процессов:

      • инициализация системы;

      • выполнение изданного работающим процессом системного запроса на создание процесса;

      • запрос пользователя на создание процесса;

      • инициирование пакетного задания.

      Программист для создания процесса в UNIX должен вызвать комбинацию из двух функций fork и execve, а в Windows – CreateProcess [12].

      Процесс может завершиться благодаря одному из следующих действий:

      • обычный выход (преднамеренно);

      • выход по ошибке (преднамеренно);

      • выход по неисправимой ошибке (непреднамеренно);

      • уничтожение другим процессом (непреднамеренно).

      Для завершения процесса программист в UNIX должен вызвать системный запрос kill, соответствующая функция в Win32 API – TerminateProcess.

      Основным отличием структуры процессов в Windows и UNIX является связь между родительским и дочерним процессами. Так в UNIX существует иерархия процессов, а в Windows все процессы равноправны. Единственное, в чем проявляется что-то вроде иерархии процессов в Windows – создание процесса, в котором родительский процесс получает специальный маркер (так называемый дескриптор), позволяющий контролировать дочерний процесс. Но маркер можно передать другому процессу, нарушая иерархию.

      Рисунок 10 – 4 программы в многозадачном режиме (а); модель 4 независимых последовательных процессов (б); в каждый момент времени активна только одна программа (в)

      Процесс может находиться в 3 возможных состояниях (Рисунок 11):

      • работающий (в конкретный момент времени использующий процессор);

      • готовый к работе (процесс временно приостановлен, чтобы позволить выполняться другому процессу);

      • заблокированный (процесс не может быть запущен прежде, чем произойдёт некое внешнее событие).

      Рисунок 11 – Процесс может находиться в рабочем, готовом и заблокированном состоянии

      Переходы между состояниями:

      1) процесс блокируется, ожидая входных данных;

      2) планировщик выбирает другой процесс;

      3) планировщик выбирает этот процесс;

      4) доступны входные данные.

      Переход 1 происходит, когда процесс обнаруживает, что продолжение работы невозможно. Переходы 2 и 3 вызываются частью операционной системы, называемой планировщиком процессов, так что сами процессы даже не знают о существовании