PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 1 Zdeněk Říha Marek Kumpošt zriha@fi.muni.cz kumpost@fi.muni.cz PB169 Počítačové sítě a operační systémy PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 2 Literatura 1.Přednášky 2.PPT prezentace 3.Prezentace z PB152, PB153, PA151, PA159, PA160, PB156, PV169 4.Silberschatz, Galvin, Gagne: Operating System concepts, 7th edition, Wiley, 2004, ISBN 0-471-69466-5 PPT z PB169 jsou založeny na PPT k této knize a jsou modifikovány. © Silberschatz, Galvin and Gagne, 2005 5.Stallings: Local and Metropolitan Area Networks, Softcover, Prentice Hall, ISBN 0-13-018653-8 6. PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 3 Počítačový systém oHardware •CPU •Paměti •I/O oOperační systém oAplikační a systémový SW oUživatelé HW Operační systém Aplikační a systémový software PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 4 Uživatelský pohled na OS ¢Dnes používáme typicky desktopy vyhrazené pro jednoho uživatele lOS 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 ¢Dříve často terminály, OS plní požadavky programů řady uživatelů ldůraz na využití zdrojů počítače lférové užívání zdrojů jednotlivými uživateli l PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 5 Systémový pohled na OS ¢OS především jako správce prostředků počítače lCPU, operační paměť, disková paměť, I/O zařízení ¢Koordinátor, řídící složka lřídí spouštění programů, zabraňuje chybám a vzájemnému ovlivňování PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 6 Definice OS ¢Neexistuje universá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) lOS = to co výrobce dá do krabice lOS = jádro (tj. čá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“ PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 7 Primární cíle OS ¢Při návrhu OS jsou stanoveny podmínky/cíle, které má OS splňovat luživatelská přívětivost lefektivní využití (drahých) zdrojů lne všechny podmínky/cíle však implikují jasné způsoby návrhu/implementace (bezchybnost, spolehlivost) ¢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. PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 8 Typy počítačových systémů ¢Stolní systémy lVyhrazené pro 1 uživatele ¢Paralelní systémy lSdílí paměť a hodinový signál, SMP, AMP ¢Distribuované systémy lVlastní paměť ¢Real-time systémy lPevně stanovené časové limity ¢Kapesní systémy PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 9 Historie: multiprogramování ¢Multiprogramování zvyšuje využití CPU lpřidělování CPU jednotlivým úlohám tak, aby CPU byl využit (téměř) vždy ¢V paměti je zároveň několik úloh současně lne však nutně všechny lplánování úloh (job scheduling) – které úlohy umístit do paměti lmusíme zajistit ochranu úloh navzájem ¢CPU je přidělen úloze, jakmile úloha požádá o I/O operaci, je úloha pozastavena a CPU dostává jiná úloha lpro výběr úlohy, která dostane CPU musíme mít CPU plánovací algoritmus ljakmile je I/O operace dokončena, je úloha opět přemístěna do fronty úloh připravených ke spuštění lCPU je vytížen, dokud mám úlohy, které nečekají na dokončení I/O operací ldokud úloha nepožádá o I/O operaci, tak má CPU k dispozici ¢Jde tedy „pouze“ o efektivnost využití CPU PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 10 Historie: obsazení paměti ¢V paměti vždy jen jedna úloha ¢V paměti několik úloh, běží jen jedna z nich PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 11 Historie: multitasking ¢Time-sharing neboli multitasking lLogické 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 lCPU 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ě ¢ PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 12 Historie: 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í lspráva a ochrana paměti, virtuální paměť lsynchronizace a komunikace procesů lCPU plánovací algoritmy, souborové systémy ¢ PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 13 Architektura počítačového systému PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 14 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ě lnapř. řadič disku může ukládat data na disk a CPU může něco počítat lpokud CPU a I/O zařízení pracují paralelně, měli by se nějak synchronizovat •neustálé zjišťování stavu •interrupt ¢ PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 15 Procesor bez přerušení ¢Neustálý cyklus lloop lzískej další instrukci lproveď instrukci lend 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é PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 16 Procesor s přerušením ¢Základní cyklus je obohacen o kontrolu příznaku přerušení lloop lzískej další instrukci lproveď instrukci lje-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 obslužné rutiny lendloop ¢ PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 17 Přerušení ¢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ě lOS nemusí aktivně čekat na událost (efektivní využití CPU) lpři výskytu události se automaticky volá patřičná obslužná rutina lumí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í) ¢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) laby se nepřerušovala rutina obsluhující přerušení lčasově náročnější obslužné rutiny však mohou další přerušení explicitně povolit PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 18 Přerušení (2) ¢Operační systém je řízený přerušeními l(interrupt driven) lCPU 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 lPř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í) ¢ PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 19 DMA, Direct Memory Access ¢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í) PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 20 Ochranné funkce HW ¢Je-li v paměti několik procesů, nechceme, aby se procesy mohly navzájem negativně ovlivňovat lpřepisování paměti lnespravedlivé získání času CPU lsouběžný nekoordinovaný přístup k I/O prostředkům ¢Proto OS musí tomuto ovlivňování zabránit lč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 ¢ PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 21 Režimy procesoru ¢Běžný způsob ochrany je dvojí režim činnosti procesoru luživatelský režim lprivilegovaný režim ¢Některé instrukce je možné provést jen v privilegovaném režimu lnapř. 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í ¢ PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 22 Ochrana paměti ¢Minimálně musíme chránit vektor přerušení a rutiny obsluhy přerušení ljinak 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 lochranu zajišťuje CPU na základě registrů/tabulek nebo principů nastavených OS lnapř. báze & limit – proces má přístup jen k adresám báze + 0 až báze + limit lpřístup k nepovoleným adresám způsobí přerušení – to zpracovává OS a např. ukončí činnost procesu PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 23 Báze + limit ¢Jednoduché na implementaci ldva registry, jejichž nastavování je privilegovanou operací lCPU 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? ¢ PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 24 Ochrana CPU ¢Jak zaručit, že vládu nad procesorem (tj. jaký kód bude CPU vykonávat) bude mít OS? ¢Časovač lčasovač generuje přerušení lpřerušení obsluhuje OS •ten rozhodne co dál •např. odebere jednomu procesu, vybere další připravený proces a ten spustí (změní kontext) lčasovač může generovat přerušení pravidelně nebo je příchod přerušení programovatelný (privilegovanou instrukcí) ¢ PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 25 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) PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 26 Systémová volání ¢Systémová volání tvoří rozhraní mezi uživatelským procesem a OS ltypicky jsou popsána jako instrukce assembleru a jsou uvedena v programátorském manuálu k OS lvyšší 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). ¢ PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 27 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 lv oblasti UNIXu: POSIX lV 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 PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 28 Způsob předání parametrů ¢Registry lmov ah,01h lmov cx,2000h lint 10h ¢Zásobník lmov ax,0001h lpush ax lint 10h ¢Blok (struktura, tabulka) v paměti & pointer lmov ax,0001h lmov [tabulka1],ax lmov bx,tabulka1 lint 10h PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 29 Příklad: Linux ¢Systémová volání lstandardně přes int 0x80 lnově i přes instrukci syscall (sysenter) ¢Číslo systémového volání lv registru eax lv 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í lv registrech ebx, ecx, edx, esi, edi, ebp lkromě fce 117 (parametrem je odkaz na strukturu) ¢Výsledek luložen v eax PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 30 Příklad: Linux (2) ¢Hello world v assembleru pod Linuxem lsection .text lglobal _start lmsg db 'Hello, world!',0xa llen equ $ - msg l_start: l mov edx,len ;message length l mov ecx,msg ;message to write l mov ebx,1 ;file descriptor (stdout) l mov eax,4 ;system call number (sys_write) l int 0x80 ;call kernel l mov eax,1 ;system call number (sys_exit) l int 0x80 ;call kernel PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 31 Komplexita OS ¢Počet systémových volání OS / API volání lOS rok počet systémových volání lUNIX 1971 33 lUNIX 1979 47 lSunOS 1989 171 l4.3 BSD 1991 136 lSunOS 1992 219 lSunOS 1997 190 lLinux 1998 229 lNT 4.0 1999 3443 PB 169 Počítačové sítě a operační systémy ‹#› PB 169 Počítačové sítě a operační systémy 32 Komplexita OS (2) ¢Rozsah zdrojového kódu Windows lVerze rok miliony řádků lNT 3.1 1993 4-5 lNT 3.5 1994 7-8 l95 1995 10 lNT 4.0 1996 11-12 l98 1998 18 l2000 2000 29 lXP 2001 40 l2003 Svr 2003 50 lVista 2009 64