Počítačové sítě a operační systémy Jaromír Plhák, 23.2.2016PB169 Počítačové sítě a operační systémy Jaromír Plhák xplhak@fi.muni.cz Marek Kumpošt kumpost@fi.muni.cz PB169 Počítačové sítě a operační systémy PB169 Počítačové sítě a operační systémy Snímek 2 z 50 Organizace výuky • Přednášky – Nepovinné – Nebudou se natáčet – Prezentace budou dostupné v ISu • Ve studijních materiálech • Cvičení – Povinná • Maximálně tři neomluvené neúčasti • Očekává se aktivní práce na zadaných úkolech • Jedno pondělí odpadne (28. 3. Velikonoce) – Každý týden bude zadán domácí úkol • Bude vypsán v interaktivní osnově pro danou skupinu • Odevzdání do konce týdne PB169 Počítačové sítě a operační systémy Snímek 3 z 50 Hodnocení • Ústní zkouška – Dvě části (OS a sítě) • 10 domácích úkolů – 0-10 bodů za každý úkol – Nutné získat 75 bodů za domácí úkoly • Možné získat bonusové body za aktivitu na cvičeních i na přednášce • Dostatečná docházka a aktivita na cvičeních PB169 Počítačové sítě a operační systémy Snímek 4 z 50 Studijní materiály (1) • Prezentace k přednáškám – Interaktivní osnova k předmětu • Prezentace k předmětům – PB152 Operační systémy • Studijní materiály PB152 – PB153 Operační systémy a jejich rozhraní • Studijní materiály PB153 – PB156 Počítačové sítě • Studijní materiály PB156 PB169 Počítačové sítě a operační systémy Snímek 5 z 50 Studijní materiály (2) • Prezentace k předmětům – PA151 Soudobé počítačové sítě • Studijní materiály PA151 – PA159 Počítačové sítě a jejich aplikace I • Studijní materiály PA159 – PA160 Počítačové sítě a jejich aplikace II • Studijní materiály PA160 – PV169 Základy přenosu dat • Studijní materiály PV169 PB169 Počítačové sítě a operační systémy Snímek 6 z 50 Studijní materiály (3) • Silberschatz, Galvin, Gagne: Operating System concepts, 7th edition, Wiley, 2004, ISBN 0-471- 69466-5 – Prezentace k tomuto předmětu jsou založeny na prezentacích k této knize a jsou modifikovány. – ©Silberschatz, Galvin and Gagne, 2005 • Stallings: Local and Metropolitan Area Networks, Softcover, Prentice Hall, ISBN 0-13- 018653-8 PB169 Počítačové sítě a operační systémy Snímek 7 z 50 Počítačový systém • Hardware – CPU – Paměti – I/O • Operační systém (OS) • Aplikační a systémový SW • UživateléHW Operační systém Aplikační a systémový software UživatelA UživatelB UživatelC UživatelD PB169 Počítačové sítě a operační systémy Snímek 8 z 50 Komponenty počítačového systému PB169 Počítačové sítě a operační systémy Snímek 9 z 50 Typy počítačových systémů • Stolní systémy – Vyhrazené pro jednoho uživatele • Paralelní systémy – Sdílí operační paměť a hodinový signál, SMP, AMP • Distribuované systémy – Vlastní paměť • Real-time systémy – Pevně stanovené časové limity kdy musí systém reagovat • Kapesní systémy PB169 Počítačové sítě a operační systémy Snímek 10 z 50 Proč studovat OS? • Asi nebudete psát ani navrhovat zcela nový OS ale … – OS je nutné administrovat a efektivně využívat • Je nutné rozumět strukturám OS – Možná budete muset OS modifikovat nebo rozšiřovat (např. vytvořit nový ovladač) – Při programování budete využívat služeb OS • Ladění aplikací – Techniky používané v OS lze uplatnit i v jiných aplikacích • Složité struktury dat, souběžnost, řešení konfliktů, ... – A nebo alespoň budete OS používat a je dobré vědět, co od nich můžete čekat PB169 Počítačové sítě a operační systémy Snímek 11 z 50 Uživatelský pohled na OS (1) • Dnes používáme typicky desktopy (či přenosná zařízení) vyhrazené pro jednoho uživatele – OS navržen pro jednoduché používání, výkon systému je brán na zřetel, ovšem na využití zdrojů není kladen důraz – V současné době ale vesměs s multiprocessingem – Vesměs minimum ochran • Hlavní roli hraje uživatelova (administrátorova) zodpovědnost PB169 Počítačové sítě a operační systémy Snímek 12 z 50 Uživatelský pohled na OS (2) • Dříve často terminály • OS plní požadavky programů řady uživatelů: – Důraz na využití zdrojů počítače – Férové užívání zdrojů jednotlivými uživateli DEC VT100 terminal PB169 Počítačové sítě a operační systémy Snímek 13 z 50 Systémový pohled na OS • OS především jako správce prostředků počítače – CPU, operační paměť, disková paměť, I/O zařízení • Koordinátor, řídící složka – Řídí spouštění programů, zabraňuje chybám a vzájemnému ovlivňování PB169 Počítačové sítě a operační systémy Snímek 14 z 50 Typické oblasti služeb poskytovaných OS (1) • Vývoj programů, editory, ladící systémy, ... – Typicky poskytované pomocnými (systémovými) programy • Provádění programů – Vše co je nutné zajistit pro činnosti řízené programy – Plánování, zavádění, ovládání I/O, ... • Přístup k I/O zařízením – Jednotné API pro různá zařízení • Přístup k souborům dat na vnějších pamětech PB169 Počítačové sítě a operační systémy Snímek 15 z 50 Typické oblasti služeb poskytovaných OS (2) • Přístup k systémovým zdrojům, bezpečnost, řešení konfliktů • Chybové řízení, automatizované reakce na nestandardní stavy v hardware, v software a v případech kdy OS nemůže uspokojit požadavek aplikace • Protokolování, informace o tom co se dělo, základ pro účtování, základ pro odhady budoucího vylepšování, ... PB169 Počítačové sítě a operační systémy Snímek 16 z 50 Definice OS • Neexistuje univerzální a všeobecně platná definice OS • Stejně tak není jednotný názor na to, co všechno zahrnuje OS – Jádro, systémové a aplikační programy, ... – Def. 1: OS je to co dá výrobce do krabice – Def. 2: OS je pouze jádro • Část, která je neustále spuštěna • Raději definujeme OS tím co dělá, než tím co vlastně je • Analogie s „vládou“ PB169 Počítačové sítě a operační systémy Snímek 17 z 50 Požadavky na OS (1) • Cíle (povinnosti) OS – Řídit řešení uživatelských (aplikačních) programů – Poskytnout nástroje pro řešení problémů uživatelů (aplikací) – Učinit počítač snadněji použitelný – Vytvářet podmínky umožňující efektivně používat hardware počítače PB169 Počítačové sítě a operační systémy Snímek 18 z 50 Požadavky na OS (2) • Cíle (přání) uživatele – Služby poskytované OS lze pohodlně používat, snadno zvládnout – OS je spolehlivý, bezpečný – Požadované služby poskytuje OS pohotově • Cíle (přání) provozovatele OS – OS je snadno navrhnutelný, implementovatelný a udržovatelný – OS je přizpůsobitelný, spolehlivý a bezchybný PB169 Počítačové sítě a operační systémy Snímek 19 z 50 Vývoj OS • Za 50 let vývoje se OS značně změnily – Od jednoduchých textově zaměřených po komplexní systémy s komfortním GUI PB169 Počítačové sítě a operační systémy Snímek 20 z 50 Problémy budování OS • OS jsou obrovské systémy – V současnosti představují až stovky miliónů řádků kódu – Pracnost řádově tisíce člověko-roků • OS jsou složité systémy – Požadavky různých uživatelů se často podstatně liší – Nelze jednorázově odstranit všechny chyby, verifikace z důvodů složitosti selhává • Chování OS se obtížně předpovídá, „seřizování“/ladění se dělá vesměs odhadem PB169 Počítačové sítě a operační systémy Snímek 21 z 50 Multiprogramování (1) • V paměti je zároveň několik úloh současně – Ne však nutně všechny – Plánování úloh (job scheduling) – které úlohy umístit do paměti – Musíme zajistit ochranu úloh navzájem • Multiprogramování zvyšuje využití CPU – Přidělování CPU jednotlivým úlohám tak, aby CPU byl využit (téměř) vždy PB169 Počítačové sítě a operační systémy Snímek 22 z 50 Multiprogramování (2) • CPU je přidělen úloze, jakmile úloha požádá o I/O operaci, je úloha pozastavena a CPU dostává jiná úloha – Pro výběr úlohy, která dostane CPU musí mít CPU plánovací algoritmus – Jakmile je I/O operace dokončena, je úloha opět přemístěna do fronty úloh připravených ke spuštění – CPU je vytížen, dokud mám úlohy, které nečekají na dokončení I/O operací – Dokud úloha nepožádá o I/O operaci, tak má CPU k dispozici • Jde tedy „pouze“ o efektivnost využití CPU PB169 Počítačové sítě a operační systémy Snímek 23 z 50 Obsazení paměti • V paměti vždy jen jedna úloha • V paměti několik úloh, běží jen jedna z nich PB169 Počítačové sítě a operační systémy Snímek 24 z 50 Multitasking • Time-sharing neboli multitasking – Logické rozšíření multiprogramování, kdy úloha (dočasně) ztrácí CPU nejen požadavkem I/O operace, ale také vypršením časového limitu – CPU je multiplexován, ve skutečnosti vždy běží jen jedna úloha, mezi těmito úlohami se však CPU přepíná, takže uživatelé získají dojem, že úlohy jsou zpracovávány paralelně PB169 Počítačové sítě a operační systémy Snímek 25 z 50 Multitasking (2) • Multitaskingový systém umožňuje řadě uživatelů počítačový systém sdílet • Uživatelé mají dojem, že počítačový systém je vyhrazen jen pro ně • Oproti pouhému multiprogramování snižuje dobu odezvy (response time) interaktivních procesů • Multitaskingové systémy jsou již značně komplexní – Správa a ochrana paměti, virtuální paměť – Synchronizace a komunikace procesů – CPU plánovací algoritmy, souborové systémy PB169 Počítačové sítě a operační systémy Snímek 26 z 50 Architektura počítačového systému PB169 Počítačové sítě a operační systémy Snímek 27 z 50 Základní vlastnosti počítačového systému • I/O zařízení typicky mají vlastní vyrovnávací paměť (buffer) • CPU a I/O zařízení mohou pracovat paralelně – Např. řadič disku může ukládat data na disk a CPU může něco počítat – Pokud CPU a I/O zařízení pracují paralelně, měli by se nějak synchronizovat • Neustálé zjišťování stavu • Přerušení PB169 Počítačové sítě a operační systémy Snímek 28 z 50 Procesor bez přerušení • Neustálý cyklus loop Získej další instrukci Proveď instrukci end loop • Pokud chci provést I/O operaci a dozvědět se, že již byla dokončena, musím se periodicky ptát I/O zařízení • CPU není v těchto chvílích efektivně využit nebo je programování extrémně náročné PB169 Počítačové sítě a operační systémy Snímek 29 z 50 Procesor s přerušením (1) • Základní cyklus je obohacen o kontrolu příznaku přerušení loop Získej další instrukci Proveď instrukci Je-li nastaven příznak přerušení (a přerušení je povoleno), ulož adresu právě prováděného kódu a začni provádět kód rutiny obsluhující přerušení endloop PB169 Počítačové sítě a operační systémy Snímek 30 z 50 Procesor s přerušením (2) PB169 Počítačové sítě a operační systémy Snímek 31 z 50 Přerušení (1) • Přerušení je signál od I/O zařízení, že se stalo něco, co by OS měl zpracovat • Přerušení přichází asynchronně • OS nemusí aktivně čekat na událost – Efektivní využití CPU – Při výskytu události se automaticky volá patřičná obslužná rutina – Umístění obslužných rutin pro jednotlivé typy událostí je typicky dáno tabulkou (v paměti) adres rutin (tzv. vektor přerušení) PB169 Počítačové sítě a operační systémy Snímek 32 z 50 Přerušení (2) • Aby nedocházelo ke „ztrátě“ přerušení, je při zpracování přerušení další přerušení zakázáno (maskováno) – Aby se nepřerušovala rutina obsluhující přerušení – Časově náročnější obslužné rutiny však mohou další přerušení explicitně povolit PB169 Počítačové sítě a operační systémy Snímek 33 z 50 Přerušení (3) • Operační systém je řízený přerušeními – CPU zpracovává uživatelský proces, při příchodu přerušení je spuštěna obslužná rutina OS • Návratovou adresu ukládá procesor • Hodnoty použitých registrů ukládá ovládací rutina – Přerušení nemusí být generováno jen HW, přerušení je možné vyvolat i softwarovými prostředky • Tzv. „trap“ – jde vlastně o synchronní přerušení • Chyby – dělení nulou • Speciální instrukce (např. INT – typicky slouží k systémovému volání) PB169 Počítačové sítě a operační systémy Snímek 34 z 50 Tok řízení I/O operací bez prerušení PB169 Počítačové sítě a operační systémy Snímek 35 z 50 Tok řízení IO operací s prerušením PB169 Počítačové sítě a operační systémy Snímek 36 z 50 DMA, Direct Memory Access (1) • Způsob jak rychle přenášet data mezi I/O zařízením a pamětí • CPU nemusí přenášet data po jednom bajtu, požádá řadič o přenos celého bloku dat • CPU požádá o přenos dat, po skončení přenosu dat se o tom dozví pomocí přerušení (tj. 1 přerušení/blok dat ne 1 přerušení/bajt- slovo) • V době přenosu dat soupeří I/O řadič a CPU o přístup do paměti (oba pracují se „stejnou“ pamětí) PB169 Počítačové sítě a operační systémy Snímek 37 z 50 DMA, Direct Memory Access (2) PB169 Počítačové sítě a operační systémy Snímek 38 z 50 Ochranné funkce HW • Je-li v paměti několik procesů, nechceme, aby se procesy mohly navzájem negativně ovlivňovat – Přepisování paměti – Nespravedlivé získání času CPU – Souběžný nekoordinovaný přístup k I/O prostředkům • Proto OS musí tomuto ovlivňování zabránit – Často to však nemůže zajistit sám a potřebuje podporu HW – např. při ochraně přístupu do paměti, přístupu k I/O portům PB169 Počítačové sítě a operační systémy Snímek 39 z 50 Režimy procesoru • Běžný způsob ochrany je dvojí režim činnosti procesoru – Uživatelský režim – Privilegovaný režim • Některé instrukce je možné provést jen v privilegovaném režimu – Např. instrukce pro I/O, nastavování některých registrů (např. některé segmentové registry) • Z privilegovaného režimu do uživatelského režimu se CPU dostane speciální instrukcí, z uživatelského režimu do privilegovaného režimu se CPU dostává při zpracování přerušení PB169 Počítačové sítě a operační systémy Snímek 40 z 50 Ochrana paměti • Minimálně musíme chránit vektor přerušení a rutiny obsluhy přerušení – Jinak by bylo možné získat přístup k privilegovanému režimu procesoru • Každému procesu vyhradíme jeho paměť, jinou paměť nemůže proces používat – Ochranu zajišťuje CPU na základě registrů/tabulek nebo principů nastavených OS – Např. báze a limit – proces má přístup jen k adresám v rozsahu od (báze + 0) až po (báze + limit) – Přístup k nepovoleným adresám způsobí přerušení – to zpracovává OS a např. ukončí činnost procesu PB169 Počítačové sítě a operační systémy Snímek 41 z 50 Ochrana CPU • Jak zaručit, že vládu nad procesorem (tj. jaký kód bude CPU vykonávat) bude mít OS? • Časovač – Časovač generuje přerušení – Přerušení obsluhuje OS • Ten rozhodne co dál • Např. odebere jednomu procesu, vybere další připravený proces a ten spustí (změní kontext) – Časovač může generovat přerušení pravidelně nebo je příchod přerušení programovatelný (privilegovanou instrukcí) PB169 Počítačové sítě a operační systémy Snímek 42 z 50 Báze a limit • Jednoduché na implementaci – Dva registry, jejichž nastavování je privilegovanou operací • CPU kontroluje, zda adresy, které proces používá spadají do rozsahu daného registry • Jak řešit požadavek procesu o přidělení dalšího bloku paměti? PB169 Počítačové sítě a operační systémy Snímek 43 z 50 Komponenty OS • Správa procesů • Správa operační paměti • Správa souborů • Správa I/O zařízení • Správa sekundární paměti • Správa síťových služeb • Ochranný systém • Interpret příkazů (shell) PB169 Počítačové sítě a operační systémy Snímek 44 z 50 Systémová volání • Systémová volání tvoří rozhraní mezi uživatelským procesem a OS – Typicky jsou popsána jako instrukce assembleru a jsou uvedena v programátorském manuálu k OS – Vyšší programovací jazyky obsahují některé funkce, které odpovídají systémovým voláním (např. open, write) a dále knihovní funkce, které poskytují vyšší funkčnost a v rámci této spouští (třeba hned několik) systémových volání (např. fopen, fwrite). PB169 Počítačové sítě a operační systémy Snímek 45 z 50 Systémová volání (2) • Různé OS a různé HW platformy mívají různé způsoby jak volat služby OS a různou strukturu těchto služeb • Nicméně existují určité standardy, které usnadňují přenositelnost programového kódu – V oblasti UNIXu: POSIX – V oblasti Windows: Win32 (Windows API) • Teoreticky kód, který bude psán podle standardu, bude přeložitelný na kompatibilních platformách, v praxi však existuje celá řada verzí standardu a mnoho výjimek co je a není implementováno PB169 Počítačové sítě a operační systémy Snímek 46 z 50 Způsob předání parametrů • Registry – mov eax, 1 // Naplní registr EAX hodnotou 1 – mov ebx, eax // Zkopíruje obsah registru EAX do registru EBX – int 10h // Generuj přerušení • Zásobník – mov ax,0001h // Naplní registr ax hodnotou z paměti 0001h – push ax // Vloží ax na vrchol zásobníku – int 10h // Generuj přerušení PB169 Počítačové sítě a operační systémy Snímek 47 z 50 Příklad: Linux • Systémová volání – Standardně přes int 0x80 – Nově i přes instrukci syscall (sysenter) • Číslo systémového volání – V registru eax – V jádře 2.2 přibližně 200 volání, v jádře 2.6 přes 300 volání • Parametry systémového volání – V registrech ebx, ecx, edx, esi, edi, ebp – Kromě funkce 117 (parametrem je odkaz na strukturu) • Výsledek – Uložen v eax PB169 Počítačové sítě a operační systémy Snímek 48 z 50 Komplexita OS (1) 33 47 171 136 219 190 229 3443 0 500 1000 1500 2000 2500 3000 3500 4000 UNIX (1971) UNIX (1979) SunOS (1989) 4.3 BSD (1991) SunOS (1992) SunOS (1997) Linux (1998) NT 4.0 (1999) Počet systémových volání OS / API volání PB169 Počítačové sítě a operační systémy Snímek 49 z 50 Komplexita OS (2) • Rozsah zdrojového kódu Windows (v milionech řádků) 5 8 10 12 18 29 45 50 40 0 10 20 30 40 50 60 NT 3.1 (1993) NT 3.5 (1994) 95 (1995) NT 4.0 (1996) 98 (1998) 2000 (2000) XP (2001) Vista (2007) 7 (2009) PB169 Počítačové sítě a operační systémy Snímek 50 z 50 Distribuovaný vs. síťový OS Síťový OS • Každý počítač svůj operační systém • Uživatelé jsou si vědomi více počítačů • Mohou kopírovat soubory z jednoho počítače na druhý apod. Distribuovaný OS • Celý systém se tváří jako tradiční jednoprocesorový systém, přestože jeho jednotlivé komponenty jsou fyzicky rozmístěny na jednotlivých počítačích