Tylko nie umieraj!

Wstecz
Dalej
Indeks

Gdyby cała kontrola nad procesem przydzielania procesora była pozostawiona Schedulerowi w takiej postaci jak do tej pory przedstawiliśmy, to łatwo zauważyć, że będzie dochodzić do zagłodzeń. W NT zagłodzeniu wątków dynamicznych między sobą przeciwdziała Menadżer Balansu. Uruchamia się on co około sekundę, jego głównym zadaniem jest optymalizacja wykorzystania pamięci ale przy okazji wywołuje funkcję ScanReadyQueue, która, zaczynając od najwyższego priorytetu, przegląda Listę Dyspozytora w poszukiwaniu wątku, który nie wykonywał się dłużej niż 3 sekundy. Jeśli taki znajdzie to zwiększa mu priorytet do 15, wydłuża kwant czasu dwukrotnie i wywołuje ReadyThread z tym wątkiem jako parametr. Po jednym wykonaniu kwantu czasu na procesorze, wartości te wracają do poprzednich.

Wróć do góry