1. konzultace (5 hodin) http://www.uai.fme.vutbr.cz/~vdumek/ 28. 2. 2014 Studijní materiály najdete na adrese: http://www.uai.fme.vutbr.cz/~vdumek/
Úvodní informace konzultace – učebna A4/715 hodnocení studujícího: 2 nebo 3 ústní otázky - podmínka pro 2 otázky - vypracování literární práce na téma: Počítače v pozadí zkázy civilizace ... (forma literární práce – povídka)
Podpůrné materiály pro konzultace: Literatura Gary Nutt: Operating Systems, Third Edition. ISBN: 0201773449 William Stallings: Operating Systems: Internals and Design Principles (7th Edition, 2011) Andrew S. Tanenbaum: Operating Systems: Design and Principles (3rd Edition) Madnick, Donovan: Operační systémy. Praha 1981. Bach: Principy operačního systému UNIX. Praha 1993. Abraham Silberschatz: Operating System Concepts (7th Edition) Čada: Operační systémy. Praha 1994. Plášil: Operační systémy. Skriptum ČVUT, Praha 1989. http://www. … Podpůrné materiály pro konzultace: http://www.uai.fme.vutbr.cz/~vdumek
Souvislost hardware - software Process management Memory management I/O Control File Management Software CPU Main Memory I/O Devices Secondary Storage Hardware
Komponenty počítačového systému hardware – poskytuje základní systémové zdroje (CPU, memory, I/O devices) operační systém – řídí a koordinuje použití prostředků mezi různými procesy (programy) různých uživatelů aplikační programy – definuje způsoby použití systémových zdrojů pro řešení uživatelských programů (compilers, database systems, video games, business programs) uživatelé – lidé, stroje, jiné počítače ............... User 1 User 2 User n Data Base MS-WORD Paint Operating System Computer Hardware
Computer Components: Top-Level View - operační systém využívá HW zdroje, nabízí množinu služeb uživatelům řídí procesor(y), primární a sekundární paměť, I/O kanály procesor řídí operace počítače, provádí zpracování dat a instrukcí, pokud je jeden -> CPU (Central Processing Unit) hlavní paměť (Main Memory) slouží k ukládání programu i dat, typicky je energeticky závislá (Real Memory, Primary Memory) I/O moduly přenáší data mezi počítačem a externími zařízeními (disky, terminály, komunikační kanály, ...) systémová sběrnice (adresní, datová, řídící) slouží ke spojení procesoru a hlavní pamětí PC Program Counter IR Instruction Register MAR Memory Address Register MBR Memory Buffer Register I/O AR Input/Output Address Register I/O BR Input/Output Buffer Register
Computer Components: Top-Level View CPU Main memory PC MAR IR MBR Execution unit I/O AR Instruction Instruction Instruction I/O BR Instruction Instruction Instruction I/O module Data Data Data Data Data Data Buffers
Provádění programu Start Fetch Next Instruction Execute Instruction Fetch Stage Execute Stage Start Fetch Next Instruction Execute Instruction Halt - přesouvání mezi pamětí a registry procesoru, ukázka sečtení obsahu adresy 940 s obsahem adresy 941 a uložení výsledku na adresu 941, jsou potřeba tři instrukce a tři fáze načtení (fetch) a tři fáze provedení (execute) PC obsahuje adresu první instrukce (300), instrukce (1940) je načtena do IR a PC je inkrementován, postup v sobě zahrnuje použití MAR a MBR, které nejsou zobrazeny Step1 První 4 bity (první hexadecimální číslo) v IR indikuje, že do AC se načte z paměti obsah adresy 940 (zbývajících 12 bitů) Step2 Další instrukce (5941) je načtena do IR z adresy 301 a PC je opět inkrementován Step3 Původní obsah AC (0003) je sečten s obsahem adresy 941 (0002) a výsledek je uložen do AC Step4 Další instrukce (2941) je načtena z adresy 302 a PC je inkrementován Step5 Obsah AC (0005) je uložen na adrese 941 Step6
Provádění programu 3 + 2 = 5 Fetch Stage Execute Stage Memory CPU registers Memory CPU registers 300 PC 300 PC 1940 300 1940 301 301 AC 301 AC 5941 5941 0003 302 IR 302 IR 2941 1940 2941 1940 ... ... 940 940 0003 0003 941 0002 941 0002 Step 1 Step 2 Memory CPU registers Memory CPU registers 300 PC 300 PC 1940 301 1940 302 301 AC 301 AC 5941 0003 5941 0005 302 IR 302 IR 2941 5941 2941 5941 ... ... 940 940 0003 0003 3 + 2 = 5 941 0002 941 0002 Step 3 Step 4 Memory CPU registers Memory CPU registers 300 PC 300 PC 1940 302 1940 303 301 AC 301 AC 5941 0005 5941 0005 302 IR 302 IR 2941 2941 2941 2941 ... ... 940 940 0003 0003 941 0002 941 0005 Fetch Stage Execute Stage Step 5 Step 6
John von Neumann *1903 v Budapešti, + 1957 v USA maďarský matematik židovského původu značnou měrou přispěl k oborům kvantové fyziky, funkcionální analýzy, teorie množin, ekonomiky, informatiky, numerické analýzy, hydromechaniky a statiky od útlého věku známky geniality, jazykové nadání a neobyčejná paměť celosvětově se prosadil v roce 1928 jako spolutvůrce matematické teorie her v roce 1929 se stal spolu s Albertem Einsteinem zakládajícím členem Institut for Advanced Study v Princetonu nejvýznamnější jsou jeho objevy jako průkopníka digitálních počítačů a operační teorie kvantové mechaniky, teorie her a buňkového automatu
Von Neumannova koncepce počítače vznikla kolem roku 1945 základní moduly jsou procesor, operační paměť, vstupní a výstupní zařízení platná s vyjímkami do dnešní doby základní principy: sériové zpracování instrukcí jednotné uložení dat i programu univerzální struktura počítače (nezávislost na řešené úloze) binární prezentace údajů
Harwardská koncepce ALU paměť programu paměť dat registr instrukcí vstupy/výstupy registr instrukcí řadič paměť programu
Harwardská koncepce návrh: Howard Aiken v 30. letech 20. století na Harvardské univerzitě vývoj reléového počítače Harvard Mark 1 instrukce na děrné pásce, data na elektro-mechanických deskách použito také na Pensylvánské univerzitě pro ENIAC (Electronic Numerical Integrator and Calculator) již tehdy šlo o moderní koncepci, která nebyla realizována kvůli technickým prostředkům a proto byla použita von Neumannovská architektura později bezproblémová realizace typické oddělení paměti pro data a program (může být jiná šířka sběrnice, jiná technologie a rychlost pamětí, jiná velikost nejmenší adresovací jednotky) větší technologická náročnost vyšší rychlost provádění instrukcí (dvojí paměť umožňuje současný přístup k datům i instrukcím) typickým představitelem jsou signálové procesory od Motoroly pro zvýšení výpočetní výkonnosti se používá pipelining přímý přístup do paměti je umožněn vícenásobným kanálem DMA program nemůže přepsat sám sebe nevyužitou paměť dat nelze použít pro instrukce a obráceně
Číselné soustavy Používané číselné soustavy: dekadická (desítková) binární (dvojková) oktalová (osmičková) hexadecimální (šestnáctková) - soustavy váhové 528 = 5*102 + 2*101 + 8*100 1101B = 1*23 + 1*22 + 0*21 + 1*20 0574 = 5*82 + 7*81 + 4*80 1AB5H = 1*163 + 10*162 + 11*161 + 5*160 - lepší orientace v binárních zápisech, hexadecimální vyjadřování - vzájemné převody
Sběrnice osobních počítačů řídící, datová, adresní, šířka, rychlost ISA (Industry Standard Architecture, IBM, 1984), data 16 bitů adresa 24 bitů, 8 MHz => 5 MB/s, známá technická specifikace, vnášela omezení při komunikaci s periferiemi MCA (Microchanel, IBM, 1987), šířka 32 bitů, 10 MHz, má dvojnásobný počet adresních vodičů => 6x rychlejší než ISA, špatná marketingová strategie, není kompatibilní s ISA EISA (Compaq, 1986), 32 bitů, kompatibilní k ISA, 5x dražší Local Bus - zachovává ISA, lokální spojení procesoru a paměti, 50 MHz, 130 MB/s, omezení počtu periferií PCI (Peripherals Component Interconnect, IBM, 1992), 64 bitů, 132 MB/s, 84 pinů, bus mastering, sdílení IRQ, PCI-X 150 pinů (1.0, 2.0, 266 MHz, 2,1 GB/s, 533 MHz, 4,2 GB/s) AGP (Accelerated Graphics Port), pro graf. kartu 528 MB/s, 4x 108 pinů, 100 MHz, 8x – výkon 2GB/s USB sériová polyfunkční sběrnice, 3.0 4 800 MB/s FireWire (50 MB/s), RS-485, I2C až 32 nízkorychlostních periferií
PCI Express PCI-Express, PCIe (známá i jako 3GIO, PCI-E), náhrada PCI, PCI-X a AGP komunikace probíhá pomocí paketů sériově, umožňuje to zvyšovat frekvenci, nejsou potíže se synchronizací původní návrh přinesla skupina AWG (Arapaho Work Group), konečný standard z dílny Dell, IBM a HP možnost „hot-plug“ (výměna za provozu) existují verze 1, 2 a 3 (PCIe v. 2.0 1x 500 MB/s jednosměrně, 4x, 8x a 16x (2 GB/s, 4 GB/s a 8 GB/s)) není dost rychlá pro použití jako paměťová sběrnice verze jsou kompatibilní
PCI Express
Sběrnice procesoru - FSB (Front Side Bus) je fyzická obousměrná datová sběrnice, která přenáší veškeré informace mezi procesorem a severním můstkem některé procesory mají L2 nebo L3 vyrovnávací paměti, které jsou k procesoru připojeny přes BSB. Tato sběrnice a vyrovnávací paměť se připojují rychleji než přístup do paměti přes FSB šířka pásma FSB je dána šířkou sběrnice a kmitočtem (1600 MB/s) čipset je spojovacím bodem pro všechny ostatní sběrnice v systému (PCI, AGP, paměť) pomalá FSB může zpomalovat rychlý procesor (procesor čeká na data z paměti) frekvence, se kterou procesor pracuje, je určena použitím násobičky kmitočtu FSB (550 MHz – CPU, 100 MHz – FSB, multiplier – 5,5x) frekvence FSB bývá stovky MHz
Sběrnice procesoru CPU Northbridge Southbridge Clock Generator Graphics card slot Front Side Bus Chipset Memory Slots High-speed graphics Bus AGP or PCIX Northbridge Memory Bus (memory controller hub) Internal Bus PCI Bus Southbridge Onboard graphics controler PCI Bus IDE SATA USB Ethernet Audio CMOS I/O controller hub) Cables and ports leading off-board PCI Slots Low Pin Count Bus Super I/O Serial Port Parallel Port Floppy Disk Keyboard Mouse Flash ROM (BIOS)
Registry procesoru - registr (viditelné pro uživatele (minimalizace potřeby paměti, využívání všech dostupných registrů, znalost instrukcí assembleru, ...), řídící a stavové (control) (používání při privilegovaných přístupech, ...)) kompatibilita procesorů uživatelské – pro data, pro adresy (index, segment, stack) řídící a stavové – PC (Program Counter), IR (Instruction Register), PSW (Program Status Word) AH, AL střadač, akumulátor BH, BL bázový registr CH, CL čítač DH, DL datový registr SP stack pointer BP base pointer SI source index DI destination index CS code segment DS data segment SS stack segment ES extra segment FLAGS registr příznaků IP instruction pointer
Přerušení Přerušení (Interrupt) je schopnost procesoru přerušit právě vykonávaný program a začít vykonávat program jiný (obsluha přerušení), začalo se implementovat z důvodu obsluhy periferií (procesor nemusí čekat ve smyčce na pomalé zařízení), dnes je využito při přepínání procesů - technickými prostředky (vnější), instrukcí INTR nemaskovatelná maskovatelná - programově (vnitřní) instrukcí INT n, chybou při běhu programu PIC 8259A 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - sled činností: uloží se FLAGS vynulují se IF, TF CS do zásobníku do CS obsah hodnoty přerušení IP do zásobníku (neprovedená instrukce) do IP obsah hodnoty přerušení - přerušení se uplatní po provedení instrukce - návrat instrukcí IRET
IRQ Levels (Interrupt Request) Typ signálu přerušení, které lze maskovat (bit IF – Interrupt Enable Flag v příznakovém registru nastaven na 0), potom se přerušení generované signálem INTR neprovede IRQ0 - systémový časovač IRQ8 – hodiny reálného času IRQ1 - řadič klávesnice IRQ9 – available, NIC, SCSI IRQ2 - sekundární PIC IRQ10 – available, NIC, SCSI IRQ3 - COM2, COM4 IRQ11 – available, NIC, SCSI IRQ4 - COM1, COM3 IRQ12 – myš, PS/2 IRQ5 - LPT2 (zvuková karta) IRQ13 – floating point unit IRQ6 - řadič disket IRQ14 – ATA (CD ROM, HD) IRQ7 - LPT1 (zvuková karta) IRQ15 - ATA
Vyvolání přerušení po instrukci N Návrat z přerušení T-M Zásobník T-M Zásobník N+1 Program counter N+1 Y+L+1 T T General registers Y Y Start Start Přerušovací rutina Stack pointer Přerušovací rutina T T-M Y+L Y+L Return Return Processor Processor T-M T Vyvolání přerušení po instrukci N N N Uživatelský program Uživatelský program N+1 N+1 Návrat z přerušení Main memory Main memory
. . . . . . . . . Instrukční cyklus s přerušením START HALT 1 2 i i+1 USER PROGRAM INTERRUPT HANDLER 1 2 . . . . . . i i+1 . . . Interrupt disabled M CHECK FOR INTERRUPT INITIATE INTERRUPT HANDLER START FETCH NEXT INSTRUCTION EXECUTE INSTRUCTION Interrupt enabled HALT
Je možné zavádět prioritní obsluhu přerušení Obsluha přerušení Je možné zavádět prioritní obsluhu přerušení Sekvenční způsob Vnořený způsob
Comunication interrupt Časování při vícenásobném přerušení Interrupt occurs = 10 Interrupt occurs = 15 t=0 t=15 5 2 t=10 Comunication interrupt service routine t=25 Interrupt occurs = 20 t=25 4 t=40 User program Printer interrupt service routine t=35 Disk interrupt service routine
Důležité vztahy mezi tématy Process description and control Scheduling Memory management Concurrency I/O management File management Networking Security
Vytváření programu Idea Algorithm Files Source Program Binary Program Execution Engine Status Stack Algorithm Files Source Program Binary Program Data Other Resources Process
Vytváření programu Algoritmus determinovanost rezultativnost hromadnost efektivnost analýza editace překlad sestavení spuštění
Operační systémy Cíle: použití počítače je pohodlnější a výhodnější, čerpání systémových zdrojů je účinnější, schopnost vývoje (testování, nové funkce, ...) Funkce: vytváření programů (editor, debugger), spouštění programů, přístup na I/O, přístup k souborům, přístup a ochrana systémových zdrojů, detekce chyb, evidence Charakteristiky: souběžnost, sdílení (cena, sdílená data, vytváření dalších úloh, odstranění redundance), determinovanost (stejné výsledky ze stejných dat a kdykoliv), výkonnost (střední čas mezi procesy, čas odezvy, čas obrátky, využití zdrojů, ...), spolehlivost, udržovatelnost, velikost
Definice operačního systému program, který je prostředníkem mezi uživatelem a technickým vybavením účelem OS je poskytovat uživateli prostředí pro spouštění programů základní část téměř všech počítačových systémů správce prostředků (řídí, alokuje, odebírá) – Resource Manager řídí provádění uživatelských programů a I/O operací – Control Program program, který vždy běží - Kernel
Provádění vnořených procedur 4000 Main program CALL Proc1 4100 4101 4500 CALL Proc2 Procedura Proc1 4600 4601 CALL Proc2 4650 4651 RETURN 4800 Procedura Proc2 4601 4651 4101 4101 4101 4101 4101 RETURN . . . . . . .
Zásobník - struktura LIFO v operační paměti Dno zásobníku SS:0A1A SS:0A1A 0A18 AA01 0A16 11AA 0A14 3C00 Vrchol zásobníku SS:0A14 0A12 - struktura LIFO v operační paměti - instrukce PUSH (vložení), POP (výběr) - výběr řídí registr SP (Stack Pointer) - kapacita zásobníku na programátorovi - používá INT, přerušovací systém, volání podprogramu
Typická organizace zásobníku Stack limit pouze jeden element může být dosažen, jedná se o poslední vkládaný záznam – vrchol zásobníku parametry zásobníku (počáteční adresa, velikost, limit, ...) jsou variabilní Stack Pointer – obsahuje sdresu vrcholu zásobníku, adresa je inkrementována nebo dekrementována operacemi PUSH a POP Stack Base – obsahuje počátek zásobníku ve vyhrazené oblasti Stack Limit – obsahuje adresu povoleného vrcholu zásobníku, každá operace PUSH za touto hodnotou vyvolá chybové hlášení Stack pointer Free Blok rezervovaný pro zásobník Stack base In use
proces P zavolal proces Q Růst zásobníku při dvou procedurách Top of stack pointer y2 y1 Return adress Current frame pointer Q: Previous frame pointer Top of stack pointer x2 x2 x1 x1 Return adress Return adress Current frame pointer P: P: Previous frame pointer Previous frame pointer aktivní proces P proces P zavolal proces Q
Direct Memory Access DMA - Direct Memory Access, některá zařízení mají možnost přistupovat k paměťovým přenosům dat bez účasti procesoru, při přenosu mezi pamětí a zařízením by byla velká režie, u blokových přenosů se nepřizpůsobuje rychlost – pouze u paměti, jedna adresová sběrnice – nelze použít adresaci dvou míst současně, specializovaný obvod – řadič DMA, jednoúčelové zařízení s 8 kanály u současných počítačů
Multiprogramování Paměťová hierarchie procesor provádí více programů (procesů) „současně“ pořadí provádění programů záleží na jejich prioritě, je modifikováno čekáním na nějakou událost (I/O operace) po přerušení se nemusí pokračovat v programu, který se prováděl před přerušením Paměťová hierarchie - rychlejší přístup – dražší bit větší kapacita – levnější bit větší kapacita – pomalejší přístup
Hierarchie pamětí Pokud se postupuje hierarchií dolů: Magnetická páska Optický disk Magnetický disk Elektronický disk Operační paměť Cache Registr zvyšuje se frekvence přístupů levnější, větší kapacity, pomalejší přístup Pokud se postupuje hierarchií dolů: - klesá cena bitu - zvyšuje se kapacita - zvyšuje se doba přístupu - klesá frekvence přístupů z procesoru do paměti rychlejší přístup, větší kapacita = dražší bit, větší kapacita = pomalejší přístup velkokapacitní paměti – dlouhá doba přístupu, rychlé paměti – menší kapacita
Cache paměť CPU Word Transfer - drahá a velmi rychlá paměť Main memory Cache CPU Block Transfer Word Transfer - drahá a velmi rychlá paměť - kontakt s pomalejší a větší hlavní pamětí - OS a uživatelské procesy ji nevidí - je v interakci s HW správy paměti (MMU) - hledání odkazovaného slova v cache při neúspěchu přesun dalšího bloku dat prostorová lokalita
Režimy práce procesoru většina procesorů podporuje nejméně dva režimy zpracování instrukcí, zpracování spojené s uživatelským programem (user mode), zpracování spojené s operačním systémem (system mode, control mode, kernel mode) je potřeba oddělit manipulaci se systémovými daty a uživatelskými daty oddělení není nezbytné, ale z hlediska bezpečnosti velice žádoucí režim je indikován na procesoru typicky pomocí jednoho bitu
Flynnova klasifikace systémů Michael J. Flynn (Stanford University,1966) třídí paralelní systémy z hlediska počtu toků instrukcí a počtu toků dat, příliš hrubé rozdělení, přesto rozšířené, rychlé přežívání, rozlišuje čtyři základní kategorie počítačových architektur: SISD (Single Instruction Single Data) jednoprocesorový počítač zpracovávající jeden tok dat, data v jedné paměti (von Neumann) SIMD (Single Instruction Multiple Data) počítač používající větší počet funkčních jednotek (procesorů), všechny procesory vykonávají současně stejnou operaci na různých datech, maticové počítače, vektorové počítače MISD (Multiple Instruction Single Data) hypotetická kombinace několika programů zpracovávajících jeden tok dat, takový princip se zatím nepoužívá a je někdy nesprávně zaměňován se systémem se zřetězeným zpracováním instrukcí (pipelining), u zřetězeného zpracování instrukcí je aktivní vždy pouze jeden program, kategorie počítačů, která není v praxi příliš běžná, posloupnost dat je přenášena k množině procesorů, lze sem zařadit některé speciální systémy, jako jsou systolická pole nebo neuronové sítě, implementováno zřídka MIMD (Multiple Instruction Multiple Data) obecný typ paralelního systému, který obsahuje jednotky již tak samostatné, že každá z nich plní samostatný program a přitom zpracovávají jiná data, nejčastější typ paralelizace, multiprocesorový systém, v němž je každý procesor řízen samostatným programem a pracuje nad svými daty, multiprocesorový systém – těsná vazba, distribuovaný systém – volně vázaný systém
Vrstvy počítačového systému Computer hardware Operating system Utilites Application programs End user Programmer Operating system designer
OS jako Resource Manager Computer System I/O Devices I/O Controler Operating System Software I/O Controler Programs & Data Storage I/O Controler Operating System Software Processor Processor Programs & Data
Obecné poznatky o operačních systémech Rozdělení operačních systémů: podle počtu úloh: jednoúlohové, multitaskové podle počtu uživatelů: jednouživatelské, víceuživatelské podle účelu použití: univerzální (nespecializované), specializované (RT- systémy, mívají zvláštní požadavky na řízení periferií, na interface s uživatelem, ...), databázové systémy, síťové operační systémy Obecná struktura OS: * řídící program (kernel, executive) * příkazový procesor (command processor) * řídící V/V programy * obsluha souborů * pomocné programy (utilities)
Obecné poznatky o operačních systémech OS je správcem prostředků (zdrojů). Řídí běh ostatních procesů (předává a bere řízení), vlastní jednotlivé systémové zdroje (přiděluje je a odebírá jednotlivýn procesům), zajišťuje rozhraní mezi uživatelem a HW, unifikuje detaily o HW pro procesy a uživatele (spravuje detaily HW ve vlastní režii). Operační systém je program, který funguje jako prostředník mezi uživatelem a hardware počítačového systému. Vytváří prostředí pro spouštění programů uživatele. Hlavním cílem je zabezpečení pohodlného přístupu uživatelů k programům a efektivní využívání technického vybavení. Podle odborné definice je OS pouze program, který běží neustále na počítači, tzv. výkonné jádro (kernel) operačního systému. Podle širší definice patří k OS i editory, kompilátory, GUI, atd. Ve formě virtuálního počítače OS skrývá detaily ovládání jednotlivých zařízení (zajišťuje transparentnost), definuje standardní rozhraní pro volání systémových služeb. diskové, specifické postupy při vývoji, assembler versus vyšší programovací jazyky, výsadní postavení jazyka C, vrstvená struktura s jednostranným tokem, krátké zdrojové texty pro snadnější ladění, objektový způsob přinesl možnost snadnější modifikace a rozšiřování, využití dědičnosti pro zvýšení flexibility
Vrstvy operačního systému operace přístupu k souboru, otevírání, zavírání, přesuny, ochrana, umístění, stav, ... „Holý počítač“ Přidělování procesoru Přidělování paměti Přidělování I/O Systém souborů stav periferií, stav kanálů a řídících jednotek, sdílení, přiřazení, efektivní přiřazování stav paměti, její využití, rozsah a doba přidělení, vlastník, uvolňování a vracení stav procesoru a procesů, plánování úloh, dispečer, plánovač úloh, vypršení limitu HW počítače
Moderní operační systémy nikoliv pouhá modifikace stávajících vlastností OS a jejich rozšiřování, zcela nová organizace, byly vytvořeny jak experimentální, tak komerčně využívané OS, pozornost zaměřena na oblasti: mikrokernelová architektura ve stávajících OS jednolitý kernel, ten prováděl většinu funkcí (plánováni, souborový systém, síťové služby, řízení paměti, ovladače zařízení, ...), byl implementován jako samostatný proces, jeden adresní prostor, mikrokernel si ponechává pouze některé funkce, zbytek je realizován samostatnými procesy (servery), ty běží v uživatelském módu, větší flexibilita, vhodné pro distribuované prostředí multithreading proces je prováděn pomocí více vláken, vlákno (sled, thread) je systémový objekt, který vzniká v rámci procesu, je viditelný pouze uvnitř procesu, výkonná jednotka procesu, charakterizován svým stavem, společné systémové prostředky (paměť, soubory, globální proměnné, …), vlastní zásobník, přiděluje se jim procesor, proces je systémový objekt charakterizovaný svým paměťovým prostorem a kontextem symetrický multiprocessing disponuje více procesory, sdílí jednu paměť a stejné I/O zařízení, propojeny komunikační sběrnicí, všechny procesory mohou provádět stejnou činnost distribuované OS ošetření několika samostatných počítačů jedním OS, multipočítačový systém, každý z počítačů má vlastní prostředky, DOS poskytuje iluzi jedné kolekce prostředků (paměť, ...), vývoj probíhá pomaleji než SMP objektově orientovaný návrh modulární přístup, dědičnost, pro plnohodnotné distribuované OS
Požadované vlastnosti OS Výkonnost (určena spoustou faktorů): střední doba mezi procesy, doba nečinnosti CPU, doba obrátky pro úlohy, čas odezvy, využití zdrojů, výkonnost počítače, kompromisní řešení Spolehlivost: v ideálním případě bez chyb Udržovatelnost: modulární řešení, jasné definice interface mezi jednotlivými moduly, rozšiřování schopností, oprava chyb Velikost: odůvodněná velikost v paměti i na disku, větší systémy jsou náchylnější k poruchám
Služby OS - vytváření programů na uživatelské úrovni editory, kompilátory, sestavovací programy, ladící programy - provádění programů zavádění programů do RAM, multiprogramové podpora komunikace a synchronizace procesů všechny OS jsou postaveny na základě zpracování procesů - V/V operace a operace se soubory zpřístupňování, formátování, privilegované operace - přístup k počítačovému systému ochrana při přístupu k systémovým zdrojům a údajům, řešení konfliktů při soupeření o zdroje - chybové řízení detekce chyb (HW, SW, neschopnost OS splnit požadavek aplikace), reakce na chyby - protokolování statistiky o zdrojích, monitorování výkonu, kalkulace cen, inspirace pro zlepšování konfigurace
Řídící struktury OS OS musí mít informace o aktuálním stavu procesů, informace o stavu HW zdrojů OS vytváří a udržuje tabulky o všech částech, které jsou pro něj důležité čtyři různé typy tabulek (paměť, I/O, soubory, procesy) mohou být rozdíly mezi různými OS, uvedené kategorie ale platí obecně Memory tables – sleduje se stav primární (real) i sekundární (virtual) paměti, část paměti je rezervována pro OS, zbytek je pro procesy, tabulky musí obsahovat informace o alokování obou pamětí procesům, ochranné atributy pro neoprávněný přístup (sdílení), informace potřebné k řízení virtuální paměti I/O tables – jsou používány OS k řízení I/O zařízení a kanálů systému, obsahují informace o přiřazení I/O zařízení jednotlivým procesům, jejich dostupnost File tables – informují o uložení souborů na disku, všechny jeho atributy, informace využívá hlavně souborový systém Process tables – slouží pro řízení procesů, musí obsahovat lokalizaci procesu (PCB (task control block, process descriptor, task descriptor), process image)
Řídící struktury OS Memory tables Memory Devices I/O tables Files Process image Process 1 Memory tables Memory Devices I/O tables Files Processes File tables Process 1 Process image Process 2 Primary process table Process n Process 3 . Process n
“Holý” počítač Operační paměť I/O procesor (kanál) Řídící jednotka Periferie
BIOS – Basic Input Ouput System základní souhrn instrukcí a funkcí nutných pro spuštění počítače propojuje HW a SW je tvořen sadou ovladačů základních komponent systému BIOS sděluje informace o HW, který je v počítači a OS říká, jak s ním má nejlépe pracovat, jaké má potíže první vrstva BIOSu v ROM (informace pro základní používání komponent, typ pamětí, typ procesoru), druhá vrstva v čipu CMOS (nastavení prováděná v menu), třetí vrstva jsou ovladače zaváděné v průběhu spouštění OS po zapnutí: nastaví konfiguraci počítače z CMOS paměti provede autonomní test počítače (POST Power On Self Test) inicializuje komponenty v konečné fázi spouští OS
BIOS
Virtuální počítač Uživatelské programy Proces 1 Proces 3 Holý počítač Proces 4 Proces 2 Programy jádra operačního systému
Vývoj operačních systémů Raná historie (50. léta) programátor a operátor v jedné osobě přímá interakce s HW počítače počítače bez operačního systému plánování (nějaká forma seznamu), přípravný čas (provádění programu (job) zahrnovalo loading zdrojového kódu, linkeru + různé funkce, každý z těchto kroků znamenal mount a dismount pásky nebo čtení sady děrných štítků, výskyt chyby znamenal znovu začátek) cena HW převyšovala cenu kvalifikované lidské práce koncem 50. let se začaly objevovat náznaky OS monitor – zaváděl systém ochrany paměti (monitor – programy), kontrolu I/O (2 pracovní módy - čtení/zápis na děrné štítky nebo provádění programu, kontrolu nekonečné smyčky (timeout, přerušení programu)
Vývoj operačních systémů První operační systémy (60. – 70. léta) éra sériového zpracování (Serial Processing), v průběhu času byly zavedeny nástroje pro zlepšení sériového zpracování, byly vyvinuty různé SW nástroje pro zefektivnění práce (knihovny, linkers, loaders, debuggers, I/O driver routines, ...) SPOOL: jednoduchý OS, běh více programů současně, přepínání mezi nimi, jak postupně čekaly na I/O operace, každý výrobce měl svůj naprosto odlišný SPOOL počítače byly velice drahé a bylo nezbytné zvýšit jejich využití, zbytečné prostoje během přípravných prací byly neakceptovatelné, pro zvýšení využití se zavedly jednoduché dávkové systémy (Simple Batch Systems), prvním byl IBSYS pro počítače IBM, pokračoval monitor - byl rezidentně umístěný v paměti, jazyk k provádění instrukcí monitoru – JCL (Job Control Language) zásoboval monitor instrukcemi, procesorový čas tak alternoval mezi monitorem a uživatelským programem
Vývoj operačních systémů Další vývoj OS - Během jednoduchého dávkového zpracování je procesor často nečinný (idle). Problémem je rychlost I/O zařízení, na která se musí čekat. Z tabulky vyplývá, že téměř 96% času se spotřebuje čekáním na I/O operaci a přenos dat do souboru. Pokud máme dostatek paměti pro monitor a uživatelské programy, můžeme mezi nimi alternovat (provést je „najednou“). Takový způsob je známý jako Multiprogrammed Batch Systems (dávkové zpracování s multiprogramováním), multitasking, výhody jsou patrné z porovnání utilizačních histogramů, multiprogramování musí počítat s HW předpoklady (IRQ, DMA, MMU)
Výpočet využití procesoru Čtení záznamu ze souboru 15 ms Provedení 100 instrukcí 1 ms Zápis záznamu do souboru 15 ms Součet 31 ms Percent CPU Utilization = 1/31 = 0,032 (3,2%)
Vývoj operačních systémů Pro většinu úloh je žádoucí nabídnout uživateli možnost interakce s výpočtem, nejprve pro sálové počítače, dnes zcela samozřejmá pro všechny kategorie počítačů. Jedná se o systémy se sdílením času TSS (Time Sharing Systems), jedná se také o multiprogramové systémy, v rámci multitaskingu je provozováno více úloh různých uživatelů, prvním TSS byl CTSS (Compatible Time Sharing System) MAC (Multiple Access Computer) pro počítač IBM 709 v roce 1961, zavedení TSS (multiprogramování) přineslo řadu nových problémů pro OS, jedná se o ochranu paměti, ochranu souborového systému, soupeření o zdroje, ...
Časová osa operačních systémů 50. léta: bez operačního systému, monitor 60. léta: SPOOL (Simultaneous Peripheral Operation OnLine) 70. léta: UNIX, Multics (Honeywell, MIT), poslední byl vypnut v roce 2000, VMS (DEC) – první verze 1978, 32 bitový, multitaskový a multiprocesorový, virtuální paměť, vyvíjen do 2000, hlavně pro procesory Alpha, i 64 bitová verze 80. léta: ráj 8 bitových počítačů, i do domácností, CP/M, velmi zjednodušená verze UNIXu, 8.3, MacOS, integroval GUI, myš jako hlavní nástroj, Amiga OS, v roce 1981 DOS pro IBM XT, 640 KB RAM, vycházel z CP/M, IBM se snažilo o PC/DOS, OS2 (z něj vznikly Windows NT), v oblasti mainframe různé UNIXy (AIX, Solaris, IRIX, FreeBSD, OpenBSD, …) 90. léta: DOS + Windows 3.1, Windows 9x/NT, Linux, BeOS (multimediální aplikace) Současnost: Windows, Linux
Oblíbenost operačních systémů Operační systém 2009 2010 2011 2012 2013 Windows 94,05% 93,73% 93,06% 92,02% 91,34% Mac 4,91% 5,25% 5,87% 6,81% 7,27% Linux 1,01% 1,0% 1,07% 1,17% 1,39% Ostatní 0,03% 0,02% 0%
Memory Layout for a Resident Monitor Interrupt processing Monitor Device driver Job sequencing Control language interpreter Boundary User program area
Time-Sharing Systems dávkové OS nepodporovaly interakci s uživateli, TSS rozšiřuje pojem multiprogramování na správu více interaktivních úloh, procesor je sdílen více uživateli (podle výkonu systému o sobě uživatelé nemusí vědět), objevuje se chráněný systém souborů - prvním TSS byl CTSS pro počítač IBM 709 v roce 1961 Batch Multiprogramming Time Sharing Hlavní účel Maximalizovat užití procesoru Minimalizovat čas odezvy Zdroj příkazů pro OS Příkazy JCL Příkazy zadávané z terminálu
Multiprogramování - multiprocessing Interleaving (multiprogramming, one processor) - prokládání Proces1 Proces2 Proces3 běží blokován čas jeden procesor Proces1 Proces2 Proces3 Overlapping (multiprocessing, three processors) - překrývání běží blokován čas tři procesory
Multiprogramování - multiprocessing Uniprogramming Run A Run A Wait Wait čas Multiprogramming se dvěma programy Run A Run B Run A Run B Wait Wait čas Multiprogramming se třemi programy Run A Run B Run C Run A Run B Run C Wait Wait čas
Multiprogramování - multiprocessing Symetrický multiprocessing (SMP) používá rovnocenné univerzální procesory (vlastní časování, ALU, registry), každý procesor má přístup do hlavní paměti a prostřednictvím sběrnice k I/O zařízením, procesory spolu mohou komunikovat prostřednictvím paměti (sdílení) nebo zpráv, na každém běží část operačního systému. Procesy se procesoru přidělují jako celky, někdy se proces může dělit na samostatné části – vlákna (thread). Potom se i vlákna mohou přidělovat jednotlivým procesorům. Dělení procesů na vlákna vede při použití víceprocesorových počítačů ke zrychlení výpočtu. Se systémovými strukturami může pracovat více procesorů. Plánování je provedeno pro každý procesor, důraz je kladen na synchronizaci procesů (sledů). Asymetrický multiprocessing (ASMP) uplatňuje mezi procesory vztah master – slave, ty nemusí být stejného typu (vektorový počítač Convex, 128 procesorů, speciální SW). ASMP funguje i pro počítače PC pro specializované procesory (FPU – pro pohyblivou čárku, grafika, zvuková karta, …). Řízení zajišťuje CPU – centrální (univerzální) procesor. Pouze jeden procesor smí pracovat se systémovými datovými strukturami. Jsou jednodušší, není potřeba zajišťovat sdílení systémových struktur, nevýhodou je nižší pružnost a výkonnost.
Efekt multiprogramování na využití zdrojů JOB1 JOB2 JOB3 Typ úlohy Heavy compute Heavy I/O Délka 5 min. 15 min. 10 min. Požadavek na paměť 50 K 100 K 75 K Potřeba disku Ne Ano Potřeba terminálu Potřeba tiskárny Uniprogramming Multiprogramming Využití procesoru 22% 43% Využití paměti 30% 67% Využití disku 33% Využití tiskárny Spotřebovaný čas 35 min. 20 min. Výkon 6 jobs/hod. 9 jobs/hod. Průměrná odezva 18 min. 10 min.
Utilization Histogram Job1 Utilization Histogram Job2 Job3 100% 0% 100% 0% CPU 100% 0% 100% 0% Paměť 100% 0% 100% 0% Disk 100% 0% 100% 0% Terminál 100% 0% 100% 0% Tiskárna 5 10 15 20 25 30 5 10 15 čas [min] čas [min]
Architektura SMP . . . Main memory Processor Processor Processor L1 L1 System bus I/O adapter Main memory I/O subsystem I/O adapter I/O adapter
Počítačové systémy Počítačový systém - hardware („holý počítač“) - operační systém - aplikační programy (překladače, hry, databázové systémy, systémové nástroje, …) - uživatelé Paralelní systémy Multiprocesorový systém obsahuje více procesorů (p > 1) sdílejících společnou paměť, sběrnice, hodiny a periferie. Paralelní systémy dělíme na symetrické a asymetrické. Paralelní systém – skutečný paralelismus procesů, těsně vázané systémy, společný FAP, sdílí se hodiny, vyšší propustnost a spolehlivost Distribuovaný systém – paralelismus procesů, volně vázané systémy, více FAP, komunikace periferními operacemi, každý procesor má vlastní paměť a hodiny
Paralelismus - distribuovanost Paralelní systém – skutečný paralelismus procesů, těsně vázané systémy, společný FAP, sdílí se hodiny, vyšší propustnost a spolehlivost Distribuovaný systém – paralelismus procesů, volně vázané systémy, více FAP, komunikace periferními operacemi, každý procesor má vlastní paměť a hodiny Nezávislý – běží samostatné procesy, žádná synchronizace, víceuživatelské systémy Velmi hrubozrnný – distribuované zpracování v síti (řešení jedné komplexní úlohy) řídká interakce mezi procesy (omezení síťové režie) Hrubozrnný – běh více procesů na více procesorech, jeden FAP, multiprocessing Střednězrnný – multitasking, sledy v rámci jednoho procesu v časté interakci, multiprogramming Jemnozrnný – paralelní řešení operací (maticové procesory), stejná operace na datech Paralelní systém paměť procesor Distribuovaný systém distribuce dat a řízení Mem Mem P P
Distribuované a agentové systémy Distribuované systémy Klasické – procesory jsou méně vázané, jde vlastně o samostatné počítače (uzly) spojené pomocí komunikační sítě. Důvody pro budování distribuovaných systémů: - sdílení zdrojů - urychlení výpočtů - zvýšení spolehlivosti (porovnání výsledků, uložení souborů na více místech, …) Mezi paralelními systémy a klasickými distribuovanými systémy se nachází počítačový cluster. Ten umožňuje efektivní spojení výkonu více počítačů, nejen jejich procesorů. Navzájem jsou propojeny vysokorychlostní sítí. Agentové systémy - jsou vázány volněji než klasické distribuované systémy. Agenti se skládají z jádra (programu) a komunikační obálky pro umožnění komunikace s jinými agenty. Agent je samostatný systém schopný spolupracovat s jinými systémy. Na rozdíl od přesně organizovaného distribuovaného systému jsou agentové systémy schopné v případě potřeby přibrat další agenty ke spolupráci.