Вы находитесь на странице: 1из 28

АВТОНОМНАЯ НЕКОММЕРЧЕСКАЯ ОРГАНИЗАЦИЯ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ


ЦЕНТРОСОЮЗА РОССИЙСКОЙ ФЕДЕРАЦИИ
«РОССИЙСКИЙ УНИВЕРСИТЕТ КООПЕРАЦИИ»
(Смоленский филиал)

Кафедра информационных технологий

РЕФЕРАТ

по дисциплине: «Организация вычислительных процессов»

на тему: «Организация вычислительных процессов в ЭВМ»

Выполнил студент

группы ЗИБс-111

Гонтырев Руслан Сергеевич

Руководитель

Профессор Курилин Сергей Павлович

Смоленск 2014
2

СОДЕРЖАНИЕ

1. ВВЕДЕНИЕ 3
ГЛАВА I. ПОНЯТИЕ ВЫЧИСЛИТЕЛЬНОГО ПРОЦЕССА……5
1.1 Вычислительный процесс 5

ГЛАВА II. УПРАВЛЕНИЕ ПРОЦЕССАМИ…………………….17

2.1 Управление процессами 17

2.2 Состояние процессов 17

2.3 Контекст и дескриптор процесса 19

2.4 Алгоритмы планирования процессов 20

2.5 Вытесняющие алгоритмы планирования 23

2. ЗАКЛЮЧЕНИЕ 27
3. СПИСОК ЛИТЕРАТУРЫ 29
3

ВВЕДЕНИЕ

Нестрого процесс можно представить себе как группу ячеек памяти,


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

время которого процесс обладает всеми необходимыми ресурсами и


непосредственно выполняется процессором.
Выйти из этого состояния процесс может по трем причинам: операционная
система прекращает его деятельность; он не может продолжать свою работу,
пока не произойдет некоторое событие, и операционная система переводит
его в состояние ожидание; в результате возникновения прерывания в
вычислительной системе (например, прерывания от таймера по истечении
предусмотренного времени выполнения) его возвращают в состояние
готовность. Ожидание – пассивное состояние процесса, процесс
заблокирован, он не может выполняться по своим внутренним причинам, он
ждет осуществления некоторого события, например, завершения операции
ввода-вывода, получения сообщения от другого процесса, освобождения
какого-либо необходимого ему ресурса. Из состояния «Ожидание» процесс
попадает в состояние «Готовность» после того, как ожидаемое событие
произошло, и он снова может быть выбран для исполнения. Готовность –
пассивное состояние процесса. В этом состоянии процесс заблокирован в
связи с внешними по отношению к нему обстоятельствами: процесс имеет
все требуемые для него ресурсы, он готов выполняться, однако процессор
занят выполнением другого процесса. Операционная система, пользуясь
каким-либо алгоритмом планирования, выбирает один из готовых процессов
и переводит его в состояние «Исполнение». В ходе жизненного цикла
каждый процесс переходит из одного состояния в другое в соответствии с
алгоритмом планирования процессов, реализуемым в данной операционной
системе.
5

ГЛАВА I ПОНЯТИЯ ВЫЧИСЛИТЕЛЬНОГО ПРОЦЕССА

1.1 Вычислительный процесс

Понятие «вычислительный процесс» (или просто - «процесс») является


одним из основных при рассмотрении операционных систем. Как понятие
процесс является определенным видом абстракции, и мы будем
придерживаться следующего неформального определения, приведенного в
работе. Последовательный процесс (иногда называемый «задачей») - это
выполнение отдельной программы с её данными на последовательном
процессоре. Концептуально процессор рассматривается в двух аспектах: во-
первых, он является носителем данных и, во-вторых, он (одновременно)
выполняет операции, связанные с их обработкой.
В качестве примеров можно назвать следующие процессы (задачи):
прикладные программы пользователей, утилиты и другие системные
обрабатывающие программы. Процессами могут быть редактирование
какого-либо текста, трансляция исходной программы, её компоновка,
исполнение. Причем трансляция какой-нибудь исходной программы является
одним процессом, а трансляция следующей исходной программы - другим
процессом, поскольку, хотя транслятор как объединение программных
модулей здесь выступает как одна и та же программа, но данные, которые он
обрабатывает, являются разными.
Определение концепции процесса преследует цель выработать
механизмы распределения и управления ресурсами. Понятие ресурса, так же
как и понятие процесса, является, пожалуй, основным при рассмотрении
операционных систем. Термин ресурс обычно применяется по отношению к
повторно используемым, относительно стабильным и часто недостающим
6

объектам, которые запрашиваются, используются и освобождаются


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

вывода полученных данных и последующие вычисления на центральном


процессоре. Однако все равно процессор продолжал часто и долго
простаивать, дожидаясь завершения очередной операции ввода/вывода.
Поэтому было предложено организовать так называемый
мультипрограммный (мультизадачный) режим работы вычислительной
системы. Суть его заключается в том, что пока одна программа (один
вычислительный процесс или задача, как мы теперь говорим) ожидает
завершения очередной операции ввода/вывода, другая программа (а точнее,
другая задача) может быть поставлена на решение.
При мультипрограммировании повышается пропускная способность
системы, но отдельный процесс никогда не может быть выполнен быстрее,
чем если бы он выполнялся в однопрограммном режиме (всякое разделение
ресурсов замедляет работу одного из участников за счёт дополнительных
затрат времени на ожидание освобождения ресурса).
Как мы уже отмечали, операционная система поддерживает
мультипрограммирование (многопроцессность) и старается эффективно
использовать ресурсы путём организации к ним очередей запросов,
составляемых тем или иным способом.
Это требование достигается поддерживанием в памяти более одного
процесса, ожидающего процессор, и более одного процесса, готового
использовать другие ресурсы, как только последние станут доступными.
Общая схема выделения ресурсов такова. При необходимости использовать
какой-либо ресурс (оперативную память, устройство ввода/вывода, массив
данных и т. п.) задача обращается к супервизору операционной системы - её
центральному управляющему модулю, который может состоять из
нескольких модулей, например: супервизор ввода/вывода, супервизор
прерываний, супервизор программ, диспетчер задач и т. д. - посредством
специальных вызовов (команд, директив) и сообщает о своём требовании.
При этом указывается вид ресурса и, если надо, его объём (например,
количество адресуемых ячеек оперативной памяти, количество дорожек или
8

секторов на системном диске, устройство печати и объём выводимых данных


и т. п.).
Директива обращения к операционной системе передаёт ей
управление, переводя процессор в привилегированный режим работы, если
такой существует. Не все вычислительные комплексы имеют два (и более)
режима работы: привилегированный (режим супервизора), пользовательский,
режим эмуляции какого-нибудь другого компьютера и т. д.
Ресурс может быть выделен задаче, обратившейся к супервизору с
соответствующим запросом, если:
♦ он свободен и в системе нет запросов от задач более высокого
приоритета к этому же ресурсу;
♦ текущий запрос и ранее выданные запросы допускают
совместное использование ресурсов;
♦ ресурс используется задачей низшего приоритета и может быть
временно отобран (разделяемый ресурс).
Получив запрос, операционная система либо удовлетворяет его и
возвращает управление задаче, выдавшей данный запрос, либо, если ресурс
занят, ставит задачу в очередь к ресурсу, переводя её в состояние ожидания
(блокируя). Очередь к ресурсу может быть организована несколькими
способами, но чаще всего это осуществляется с помощью списковой
структуры.
После окончания работы с ресурсом задача опять с помощью
специального вызова супервизора (посредством соответствующей
директивы) сообщает операционной системе об отказе от ресурса, или
операционная система забирает ресурс сама, если управление возвращается
супервизору после выполнения какой-либо системной функции. Супервизор
операционной системы, получив управление по этому обращению,
освобождает ресурс и проверяет, имеется ли очередь к освободившемуся
ресурсу. Если очередь есть - в зависимости от принятой дисциплины
обслуживания (правила обслуживания) и приоритетов заявок он выводит из
9

состояния ожидания задачу, ждущую ресурс, и переводит её в состояние


готовности к выполнению. После этого управление либо передаётся данной
задаче, либо возвращается той, которая только что освободила ресурс.
При выдаче запроса на ресурс задача может указать, хочет ли она
владеть ресурсом монопольно или допускает совместное использование с
другими задачами. Например, с файлом можно работать монопольно, а
можно и совместно с другими задачами.
Если в системе имеется некоторая совокупность ресурсов, то управлять
их использованием можно на основе определенной стратегии. Стратегия
подразумевает четкую формулировку целей, следуя которым можно добиться
эффективного распределения ресурсов.
При организации управления ресурсами всегда требуется принять
решение о том, что в данной ситуации выгоднее: быстро обслуживать
отдельные наиболее важные запросы, предоставлять всем процессам равные
возможности либо обслуживать максимально возможное количество
процессов и наиболее полно использовать ресурсы.
Необходимо различать системные управляющие процессы,
представляющие работу супервизора операционной системы и
занимающиеся распределением и управлением ресурсов, от всех других
процессов: системных обрабатывающих процессов, которые не входят в ядро
операционной системы, и процессов пользователя. Для системных
управляющих процессов в большинстве операционных систем ресурсы
распределяются изначально и однозначно. Эти процессы управляют
ресурсами системы, за использование которых существует конкуренция
между всеми остальными процессами. Поэтому исполнение системных
управляющих программ не принято называть процессами. Термин задача
можно употреблять только по отношению к процессам пользователей и к
системным обрабатывающим процессам. Однако это справедливо не для всех
ОС. Например, в так называемых «микроядерных» ОС (в качестве примера
можно привести ОС реального времени QNX фирмы Quantum Software
10

systems) большинство управляющих программных модулей самой ОС и даже


драйверы имеют статус высокоприоритетных процессов, для выполнения
которых необходимо выделить соответствующие ресурсы. Аналогично и в
UNIX-системах выполнение системных программных модулей тоже имеет
статус системных процессов, которые получают ресурсы для своего
исполнения.
Если обобщать и рассматривать не только обычные ОС общего
назначения, но и, например, ОС реального времени, то можно сказать, что
процесс может находиться в активном и пассивном (не активном) состоянии.
В активном состоянии процесс может участвовать в конкуренции за
использование ресурсов вычислительной системы, а в пассивном - он только
известен системе, но в конкуренции не участвует (хотя его существование в
системе и сопряжено с предоставлением ему оперативной и/или внешней
памяти). В свою очередь, активный процесс может быть в одном из
следующих состояний:
♦ выполнения - все затребованные процессом ресурсы выделены. В
этом состоянии в каждый момент времени может находиться только один
процесс, если речь идёт об однопроцессорной вычислительной системе;
♦ готовности к выполнению - ресурсы могут быть предоставлены,
тогда процесс перейдёт в состояние выполнения;
♦ блокирования или ожидания - затребованные ресурсы не могут
быть предоставлены, или не завершена операция ввода/вывода.
В большинстве операционных систем последнее состояние, в свою
очередь, подразделяется на множество состояний ожидания,
соответствующих определенному виду ресурса, из-за отсутствия которого
процесс переходит в заблокированное состояние.
В обычных ОС, как правило, процесс появляется при запуске какой-
нибудь программы. ОС организует (порождает или выделяет) для нового
процесса соответствующий дескриптор (см. об этом дальше) процесса, и
11

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


состояния не существует.
В ОС реального времени (ОСРВ) ситуация иная. Обычно при
проектировании системы реального времени уже заранее бывает известен
состав программ (задач), которые должны будут выполняться. Известны и
многие их параметры, которые необходимо учитывать при распределении
ресурсов (например, объём памяти, приоритет, средняя длительность
выполнения, открываемые файлы, используемые устройства и т. п.). Поэтому
для них заранее заводят дескрипторы задач с тем, чтобы впоследствии не
тратить драгоценное время на организацию дескриптора и поиск для него
необходимых ресурсов. Таким образом, в ОСРВ многие процессы (задачи)
могут находиться в состоянии бездействия.
За время своего существования процесс может неоднократно
совершать переходы из одного состояния в другое. Это обусловлено
обращениями, к операционной системе с запросами ресурсов и выполнения
системных функций, которые предоставляет операционная система,
взаимодействием с другими процессами, появлением сигналов прерывания
от таймера, каналов и устройств ввода/вывода, а также других устройств.
Процесс из состояния бездействия может перейти в состояние
готовности в следующих случаях:
♦ по команде оператора (пользователя). Имеет место в тех диалоговых
операционных системах, где программа может иметь статус задачи (и при
этом являться пассивной), а не просто быть исполняемым файлом и только
на время исполнения получать статус задачи (как это происходит в
большинстве современных ОС для ПК);
♦ при выборе из очереди планировщиком (характерно для
операционных систем, работающих в пакетном режиме);
♦ по вызову из другой задачи (посредством обращения к
супервизору один процесс может создать, инициировать, приостановить,
остановить, уничтожить другой процесс);
12

♦ по прерыванию от внешнего инициативного устройства (сигнал о


свершении некоторого события может запускать соответствующую задачу);
♦ при наступлении запланированного времени запуска программы.
Последние два способа запуска задачи, при которых процесс из
состояния бездействия переходит в состояние готовности, характерны для
операционных систем реального времени.
Процесс, который может исполняться, как только ему будет
предоставлен процессор, а для диск-резидентных задач в некоторых системах
- и оперативная память, находится в состоянии готовности. Считается, что
такому процессу уже выделены все необходимые ресурсы за исключением
процессора.
Из состояния выполнения процесс может выйти по одной из
следующих причин:
♦процесс завершается, при этом он посредством обращения к
супервизору передаёт управление операционной системе и сообщает о своем
завершении. В результате этих действий супервизор либо переводит его в
список бездействующих процессов (процесс переходит в пассивное
состояние), либо уничтожает (уничтожается, естественно, не сама программа,
а именно задача, которая соответствовала исполнению некоторой
программы). В состояние бездействия процесс может быть переведен
принудительно: по команде оператора (действие этой и других команд
оператора реализуется системным процессом, который «транслирует»
команду в запрос к супервизору с требованием перевести указанный процесс
в состояние бездействия), или путем обращения к супервизору операционной
системы из другой задачи с требованием остановить данный процесс;
♦процесс переводится супервизором операционной системы в
состояние готовности к исполнению в связи с появлением более
приоритетной задачи или в связи с окончанием выделенного ему кванта
времени;
13

♦процесс блокируется (переводится в состояние ожидания) либо


вследствие запроса операции ввода/вывода (которая должна быть выполнена
прежде, чем он сможет продолжить исполнение), либо в силу невозможности
предоставить ему ресурс, запрошенный в настоящий момент (причиной
перевода в состояние ожидания может быть и отсутствие сегмента или
страницы в случае организации механизмов виртуальной памяти), а также по
команде оператора на приостановку задачи или по требованию через
супервизор от другой задачи.
При наступлении соответствующего события (завершилась операция
ввода/вывода, освободился затребованный ресурс, в оперативную память
загружена необходимая страница виртуальной памяти и т. д.) процесс
деблокируется и переводится в состояние готовности к исполнению.
Таким образом, движущей силой, меняющей состояния процессов,
являются события. Один из основных видов событий - это прерывания.
Реализация понятия последовательного процесса в ОС
Для того чтобы операционная система могла управлять процессами,
она должна располагать всей необходимой для этого информацией. С этой
целью на каждый процесс заводится специальная информационная
структура, называемая дескриптором процесса (описателем задачи, блоком
управления задачей). В общем случае дескриптор процесса содержит
следующую информацию:
♦ идентификатор процесса (так называемый PID - process
identificator);
♦ тип (или класс) процесса, который определяет для супервизора
некоторые правила предоставления ресурсов;
♦ приоритет процесса, в соответствии с которым супервизор
предоставляет ресурсы. В рамках одного класса процессов в первую очередь
обслуживаются более приоритетные процессы;
14

♦ переменную состояния, которая определяет, в каком состоянии


находится процесс (готов к работе, в состоянии выполнения, ожидание
устройства ввода/вывода и т. д.);
♦ защищённую область памяти (или адрес такой зоны), в которой
хранятся текущие значения регистров процессора, если процесс прерывается,
не закончив работы. Эта информация называется контекстом задачи;
♦ информацию о ресурсах, которыми процесс владеет и/или имеет
право пользоваться (указатели на открытые файлы, информация о
незавершенных операциях ввода/вывода и т. п.);
♦ место (или его адрес) для организации общения с другими
процессами;
♦ параметры времени запуска (момент времени, когда процесс
должен активизироваться, и периодичность этой процедуры);
♦ в случае отсутствия системы управления файлами - адрес задачи
на диске в её исходном состоянии и адрес на диске, куда она выгружается из
оперативной памяти, если её вытесняет другая (для диск-резидентных задач,
которые постоянно находятся во внешней памяти на системном магнитном
диске и загружаются в оперативную память только на время выполнения).
Описатели задач, как правило, постоянно располагаются в оперативной
памяти с целью ускорить работу супервизора, который организует их в
списки (очереди) и отображает изменение состояния процесса перемещением
соответствующего описателя из одного списка в другой. Для каждого
состояния (за исключением состояния выполнения для однопроцессорной
системы) операционная система ведет соответствующий список задач,
находящихся в этом состоянии. Однако для состояния ожидания может быть
не один список, а столько, сколько различных видов ресурсов могут
вызывать состояние ожидания. Например, состояний ожидания завершения
операции ввода/вывода может быть столько, сколько устройств ввода/вывода
имеется в системе.
15

В некоторых операционных системах количество описателей


определяется жестко и заранее (на этапе генерации варианта операционной
системы или в конфигурационном файле, который используется при загрузке
ОС), в других - по мере необходимости система может выделять участки
памяти под новые описатели. Например, в OS/2 максимально возможное
количество описателей задач определяется в конфигурационном файле
CONFIG.SYS, а в Windows NT оно в явном виде не задается.
Справедливости ради стоит заметить, что в упомянутом файле
указывается количество не процессов, а именно задач, и под задачей в
данном случае понимается как процесс, так и поток этого же процесса,
называемый потоком или тредом. Например, строка в файле CONFIG.SYS

THREADS=1024

указывает, что всего в системе может параллельно существовать и


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

Для более эффективной обработки данных в системах реального


времени целесообразно иметь постоянные задачи/полностью или частично
всегда существующие в системе независимо от того, поступило на них
требование или нет. Каждая постоянная задача обладает некоторой
собственной областью оперативной памяти (ОЗУ-резидентные задачи)
независимо от того, выполняется задача в данный момент или нет.
Эта область, в частности, может использоваться для хранения данных,
полученных задачей ранее. Данные могут храниться в ней и тогда, когда
задача находится в состоянии ожидания или даже в состоянии бездействия.
Для аппаратной поддержки работы операционных систем с этими
информационными структурами (дескрипторами задач) в процессорах могут
быть реализованы соответствующие механизмы. Так, например, в
микропроцессорах Intel 80х86, начиная с 80286, имеется специальный
регистр TR (task register), указывающий местонахождение TSS (сегмента
состояния задачи), в котором при переключении с задачи на задачу
автоматически сохраняется содержимое регистров процессора. Как правило,
в современных ОС для этих микропроцессоров дескриптор задачи включает
в себя TSS. Другими словами, дескриптор задачи больше по размеру, чем
TSS, и включает в себя такие традиционные поля, как идентификатор задачи,
её имя, тип, приоритет и т. п.
17

ГЛАВА II УПРАВЛЕНИЕ ПРОЦЕССАМИ

2.1 Управление процессами

Важнейшей частью операционной системы, непосредственно влияющей


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

2.2 Состояние процессов

В многозадачной (многопроцессной) системе процесс может находиться


в одном из трех основных состояний:
ВЫПОЛНЕНИЕ - активное состояние процесса, во время которого
процесс обладает всеми необходимыми ресурсами и непосредственно
выполняется процессором;
ОЖИДАНИЕ - пассивное состояние процесса, процесс заблокирован, он
не может выполняться по своим внутренним причинам, он ждет
осуществления некоторого события, например, завершения операции ввода-
18

вывода, получения сообщения от другого процесса, освобождения какого-


либо необходимого ему ресурса;
ГОТОВНОСТЬ - также пассивное состояние процесса, но в этом случае
процесс заблокирован в связи с внешними по отношению к нему
обстоятельствами: процесс имеет все требуемые для него ресурсы, он готов
выполняться, однако процессор занят выполнением другого процесса.
В ходе жизненного цикла каждый процесс переходит из одного
состояния в другое в соответствии с алгоритмом планирования процессов,
реализуемым в данной операционной системе. Типичный граф состояний
процесса показан на рисунке 2.1.
В состоянии ВЫПОЛНЕНИЕ в однопроцессорной системе может
находиться только один процесс, а в каждом из состояний ОЖИДАНИЕ и
ГОТОВНОСТЬ - несколько процессов, эти процессы образуют очереди
соответственно ожидающих и готовых процессов. Жизненный цикл процесса
начинается с состояния ГОТОВНОСТЬ, когда процесс готов к выполнению и
ждет своей очереди. При активизации процесс переходит в состояние
ВЫПОЛНЕНИЕ и находится в нем до тех пор, пока либо он сам освободит
процессор, перейдя в состояние ОЖИДАНИЯ какого-нибудь события, либо
будет насильно "вытеснен" из процессора, например, вследствие исчерпания
отведенного данному процессу кванта процессорного времени. В последнем
случае процесс возвращается в состояние ГОТОВНОСТЬ. В это же состояние
процесс переходит из состояния ОЖИДАНИЕ, после того, как ожидаемое
событие произойдет.
19

Рис. 2.1. Граф состояний процесса в многозадачной среде

2.3.Контекст и дескриптор процесса

На протяжении существования процесса его выполнение может быть


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

Программный код только тогда начнет выполняться, когда для него


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

2.4. Алгоритмы планирования процессов.

Планирование процессов включает в себя решение следующих задач:


1. определение момента времени для смены выполняемого
процесса;
2. выбор процесса на выполнение из очереди готовых процессов;
3. переключение контекстов "старого" и "нового" процессов.
Первые две задачи решаются программными средствами, а последняя в
значительной степени аппаратно (см. раздел 2.3. "Средства аппаратной
поддержки управления памятью и многозадачной среды в микропроцессорах
Intel 80386, 80486 и Pentium").
Существует множество различных алгоритмов планирования процессов,
по разному решающих вышеперечисленные задачи, преследующих
различные цели и обеспечивающих различное качество
мультипрограммирования. Среди этого множества алгоритмов рассмотрим
подробнее две группы наиболее часто встречающихся алгоритмов:
алгоритмы, основанные на квантовании, и алгоритмы, основанные
на приоритетах.
В соответствии с алгоритмами, основанными на квантовании, смена
активного процесса происходит, если:
процесс завершился и покинул систему,
произошла ошибка,
21

процесс перешел в состояние ОЖИДАНИЕ,


исчерпан квант процессорного времени, отведенный данному
процессу.
Процесс, который исчерпал свой квант, переводится в состояние
ГОТОВНОСТЬ и ожидает, когда ему будет предоставлен новый квант
процессорного времени, а на выполнение в соответствии с определенным
правилом выбирается новый процесс из очереди готовых. Таким образом, ни
один процесс не занимает процессор надолго, поэтому квантование широко
используется в системах разделения времени. Граф состояний процесса,
изображенный на рисунке 2.1, соответствует алгоритму планирования,
основанному на квантовании.
Кванты, выделяемые процессам, могут быть одинаковыми для всех
процессов или различными. Кванты, выделяемые одному процессу, могут
быть фиксированной величины или изменяться в разные периоды жизни
процесса. Процессы, которые не полностью использовали выделенный им
квант (например, из-за ухода на выполнение операций ввода-вывода), могут
получить или не получить компенсацию в виде привилегий при
последующем обслуживании. По разному может быть организована очередь
готовых процессов: циклически, по правилу "первый пришел - первый
обслужился" (FIFO) или по правилу "последний пришел - первый
обслужился" (LIFO).
Другая группа алгоритмов использует понятие "приоритет"
процесса. Приоритет - это число, характеризующее степень
привилегированности процесса при использовании ресурсов вычислительной
машины, в частности, процессорного времени: чем выше приоритет, тем
выше привилегии.
Приоритет может выражаться целыми или дробными, положительным
или отрицательным значением. Чем выше привилегии процесса, тем меньше
времени он будет проводить в очередях. Существует две разновидности
22

приоритетных алгоритмов: алгоритмы, использующие относительные


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

Рис. 2.2. Графы состояний процессов в системах 


(а) с относительными приоритетами; (б)с абсолютными приоритетами
23

Во многих операционных системах алгоритмы планирования построены


с использованием как квантования, так и приоритетов. Например, в основе
планирования лежит квантование, но величина кванта и/или порядок выбора
процесса из очереди готовых определяется приоритетами процессов.

2.5 Вытесняющие и не вытесняющие алгоритмы планирования

Существует два основных типа процедур планирования процессов -


вытесняющие (preemptive) и невытесняющие (non-preemptive).
Non-preemptive multitasking - невытесняющая многозадачность - это
способ планирования процессов, при котором активный процесс выполняется
до тех пор, пока он сам, по собственной инициативе, не отдаст управление
планировщику операционной системы для того, чтобы тот выбрал из очереди
другой, готовый к выполнению процесс.
Preemptive multitasking - вытесняющая многозадачность - это такой
способ, при котором решение о переключении процессора с выполнения
одного процесса на выполнение другого процесса принимается
планировщиком операционной системы, а не самой активной задачей.
Понятия preemptive и non-preemptive иногда отождествляются с
понятиями приоритетных и бесприоритетных дисциплин, что совершенно
неверно, а также с понятиями абсолютных и относительных приоритетов, что
неверно отчасти. Вытесняющая и невытесняющая многозадачность - это
более широкие понятия, чем типы приоритетности. Приоритеты задач могут
как использоваться, так и не использоваться и при вытесняющих, и при
невытесняющих способах планирования.
Так в случае использования приоритетов дисциплина относительных
приоритетов может быть отнесена к классу систем с невытесняющей
многозадачностью, а дисциплина абсолютных приоритетов - к классу систем
с вытесняющей многозадачностью. А бесприоритетная дисциплина
планирования, основанная на выделении равных квантов времени для всех
задач, относится к вытесняющим алгоритмам.
24

Основным различием между preemptive и non-preemptive вариантами


многозадачности является степень централизации механизма планирования
задач. При вытесняющей многозадачности механизм планирования задач
целиком сосредоточен в операционной системе, и программист пишет свое
приложение, не заботясь о том, что оно будет выполняться параллельно с
другими задачами. При этом операционная система выполняет следующие
функции: определяет момент снятия с выполнения активной задачи,
запоминает ее контекст, выбирает из очереди готовых задач следующую и
запускает ее на выполнение, загружая ее контекст.
При невытесняющей многозадачности механизм планирования
распределен между системой и прикладными программами. Прикладная
программа, получив управление от операционной системы, сама определяет
момент завершения своей очередной итерации и передает управление ОС с
помощью какого-либо системного вызова, а ОС формирует очереди задач и
выбирает в соответствии с некоторым алгоритмом (например, с учетом
приоритетов) следующую задачу на выполнение. Такой механизм создает
проблемы как для пользователей, так и для разработчиков.
Для пользователей это означает, что управление системой теряется на
произвольный период времени, который определяется приложением (а не
пользователем). Если приложение тратит слишком много времени на
выполнение какой-либо работы, например, на форматирование диска,
пользователь не может переключиться с этой задачи на другую задачу,
например, на текстовый редактор, в то время как форматирование
продолжалось бы в фоновом режиме. Эта ситуация нежелательна, так как
пользователи обычно не хотят долго ждать, когда машина завершит свою
задачу.
Поэтому разработчики приложений для non-preemptive операционной
среды, возлагая на себя функции планировщика, должны создавать
приложения так, чтобы они выполняли свои задачи небольшими частями.
Например, программа форматирования может отформатировать одну
25

дорожку дискеты и вернуть управление системе. После выполнения других


задач система возвратит управление программе форматирования, чтобы та
отформатировала следующую дорожку. Подобный метод разделения
времени между задачами работает, но он существенно затрудняет разработку
программ и предъявляет повышенные требования к квалификации
программиста. Программист должен обеспечить "дружественное" отношение
своей программы к другим выполняемым одновременно с ней программам,
достаточно часто отдавая им управление. Крайним проявлением
"недружественности" приложения является его зависание, которое приводит
к общему краху системы. В системах с вытесняющей многозадачностью
такие ситуации, как правило, исключены, так как центральный планирующий
механизм снимет зависшую задачу с выполнения.
Однако распределение функций планировщика между системой и
приложениями не всегда является недостатком, а при определенных
условиях может быть и преимуществом, потому что дает возможность
разработчику приложений самому проектировать алгоритм планирования,
наиболее подходящий для данного фиксированного набора задач. Так как
разработчик сам определяет в программе момент времени отдачи
управления, то при этом исключаются нерациональные прерывания
программ в "неудобные" для них моменты времени. Кроме того, легко
разрешаются проблемы совместного использования данных: задача во время
каждой итерации использует их монопольно и уверена, что на протяжении
этого периода никто другой не изменит эти данные. Существенным
преимуществом non-preemptive систем является более высокая скорость
переключения с задачи на задачу.
Примером эффективного использования не вытесняющей
многозадачности является файл-сервер NetWare, в котором, в значительной
степени благодаря этому, достигнута высокая скорость выполнения
файловых операций. Менее удачным оказалось использование не
вытесняющей многозадачности в операционной среде Windows 3.х.
26

ЗАКЛЮЧЕНИЕ

Одной из важнейших процедур информационного процесса обработки


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

Процедура преобразования данных состоит в том, что ЭВМ выполняет


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

На логическом уровне алгоритм преобразования данных выглядит как


программа, составленная на формализованном человеко-машинном языке —
алгоритмическом языке программирования.

ЭВМ понимает только машинные команды, поэтому программы с


алгоритмических языков с помощью программ-трансляторов переводятся в
последовательность кодов машинных команд.
27

Программа преобразования данных состоит из описания типов данных и


их структур, которые будут применяться при обработке, и операторов,
указывающих ЭВМ, какие типовые действия и в какой последовательности
необходимо проделать над данными и их структурами.

Управление процедурой преобразования данных осуществляется в


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

Программа решения вычислительной задачи преобразует значения


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

СПИСОК ЛИТЕРАТУРЫ

1. А.М. Ларионов, С.А. Майоров «Вычислительные комплексы


системы» С-Петербург 2000г.- 256 с
2.   Бойко В.И. Схемотехника электронных систем. Цифровые
устройства. СПб.: «БХВ-Петербург», 2004. – 512 с
3. Гук М. Аппаратные средства IBM PC. – СПб.: Питер, 2002
-928с.: ил
4. Таненбаум Э. Современные операционные системы. М.: Питер,
2005 – 673 с.