Operační systémy IOS 2010/2011 Tomáš Vojnar Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, 612 66 Brno ÚÓ Ò Ö ØºÚÙØ ÖºÞ Úvod p.1/30
Tyto slajdy jsou určeny pro studenty předmětu IOS na FIT VUT. Obsahují základní popis vývoje, struktury a vlastností operačních systémů se zaměřením na systém UNIX. Předpokládají se základní znalosti programování a přehled základních pojmů z oblasti počítačů. Obsah slajdů může být v některých případech stručný, podrobnější informace jsou součástí výkladu: Velmi silně se předpokládá účast na přednáškách a doporučuje se vytvářet si poznámky. Předpokládá se také aktivní přístup ke studiu, vyhledávání informací na Internetu či v literatuře (jimiž doporučuji si případně doplnit obsah slajdů) a také praktické experimentování s GNU/Linuxem (či FreeBSD nebo podobnými UNIXovými systémy)... Úvod p.2/30
Motivace Operační systém je významnou částí prakticky všech výpočetních systémů, jež typicky zahrnují: hardware, operační systém (OS), uživatelské aplikační programy a uživatele. I pro ty, kteří se nebudou nikdy podílet na vývoji žádného OS, má studium OS velký význam: OS mají významný vliv na fungování celého výpočetního systému a znalost principů jejich fungování je tedy zapotřebí při vývoji: hardware, na kterém má běžet nějaký OS a software, který má prostřednictvím nějakého OS efektivně využívat zdroje hardware, na kterém běží což by mělo platit vždy. Úvod p.3/30
OS jsou obvykle značně komplikované systémy, jež prošly a procházejí dlouhým vývojem, při kterém: byla učiněna řada rozhodnutí ovlivňujících filozofii vývoje počítačových systémů (otevřený x uzavřený software, ovlivňování počítačového trhu na základě vlastností OS, vývoj SW v komunitách vývojářů,...), byla použita řada zajímavých algoritmů, způsobů návrhu architektury SW, metodologií a technik softwarového inženýrství apod., jež jsou inspirující i mimo oblast OS. Zapojení se do vývoje některého OS či jeho části není navíc zcela nepravděpodobné: Není např. možné dodávat nově vyvinutý hardware (rozšiřující karty apod.) bez podpory v podobě ovladačů (driverů). Pro potřeby různých aplikací (např. u vestavěných počítačových systémů) může být zapotřebí vyvinout/přizpůsobit vhodný OS. Zapojení se do vývoje některého otevřeného OS (Linux, FreeBSD, mikrojádra typu Hurd či L4,...) je značnou intelektuální výzvou a může přinést příslušné intelektuální uspokojení. Úvod p.4/30
Organizace studia Přednáška: 3h/týden principy a vlastnosti operačních systémů (UNIX obvykle jako případová studie) UNIX z uživatelského a částečně programátorského pohledu Samostatná práce: min. 2h/týden samostudium, experimenty,..., úkoly Hodnocení: projekty 30b (zápočet: min 15b tj. ne 14b, ne 13b,...) půlsem. zkouška 0b (!) semestrální zkouška 70b (minimum: 32b tj. ne 31b, ne 30b,...) celkem 100b Pro ilustraci: v loňském roce úspěšnost cca 52%. Úvod p.5/30
WWW stránky kursu: ØØÔ»»ÛÛÛº غÚÙØ ÖºÞ» ØÙ Ý»ÓÙÖ»ÁÇË»Ô٠л Zdroje informací Diskusní fóra kursu: jsou dostupná v IS FIT diskutujte! Literatura: koupit či vypůjčit (např. v knihovně FIT, ale i v jiných knihovnách). Je-li některá kniha dlouhodbě vypůjčena některému zaměstnanci, neváhejte a kontaktujte ho. Internet: vyhledávače (google,...); často jsou užitečné dokumenty typu HOWTO, FAQ,... encyklopedie: ØØÔ»»ÛÛÛºÛ Ô ºÓÖ» velmi vhodné při prvotním ověřování některých bodů z přednášek při studiu, lze pokračovat uvedenými odkazy nutné křížové ověřování. NetNews:ÓÑÔºÓ º dokumentační projekty: ØØÔ»»ÛÛÛºØÐ ÔºÓÖ»,... UNIX, Linux: programñ Ò( RTFM! ), GNU Ò Óadalší dokumentace (»Ù Ö» Ö» Ó,»Ù Ö»ÐÓ Ð» Ö» Ó),... Úvod p.6/30
Literatura [1] Silberschatz, A., Galvin, P.B., Gagne, G.: Operating Systems Concepts, 8th ed., John Wiley & Sons, 2008. (Významná část přednášek je založena na tomto textu.) [2] Tanenbaum, A.S.: Modern Operating Systems, 2nd ed., Prentice Hall, 2001. [3] Tanenbaum, A.S., Woodhull, A.S.: Operating Systems Design and Implementation, 3rd ed., Prentice Hall, 2006. [4] Raymond, E.S.: The Art Of Unix Programming, Addison-Wesley, 2003. [5] Russinovich, M., Solomon, D.: Windows Internals, 5th ed., Microsoft Press, 2009. ØØÔ»»ÛÛÛº Ø ºÓÖ» Ö»ÛÖ Ø Ò»Ø ÓÙÔ» ØÑл [6] Skočovský, L.: Principy a problémy operačního systému UNIX, 2. vydání, 2008. Uvedeny jsou pouze některé základní, zejména přehledové knihy. Existuje samozřejmě řada dalších knih, a to včetně knih specializovaných na detaily různých subsystémů operačních systémů (plánovač, správa paměti, souborové systémy, ovladače,...). Tyto knihy často vycházejí přímo ze zdrojových kódů příslušných subsystémů, které uvádějí s příslušným komentářem. ØØÔ»» ÓÓÚ ÝºÞ»Ô ÔÓ Ù¾¼¼» Úvod p.7/30
Základní pojmy Úvod p.8/30
Význam pojmu operační systém Operační systém je program, resp. kolekce programů, která vytváří spojující mezivrstvu mezi hardware výpočetního systému (jenž může být někdy virtualizován) a uživateli a jejich uživatelskými aplikačními programy. Cíle OS kombinace dvou základních, do jisté míry protichůdných cílů, jejichž poměr se volí dle situace: Maximální využití zdrojů počítače (drahé počítače, levnější pracovní síla; zejména dříve). Jednoduchost použití počítačů (levné počítače a drahá pracovní síla; dnes převažuje). Úvod p.9/30
Dvě základní role OS: Správce prostředků (pamět, procesor, periferie). Dovoluje sdílet prostředky efektivně a bezpečně. Více procesů sdílí procesor, více programů sdílí pamět, více uživatelů a souborů obsazuje diskový prostor,... Tvůrce prostředí pro uživatele a jejich aplikační programy (tzv. virtuálního počítače). Poskytuje standardní rozhraní, které zjednodušuje přenositelnost aplikací a zaučení uživatelů. Poskytuje abstrakce: Technické vybavení je složité a značně různorodé práci s ním je nutné zjednodušit. Problémy abstrakcí: menší efektivita, nepřístupné některé nízkoúrovňové operace. Příklady abstrakcí: proces a, soubor b, virtuální pamět,... a Program: předpis, návod na nějakou činnost zakódovaný vhodným způsobem (zdrojový text, binární program). Proces: činnost řízená programem. b Soubor: kolekce záznamů sloužící (primárně) jako základní jednotka pro ukládání dat na vnějších pamět ových médiích. Adresář: kolekce souborů. Úvod p.10/30
Výše uvedené není zadarmo! OS spotřebovává zdroje (pamět, čas procesoru). OS se obvykle chápe tak, že zahrnuje: jádro (kernel), systémové knihovny a utility (systémové aplikační programy), textové a/nebo grafické uživatelské rozhraní. Přesná definice, co vše OS zahrnuje, však neexistuje: Někdy bývá OS ztotožňován takřka pouze s jádrem. GNU GNU is Not UNIX: Projekt vývoje svobodného (free) OS, který zahrnuje jádro (Linux, Hurd), utility, knihovny a grafické i textové rozhraní (gcc, gdb, bash, Gnome, KDE,...) i řadu dalších programů (včetně kancelářských programů a her)... Microsoft Windows: Je či není prohlížeč Internetu či přehrávač videa nedílnou součástí OS? Úvod p.11/30
Jádro OS Jádro OS je nejnižší a nejzákladnější část OS. Zavádí se první a běží po celou dobu běhu počítačového systému (tzv. reaktivní spíše než transformační program). Navazuje přímo na hardware, příp. virtualizovaný HW, a typicky ho pro uživatele a uživatelské aplikace zcela zapouzdřuje. Běží obvykle v privilegovaném režimu. V tomto režimu lze obvykle provádět libovolné operace nad HW počítače. Za účelem oddělení a ochrany uživatelů a jejich aplikačních programů nesmí tyto mít možnost do tohoto režimu libovolně vstupovat. Nutná HW podpora v CPU. Zajišt uje nejzákladnější správu prostředků a tvorbu prostředí pro vyšší vrstvy OS a uživatelské aplikace. Úvod p.12/30
Systémové i uživatelské aplikační programy mohou explicitně žádat jádro o služby prostřednictvím systémových volání (system call). Děje se tak přímo nebo nepřímo s využitím specializovaných instrukcí (např. u x86 softwarové přerušení nebo Ë Ë ÄÄ/Ë Ë ÆÌ Ê), které způsobí kontrolovaný přechod do režimu jádra. Rozlišujeme dva typy rozhraní: Kernel Interface: přímé volání jádra specializovanou instrukcí Library Interface: volání funkcí ze systémových knihoven, které mohou (ale nemusí) vést na volání služeb jádra Applications Libraries Kernel Hardware Library Interface Kernel Interface HW Interface Úvod p.13/30
Typy jader OS Monolitická jádra: Vytváří vysokoúrovňové komplexní rozhraní s řadou služeb a abstrakcí nabízených vyšším vrstvám. Všechny moduly implementující tyto služby (správa paměti, plánování, meziprocesová komunikace, souborové systémy, podpora sít ové komunikace apod.) běží v privilegovaném režimu a jsou těsně provázané za účelem vysoké efektivity. Vylepšením koncepce monolitických jader jsou monolitická jádra s modulární strukturou: Umožňuje zavádět/odstraňovat subsystémy jádra za běhu. Např. FreeBSD či Linux (Ð ÑÓ,ÑÓ ÔÖÓ,ÖÑÑÓ,...) Úvod p.14/30
Mikrojádra: Minimalizují rozsah jádra a nabízí jednoduché rozhraní, s jednoduchými abstrakcemi a malým počtem služeb pro správu procesoru, paměti a meziprocesové komunikace. Většina služeb nabízených monolitickými jádry (včetně např. ovladačů, významných částí správy paměti či plánování) je implementována mimo mikrojádro v tzv. serverech, jež neběží v privilegovaném režimu. Příklady mikrojáder: Mach, QNX, L4 (pouhých 7 služeb oproti více než 200 u jádra 2.6 Linuxu; verze L4: Fiasco, Pistachio, sel4,...),... Výhody mikrojáder: Flexibilita možnost více současně běžících implementací různých služeb, jejich dynamické spouštění, zastavování apod. Zabezpečení servery neběží v privilegovaném režimu, chyba v nich/útok na ně neznamená ihned selhání/ovládnutí celého OS. Nevýhoda mikrojáder: vyšší režie výrazně vyšší u mikrojader 1. generace (Mach), lepší je situace u (stále experimentálních) mikrojader 2. generace (např. L4: minimalismus, optimalizace pro konkrétní architekturu), nicméně tato nevýhoda přetrvává. Úvod p.15/30
Hybridní jádra: Mikrojádra rozšířená o kód, který by mohl být implementován ve formě serveru, ale je za účelem menší režie těsněji provázán s mikrojádrem a běží v jeho režimu. Příklady: Mac OS X (Mach kombinovaný s BSD), Windows NT (a vyšší),... Exojádra: Experimentální jádra poskytující velmi nízké rozhraní zaměřené hlavně na bezpečné sdílení prostředků (a ne na tvorbu abstrakcí či standardního rozhraní). Doplněno o knihovny implementující služby jinak nabízené běžně jádrem. Příklady: Aegis, Nemesis,... Úvod p.16/30
Historie vývoje OS Je nutné znát historii, protože se opakuje... :-) První počítače: Knihovna podprogramů (například pro vstup a výstup) zárodek OS. Dávkové zpracování: důležité je vytížení stroje, jednoduchá podpora OS pro postupné provádění jednotlivých úloh seřazených operátory do dávek. Multiprogramování více úloh zpracovávaných současně: Překrývání činnosti procesoru a vstup/výstupního podsystému (vyrovnávací paměti, přerušení). Zatímco jedna úloha běží, jiná může čekat na dokončení I/O (problém: ochrana paměti, řešeno technickými prostředky). OS začíná být významnou částí programového vybavení (nevýhoda: OS zatěžuje počítač). Úvod p.17/30
Příchod levnějších počítačů: Interaktivnost, produktivita práce lidé nečekají na dokončení zpracování dávky. Stále se ještě nevyplatí každému uživateli dát počítač terminály a sdílení času: timesharing/multitasking, tj. současný běh více aplikací na jednom procesoru. Problém odezvy na vstup: preemptivní plánování úloh a. Oddělené ukládání dat uživatelů: systémy souborů. Problémy s přetížením počítače mnoha uživateli. OS řídí sdílení zdrojů: omezené použití prostředků uživatelem (priority, quota). a Nepreemptivní plánování: Procesor může být procesu odebrán, pokud požádá jádro o nějakou službu (I/O operaci, ukončení, vzdání se procesoru). Preemptivní plánování: OS může procesu odebrat procesor i proti jeho vůli (tedy i když sám nežádá o nějakou službu jádra), a to na základě příchodu přerušení při určité události (typicky při vypršení přiděleného časového kvanta, ale také dokončení I/O operace jiného procesu apod.). Úvod p.18/30
Ještě levnější počítače: Každý uživatel má svůj počítač, který musí být levný a jednoduchý (omezená pamět, chybějící ochrana paměti, jednoduchý OS na poli OS jde o návrat zpět: CP/M, MS-DOS). Další pokrok v technologiích sítě, GUI. Nové OS opět získávají vlastnosti starších systémů (propojení přes sít si opět vynucuje patřičné ochrany,...). Malé (a prozatím nepříliš výkonné) kapesní počítače s omezenými vlastnostmi OS... Úvod p.19/30
Přehled technického vybavení CPU MEMORY Procesor: řadič, ALU, registry (IP, SP), instrukce BUS Pamět : adresa, hierarchie pamětí (cache,...) I/O Periferie: disk, klávesnice, monitor, (přerušení, DMA) Sběrnice: FSB, HyperTransport, QPI, PCI, USB, IEEE1394, ATA/SATA, SCSI, SAS,... Úvod p.20/30
Klasifikace počítačů Klasifikace počítačů podle účelu: univerzální, specializované: vestavěné (řízení technologických zařízení, palubní počítače, spotřební elektronika,...), aplikačně orientované (databázové, Lisp,...), vývojové,... Klasifikace počítačů podle výkonnosti: vestavěné počítače, handheldy, mobily,..., osobní počítače (personal computer), pracovní stanice (workstation), servery, střediskové počítače (mainframe), superpočítače. Úvod p.21/30
Klasifikace OS Klasifikace OS podle účelu: univerzální (UNIX, Windows, Linux,...), specializované: real-time (QNX, RXS, RT-Linux,...), databáze, web,... (např. z/vse), mobilní zařízení (Symbian,...),... Klasifikace OS podle počtu uživatelů: jednouživatelské (CP/M, MS-DOS,...) a víceuživatelské (UNIX, Windows,...). Klasifikace OS podle počtu současně běžících úloh: jednoúlohové a víceúlohove (multitasking: ne/preemptivní). Úvod p.22/30
Příklady dnes používaných OS typ počítače mainframe superpočítače server PC real-time handheldy, mobily příklady OS MVS, z/os, VM/CMS, VM/Linux, z/vse často varianty UNIXu/Linuxu, Windows HPC UNIX, FreeBSD, WinNT/2000/XP, Linux MacOS X, Windows 98/2000/XP, Linux QNX, RT-Linux PalmOS, Symbian, Windows CE, Linux Úvod p.23/30
Implementace OS OS se obtížně programují a ladí, protože to jsou velké programové systémy, paralelní a asynchronní systémy, systémy závislé na technickém vybavení. Z výše uvedeného plyne: Jistá setrvačnost při implementaci: snaha neměnit kód, který již spolehlivě pracuje. Používání řady technik pro minimalizaci chyb, např.: inspekce zdrojového kódu (důraz na srozumitelnost!), rozsáhlé testování, podpora vývoje technik automatizované (formální) verifikace. Úvod p.24/30
Hlavní směry ve vývoji OS Pokročilé architektury (mikrojádra, hybridní jádra,...): zdůraznění výhod, minimalizace nevýhod, možnost kombinace různých, současně běžících OS,... Bezpečnost a spolehlivost. Podpora hard real-time (průmyslové procesy), soft real-time (multimédia). Multiprocessing (SMP,...). Virtualizace. Distribuované zpracování, clustery, gridy. OS kapesních počítačů (handheld), vestavěných systémů, mobilů,... Vývoj nových technik návrhu a implementace OS (podpora formální verifikace,...).... Úvod p.25/30
Základy práce s UNIXem Úvod p.26/30
Studentské počítače s UNIXem na FIT studentské UNIXové servery: eva (FreeBSD), merlin (Linux/CentOS) PC s Linuxem (CentOS): běžně na učebnách (dual boot) Přihlášení: Login: xnovak00 Password: # neopisuje se - změna: příkaz passwd... $ # prompt - vyzývací znak shellu Vzdálené přihlášení: programy/protokoly pro vzdálení přihlášení: ssh, telnet (telnet neužívat!) putty ssh klient pro Windows Úvod p.27/30
Základní příkazy Práce s adresáři a jejich obsahem: cd change directory pwd print working directory ls [-al] výpis obsahu adresáře/informace o souborech mkdir make a directory rmdir remove a directory mv přesun/přejmenování souboru/adresáře (move) cp [-r] kopie souboru/adresáře (copy) rm [-ir] smazání souboru/adresáře (remove) Úvod p.28/30
Výpis obsahu souboru: cat spojí několik souborů na std. výstup more/less výpis po stránkách head -13 FILE prvních 13 řádků tail -13 FILE posledních 13 řádků file FILE informace o typu obsahu souboru Úvod p.29/30
Speciální znaky ^C ukončení procesu na popředí ^Z pozastavení procesu na popředí (dále / ) ^S/^Q pozastavení/obnovení výpisu na obrazovku ^\ ^C a výpis core dump ^D konec vstupu ($^D ukončí shell) ^H smazání posledního znaku (backspace) ^W smazání posledního slova ^U smazání současného řádku Úvod p.30/30