Сценарий планирования.

1) Самостоятельное переключение потока

2) Вытеснение потоков

3) Завершение кванта времени

4) Завершение потока

 

1) Самостоятельное переключение потока. Поток может самостоятельно освободить процессор, перейдя в состояние ожидания.

WaitForSingleObject(…)

WaitForMultipleObject(…)

Подключается любой поток очереди. После завершения ожидания происходит следующее.

а) если этот поток находится в динамическом диапазоне (от 0 до 15), то квант потока уменьшается на одну квантовую единицу, что эквивалентно 1/3 таймера.

б) если это не Windows 2000 и если это поток из диапазона RealTime (16 – 31), то потоку передаётся полный квант времени.

2) Вытеснение. Поток с более низким приоритетом вытесняется потоком с более высоким приоритетом. Такая ситуация возможна в двух случаях:

а) Завершилось ожидание потока с более высоким приоритетом, то есть произошло событие, которое он ждал.

б) Приоритет потока увеличился или уменьшился.

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

3) Завершение кванта времени. Когда поток израсходует свой квант Windows снижает его динамический приоритет. Windows ставит его в конец очереди с соответствующим уровнем приоритета.

4) Завершение потока. При завершении потока ОС просматривает значение счётчика ссылок равеных 0. Регионы адресного пространства освобождаются.

TDB

ID   Счётчик ссылок   …   Код завершения