1 / 27

Základy operačních systémů

Základy operačních systémů. Procesy, plánování Jakub Yaghob. 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. Procesy, vlákna - 1. proces

chanel
Download Presentation

Základy operačních systémů

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

  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 • RoundRobin (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í • 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 <-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

More Related