рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Вопрос 20. Планирование потоков в ОС Windows.

Вопрос 20. Планирование потоков в ОС Windows. - раздел Образование, Вопрос 1. Поколения операционных систем Приоритеты В Ос Windows Реализовано Вытесняющее Приоритетное Планиро...

Приоритеты

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

В системе предусмотрено 32 уровня приоритетов. Шестнадцать значений приоритетов (16-31) соответствуют группе приоритетов реального времени, пятнадцать значений (1-15) предназначены для обычных потоков, и значение 0 зарезервировано для системного потока обнуления страниц (см. рис. 8.2).

 

 

Рис. 8.2. Приоритеты потоков

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

• реального времени (REALTIME_PRIORITY_CLASS),

• высокий (HIGH_PRIORITY_CLASS),

• выше нормы (ABOVE_NORMAL_PRIORITY_CLASS),

• нормальный (NORMAL_PRIORITY_CLASS),

• ниже нормы (BELOW_NORMAL_PRIORITY_CLASS)

• и неработающий (IDLE_PRIORITY_CLASS).

Относительный приоритет потока устанавливается аналогичными параметрами функции SetThreadPriority:

Совокупность из шести классов приоритетов процессов и семи классов приоритетов потоков образует 42 возможные комбинации и позволяет сформировать так называемый базовый приоритет потока (см. таб. 8.1).

 

 

Таблица 8.1. Формирование базового приоритета потока из класса приоритета процесса и относительного приоритета потока

Приоритеты потоков

Классы приоритетов процессов Критичный ко времени Самый высокий Выше нормы Нормальный Ниже нормы Самый низкий Неработающий

Неработающий 15 6 5 4 3 2 1

Ниже нормы 15 8 7 6 5 4 1

Нормальный 15 10 9 8 7 6 1

Выше нормы 15 12 11 10 9 8 1

Высокий 15 15 14 13 12 11 1

Реального времени 31 26 25 24 23 22 16

Базовый приоритет процесса и первичного потока по умолчанию равен значению из середины диапазонов приоритетов процессов (24, 13, 10, 8, 6 или 4). Смена приоритета процесса влечет за собой смену приоритетов всех его потоков, при этом их относительные приоритеты остаются без изменений.

Приоритеты с 16 по 31 в действительности приоритетами реального времени не являются, поскольку в рамках поддержки мягкого реального времени, которая реализована в ОС Windows, никаких гарантий относительно сроков выполнения потоков не дается. Это просто более высокие приоритеты, которые зарезервированы для системных потоков и тех потоков, которым такой приоритет дает пользователь с административными правами. Тем не менее, наличие приоритетов реального времени, а также вытесняемость кода ядра, локализация страниц памяти и ряд дополнительных возможностей – все это позволяет выполнять в среде ОС Windows приложения мягкого реального времени, например, мультимедийные. Системный поток с нулевым приоритетом занимается обнулением страниц памяти. Обычные пользовательские потоки могут иметь приоритеты от 1 до 15.

Динамическое повышение приоритета

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

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

Другими примерами подобных ситуаций могут служить: пробуждение потока после состояния ожидания семафора или иного события; получение потоком доступа к оконному вводу.

Динамическое повышение приоритета решает также проблему голодания потоков, долго не получающих доступ к процессору. Обнаружив такие потоки, простаивающие в течение примерно 4 сек., система временно повышает их приоритет до 15 и дает им два кванта времени. Побочным следствием применения этой технологии может быть решение известной проблемы инверсии приоритетов. Эта проблема возникает, когда низкоприоритетный поток удерживает ресурс, блокируя высокоприоритетные потоки, претендующие на этот ресурс. Решение состоит в искусственном повышении его приоритета на некоторое время.

Динамическое повышение приоритетов призвано оптимизировать общую пропускную способность системы, однако от него выигрывают далеко не все приложения. Отключение динамического повышения приоритета можно осуществить при помощи функций SetProcessPriorityBoost и SetThreadPriorityBoost.

Прогон программы, демонстрация приоритетного планирования

#include <windows.h>

#include <stdio.h>

#include <math.h>

 

 

void Calculations()

{

int I,N=50000000;

double a,b;

for ( I = 0; i<N; i++) {

b=(double)I / (double)N;

a=sin(b);

}

}

 

DWORD WINAPI SecondThread( LPVOID lpParam )

{

 

printf(“Begin of Second Thread ”);

Calculations();

printf(“End of Second Thread ”);

 

return 0;

}

 

VOID main( VOID )

{

DWORD dwThreadId, dwThrdParam;

HANDLE hThread;

 

hThread = CreateThread(

NULL,

0,

SecondThread,

&dwThrdParam,

0,

&dwThreadId);

 

if (hThread == NULL)

{

printf(“CreateThread failed ” );

return;

}

 

SetThreadPriority(hThread, THREAD_PRIORITY_ABOVE_NORMAL);

 

SuspendThread(hThread);

getchar();

ResumeThread(hThread);

 

printf(“Begin of First Thread ”);

Calculations();

printf(“End of First Thread ”);

}

В приведенной программе два параллельных потока выполняют длительный счетный цикл (подпрограмма Calculations). Второй поток в силу более высокого приоритета выполняется раньше. Пара функций Suspend/ResumeThread (приостановка и возобновление потока) используется для фиксации начала соревнования. Если закомментировать SetThreadPriority, то можно будет увидеть, что оба потока заканчивают работу одновременно.

В качестве самостоятельного упражнения рекомендуется реализовать более гибкие сценарии планирования, например, с добавлением функций SwitchToThread (передача управления потоку), или Sleep (приостановка потока в течение заданного промежутка времени). В MSDN имеется описание множества полезных функций, связанных с планированием потоков.

Величина кванта времени

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

По умолчанию начальная величина кванта в Windows Professional равна двум интервалам таймера, а в Windows Server эта величина увеличена до 12, чтобы свести к минимуму переключение контекста. Длительность интервала таймера определяется HAL и составляет примерно 10 мс для однопроцессорных x86 систем и 15 мс – для многопроцессорных. Величину интервала системного таймера можно определить с помощью свободно распространяемой утилиты Clockres (сайт sysinternals.com).

Выбор между короткими и длинными значениями можно сделать с помощью панели «свойства» «Моего компьютера». Величина кванта задается в параметре HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation реестра.

– Конец работы –

Эта тема принадлежит разделу:

Вопрос 1. Поколения операционных систем

Первое поколение Первые ЭВМ были построены на основе электронных ламп Они не были предназначены для практических целей Одни и те же... Авторами первой вычислительной машины стали... gt Говард Айкен Howard Aiken Гарвард...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Вопрос 20. Планирование потоков в ОС Windows.

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

ОС начали использовать «дружественный» интерфейс, т.е. ОС строятся в расчете на не подготовленных или малоподготовленных пользователей.
1974 год. Intel 8080 - первый универсальный 8-разрядный центральный процессор (ОС CP/M). Начало 80-х годов. IBM , Digital Research и Билл Гейтс (Bill Gates) создают MS-DOS. 1985 г

Вопрос 2. История развития ОС Windows
• История развития В период, предшествующий появлению Windows 2000 (середина-конец 90-х г.г.), ОС Windows фактически имела две различных ветви: Windows 9х как настольная ОС и Windows NT ка

Вопрос 3. История развития ОС UNIX.
История легендарной операционной системы UNIX Середина 1960-х - начало 1970-х Bell Telephone Laboratories, подразделение американского гиганта AT&T, решает создать совершенно

Вопрос 4. Операционная система Linux, версии и производители.
В начале 1990-х начинает набирать обороты проект GNU, организованный Richard'ом Stallman'ом и со-здающий бесплатное программное обеспечение. А в это время появляется новый человек, существенно повл

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

Вопрос 7. Способы реализации процесса ввода-вывода (алгоритмы ввода вывода).
Три способа реализации процесса ввода-вывода данных (алгоритмы ввода-вывода): 1. Пользовательская программа выдает системный запрос, который ядро ОС транслирует в вызов соответствующего др

Вопрос 8. Структура компьютера Pentium. Шины компьютера.
На рис. 13 представлена архитектура компьютера Pentium. Компьютер использу

Вопрос 9. Система “Plug and Play” (“Включи и работай”). Актуальность создания и принцип работы.
При такой архитектуре компьютера (рис. 13) с почти 10 различными шинами операционная система должна уметь распознавать аппаратные средства и уметь их настраивать. Это требование привело компании In

Вопрос 10. Алгоритм начальной загрузки операционной системы
При начальной загрузке компьютера стартует система BIOS. Система BIOS начинает проверку устройств с шин ISA и PCI. Сначала она проверяет количество установленной в системе оперативной памяти, подкл

Вопрос 18. Реализация процессов в ОС Windows.
Внутреннее устройство процессов в ОС Windows В 32-разрядной версии системы у каждого процесса сеть 4-гигабаит-ное адресное пространство, в котором пользовательский код занимает нижние 2 ги

Вопрос 21. Планирование в условиях многопроцессорности.
Реентерабельность кода ядра позволяет ОС Windows поддерживать симметричные мультипроцессорные системы (процессоры идентичны). Необходимость загрузки нескольких процессоров усложняет задачу планиров

Вопрос 22. ФАЙЛОВЫЕ СИСТЕМЫ FAT И FAT32
ФАЙЛОВЫЕ СИСТЕМЫ FAT И FAT32   Файловые системы прошли долгий путь, усложняясь параллельно с развитием операционных систем и аппаратного обеспечения компьютеров. Так, использ

ФАЙЛОВАЯ СИСТЕМА HPFS
HPFS - сокращенное название высокопроизводительной файловой системы (high performance file system), совместно разработанной в 1989 году корпорациями IBM и Microsoft. Эта система была разра

Вопрос 24. Файловая система NTFS.
Файловая система NTFS (New Technology File System) была разработана еще для Windows NT 3.1, однако долго находилась в тени мейнстрима того времени — FAT, которому Microsoft в каждой новой версии «п

Вопрос 25. Файловая система ОС UNIX
Файловая система ОС Unix имеет иерархическую (древовидную) структуру. В вершинах дерева находятся каталоги (используют также термины - справочники, директории), содержащие списки файлов. Эти файлы

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги