Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
126
Добавлен:
20.05.2015
Размер:
172.03 Кб
Скачать

Лекция 2. Машинно-зависимые свойства ОС. Вычислительный процесс и его реализация с помощью операционных систем

1. Понятие вычислительного процесса.

2. Способы планирования заданий пользователей. Алгоритмы планирования процессов.

1. Понятие вычислительного процесса

Процессом или заданием называется программа, находящаяся в решении. В качестве примеров можно назвать следующие процессы (задачи): прикладные программы пользователей, утилиты и т.д. Процессами могут быть редактирование какого-либо текста, трансляция исходной программы, ее компоновка, исполнение. Причем трансляция исходной программы является одним процессом, а трансляция следующей исходной программы – другим процессом, поскольку, хотя транслятор как объединение программных модулей здесь выступает как одна и та же программа, но данные, которые он обрабатывает, являются разными.

Для выполнения вычислительной работы ОС выделяет процессам ЦП. В первых вычислительных системах любая программа могла выполняться только после окончания предыдущей. Поскольку все подсистемы и устройства управлялись центральным процессором. Центральный процессор осуществлял и выполнение вычислений, и выполнение операций ввода/вывода данных. Введение в состав машины специальных контроллеров позволило совместить во времени (распараллелить) операции вывода полученных данных и последующие вычисления на центральном процессоре. Однако во время выполнения операции ввода/вывода процессор все равно простаивал. В связи с чем было предложено организовать так называемый мультипрограммный (мультизадачный) режим работы вычислительной системы.

Таким образом, в однопрограммной системе присутствует только один пользовательский процесс. Однако в мультипрограммной системе на ресурсы может претендовать много независимых процессов, работу которых необходимо планировать.

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

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

Необходимо различать системные управляющие процессы, представляющие работу супервизора операционной системы и занимающиеся распределением и управлением ресурсов, от всех других процессов: системных обрабатывающих процессов, которые не входят в ядро операционной системы, и процессов пользователя. Для системных управляющих процессов в большинстве операционных систем ресурсы распределяются изначально и однозначно. В ходе своего выполнения процесс может участвовать в конкуренции за использование ресурсов вычислительной системы. Процесс создается, когда выполнение задания пользователя начинается, и уничтожается, когда задание завершается. Во время своего существования процесс может находиться в трех состояниях (рис.1).

Рис. 1 Состояния процесса

  1. процесс активен, когда он использует ЦП для выполнения своих команд;

  2. процесс блокирован, если его выполнение может быть продолжено только после наступления некоторого ожидаемого события;

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

За время своего существования процесс может неоднократно совершать переходы из одного состояния в другое. Это обусловлено обращениями к операционной системы с запросами ресурсов и выполнения системных функций, которые предоставляет ОС, взаимодействием с другими процессами, появлением сигналов прерывания от таймера, каналов и устройств ввода/вывода, а также других устройств. Возможные переходы процесса из одного состояния в другое отображаются в виде графа состояний (рис. 2).

В любой момент времени активным (т.е. использующим ЦП) может быть только один процесс. При передаче управления процессу пользователя ОС устанавливает интервальный таймер. Тем самым задается квант времени, являющийся максимальным количеством времени ЦП, на которое процесс получает управление. Если это время истекает, процесс переводится из состояния активности в состояние готовности. После этого ОС, согласно стратегии планирования, выбирает следующий процесс, находящийся в готовности, переводит его в состояние активности и передает ему управление. Выбор процесса и передача на него управления называют диспетчеризацией. Часть ОС, выполняющая эту функцию, называется диспетчером.

Рис. 2 Диаграмма переходов состояний процесса

Может сказаться, что активный процесс, не использовал полностью предоставленного ему кванта времени, будет ожидать наступления некоторого события, например, завершения операции ввода-вывода. В этом случае активный процесс блокируется, а какой-то новый процесс активизируется. Когда же ожидаемое событие наступает, соответствующий заблокированный процесс переводится в состояние готовности и может снова стать кандидатом на обслуживание операции. Ожидания события и оповещения о том, что событие наступило, реализуются при помощи сервисных запросов ОС с использованием супервизора или по прерываниям.

Из состояния выполнения процесс может выйти по одной из следующих причин:

  • процесс завершается, при этом он посредством обращения к супервизору передает управление операционной системе и сообщает о своем завершении;

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

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

Обычно до своего завершения процесс много раз пребывает в состоянии готовности, активности и блокировки. Для того чтобы это никак не повлияло на результаты вычислений, каждый раз, когда процесс теряет активность, его текущее состояние должно быть сохранено. Когда же процесс будет снова активизирован, это состояние должно быть восстановлено. Информация о состоянии каждого процесса хранится операционной системой в блоке состояния процесса (БСП). БСП содержит информацию о том, в каком состоянии процесс находится (активности, готовности или блокировки). В нем имеется область, используемая для сохранения машинных регистров и другой всевозможной информации (например, о системных ресурсах, используемых процессов).

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

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

Для того чтобы операционная система могла управлять процессами, она должна располагать всей необходимой информацией. С этой целью на каждый процесс заводится специальная информационная структура, называемая дескриптором процесса (описателем задачи). Дескриптор задачи содержит следующую информацию:

  • идентификатор процесса (называемый PID – process identificator);

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

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

  • переменную состояния, которая определяет, в каком состоянии находится процесс (готов к работе, в состоянии выполнения, ожидание устройства ввода/вывода);

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

  • информация о ресурсах, которым процесс владеет и /или имеет право пользоваться (указатели на открытые файлы, информация о незавершенных операциях ввода/вывода и т.д.);

  • место (или его адрес) для организации общения с другими процессами;

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

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

Однако желательно задействовать еще и внутренний параллелизм, который может быть в самих процессах. Например, некоторые операции, выполняемые приложением, могут требовать для своего исполнения достаточно длительного использования центрального процессора. В этом случае при интерактивной работе с приложение пользователь вынужден долго ожидать заказанной операции, и не может управлять приложением до тех пор, пока операция не выполнится до самого конца (такая ситуация встречается, например, при обработке графики). Если же программные модели, исполняющие такие длительные операции, оформлять в виде самостоятельных подпроцессов, которые будут выполняться параллельно с другими подпроцессами, то у пользователя появляется возможность параллельно выполнять несколько операций в рамках одного приложения (процесса). Эти задачи не имеют собственных ресурсов, они развиваются в том же виртуальном адресном пространстве, могут пользоваться теми же файлами, виртуальными устройствами и иными ресурсами, что и данный процесс. Единственное, что им необходимо иметь – это процессорный ресурс. В однопроцессорных системах такие задачи называют тредами (thread – нить) или потоками.

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

Деятельность мультипрограммной операционной системы состоит из цепочек операций, выполняемых над различными процессами, и сопровождается переключением процессора с одного процесса на другой (рис.3).

Рис 3. Выполнение операции разблокирования процесса

При исполнении процессором некоторого процесса (на рисунке - процесс 1) возникает прерывание от устройства ввода-вывода, сигнализирующее об окончании операций на устройстве. Над выполняющимся процессом производится операция приостановка. Далее, операционная система разблокирует процесс, инициировавший запрос на ввод-вывод (на рисунке 4 – процесс 2), и осуществляет запуск приостановленного или нового процесса, выбранного при выполнении планирования (на рисунке был выбран разблокированный процесс). Как видим, в результате обработки информации об окончании операции ввода-вывода возможна смена процесса, находящегося в состоянии исполнение.

Для корректного переключения процессора с одного процесса на другой необходимо сохранить контекст исполнявшегося процесса и восстановить контекст процесса, на который будет переключен процессор. Такая процедура сохранения/восстановления работоспособности процессов называется переключением контекста. Время, затраченное на переключение контекста, не используется вычислительной системой для совершения полезной работы и представляет собой накладные расходы, снижающие производительность системы. Оно меняется от машины к машине и обычно находится в диапазоне от 1 до 1000 микросекунд. Существенно сократить накладные расходы в современных операционных системах позволяет расширенная модель процессов, включающая в себя понятие threads of execution (нити исполнения или просто нити).

Соседние файлы в папке Лекции_ОС