Управление процессами и потоками в многозадачных ОС.
Алгоритм планирования, основанный на квантовании.
Квантование – каждому потоку поочередно для выполнения предоставляется ограниченно непрерывный период процессорного времени, который называется квантом. Смена активного потока происходит, если:
1. поток завершился;
2. произошла ошибка;
3. состояние ожидания;
4. исчерпан квант времени, отведенный данному потоку.
Размер кванта времени принимается небольшим (десятки миллисекунд). Чем больше квант, тем выше вероятность завершения потока в результате первого же цикла. Квант может быть фиксированным, либо изменяться различными способами.
1) Если величина каждого последующего кванта уменьшается до некоторого заданного минимума. В этом случае преимущество получают короткие задачи, а длительные вычисления будут проводиться в фоновом режиме.
2) Каждый следующий квант больше предыдущего. Снижаются накладные расходы на переключения задач, выгодно в случае нескольких потоков, выполняемых длительное время.
В системе может быть предусмотрена возможность учета неполного использования кванта.
Алгоритм планирования, основанный на приоритетах.
Приоритет – это число, характеризующее степень привилегированности потока относительно использования ресурсов компьютера (чем выше приоритет, тем меньше времени поток проводит в очередях).
Значение приоритета включается в описатель процесса. Потоки этого процесса получают приоритет, связанный с приоритетом процесса. Приоритет может быть положительным, отрицательным, целым или дробным. Он назначается системой при создании процесса, может меняться в процессе выполнения. В разных системах наивысшему приоритету соответствует либо max, либо min его значение. Пользователь может вручную изменить значение приоритета (возможность ограничена). Если приоритеты меняются в процессе выполнения, они называются динамическими, иначе – статическими, или фиксированными.
Особенности приоритетов в WinNT.
1) По прошествию времени приоритеты потоков могут выходить за пределы диапазона. Если поток не полностью использовал свой квант, приоритет повышается, иначе – понижается.
2) Дифференцированное изменение приоритетов. Потоки, ожидающие ввода с клавиатуры, имеют более быстро возрастающий приоритет. Например, дисковые операции менее быстрые.
2 способа приоритетного планирования:
- с относительными приоритетами;
- с абсолютными приоритетами;
Общее между ними – на выполнение из очереди выбирается поток с наивысшим приоритетом.
Отличие – в моменте выбора смены потока.
Относительный приоритет означает, что активный поток выполняется до тех пор, пока он сам не освободит процессор.
“+” – минимизируется время переключения процесса.
“–” – процесс может занять процессор на долгое время.
В основном, применяется в системах пакетной обработки.
Абсолютный приоритет означает, что выполнение активного потока может быть прервано системой при появлении в очереди потока с более высоким приоритетом.
В системах с абсолютным приоритетом есть механизм срочного перевода процессора на другую задачу. Применяется в системах реального времени.
Современные ОС основываются на смешанном алгоритме планирования с использованием квантования и приоритетов.
Мультипрограммирование на основе прерываний
Назначение и типы прерываний
Прерывание возникает либо из-за внешних для данных процесса событий, либо при проявлении непредвиденных ситуаций при выполнении программы.
Прерывание процедура
Виды прерываний:
1) Внешние = аппаратные, возникают в результате действий пользователя или в результате сигналов от аппаратных устройств (сигнал завершает операции Ввода-Вывода или сигнал датчиков подключается к компьютеру). Они асинхронные по отношению к выполняемой программе (прерывание возникает между выполняемыми командами).
2) Внутренние = исключение (exception), их отличие от Внешних в том, что происходит синхронное выполнение команды при появлении аварийной ситуации какой-либо инструкции (деление на 0,ошибка защиты памяти, попытка выполнить привилегированные инструкции в пользовательском режиме).
3) Программные не является «истинными», возникает при выполнении специальной команды процессора, имитирующей прерывание INT.
Прерывание характеризуется приоритетами (степень важности).
Механизм прерываний:
Необходима аппаратная и программная поддержка.
Существует 2 способа выполнения прерываний шины:
1) Векторные (vectored);
2) Опрашиваемый (polled).
В обоих способах процессор получает информацию об уровне приоритета прерывания на шине подключения внешних устройств (PCI).
Векторное прерывание, в процессор передается информация об адресе обработчика прерывания. Устройствам использующим векторное прерывание назначается Вектор прерываний – электрический сигнал, выставляет на соответствующей шине процессора и несущий в себе информацию о закрепленном за данным устройством номере, который идентифицирует и обработчик прерываний.
По номеру вызываются соответствующие обработчики.
Вектор бывает:
1) Фиксированным (не изменяемым);
2) Конфигурирующим (аппаратные конфигурации (джамперы, переключатели и т.д.));
3) Программируемыми.
При подключении устройства выполняется регистрация вектора в системе. При получении сигнала запроса прерывания процессор не сразу обрабатывает, а выполняется специальный цикл подтверждения прерывания (устройство должно идентифицировать себя).
Опрашиваемое прерывание – процессор получает от запрашиваемого прерывание устройства только уровень приоритета прерывания. С каждым уровнем приоритета может быть связано несколько устройств и обработчиков прерывания. Чтобы процессор определил нужное устройство, он вызывает всех обработчиков прерываний для данного уровня приоритета и ждет подтверждения запроса.
Подтверждается следующими шинами: ISA, EISA, MCA, PCI.
Платформа Intel реализует смешанный механизм прерывания: до процессора обработка идет по механизму опрашивания прерываний, внутри процессора векторный.
Механизм прерываний реализует приоритезацию и маскирования прерываний. Приоритеты могут обслуживаться как Относительные и Абсолютные.
Относительные – даже если вызывается прерывание с более высоким приоритетом, обработка текущего прерывания не останавливается.
Абсолютные – при поступлении прерываний с более высоким приоритетом, процессор переходит к его обработке.
Маскирование – это сокрытие прерывания более низкого уровня по с равнению с обрабатываемым.
Последовательность действий аппаратных и программных средств по обработке прерываний:
0) Сигнал прерывании;
1) Аппаратное распознавание типа прерывания. Если прерывание данного типа в текущий момент запрещены, то продолжается выполнении текущего потока. Иначе вызывается процедура обработки прерываний, адрес которой находится в специальной таблице Операционные Системы;
2) Автоматическое сохранение некоторой части контекста прерванного потока;
3) Загрузка адреса процедур обработки прерываний в счетчик команд + автоматическая загрузка нового значения слова о состоянии машины (для привилегированного режима);
4) Временный запрет прерывания данного типа, чтобы не организовывать вложенный цикл прерываний;
5) После обработки восстановления прерываний, контекст и работа потока возобновляется (при этом частично контекст восстанавливается аппаратно по команде возврата из прерываний, а часть программы извлечением данных из стека).
Планирование и диспетчеризация процессов и потоков в многозадачных ОС.
Планирование – это работа по определению в какой момент необходимо прервать выполнение текущего активного потока и какому потоку предоставить возможность выполнятся.
Две задачи:
- определение момента времени смены текущего потока.
- выбор для выполнения из очереди готовых потоков.
Примеры реализации планирования:
- ни один поток не занимает процессор больше определенного времени
- максимально быстрое выполнение коротких задач
- преимущество при выборе процессов получают потоки интерактивных приложений.
Планирование может осуществляться:
- статически
- динамически
Динамическое планирование – решение принимается во время работы системы на основе анализа текущей ситуации.
Статическое планирование выполняется когда набор всех выполняемых задач известен заранее. (системы реального времени). Планировщик принимает решение не во время работы системы, а заранее.
Диспетчеризация – это реализация найденного в результате планирования решения, то есть непосредственное переключение процессора с одного потока на другой.
Состоит из 3 этапов:
- сохранение контекста текущего потока.
- загрузка контекста нового потока в результате планирования
- запуск потока на выполнение
Выполняется диспетчеризация аппаратно-программным способом.