Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Учет квантов времени

Читайте также:
  1. I. ОБЩАЯ ХАРАКТЕРИСТИКА СМУТНОГО ВРЕМЕНИ
  2. II. РАЗРУШЕНИЕ РУССКОЙ ГОСУДАРСТВЕННОСТИ В ПЕРИОД СМУТНОГО ВРЕМЕНИ
  3. III. Развитие риторики в период Ренессанса и Нового времени
  4. V. Особенности риторики в России Нового времени
  5. Анализ использования рабочего времени. Другие оперативные данные
  6. Анализ использования фонда рабочего времени.
  7. Валютные курсы во времени
  8. Возрастные изменения чувства времени
  9. Вопрос 1. Общая характеристика философии Нового времени
  10. Вопрос 37.. - Г.Зиммель о социальном пространстве и времени.

Динамическое повышение приоритета по окончании ожидания событий и семафоров

Когда ожидание потока на событии исполнительной системы или объекте «семафор» успешно завершается (из-за вызова SetEvent, PulseEvent или ReleaseSemaphore), его приоритет повышается на 1 уровень. При­чина повышения приоритета потоков, закончивших ожидание событий или семафоров, та же, что и для потоков, ожидавших окончания операций вво­да-вывода: потокам, блокируемым на событиях, процессорное время требу­ется реже, чем остальным. Такая регулировка позволяет равномернее распре­делять процессорное время.

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

К потокам, которые пробуждаются в результате установки события вызо­вом специальных функций NtSetEventBoostPriority (используется в NtdlLdll для критических секций) и KeSetEventBoostPriority (используется для ресурсов исполнительной системы и блокировок с заталкиванием указателя) повышение приоритета применяется особым образом. Если поток с приоритетом 13 или ниже, ждущий на событии, пробуждается в результате вызова специ­альной функции, его приоритет повышается до приоритета потока, устано­вившего событие, плюс 1. Если длительность его кванта меньше 4 единиц, она приравнивается 4 единицам. Исходный приоритет восстанавливается по истечении этого кванта.


Квантование времени

{надо запомнить} Время выделяется потокам, а не процессам. И выделяется оно квантом.

Квант — это интервал процессорного времени, отведен­ный потоку для выполнения. По его окончании Windows проверяет, ожида­ет ли выполнения другой поток с таким же уровнем приоритета. Если на момент истечения кванта других потоков с тем же уровнем приоритета нет, Windows выделяет текущему потоку еще один квант.

По умолчанию в Windows 2000 Professional и Windows XP потоки выпол­няются в течение 2 интервалов таймера (clock intervals), а в системах Win­dows Server — 12. В сер­верных системах величина кванта увеличена для того, чтобы свести к мини­муму переключение контекста. Получая больший квант, серверные приложе­ния, которые пробуждаются при получении клиентского запроса, имеют больше шансов выполнить запрос и вернуться в состояние ожидания до ис­течения выделенного кванта.

Длительность интервала таймера зависит от аппаратной платформы. Например, этот интервал на большинстве од­нопроцессорных х86-систем составляет 10 мс, а на большинстве многопро­цессорных х86-систем — около 15 мс.

 

Величина кванта для каждого процесса хранится в блоке процесса ядра. Это значение используется, когда потоку предоставляется новый квант. Когда поток выполняется, его квант уменьшается по истечении каждого интервала таймера, и в конечном счете срабатывает алгоритм обработки заверше­ния кванта. Если имеется другой поток с тем же приоритетом, ожидающий выполнения, происходит переключение контекста на следующий поток в очереди готовых потоков. Заметьте: когда системный таймер прерывает процедуру обработки другого прерывания, квант выполнявшегося по­тока все равно уменьшается, даже если этот поток не успел отработать пол­ный интервал таймера.

Внутренне величина кванта хранится как число тактов таймера, умноженное на 3. То есть в Windows 2000 и Windows XP потоки по умолчанию полу­чают квант величиной 6 (2 * 3), в Windows Server — 36 (12 * 3). Всякий раз, когда возникает прерывание таймера, процедура его обработки вычитает из кванта потока постоянную величину (3).

Почему квант внутренне хранится как величина, кратная трем квантовым единицам за один такт системного таймера? Это сделано для того, чтобы можно было уменьшать значение кванта по завершении ожидания. Когда поток с текущим приоритетом ниже 16 и базовым приоритетом ниже 14 запускает функцию ожидания (WaitForSingleObject или WaitForMultipleObjects) и его запрос на доступ удовлетворяется немедленно (например, он не пере­ходит в состояние ожидания), его квант уменьшается на одну единицу. Благодаря этому кванты ожидающих потоков в конечном счете заканчиваются.

Если запрос на доступ не удовлетворяется немедленно, кванты потоков с приоритетом ниже 16 тоже уменьшаются на одну единицу. Но перед такой опе­рацией квант потока с приоритетом 14 или выше сбрасывается. Это делает­ся и для потоков с приоритетом менее 14, если они не выполняются при специально повышенном приоритете (как, например, в случае фоновых процессов или при недостаточном выделении процессорного времени) и если их приоритет повышен в результате выхода из состояния ожидания.


<== предыдущая страница | следующая страница ==>
Динамическое повышение приоритета после завершения ввода-вывода | Управление величиной кванта

Дата добавления: 2014-03-11; просмотров: 358; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.003 сек.