Czyja kolej?

Wstecz
Dalej
Indeks

Realizacja wielowątkowości polega na przydzielaniu wątkom kwantów czasu, czyli czasu procesora. W NT Server kwant czasu ma stały czas i wynosi 120 ms. W NT WorkStation długość ta jest zmienna i wynosi 20, 40 lub 60 ms.

Za decyzję o tym, który wątek w danym momencie dostanie kwant czasu odpowiada Scheduler. Jest on wywoływany gdy:

W zależności od zaistniałej sytuacji Scheduler uruchamia funkcję FindReadyThread lub ReadyThread. FindReadyThread uruchamia się gdy procesor się zwalnia i przydziela go pierwszemu wątkowi z najwyższej niepustej kolejki w "Liście Dyspozytora". Jest to lista 31 kolejek (numer = priorytet) wszystkich gotowych do wykonania wątków. Do listy tej wątki są wkładane przez funkcję ReadyThread, która jest uruchamiana gdy pojawia się nowy, gotowy do wykonania wątek. Wtedy ReadyThread porównuje priorytet tego wątku z priorytetem wątku siedzącego w procesorze i jeśli jest on równy bądź wyższy to wątek jest wyciągany z procesora i unieszczany NA POCZĄTKU odpowiedniej kolejki w Liście Dyspozytora. W przeciwnym przypadku to nowy wątek jest umieszczany NA KOŃCU odpowiedniej kolejki Listy Dyspozytora.

Wróć do góry