
- •Самарская государственная академия путей сообщения
- •Организация вычислительных процессов в эвм и системах Арбитраж, планирование и диспетчеризация
- •Самара 2005
- •Рецензенты: к.Т.Н., доцент н.А. Локтев (нпц «Информационные и транспортные системы»);
- •1.Мультипроцессорный и мультипрограммный
- •3.Основы организации планирования
- •4.Планирование вычислительных процессов
- •6.Практические и лабораторные работы
- •1.Мультипроцессорный и мультипрограммный способы организации вычислительных процессов
- •1.1. Мультипроцессорные системы и арбитраж
- •1.2. Мультипрограммные системы
- •1.3. Гиперпотоковая организация вычислений
- •2.Процессы и потоки в вычислительных системах
- •2.1. Определение процессов, потоков и ресурсов вс
- •2.2. Состояния потоков
- •3. Основы организации планирования и диспетчеризации процессов и потоков
- •3.1. Принципы планирования процессов и потоков
- •3.2. Классификация алгоритмов планирования (вытесняющие и невытесняющие, бесприоритетные и приоритетные алгоритмы)
- •3.3. Линейные алгоритмы планирования
- •3.4.Алгоритмы планирования, основанные на квантовании
- •3.5.Алгоритмы планирования, основанные на приоритетах
- •3.6. Смешанные алгоритмы планирования
- •4. Планирование вычислительных процессов
- •4.1. Принципы планирования в системах реального времени
- •4.2.Планирование с предельными сроками
- •4.3.Частотно-монотонное планирование
- •5.Планирование в windows 2000
- •5.1. Уровни приоритетов потоков в Windows 2000
- •5.2. Особенности алгоритмов планирования в Windows 2000
- •5.3.Учет квантов и управление их величиной
- •5.4.Динамическое повышение приоритета
- •5.5.Планирование потоков в симметричных мультипроцессорных системах
- •6. Практические и лабораторные работы по планированию процессов и потоков
- •6.1. Изучение диспетчера задач и системного монитора
- •6.2. Мониторинг использования ресурсов вычислительной системы
- •Запустите системный монитор.
- •Добавьте на график различные счетчики объекта «Память» и понаблюдайте за их изменением в процессе работы вычислительной системы.
- •6.3. Учет квантов и управление их величиной
- •6.4. Изучение изменения состояния потоков при планировании
- •6.5. Изучение динамического изменения приоритета потока активного процесса
- •6.6.Изучение динамического повышения приоритета gui-потоков
- •6.7. Изучение динамического повышения приоритетов при нехватке процессорного времени
- •Библиографический список Основная литература
5.3.Учет квантов и управление их величиной
Квант – интервал процессорного времени, отведенный потоку для выполнения /11/. По его окончании Windows 2000 проверяет, готов ли к выполнению другой поток с таким же уровнем приоритета. Если на момент истечения кванта других потоков с таким же уровнем приоритета нет, Windows 2000 выделяет текущему потоку еще один квант. У каждого потока есть свое значение кванта, которое отражается полями параметра Win32PrioritySeparation. Это значение выражается не в единицах времени, а в так называемых квантовых единицах (quantum units).
По умолчанию начальная величина кванта в Windows 2000 Professional равна 6, а в Windows 2000 Server — 36. В Windows 2000 Server величина кванта увеличена для того, чтобы свести к минимуму переключение контекста. Получая больший квант, серверные приложения, которые пробуждаются при получении клиентского запроса, имеют больше шансов выполнить запрос и вернуться в состояние ожидания до истечения выделенного кванта.
Всякий раз, когда возникает прерывание таймера, процедура его обработки вычитает из кванта потока постоянную величину, равную трем квантовым единицам. Если квант закончился, инициируется обработка завершения кванта, в результате чего к процессору может быть подключен другой поток.
В Windows 2000 Professional квант по умолчанию равен двум интервалам системного таймера, а в Windows 2000 Server – двенадцати. Период таймера в большинстве однопроцессорных х86-систем равен 10 msec, а в большинстве мультипроцессорных х86-систем - 15 msec.
Относительная величина кванта (короткая или длинная) задается в реестре параметром
HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\Win32PrioritySeparation.
Этот же параметр определяет, можно ли динамически увеличивать кванты потоков (если да, то насколько), выполняемых в активном процессе. Поясним на примере, почему Windows 2000 динамически увеличивает величину кванта, а не приоритета активных потоков. Допустим, начат длительный пересчет электронной таблицы и затем произведено переключение на приложение, активно использующее процессор. Если повысить приоритет активного процесса, фоновый пересчет получит лишь очень малую часть процессорного времени. В то же время увеличение кванта для активного потока не приведет к фактическому блокированию потока пересчета — система всего лишь будет отдавать активному потоку несколько большее предпочтение. Приложение можно запустить с различными классами приоритета, использую команду start. Приоритет запущенного потока можно сменить с помощью «Диспетчера задач».
5.4.Динамическое повышение приоритета
Windows 2000 может динамически повышать значение текущего приоритета потока в одном из пяти случаев:
1.После завершения операций ввода-вывода повышается приоритет потоков, ожидавших завершения таких операций, поэтому у них становится больше шансов немедленно возобновить выполнение и обработать полученные данные. Приоритет повышается относительно базового, а не текущего уровня, после чего ему выделяется квант времени на выполнение с новым приоритетом. По истечении кванта приоритет снижается на единицу, и потоку выделяется новый квант процессорного времени. Этот процесс продолжается до тех пор, пока текущий приоритет потока не вернется к базовому уровню. Поток с более высоким приоритетом может вытеснить поток с повышенным приоритетом, но прерванный поток должен полностью отработать свой квант с повышенным приоритетом до того, как его приоритет начнет понижаться. Независимо от приращения приоритет потока не может перейти в диапазон приоритетов реального времени.
2.По окончании ожидания на каком-либо событии исполнительной системы или на семафоре приоритет потока, ожидавшего его, повышается на один уровень.
3.По окончании операции ожидания потоками активного процесса на объекте ядра функция ядра KiUnwaitThread динамически повышает его текущий приоритет. Это увеличивает отзывчивость интерактивного приложения по окончании ожидания. В результате повышаются шансы на немедленное возобновление его потока — особенно если в фоновом режиме выполняется несколько процессов с тем же базовым приоритетом.
4.При пробуждении GUI-потоков из-за операций с окнами их поток дополнительно повышается на два уровня, что также создает преимущества интерактивным приложениям.
5.При задержке из-за нехватки процессорного времени потока, готового к выполнению. Пусть, например, имеется поток с приоритетом 7, который постоянно вытесняет поток с приоритетом 4, не давая ему получить процессорное время; при этом поток с приоритетом 11 ожидает освобождения ресурса, занятого потоком с приоритетом 4. В этом случае поток с приоритетом 11 не может получить управление из-за того, что поток с приоритетом 4 не может освободить ресурс из-за нехватки процессорного времени, которое «съедает» поток с приоритетом 7. Для решения такого рода проблем диспетчер настройки баланса Windows 2000 раз в секунду сканирует очередь готовых к выполнению потоков и ищет потоки, которые находятся в состоянии Ready в течение более 300 тактов системного времени (примерно 3-4 секунды). Обнаружив такой поток, диспетчер настройки баланса повышает его приоритет до 15 и выделяет ему квант, вдвое больший обычного. По истечении этого двойного кванта приоритет потока немедленно снижается до исходного уровня. Если этот поток не успел закончить свою работу или другой поток с более высоким приоритетом готов к выполнению, то после снижения приоритета он возвращается в очередь готовых потоков. В итоге через 300 тактов системного таймера его приоритет может быть снова повышен. Для снижения потерь процессорного времени диспетчер настройки баланса сканирует не всю очередь готовых к выполнению потоков, а только первые 16 из них, при этом он запоминает, на каком потоке он остановился и в следующий раз начинает просмотр с него. Кроме того, он повышает приоритет не более чем у 10 потоков за один проход.
Динамическое повышение приоритета предназначено для оптимизации общей пропускной способности и отзывчивости системы, а также для устранения потенциально «нечестных» сценариев планирования. Однако от применения этого механизма выигрывают далеко не все приложения. Windows 2000 никогда не увеличивает приоритет потоков в диапазоне реального времени (16-31), поэтому планирование таких потоков по отношению к другим всегда предсказуемо.