Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Способы переключения задач. Вытесняющая и не вытесняющая мультизадачности.



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

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

Способы переключения задач.

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

- не вытесняющая мультизадачность (переключение по событию);

- вытесняющая мультизадачность (переключение по таймеру или разделение времени).

Переключение по событию.

Для этого режим характерно, что операционная система ведет себя пассивно, не определяет момент смены текущей задачи. Активная задача (занимающая время центрального процессора) «добровольно» приостанавливает свое выполнение, то есть, как бы сама определяет момент переключения. Этот момент наступает, если задача закончила свою работу либо задаче понадобился некоторый сервис от операционной системы (например, ввод данных). В случае необходимости получения сервиса задача делает специальный запрос к операционной системе. По этому запросу она прерывается и переходит в состояние ожидания выполнения затребованного сервиса. Управление получает модуль операционной системы «Диспетчер задач», который запускает на выполнение очередную готовую к счету задачу. Таким образом, активной задаче позволяют выполняться, пока она сама по собственной инициативе не отдаст управление операционной системе. Этот метод требует организации системы приоритетов, позволяющей избежать ситуации, когда какая-либо задача, не осуществляющая обращения к устройствам ввода-вывода, а выполняющая длительные вычисления, будет занимать одна время центрального процессора. Поэтому, логично самые высокие приоритеты назначать задачам с активным вводом-выводом. 

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

Разделение времени.

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

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

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

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

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

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

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

Граф состояния задачи

Состояния задачи и переходы между ними.

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

В каждый данный момент времени задача может находиться в одном из следующих состояниях:

- блокирована;

- готова к счету (к продолжению выполнения);

- активна.

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

Рассмотрим возможные переходы задачи из одного состояния в другое.

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

2. Обратный переход из состояния «готова к счету» в состояние «активна» происходит в результате запуска планировщиком наиболее приоритетной задачи из очереди задач, готовых к выполнению.

3. Переход из состояния «активна» в состояние «блокирована» происходит при запросе задачей от операционной системы некоторого сервиса.

4. Переход из состояния «блокирована» в состояние «готова к счету» осуществляется, если произошло событие, которое ожидала задача.


Поделиться:



Последнее изменение этой страницы: 2019-03-22; Просмотров: 715; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.012 с.)
Главная | Случайная страница | Обратная связь