Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Изменения возможны при обращении приложения к функции SetProcessAffinityMask или SetThreadAffinityMask



В блоке потока ядра каждого потока хранятся номера двух особых процессоров: идеального – предпочтительного для выполнения данного потока и последнего – на котором поток работал прошлый раз.

Как только поток готов к выполнению, Windows 2000 сначала пытается подключить его к простаивающему процессору. Если таких процессоров несколько, предпочтение сначала отдается идеальному процессору для данного потока, затем последнему. Действительно, процессор, на котором поток выполнялся прошлый раз, скорее всего еще хранит данные потока в своем кэше второго уровня, что в конечном итоге повышает производительность ВС.

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

Если у выбранного процессора уже есть поток, ожидающий в состоянии Standby выделения процессорного времени, и его приоритет ниже, чем у нового потока, последний вытесняет первый и становится следующим выполняемым на данном процессоре. Если к процессору уже подключен какой-то поток, Windows 2000 сравнивает приоритеты текущего и нового потока. Если приоритет текущего потока меньше, чем у нового, первый помечается как подлежащий выполнению, и Windows 2000 ставит в очередь межпроцессорное прерывание для переключения процессора с текущего потока на новый.

ПРАКТИЧЕСКИЕ И ЛАБОРАТОРНЫЕ РАБОТЫ ПО ПЛАНИРОВАНИЮ ПРОЦЕССОВ И ПОТОКОВ





Дата публикования: 2015-04-07; Прочитано: 353 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...