Jak Začít?

Máš v počítači zápisky z přednášek
nebo jiné materiály ze školy?

Nahraj je na studentino.cz a získej
4 Kč za každý materiál
a 50 Kč za registraci!




05 - Procesy a vlákna - plánování

PDF
Stáhnout kompletní materiál zdarma (287.85 kB)

Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.

Windows XP

Ke změně priority se používá funkce (z Win32 API): 

BOOL SetThreadPriority (HANDLE hThread, int fdWPriority);

fdwPriority

úroveň priority vlákna

THREAD_PRIORITY_LOWEST TPP 

- 2

THREAD_PRIORITY_BELOW_NORMAL

TPP - 1

THREAD_PRIORITY_ NORMAL

TPP

THREAD_PRIORITY_ABOVE_NORMAL

TPP + 1

THREAD_PRIORITY_HIGHEST

TPP + 2

THREAD_PRIORITY_ IDLE 

1 (mimo realtime) 
16 (realtime)

THREAD_PRIORITY_TIME_CRITICAL

15 (mimo realtime)
31 (realtime)

TPP je úroveň priority odpovídající třídě priority procesu   

A7B38UOS   Úvod do operačních systémů 05 - Procesy a vlákna - plánování

Windows XP

-

dynamickým zvyšováním priority vlákna

• úroveň priority je dána kombinací třídy priority procesu a relativní priority, to je 

tzv. bázová úroveň priority

• systém může tuto úroveň priority v určitých případech dynamicky zvýšit (takto 

může reagovat na některé I/O události – vstup z klávesnice, čtení z disku, apod. 
– čekající vlákno je aktivováno a ještě je mu zvýšena priorita např. o 2); 

• po proběhnutí prvního časového kvanta je priorita snížena o 1, v dalším běhu 

opět o 1; 

• to se opakuje, dokud nedojde ke snížení priority na bázovou úroveň. 
• dynamické zvyšování úrovně se provádí u vláken s nižší bázovou prioritou, ale 

nikdy se nepřekračuje úroveň nad hodnotu 15.

• dynamicky se zvyšuje úroveň také procesům na popředí. Ve Windows NT 4.0 je 

možné dynamické zvyšování priority vyřadit pomocí funkcí
SetThreadPriorityBoost() a SetProcessPriorityBoost().

A7B38UOS   Úvod do operačních systémů 05 - Procesy a vlákna - plánování

Plánování v Linuxu - procesy

Plánovač používá

4 strategie plánování: 

SCHED_OTHER, SCHED_BATCH, SCHED_FIFO a SCHED_RR

SCHED_OTHER
Statická priorita = 0; běh řízen hodnotou nice (-20 až +19) => z ní odvozena dynamická
priorita

SCHED_BATCH
Podobná předchozí, liší se výpočtem dyn. priority, vhodná pro dlouhodobě běžící neinteraktivní procesy. 
Plánovač považuje proces za velmi vytěžující a mírně ho penalizuje. 

SCHED_FIFO
Může být použita pouze pro procesy se statickou prioritou vyšší než 0. Procesor je vždy přidělen procesu 
připravenému k běhu, který má nejvyšší statickou prioritu. Proces má procesor přidělen tak dlouho dokud 
neskončí, dokud není připraven proces s vyšší statickou prioritou nebo dokud se proces sám nevzdá
dalšího běhu voláním sched_yield(). 

Témata, do kterých materiál patří