И еще для класса Normal приведены по два приоритета, снабженные буквами В (Background) и F (Foreground). Объяснение этому дается ниже.

Таблица29.1. Классыпроцессовиприоритетыихпотоков

(для Windows2000иХР)

I IDLE_

BELOW 1 NORMAL i

ABOVE

HIGH_ 1

REALTIME_

I PRIORITY

1NORMAL_ !

PRIORITY

1 NORMAL 1 PRIORITY

1 PRIORITY

CLASS

1 PRIORITY

CLASS

i CLASS !

PRIORITY

CLASS

i CLASS i !

CLASS

THREAD_

PRIORITY^

IDLE

THREAD

PRIORITY

LOWEST

5(B) 7(F)

THREAD_

PRIORITY^

BELOW_ "

6(B) 8(F)

NORMAL

THREAD_ PRIORITY_

7(B) 9(F)

NORMAL ~

THREAD^

PRIORITY_

ABOVE_ ~

8(B) 10(F)

NORMAL

THREAD_ PRIORITY

HIGHEST

9(B) 1KF)

THREAD_

PRIORITY

TIME_

CRITICAL

Помимо базового приоритета, описываемого в этой таблице, планировщик заданий (scheduler) может назначать так называемые динамические приоритеты. Для процессов класса normal_priority_class при переключении из фонового режима в режим переднего плана и в ряде других случаев приоритет потока, с которым создано окно переднего плана, повышается. Так работают все клиентские операционные системы от Microsoft. Серверные операционные системы оптимизированы для выполнения фоновых приложений. Впрочем, Windows NT и более поздние ОС на этом ядре позволяют переключать режим оптимизации, используя переключатель Application response апплета System панели управления Windows (рис. 29.1).

К тому же Windows 2000 Professional и Windows 2000 Server имеют разные алгоритмы выделения квантов времени. Первая - клиентская - операционная система выделяет время короткими квантами переменной длины для ускорения реакции на приложения переднего плана (foreground). Для сервера же более важна стабильная работа системных служб, поэтому во второй ОС система распределяет длинные кванты постоянной длины.

Программирование в Delphi 7

Рис. 29.1. С помощью диалога Performance Options можно управлять алгоритмом назначения приоритетов

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

Операционная система имеет различные очереди готовых к выполнению потоков - для каждого уровня приоритета свой. В момент распределения нового кванта времени она просматривает очереди - от высшего приоритета к низшему. Готовый к выполнению поток, стоящий первым в очереди, получает этот квант и перемещается в хвост очереди. Поток будет исполняться всю продолжительность кванта, если не произойдет одно из двух событий:


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Ноябрь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс