Система приоритетов
Структура и содержание двухуровневой модели приоритетов Windows, ее характеристика, оценка сильных и слабых сторон. Операции, выполняемые моделями приоритетов высшего и низшего уровня. Назначение приоритетов планирования. Приоритеты потоков службы MMCSS.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 04.10.2010 |
Размер файла | 144,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Система приоритетов
Windows имеет двухуровневую модель приоритетов:
? Приоритеты высшего уровня (уровни запросов прерываний - Interrupt ReQuest Level - IRQL) управляются аппаратными и программными прерываниями.
? Приоритеты низшего уровня (приоритеты планирования) управляются планировщиком.
Уровни запросов прерываний (IRQL)
В любое время исполняющийся код будет иметь определенный уровень IRQL. Этот уровень определяет, что позволено делать коду, применяется ли к коду механизм квантования времени планировщика и каковы его взаимосвязи с другими потоками исполнения.
Наивысшие из уровней IRQL - уровни запросов прерываний устройств (Device Interrupt Request Levels - DIRQLs). Это уровни IRQL, соответствующие аппаратным Прерываниям.
Другие уровни IRQL реализованы программно.
Уровень IRQL прерывания контролирует то, когда прерывание может быть обработано. Прерывание никогда не будет обработано, пока процессор занят обработкой прерывания более высокого уровня. Уровни IRQL располагаются в порядке убывания от HIGH_LEVEL до PASSIVE_LEVEL. Уровни в подмножестве от HIGH_LEVEL до АРС_LEVEL называют повышенными (elevated IRQLs). DISPATCH__LEVEL и АРС_LEVEL, реализованы программно.
Модель приоритетов низшего уровня управляет исполнением потоков, выполняющихся на уровне IRQL PASSIVE_LEVEL. Этот уровень контролируется планировщиком (scheduler) (его также называют диспетчером - dispatcher), который планирует исполнение потоков (но не процессов). Планировщик планирует исполнение прикладных и системных потоков, используя для наблюдения и контроля исполнения потоков системные часы.
Приоритеты планирования
Каждому потоку назначается приоритет планирования. Имеется 32 уровня приоритетов планирования со значениями 0-31.
Низший приоритет планирования со значением 0 зарезервирован для потока обнуления страниц (Zero Page Thread), который выполняется в случае, когда больше нечего исполнять. Этот поток является компонентом диспетчера памяти, и его работа состоит в обнулении страниц из списка свободных страниц. Когда диспетчер памяти получает запрос на выдачу обнуленной страницы памяти, диспетчер памяти вначале попробует выделить страницу, обнуленную потоком обнуления страниц, и только если таких страниц нет, он потратит время на обнуление.
Остальные (1-31) приоритеты планирования делятся на две главных группы:
динамические приоритеты (dynamic priorities);
приоритеты реального времени (real-time priorities).
Динамические приоритеты имеют значения в диапазоне 1-15. Они названы динамическими, потому что ОС может динамически изменять приоритет потока в этом диапазоне.
Приоритеты реального времени имеют значения в диапазоне 16-31. ОС не может изменять значение приоритета потока, находящееся в этом диапазоне.
Имеется два важных отличия между динамическими приоритетами и приоритетами реального времени.
Поток с приоритетом реального времени может сохранять контроль над процессором до тех пор, пока не появится поток с большим или равным значением приоритета. Таким образом, пока выполняется поток реального времени, потоки с меньшим значением приоритета никогда не получат шанса исполниться (механизм вытесняющей многозадачности не задействован). Такой поток должен сам освободить процессор.
Однако в любом случае при появлении потока с большим или равным значением приоритета задействуется механизм вытесняющей многозадачности.
В случае потоков с динамическими приоритетами, потоки с меньшими приоритетами также не могут получить шанса на исполнение, пока готовы к исполнению потоки с большими приоритетами.
Однако в ряде случаев планировщик повышает приоритет потоков в диапазоне динамических приоритетов. Это дает возможность рано или поздно выполниться любому потоку с приоритетом в этом диапазоне.
К механизму повышения приоритетов применимы следующие утверждения:
Система никогда не меняет приоритет потоков из диапазона приоритетов реального времени.
Повышение приоритета не может вызвать его переход в диапазон приоритетов реального времени, то есть превысить значение 15.
Повышение приоритета операционной системой является временным. Каждый раз, когда поток исчерпывает отведенный ему квант времени, значение его приоритета уменьшается на единицу. Так происходит до достижения значения базового приоритета.
Операционная система не может снизить приоритет ниже уровня базового приоритета.
Повышение приоритета может происходить несколько раз подряд.
Ядро NT предоставляет функции для назначения потоку любого из 31 уровня приоритетов (кроме зарезервированного нулевого уровня). Программно назначенное потоку значение приоритета называют базовым приоритетом.
Подсистема Win32 не позволяет непосредственно назначать потоку базовое значение приоритета. Вместо этого используется комбинация двух значений:
Класс приоритета процесса, назначаемый процессу при его создании.
Относительное значение приоритета потока внутри класса приоритета процесса (относительный приоритет).
На рис. 1 показаны группы взаимосвязанных приоритетов. Максимальный (31) и минимальный (1) из возможных приоритетов определяются в Win32 как THREAD_PRIORITY_TIME_CRITICAL и THREAD_PRIORITY_IDLE соответственно.
В таблице 1 приведены все возможные классы приоритетов. По умолчанию, процесс имеет класс NORMAL_PRIORITY_CLASS, если при вызове функции CreateProcess() не было указано другого. Прикладная программа может получать / изменять класс приоритета процесса с помощью функций Win32-API GetPriorttyClass()/SetPriorityClass().
Таблица 1. Классы приоритетов
Класс приоритета |
Чтимый приоритет |
Примечание |
|
REALTIME_PRIORITY_CLASS |
24 |
||
HIGH_PRIORITY_CLASS |
13 |
||
ABOVE_NORMAL_PRIORITY_CLASS |
10 |
Только Win 2000 |
|
NORMAL_PRIORITY_CLASS |
8 |
||
BELOW_NORMAL_PRIORITY_CLASS |
6 |
Только Win 2000 |
|
IDLU_PRIORITY_CLASS |
4 |
Поток может иметь одно из 7 значений (табл. 1): 5 значений, относительных внутри каждого класса приоритетов, и 2 значения, относительных внутри диапазонов динамического приоритета и приоритетов реального времени.
Таблица 2. Относительный приоритет
Относительный приоритет |
||
THREAD_PRIORITY_TIME_CRITICAL |
15 (31) |
|
THREAD_PRIORITY_HIGHEST |
+2 |
|
THREAD_PRIORITY_ABOVE_NORMAL |
+1 |
|
THREAD_PRIORITY_NORMAL |
+0 |
|
THREAD_PRIORITY_BELOW_NORMAL |
-1 |
|
THREAD_PRIORITY_LOWEST |
-2 |
|
THREAD_PRIORITY_IDLE |
1 (16) |
Два значения, обозначающие минимальное и максимальное значение приоритета внутри диапазона динамических приоритетов и приоритетов реального времени - это THREAD_PRIORITY_IDLE и THREAD_PRIORITY_ TIME_CRITICAL. Для диапазона динамических приоритетов они обозначают базовые приоритеты 1 и 15, а для диапазона приоритетов реального времени - 16 и 31 соответственно.
Любой поток всегда создается с относительным приоритетом THREAD PRIORITY_NORMAL. Соответствующие значения базового приоритета в зависимости от класса приоритета указаны в таблице 2.
Относительный приоритет потока может быть получен / изменен с помощью WIN32 - функций GetThreadPriority()/SetThreadPriority().
Необходимо отметить, что служебные потоки ОС, производящие операции с мышью и клавиатурой, а также некоторые файловые операции, работают с приоритетом реального времени. Поэтому использование пользовательскими потоками таких приоритетов может повлиять на корректность функционирования ОС.
ОС Windows Vista содержит множество усовершенствований в области процессов и потоков, включая использование:
- счетчика циклов центрального процессора для более равномерного выделения ресурсов,
- новую службу Multimedia Class Scheduler Service (MMCSS), способствующую безошибочному воспроизведению содержимого мультимедийными приложениями.
Все версии ОС Windows NT до Windows Vista включительно выполняют подпрограммы прерывания интервального таймера примерно каждые 10 или 15 мс, в зависимости от аппаратной платформы. Данная подпрограмма обновляет статистику загрузки центрального процессора (ЦП) потоком, который ею прерван, так как если бы этот поток выполнялся весь интервал, хотя в действительности выполнение потока могло начаться перед самым завершением данного интервала. Далее поток мог формально получить ресурсы ЦП, но не получить возможности выполняться, поскольку вместо этого могли быть выполнены подпрограммы аппаратного или программного прерывания.
Подсчет времени на основе интервалов может подходить средствам диагностики, сообщающим загрузку ЦП процессами и потоками, но использование этого способа планировщиком потоков может приводить к нерациональному распределению ресурсов ЦП. По умолчанию клиентские версии ОС Windows позволяют выполнение потоков длительностью до 2 тактов (до 6 тактов на переднем плане). Однако на самом деле поток может совсем не получить времени ЦП, или же получить до 6 циклов (до 18 циклов на переднем плане), в зависимости от его поведения и прочей активности в системе.
Поток A выполняется до завершения следующего временного интервала, когда планировщик предполагает, что он выполнялся в течение всего интервала, и поэтому решает, что очередь потока A закончилась. Более того, потоку A засчитывается еще и прерывание, произошедшее во время его выполнения. На следующий интервал планировщик отдает предпочтение потоку B, который выполняется в течение полного интервала.
Рис. 1. Неравномерное выделение ресурсов потокам
В ОС Windows Vista планировщик отслеживает точное количество циклов ЦП, в течение которых выполняется поток, с помощью регистра счетчика циклов современных процессоров. Определив, сколько циклов может выполнить процессор на протяжении интервала времени, планировщик может точнее раздавать ресурсы ЦП. К тому же, планировщик ОС Windows Vista не засчитывает выполнение прерывания во время выполнения потока. Это означает, что поток в ОС Windows Vista всегда получит, по крайней мере, свою очередь выполнения, не превышающую один дополнительный временной интервал, что обеспечивает более справедливое выделение ресурсов и предсказуемое поведение приложений. На рис. 2 показана реакция ОС Windows Vista.
Рис. 2. Планирование распределения ресурсов на основе циклов в ОС Windows Vista
Пользователи ожидают от мультимедийных приложений, таких как проигрыватели аудио и видео, ровного и безошибочного воспроизведения. Однако из-за занятости ЦП другими параллельно выполняющимися приложениями, например антивирусными программами, индексированием содержимого или даже почтовым клиентом могут возникать неприятные задержки и прерывания. Для обеспечения более качественного воспроизведения в ОС Windows Vista вводится служба MMCSS, управляющая приоритетами мультимедийных потоков для выполнения процессором.
Мультимедийное приложение, например проигрыватель Windows Media, регистрируется в службе MMCSS с помощью новых функций прикладного интерфейса, отображающих его мультимедийные характеристики, которые должны совпадать с характеристиками, перечисленными по именам в следующем разделе реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\Currentversion\Multimedia\SystemProfile\Tasks
Рис. 3. Определение аудиозадачи в планировщике классов мультимедиа
Служба MMCSS, реализованная в файле % SystemRoot%\System32\Mmcss.dll и запускаемая в процессе работы узла службы (Svchost.exe), имеет поток управления приоритетами, который выполняется с приоритетом 27.
Этот поток повышает приоритет зарегистрированных потоков мультимедиа до диапазона, связанного со значением Scheduling Category раздела реестра данной задачи, как показано в табл. 3. В системе Windows приоритеты потоков от 16 и выше относятся к диапазону приоритетов реального времени, что выше приоритета любых потоков в системе (за исключением рабочих потоков диспетчера памяти, которые выполняются с приоритетом 28 или 29). Права на увеличение приоритета, необходимые для установки приоритетов потоков реального времени, есть только у учетных записей с правами администратора, например у локальной системной учетной записи, в которой выполняется служба MMCSS.
Таблица 3. Приоритеты потоков службы MMCSS
Категория планирования |
Повышенный приоритет потока |
|
Высокий |
23-26 |
|
Средний |
16-23 |
При проигрывании звукового файла проигрыватель Windows Media регистрирует потоки задачи аудио, а при проигрывании файла видео - потоки задачи воспроизведения. Служба MMCSS повышает приоритет всех потоков, заявивших о доставке потоковых данных, одновременно, когда они выполняются в процессе, которому принадлежит окно переднего плана, и если в разделе определения их задачи значение BackgroundOnly установлено в True.
Но в то время, как служба MMCSS помогает потокам мультимедиа получить необходимое время ЦП, она также гарантирует получение, по крайней мере, части процессорного времени другими процессами для обеспечения реакции системы и других приложений. Следовательно, служба MMCSS резервирует для других действий определенную часть процессорного времени, заданную в следующем разделе реестра: HKLM\Software\Microsoft\WindowsNT\Currentversion\Multimedia\SystemProfile\SystemResponsiveness.
По умолчанию это составляет 20 процентов, т.е. служба MMCSS отслеживает загрузку ЦП и не разрешает выполнение потоков с повышенным приоритетом в течение времени свыше 8 мс из 10, если ресурсы ЦП запрашиваются другими потоками. Чтобы потоки мультимедиа не мешали другим потокам в течение остальных 2 мс, планировщик понижает их приоритет до диапазона от 1 до 7.
Подобные документы
Основные функции и процессы подсистемы управления процессами. Диспетчеризация процессов (потоков). Алгоритмы планирования выполнения потоков. Назначение и разновидности приоритетов в операционных системах. Функции подсистемы управления основной памятью.
презентация [117,7 K], добавлен 20.12.2013Операция как элементарная конструкция, возвращающая некоторый результат. Таблица приоритетов операций. Правила преобразований типов: в выражениях, в присваиваниях. Логические операции и операции инкремента. Приведение целых и вещественных выражений.
лабораторная работа [33,6 K], добавлен 06.07.2009Описание разрабатываемого программного обеспечения, его структура и предъявляемые требования, аналитический обзор. Система приоритетов при разработке, проектирование интерфейса, алгоритмов и иерархии классов. Особенности реализации и внедрения системы.
дипломная работа [878,4 K], добавлен 18.11.2017Уровни и главные параметры планирования. Алгоритмы first-come, first served, round robin, shoetest-job-first. Принципы назначения приоритетов. Многоуровневые очереди, мultilevel queue. Схема миграции процессов в очередях планирования с обратной связью.
курсовая работа [93,8 K], добавлен 05.07.2013Основные понятия Proxy-сервера. Принцип сочетания централизации и децентрализации. Выбор протокола для почтового сервера. Синтез глобальных приоритетов. Описание входных и выходных данных. Основные свойства программного продукта, его назначение.
дипломная работа [1,0 M], добавлен 27.06.2012Проблема разработки математической модели сложной задачи. Построение алгоритма составления расписания занятий. Вероятность обнаружения хорошего варианта за ограниченное время. Множество всех множеств допустимых пар, поиск элементов, прогноз тупика.
реферат [42,1 K], добавлен 29.01.2010Основные характеристики систем реального времени, типы архитектур. Система приоритетов процессов (задач) и алгоритмы диспетчеризации. Понятие отказоустойчивости, причины сбоев. Отказоустойчивость в существующих системах реального времени (QNX Neutrino).
контрольная работа [428,8 K], добавлен 09.03.2013Управление процессами операционных систем. Разработка программы, моделирующей обслуживание множества вычислительных процессов в системе с 4 очередями, определяемыми значениями приоритетов. Выполнение инструкций компьютерной программы на процессоре.
контрольная работа [302,7 K], добавлен 06.08.2013Векторный анализ приоритетов пяти видов продукции, выбор из них наиболее приоритетных. Оценка производственных возможностей для составления предварительного режима работы предприятия. Анализ статистических данных по продажам, определение оптимальных цен.
курсовая работа [1,2 M], добавлен 23.03.2011Выделение подсистем на основе некоторой меры. Выбор типов шкал. Метод логического ранжирования. Построение моделей систем. Динамическая модель системы в виде сети Петри. Элементарные контуры графа системы. Расчет энтропии системы и матрицы приоритетов.
курсовая работа [1,2 M], добавлен 06.08.2013