Общая схема выделения ресурсов. При необходимости использовать
какой-либо ресурс (ОП, УВВ, массив данных и т.п.) задача путем обращения к
супервизору ОС посредством специальных вызовов (команд, директив)
сообщает о своем требовании. При этом указывается вид ресурса, и если
нужно, его объем. Команда обращения к ОС передает ей управление, переводя
процессор в привилегированный режим работы, если такой существует.
Большинство компьютеров имеют два (и более) режимов работы:
привилегированный (режим супервизора) и пользовательский. Ресурс может
быть выделен задаче, обратившейся к ОС с соответствующим запросом, если:
1) ресурс свободен и в системе нет запросов от задач более высокого
приоритета к этому же ресурсу;
2) текущий запрос и ранее выданные запросы допускают совместное
использование ресурсов;
3) ресурс используется задачей низшего приоритета и может быть
временно отобран (разделяемый ресурс).
Получив запрос, ОС либо удовлетворяет его и возвращает управление
задаче, либо, если ресурс занят, ставит задачу в очередь к ресурсу, переводя ее
в состояние ожидания (блокируя).
После окончания работы с ресурсом задача опять с помощью
специального вызова супервизора сообщает ОС об отказе от ресурса, либо ОС
забирает ресурс сама, если управление возвращается супервизору после
выполнения какой-либо системной функции.
Супервизор освобождает ресурс и проверяет, имеется ли очередь к
освободившемуся ресурсу. Если очередь есть, то в зависимости от принятой
дисциплины обслуживания и приоритетов заявок, он выводит из состояния
ожидания задачу, ожидающую ресурс, и переводит ее в состояние готовности
к выполнению, после чего, либо передает ей управление, либо возвращает
управление задаче, только что освободившей ресурс.
При выдаче запроса на ресурс задача может указать, хочет ли она
владеть ресурсом монопольно или допускает совместное использование с
другими задачами.
Если в системе имеется некоторая совокупность ресурсов, то управлять
их использованием можно на основе некоторой стратегии, которая
21
подразумевает четкую формулировку целей, следуя которым можно добиться
эффективного распределения ресурсов.
Процесс может находиться в активном и пассивном состоянии. В
активном
состоянии
процесс
может
конкурировать
за
ресурсы
вычислительной системы, а в пассивном состоянии он известен системе, но за
ресурсы не конкурирует. В свою очередь, активный процесс может быть в
одном из состояний:
1) выполнения – все затребованные процессом ресурсы выделены;
2) готовности к выполнению – ресурсы могут быть представлены,
тогда процесс перейдет в состояние выполнения;
3) блокирования (ожидания) – затребованные ресурсы не могут быть
предоставлены, или не завершена операция ввода-вывода.
Для ОСРВ характерно наличие пассивного состояния процесса,
которого нет в большинстве других ОС. Поскольку при проектировании
систем реального времени состав выполняемых ею задач и их параметры
известны заранее, для них заранее создают дескрипторы задач (процессов) –
специальную информационную структуру, сопровождающую каждый
процесс, чтобы не тратить время на организацию дескрипторов и поиски для
них необходимых ресурсов. Таким образом, многие процессы в ОСРВ
находятся в состоянии бездействия.
Процесс из состояния бездействия в состояние готовности может
перейти в случаях: по команде оператора: при выборе из очереди
планировщиком; при вызове из другой задачи; по прерыванию от внешнего
инициативного устройства; при наступлении запланированного запуска
программы.
Из состояния выполнения процесс может выйти по одной из причин:
1) процесс завершается, при этом он посредством обращения к
супервизору передает управление ОС и сообщает о своем завершении. В
результате этих действий супервизор переводит его в состояние бездействия
или уничтожает;
2) процесс переводится супервизором ОС в состояние готовности в
связи с появлением более приоритетных задач или в связи с окончанием
выделенного ему кванта времени;
3) процесс блокируется (переводится в состояние ожидания) либо
вследствие операции ввода-вывода, либо по причине невозможности
предоставить ему ресурс, запрошенный в настоящий момент, либо по команде
оператора на приостановление задачи, либо по требованию через супервизор
от другой задачи.
При наступлении соответствующего события процесс деблокируется и
переводится в состояние готовности к исполнению.
Для управления процессами ОС должна располагать необходимой
информацией. С этой целью на каждый процесс заводится специальная
информационная структура, называемая дескриптором процесса (описателем
22
процесса, блоком управления задачей). Обычно дескриптор содержит
следующую информацию:
- идентификатор процесса;
- тип (класс) процесса, который определяет для супервизора
некоторые правила предоставления ресурсов;
- приоритет процесса, в соответствии с которым супервизор
предоставляет ресурсы;
- переменную состояния, которая определяет, в каком состоянии
находится процесс;
- контекст задачи, т.е. защищенную область памяти, в которой
хранятся текущие значения регистров процессора, когда процесс прерывается,
не закончив работы;
- информацию о ресурсах, которыми владеет процесс и/или имеет
право пользоваться;
- место (адрес) для организации общения с другими процессами;
- параметры времени запуска;
- адрес задачи на диске в ее исходном состоянии в случае отсутствия
системы управления файлами и адрес на диске, куда она выгружается из ОП,
если ее вытесняет другая задача.
Дескрипторы задач постоянно находятся в оперативной памяти с целью
ускорения работы супервизора, который организует их в списки (очереди) и
отображает изменение состояния процесса. В некоторых ОС количество
дескрипторов определяется жестко и заранее (например, в конфигурационном
файле).
Понятие
процесса
было
введено
для
реализации
идей
мультипрограммирования. Для реализации мультизадачности характерны
понятия легковесных процессов – потоков выполнения, нитей или тредов.
Каждый процесс всегда состоит, по крайней мере, из одного потока
выполнения, и только если имеется внутренний параллелизм, программист
может «расщепить» один поток на несколько параллельных. Все потоки
имеют одно и то же виртуальное адресное пространство своего процесса. Это
означает, что они разделяют одни и те же глобальные переменные. Поскольку
каждый поток может иметь доступ к каждому виртуальному адресу, один
поток может использовать стек другого потока. Собственными являются
программный счетчик, стек, рабочие регистры процессора, потоки-потомки,
состояние. Вследствие того, что потоки, относящиеся к одному процессу,
выполняются в одном и том же виртуальном адресном пространстве, между
ними легко организовать тесное взаимодействие, в отличие от процессов, для
которых нужны специальные механизмы обмена сообщениями и данными.
Более того, программист, создающий многопоточное приложение, может
заранее продумать работу множества потоков процесса таким образом, чтобы
они могли взаимодействовать наиболее выгодным способом, а не
конкурировать за ресурсы тогда, когда этого можно избежать.
23
Для того, чтобы можно было эффективно организовать параллельное
выполнение рассмотренных сущностей (процессов и потоков), в архитектуру
современных процессоров включены средства для работы со специальной
информационной структурой, описывающей ту или иную сущность. Для этого
уже на уровне архитектуры микропроцессора используется понятие задача
( task). Оно как бы объединяет в себе и обычный процесс, и поток выполнения
(тред). Это понятие и поддерживаемая для него на уровне аппаратуры
информационная структура позволяют в дальнейшем при разработке
операционной системы строить соответствующие дескрипторы как для задач,
так и для процессов. И отличаться эти дескрипторы будут, прежде всего тем,
что дескриптор задачи может хранить только контекст приостановленного
вычислительного процесса, тогда как дескриптор процесса должен содержать
поля, описывающие тем или иным способом ресурсы, выделенные этому
процессу.
Достарыңызбен бөлісу: |