Реализация мультизадачности
Процессы и потоки. Прерывания. Процесс. Состояния процесса. Операции над процессами.
Процесс
Понятие процесс (process) введено разработчиками ОС с 60-х годов, как программа во время выполнения. Заметим, что программа - это всего лишь файл в формате загрузки, сохраняемый на диске, а процесс расположен в памяти на этапе выполнения.
Состояния процесса
Для процесса характерен ряд дискретных состояний, причем смену этих состояний могут вызывать различные события. Первоначально ограничимся рассмотрением трех основных состояний процесса.
· Процесс находится в состоянии выполнения, если в данный момент ему выделен центральный процессор (ЦП).
· Процесс находится в состоянии готовности, если он мог бы сразу использовать центральный процессор, предоставленный в его распоряжение.
· Процесс находится в состоянии блокировки, если он ожидает некоторого события, чтобы получить возможность продолжать выполнение.
Заметим, что в однопроцессорной машине в состоянии выполнения в каждый конкретный момент времени может находится только один процесс. В состояниях же готовности и блокировки могут находиться несколько процессов, т.е. есть возможность создать список готовых и список заблокированных процессов.
Список готовых процессов упорядочен по приоритету, первым в распоряжение получает ЦП первый процесс из списка. При создании списка готовых процессов, каждый новый процесс помещается в конец списка, а по мере завершения выполнения предыдущих процессов продвигается в головную часть списка. Список же заблокированных процессов не упорядочен, т.к. разблокировка процессов осуществляется в том порядке, в котором происходят ожидаемые ими события.
Рис.1 Смена состояний процесса X
Запуск, или выбор процесса для выполнения - это предоставление ЦП первому процессу из списка готовых процессов. Запуск осуществляется с помощью программы - диспетчер.
Блок управление процессом
Блок управления процессом (РСВ - process control block) - это объект, который определяет процесс для операционной системы и является структурой данных, сосредотачивающей всю ключевую информацию о процессе:
· текущее состояние процесса;
· уникальный идентификатор процесса;
· приоритет процесса;
· указатели памяти процесса;
· указатели выделенных процессу ресурсов;
· область сохранения регистров (когда ОС переключает ЦП с процесса на процесс, она использует области сохранения регистров, предусмотренные в РСВ, чтобы запомнить информацию, необходимую для повторного запуска каждого процесса, когда он получит в очередной раз в свое распоряжение ЦП).
По сути порождение любого процесса - это создание некоторой виртуальной машины. Она имеет свое собственное адресное пространство, куда помещается процедурный сегмент и сегмент данных.
Дескриптор и контекст процесса.
Системные данные, используемые для идентификации процесса, которые существуют в течение всего времени его жизни, образуют дескриптор (описатель) процесса. Множество дескрипторов образуют таблицу процессов.
Дескриптор процесса содержит следующие параметры процесса:
· расположение (адрес в памяти);
· размер выгружаемой части образа процесса;
· идентификатор процесса и пользователя.
Другая важная информация о процессе хранится в таблице пользователя (называемой также - контекст процесса), здесь записаны:
· идентификационные номера пользователей, для определения привилегий доступа к файлам;
· ссылки на системную таблицу файлов для всех открытых процессом файлов;
· указатель на индексный дескриптор текущего каталога в таблице индексных дескрипторов;
· список реакций на различные сигналы.
Поток– единица активности в процессе, абстракция, несущая ответственность за исполнение кода и поддержания состояния выполнения процесса.
Демон – это процесс, выполняющийся в фоновом режиме, не подключенный ни к одному из управляющих терминалов.
Реализация мультизадачности
Поток, или тред (threads) – легковесный процесс, позволяет задействовать внутренний параллелизм, который может быть внутри процесса (возможность параллельно выполнять несколько операций в рамках одного приложения).
Каждый поток выполняется строго последовательно и имеет свой собственный программный счетчик и стек.
Каждый процесс состоит по крайней мере из одного потока. Все потоки имеют одно и то же виртуальное адресное пространство своего процесса.
Для предотвращения монопольного захвата ресурсов ЦП одним процессом, ОС устанавливает в специальном таймере прерываний определенный временной интервал, который отводится для данного процесса, по истечении кванта времени, таймер вырабатывает сигнал прерывания, по которому управление передается ОС и процесс переводится из состояния выполнения в состояние готовности, а первый процесс из списка готовых - в состояние выполнения.
Икв(X): В Г
Зап(Y): Г В
Блокирование процесса - это освобождение ЦП процессом т.е. когда выполняющийся процесс инициирует, например, операцию ввода-вывода, и, таким образом, добровольно освобождает ЦП в ожидании завершения указанной операции.
Блк(X): В Б
Пробуждение процесса осуществляется тогда, когда происходит какое-либо событие, ожидаемое процессом, и он переходит из состояния блокировки в состояние готовности. (Так в выше описанном случае, после завершения операции ввода-вывода).
Прб(X) : Б Г
Отметим, что единственная смена состояния, инициируемая самим процессом - это блокирование, остальные инициируются объектами, внешними по отношению к данному процессу.
Дата добавления: 2017-01-26; просмотров: 1242;