Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Základy operačních systémů
Procesy, plánování Jakub Yaghob
2
Základní pojmy Proces Vlákno (thread) Přerušení (interrupt)
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 vlákno 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 Proces Vlákno Adresový prostor Programový čítač
Prostředky Registry CPU Práva Zásobník Signály
5
Vlákna a Linux Linux Ostatní (Windows, Solaris) 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í Asynchronní Polling
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 Efektivnost Doba odpovědi Průchodnost
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á dynamická
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 <16; 31> 15 proměnlivých úrovní Normální vlákna Rozsah <1; 15> 1 systémová úroveň Úroveň 0 Vlákno pro nulování stránek Dynamické priority v rozsahu <-2; 2> 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í Preempce
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) Výborná SMP škálovatelnost
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 Přepočítání timeslice 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í Priority a timeslice
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 <-20; 19>, 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 <-5; 5>
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
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.