Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Základy operačních systémů Procesy, plánování Jakub Yaghob.

Podobné prezentace


Prezentace na téma: "Základy operačních systémů Procesy, plánování Jakub Yaghob."— Transkript prezentace:

1 Základy operačních systémů Procesy, plánování Jakub Yaghob

2 Základní pojmy Proces spuštěný program Vlákno (thread) oddělení místa vykonávání instrukcí od adresového prostoru Přerušení (interrupt) obsluha synchronní/asynchronní události

3 Procesy, vlákna - 1 proces paměť, prostředky, práva hierarchie procesů identifikace procesů (PID) vlákno uživatelský prostor jádro hybrid (m:n)

4 Procesy, vlákna - 2 ProcesVlákno Adresový prostorProgramový čítač ProstředkyRegistry CPU PrávaZásobník Signály

5 Vlákna a Linux Linux Nezná vlákna Procesy, které shodou okolností sdílí některé prostředky Speciální vlákna v jádře Ostatní (Windows, Solaris) Explicitní podpora pro vlákna

6 Stavy procesu

7 Druhy přerušení Synchronní Záměrně – instrukce TRAP (vstup do OS) Výjimky (exception)– nesprávné chování procesu Asynchronní typicky vnější událost (HW) Polling kontrola stavu zařízení (PP)

8 Obsluha přerušení OS se ujme řízení uloží se stav CPU analyzuje se přerušení vyvolá se příslušná obsluha obslouží se přerušení obnovení stavu CPU může znamenat přeplánování aplikace pokračuje

9 Plánování plánovací entita (proces/vlákno) přidělování CPU plánovacím entitám plánovač preemptivní plánování větší OS (Win NT, Unix) nepreemptivní plánování starší nebo malé OS (Win 3.1, PalmOS)

10 Cíle plánování Spravedlnost každý proces dostane CPU Efektivnost využití CPU Doba odpovědi důležité pro interaktivní uživatele Průchodnost max. počet procesů ukončených v čase Minimální režie systému

11 Kritéria plánování Vázanost procesu na CPU Vázanost procesu na I/O Proces dávkový/interaktivní Priorita Výpadky stránek Skutečný CPU čas

12 Priority četnost naplánování v čase statická nemění se v průběhu času daná důležitostí procesu/uživatele dynamická mění se s časem splnění cíle spravedlnosti priorita = statická + dynamická

13 Plánovací algoritmy - 1 FIFO nepreemptivní kdo dřív přijde, ten dřív mele

14 Plánovací algoritmy - 2 Round Robin (RR) „kruhová sýkorka“ preemptivní časové kvantum (timeslice)

15 Plánovací algoritmy - 3 Více front se zpětnou vazbou dynamicky reaguje na vázanost procesů

16 Plánování v SMP fronta CPU čekajících na připravené procesy aktivní čekání spotřebovává energii pasivní čekání speciální instrukce afinita procesů k CPU

17 Real-time Obvykle aplikace řízená událostmi Příjem událostí a stavů (např. teploty) z čidel Reakce na stavy a události vyvoláním příslušných úkolů Každý úkol (task) má svůj reálný čas na dokončení (deadline) HW prostředky obvykle předimenzovány Plánování NP-úplný problém heuristiky Hard real-time Propásnutí času dokončení znamená kritický problém Soft real-time Propásnutí času dokončení významný, ale ne kritický problém

18 Plánování ve Windows – 1 Plánovač Plánuje se na úrovni vláken Není na jednom místě, ale rozprostřen po celém jádře Vlákno se stane připraveným k běhu – vzniklo nebo se odblokovalo Vlákno přestane běžet – došel mu čas, ukončilo se, zablokovalo se Změnily se priority vláken Změnila se svázanost (affinity) s CPU Datové struktury Fronty připravených vláken pro každou prioritu 32-bitová maska priorit s neprázdnou frontou 32-bitová maska volných CPU Vybere se vlákno z nejvyšší neprázdné fronty a přidělí se mu časové kvantum

19 Plánování ve Windows – 2 Priority 16 real-time úrovní Určeno typicky pro důležitá vlákna jádra Rozsah 15 proměnlivých úrovní Normální vlákna Rozsah 1 systémová úroveň Úroveň 0 Vlákno pro nulování stránek Dynamické priority v rozsahu od základní Třídy priorit Real-time (24), High (13), Above Normal (10), Normal (8), Below Normal (6), Idle (4)

20 Plánování ve Windows – 3 Časová kvanta Na počátku vlákno má nastaveno 6 pro Workstation, 36 pro Server Při každém příchodu časovače se od kvanta odečte 3 na Workstation, 12 na Serveru Pokud je časové kvantum vyčerpáno, přeplánuje se Frekvence časovače je závislá na HAL 10ms na x86 jednoprocesoru 15ms na x86 MPS Pokud se vlákno zablokuje před příchodem časovače, odečte se 1

21 Plánování ve Windows – 4 Zvýšení (boost) priority Zvýšení vzhledem k jeho základní prioritě Vlákno běží jedno časové kvantum se zvýšenou prioritou Důvody Pří ukončení I/O operace Po ukončení čekání na synchronizační primitivum (semafor, …) Proces na popředí po ukončení čekání Vlákno s oknem po příchodu zprávy Ochrana před nenaplánováním  Každou vteřinu se kontroluje (po 16), zda neexistuje vlákno, které neběželo déle než 300 tiků

22 Plánování ve Windows – 5 Plánovací scénáře Chtěné přepnutí Typicky čekání na I/O, synchronizační primitivum Vlákno do zablokovaného stavu Vybere se další Časové kvantum se zmenší o 1 po probuzení Preempce Objevilo se připravené vlákno s vyšší prioritou Odstraněné vlákno se umístí na začátek fronty příslušné priority Vyčerpání časového kvanta Zařazen na konec své prioritní fronty

23 Plánování ve Windows – 6 Plánování na SMP Každé vlákno má dvě čísla Ideální CPU – generováno náhodně při vzniku vlákna Poslední CPU – kde naposledy běželo Kam naplánovat? Pokud je nějaký volný CPU  Ideální, poslední, aktuální, libovolný Pokud není volný CPU  Může udělat preempci?  Ideální, poslední, nejvyšší z možných  Podle priority běžícího vlákna se buď stane běžícím nebo zařazen do příslušné prioritní fronty

24 Plánování v Linuxu – 1 Složitost O(1) Bez ohledu na počet procesů v systému Výborná SMP škálovatelnost Každý CPU má vlastní frontu Zlepšená SMP afinita Seskupování procesů na CPU, balancování front Dobrý výkon pro interaktivní procesy Spravedlnost Žádný proces nestojí moc dlouho, žádný naopak nedostane příliš velký timeslice Optimalizován pro 1-2 běžící procesy Rozumně škáluje i pro více

25 Plánování v Linuxu – 2 Runqueue Pro každý CPU Dvě prioritní fronty Aktivní – procesy s nenulovým timeslice Vyčerpaní – procesy s vyčerpaným timeslice Bitová maska obsazenosti pro jednotlivé priority 140 bitů Přepočítání timeslice Při vyčerpání před přesunutím do prioritní fronty vyčerpaných Po vyčerpání všech se pouze prohodí prioritní fronta aktivních a vyčerpaných

26 Plánování v Linuxu – 3 Naplánování Nalezení první neprázdné priority v aktivní prioritní frontě pomocí bitové masky Vybere první proces z vybrané priority Priority a timeslice Počáteční statická priorita (nice) rozsah, default 0 Dynamická priorita Počítána na základě interaktivity procesu Heuristicky na základě toho, jak dlouho proces spí – vázán na I/O Úprava priority v rozsahu

27 Plánování v Linuxu – 4 Vyvažování front na SMP Volání Pokud je fronta prázdná Jednou za 1ms, když se nic neděje, jinak každých 200ms Nalezení nejdelší fronty Musí být o 25% delší než ostatní Nalezení prioritní fronty Preferována fronta vyčerpaných procesů (asi nejsou v cache) Nejvyšší priorita Nalezení procesu Neběží, není svázán s CPU Přesunut do mé fronty Opakuj předchozí dva kroky, dokud není vyváženo


Stáhnout ppt "Základy operačních systémů Procesy, plánování Jakub Yaghob."

Podobné prezentace


Reklamy Google