Реализация мультизадачности


Процессы и потоки. Прерывания. Процесс. Состояния процесса. Операции над процессами.

Процесс

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

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

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

· Процесс находится в состоянии выполнения, если в данный момент ему выделен центральный процессор (ЦП).

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

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

 

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

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

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

Запуск, или выбор процесса для выполнения - это предоставление ЦП первому процессу из списка готовых процессов. Запуск осуществляется с помощью программы - диспетчер.

Блок управление процессом

Блок управления процессом (РСВ - process control block) - это объект, который определяет процесс для операционной системы и является структурой данных, сосредотачивающей всю ключевую информацию о процессе:

· текущее состояние процесса;

· уникальный идентификатор процесса;

· приоритет процесса;

· указатели памяти процесса;

· указатели выделенных процессу ресурсов;

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

 

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

Дескриптор и контекст процесса.

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

Дескриптор процесса содержит следующие параметры процесса:

· расположение (адрес в памяти);

· размер выгружаемой части образа процесса;

· идентификатор процесса и пользователя.

 

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

· идентификационные номера пользователей, для определения привилегий доступа к файлам;

· ссылки на системную таблицу файлов для всех открытых процессом файлов;

· указатель на индексный дескриптор текущего каталога в таблице индексных дескрипторов;

· список реакций на различные сигналы.

 

Поток– единица активности в процессе, абстракция, несущая ответственность за исполнение кода и поддержания состояния выполнения процесса.

 

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

Реализация мультизадачности

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

 

Каждый поток выполняется строго последовательно и имеет свой собственный программный счетчик и стек.

 

Каждый процесс состоит по крайней мере из одного потока. Все потоки имеют одно и то же виртуальное адресное пространство своего процесса.

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

 

Икв(X): В Г

Зап(Y): Г В

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

Блк(X): В Б

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

 

Прб(X) : Б Г

Отметим, что единственная смена состояния, инициируемая самим процессом - это блокирование, остальные инициируются объектами, внешними по отношению к данному процессу.



Дата добавления: 2017-01-26; просмотров: 1242;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.