Модель процесса с двумя состояниями
Основной задачей операционной системы является управление выполнением процессов, в эту задачу входит определение схемы чередования процессов и выделения им ресурсов.
В любой момент времени процесс либо выполняется, либо не выполняется. Таким образом, процесс может быть в одном из двух состояний: выполняющийся ими не выполняющийся.
На рисунке предоставлена диаграмма перехода состояний:
Диспетчеризация |
Не выполняется |
Выполняется |
Вход |
Выход |
пауза |
Рисунок 2. Модель процесса с двумя состояниями
Создав новый процесс, ОС входит его в его систему в состоянии не выполняющегося.
Созданный процесс, о существовании которого известно операционной системе, ждет, пока он смоет быть запущен. Время от времени выполняющиеся процессы будут прерываться, и та часть операционной системы, которая выполняет функции диспетчера, будет выбирать для выполнения другой процесс. Выполняющийся перед этим процесс перейдет из состояния выполняющегося в состояние не выполняющийся, а в состояние выполняющегося перейдет один из ожидающих процессов.
Анализируя эту простую модель, можно сделать некоторые выводы относительно архитектуры операционной системы. Необходим способ, с помощью которого будет представлен каждый процесс, чтобы ОС могла следить за ним. С каждым процессом нужно связать определенную информацию, в которую будет входить его текущее состояние и размещение в памяти.
Не выполняющиеся процессы следует организовать в какую – то очередь, где они ожидали бы своего выполнения.
процессор |
Очередь |
Вход |
Выход |
Диспетчеризация |
Пауза |
Рисунок 3. Модель процесса с двумя состояниями.
Диаграмма использования очереди.
Здесь имеется одна очередь, её элементами являются указатели на процессы.
Поведение диспетчера можно описать следующим образом. Процесс, работа которого прервана, переходит в очередь процессов, ожидающих выполнения. Если же процесс завершен, он выводится из системы. В любом случае для выполнения диспетчер выбирает из очереди следующий процесс.
Создание процессов.
Когда ОС собирается добавить новый процесс к тем, которые уже состоят на учете, она создает структуры данных, использующиеся при управлении этим процессом и размещает его адресное пространство в основной памяти. С помощью этих действий и создается новый процесс.
К созданию процессов могут привести перечисленные события
Таблица1 - Причины создания процессов.
Новое пакетное задание | В ОС для обработки поступает управляющий поток пакетных заданий, обычно с ленты или с диска. Готовясь принять на обработку новое задание, ОС считывает на очередную последовательность команд управления заданиями. |
Вход в систему в интерактивном режиме. | В систему с терминала входит новый пользователь. |
Создание операционной системой процесса, необходимого для работы каких-либо служб. | ОС может создать процесс для выполнения некоторой функции, которая требуется для программы пользователя. При этом пользователь не должен ждать, пока закончится её выполнение. Например: если пользователь отправляет запрос на распечатку файла, ОС может создать процесс, управляющий печатью. Затем процесс, производивший запрос, может продолжить свою работу, независимо от того, сколько времени понадобится для печати. |
Порождение одного процесса другим. | С целью структуризации программы или использование возможностей параллельных вычислений программа может создавать другие процессы. Например: сервер печати или файловый сервер может генерировать новый процесс для каждого обрабатываемого им запроса. Создание операционной системой процесса по явному запросу другого процессора называется порождением процесса (process spawning). Когда один процесс порождает другой, то порождающий процесс называется родительским или потомком (parent и child). |
Завершение процессов.
Таблица 2 - Причины завершения процессов.
Обычное завершение. | Процесс вызывает службу операционной системы, чтобы сообщить, что он завершил свою работу. |
Превышение лимита отведенного программе времени. | Общее время выполнения процесса превышает заданное предельное значение. |
Недостаточный объем памяти. | Для работы процесса требуется больше памяти, чем имеется в системе. |
Выход за пределы области памяти. | Процесс пытается получить доступ к ячейке памяти, к которой у него нет прав доступа. |
Ошибка защиты. | Процесс пытается использовать недоступный для него ресурс или файл, или пытается сделать это недопустимым образом - например, производит попытку записи в файл, открытый только для чтения. |
Арифметическая ошибка. | Процесс пытается выполнить запрещенную арифметическую операцию, например, деление на ноль, или пытается использовать число, превышающее возможности аппаратного обеспечения. |
Излишнее ожидание. | Процесс ждет наступления определенного события дольше, чем задано в параметрах системы. |
Ошибка ввода-вывода. | Например, не удается найти нужный файл или выполнить чтение или запись за максимально возможное количество попыток (когда, например, на магнитном носителе попался дефектный участок) или производится попытка выполнить недопустимую операцию. |
Неверная команда. | Процесс пытается выполнить несуществующую команды (часто это бывает, если процесс переходит в область данных и пытается интерпретировать их как команду). |
Команда с недоступными привилегиями. | Процесс пытается использовать команду зарезервированную для операционной системы. |
Неправильное использование данных. | Часть данных принадлежит не к тому типу или не инициализированы. |
Вмешательство оператора или операционной системы. | По какой-либо причине ОС может завершить процесс (например, в случае взаимоблокировки). |
Завершение родительского процесса. | При завершении родительского процесса ОС может автоматически прекращать все его дочерние процессы. |
Все эти действия приведут к тому, что будет вызвана служба операционной системы завершающая процесс.
Модель с пятью состояниями.
Различают следующие состояния процесса:
¾ новый (процесс только что создан), ещё не загружен в основную память;
¾ выполняемый (команды, программы выполняются в CPU);
¾ ожидающий (процесс ожидает завершения некоторого события или блокированный, чаще всего операции ввода-вывода);
¾ готовый (процесс ожидает освобождения CPU);
¾ завершенный (процесс завершил свою работу).
Диспетчеризация |
Завершающийся |
Новый |
Готовый к выполнению |
Выполняющийся |
Блокированный |
Ввод в систему |
Прерывание |
Событие |
Ожидание события |
Рисунок 4. Модель процесса с пятью состояниями
Возможны следующие переходы:
a) Нулевое состояние – Новый – Для выполнения программы создается новый процесс;
b) Новый готовый. ОС переводит процесс из состояния нового в состояние готового к выполнению;
c) Готовый – Выполняющийся. Когда наступает момент выбора нового процесса для запуска, ОС выбирает один из готовых для выполнения процессов;
d) Выполняющийся – Завершающийся. Этот переход чаще всего происходит из-за того, что процесс выполняется в течение максимального промежутка времени, отведенного для непрерывной работы одного процесса или, например, ОС назначает разным процессам различные приоритеты. Если появляется процесс с более высоким приоритетом , то процесс будет выгружен, ОС переведет этот процесс в состояние готовности;
e) Выполняющийся – Блокированный. процесс переводится в заблокированное состояние, если для продолжения работы требуется наступление некоторого события;
f) Блокированный – Готовый. Заблокированный процесс переходит в состояние готовности к выполнению в тот момент, когда происходит ожидаемое им событие.
g) Готовый – Завершающийся (не показан на диаграмме). В некоторых системах родительский процесс может в любой момент прервать выполнение дочернего процесса. Кроме того, дочерние процессы могут прекратиться при завершении родительского процесса.
h) блокированный – завершающийся (см. прерыдущий пункт).
Приостановленные процессы
Необходимость свопинга.
Выполнение операций ввода-вывода происходит гораздо медленнее, чем вычисления, что приводит к простоям процессора в однозадачной системе. Но даже в многозадачной системе, когда в памяти находится несколько процессов, процессор тоже может простаивать. Процессор работает на столько быстрее выполнения операций ввода-вывода, что все находящиеся в памяти процессы могут оказаться в состоянии ожидания окончания операций ввода-вывода. Что же делать? Можно увеличить емкость основной памяти, чтобы в ней помещалось больше процессов. Другим решением проблемы является свопинг, который включает в себя перенос части процесса.
Дата добавления: 2015-12-01; просмотров: 1867;