PBOO1: Úvod do informaCních technologií Ludek Matýska FI MU Základní podmínky ■ Přednášky nejsou povinné ■ Zkouška je pouze písemná ■ Termíny oznámím do konce říjná (cca 5, 2 řádne, dva kombinovane, jeden pouze oprávny) ■ Jeden náhrádní termín ■ Vzhledem ke kápácitním omezením doporuCuji ráne termíny ■ Prototypove zádání písemky dám k dispozici koncem listopádu ■ Studijní literáturá uvedená u sylábu ■ Prednáská je náhráváná ná video PB001 2 Podzim 2010 Cíle přednášky ■ Základní orientace v oblasti informačních technologií. ■ Úvod do technického a programového vybavení současných počítačů a propojovacích sítí. ■ Eticke a socialní rozmery informacních technologií. ■ Systemový (konceptualní) pohled na celou oblast. ■ „Průvodce" nasledujícím studiem PB001 3 Podzim 2010 Dualita Informatiky ■ Unikátní kombinace reálných a abstraktních (virtuálních) systémů ■ Technické komponenty (hardware): podléhají fyzikalním zakonům ■ Programy (software): „ztelesnení" abstraktních konstrukcí PB001 4 Podzim 2010 Dualita Informatiky ■ Unikátní kombinace reálných a abstraktních (virtuálních) systémů ■ Technické komponenty (hardware): podléhají fyzikalním zakonům ■ Programy (software): „ztelesnení" abstraktních konstrukcí ■ Důsledky: ■ Virtualní prostredí ■ Pocit, Ze IT stojí mimo „realitu" ■ Fenomem vaporware PB001 4 Podzim 2010 Dekompozice ■ Dva rozměry: ■ Od fyzickě po programovou vrstvu ■ RUzně komponenty na těZě vrstvě PB001 5 Podzim 2010 Dekompozice ■ Dva rozměry: ■ Od fyzickě po programovou vrstvu ■ RUzně komponenty na těZě vrstvě ■ Příklady: ■ ISO OSI sítovy model: napr. linkova, transportní a aplikaCní vrstva PB001 5 Podzim 2010 Dekompozice ■ Dva rozměry: ■ Od fyzickě po programovou vrstvu ■ RUzně komponenty na těZě vrstvě ■ Příklady: ■ ISO OSI sítovy model: napr. linkova, transportní a aplikaCní vrstva ■ Vrstvy operaCního systěmu: napr. kernel, ovladaCě, přěkladaCě, aplikace PB001 5 Podzim 2010 Dekompozice ■ Dva rozměry: ■ Od fyzickě po programovou vrstvu ■ RUzně komponenty na těZě vrstvě ■ Příklady: ■ ISO OSI sítovy model: napr. linkova, transportní a aplikaCní vrstva ■ Vrstvy operaCního systěmu: napr. kernel, ovladaCě, přěkladaCě, aplikace ■ RUzne typy procesoru PB001 5 Podzim 2010 Dekompozice ■ Dva rozměry: ■ Od fyzickě po programovou vrstvu ■ RUzně komponenty na těze vrstvě ■ Príklady: ■ ISO OSI sítovy moděl: napr. linkova, transportní a aplikaCní vrstva ■ Vrstvy opěraCního systěmu: napr. kěrněl, ovladaCě, přěkladaCě, aplikacě ■ Ruzně typy proCěsoru ■ Ruzně programovaCí jazyky PB001 5 Podzim 2010 Discipliny Technické prostředky ■ Architektura poCítaCů a sítí PB001 6 Podzim 2010 Disciplíny ■ Techničke prostredky ■ Architektura počítaču a sítí ■ Programové prostredky ■ Operacní systémy ■ Programovací jazyky ■ Aplikace PB001 6 Podzim 2010 Technické prostředky - základní pojmy ■ Procesor(-řadič)-pamet-periferie: von Neumannova architektura PB001 7 Podzim 2010 Technické prostředky - základní pojmy ■ Procesor(-řadič)-pamet-periferie: von Neumannova architektura ■ Řízene zpracovaní dat PB001 7 Podzim 2010 Technické prostředky - základní pojmy ■ Procesor(-řadic)-pamet-periferie: von Neumannova architektura ■ Rízene zpracovaní dat ■ Jine modely architektury: ■ Turingovy stroje ■ Dataflow prístup ■ Objektove-orientovana ■ Deklarativní (funkcionalní ci logicka) PB001 7 Podzim 2010 Procesor ■ Stroj vykonavající instrukce ■ Vnitrní hodiny: takt procesoru ■ Zakladní jednotka sekvencní (ALU) ■ Muze obsahovat více jednotek: vnitrní paralelismus ■ Instrukcní cyklus: vyber a provedení instrukce jednou jednotkou PB001 8 Podzim 2010 Typy procesoru ■ Univerzälni ■ CISC: Complex Instruction Set Computer ■ RISC: Reduced Instruction Set Computer ■ ... ■ Speciälizoväne ■ Vektorove ■ Gräficke ■ Embedded ■ ... PB001 g Podzim 2010 Pameť (vnitrní) ■ Uchovava data ■ Přímo adresovatelna: sloupec a radek ■ Rozsah adres: 16, 32, 64, ... bitu ■ Cyklus pameti: doba nezbytna pro vystavení nebo zapis dat ■ Vzpamatovaní se po provedene operaci, prokladaaní pametí ■ Staticka vs. dynamicka pamet, volatilita ■ Hierarchie pametí ■ Rychla—pomala ■ Draha—levna PB001 10 Podzim 2010 Paměť (vnitřní) ■ Uchovava data ■ Přímo adresovatelna: sloupec a radek ■ Rozsah adres: 16, 32, 64, ... bitu ■ Cyklus pameti: doba nezbytna pro vystavení nebo zapis dat ■ Vzpamatovaní se po provedene operaci, prokladaaní pametí ■ Staticka vs. dynamicka pamet, volatilita ■ Hierarchie pametí ■ Rychla—pomala ■ Draha—levna ■ Ilustrace ekonomického imperativu v IT PB001 10 Podzim 2010 Periferie ■ ZajiStují vstup/vystup informací: ■ komunikace s uzivatělem ■ permanentní ukladaní dat ■ komunikace s jinymi systémy PB001 11 Podzim 2010 Komunikace s uživatelem ■ Interáktivní ■ Klávesnice: vstup ■ Mys, táblet, stylus, ...: vstup ■ Obrázovká: vystup i vstup ■ Zvuk: vystup i vstup ■ Dávkove: prostřednictvím jinych zárízení PB001 12 Podzim 2010 Permanentní ukládání dat ■ Paměti (ROM, PROM, EPROM, NVRAM) ■ Disky ■ Magnetické ■ Magnetooptickě ■ Optické ■ Pasky ■ Sítě PB001 13 Podzim 2010 Permanentní ukládání dat ■ Paměti (ROM, PROM, EPROM, NVRAM) ■ Disky ■ Magnetické ■ Magnětooptickě ■ Optické ■ Pasky ■ Sítě ■ Papír: trvanlivost! PB001 13 Podzim 2010 Komunikace ■ Počítačové sítě ■ Drátové * Elektrické * Optické PB001 14 Podzim 2010 Komunikace ■ Počítačové sítě ■ Drátové * Elektrické * Optické ■ Bezdrátové * Radiové vlny * Optické PB001 14 Podzim 2010 Komunikace ■ PoCítaCově sítě ■ Dratově * Elěktrickě * Optickě ■ Bězdratově * Radiová vlny * Optickě * Akustickě PB001 14 Podzim 2010 Komunikace ■ Počítačové sítě ■ Drátové * Elektrické * Optické ■ Bezdrátové * Radiové vlny * Optické * Akustické ■ Méchanické PB001 14 Podzim 2010 Speciální periferie ■ Virtuální reálitá ■ Bryle á helmy ■ 3D projekce á prostorovy zvuk ■ Háptiká (rukávice, ...) ■ Detekce polohy á pohybu PB001 15 Podzim 2010 Speciální periferie ■ Virtualní realita ■ Bryle a helmy ■ 3D projekce a prostorovy zvuk ■ Haptika (rukavice, ...) ■ Detekce polohy a pohybu ■ Wearable computers PB001 15 Podzim 2010 Co je to počítač? ■ Standardní pohled: ■ Procesor(y) ■ Pamet ■ Periferie ■ Mozne i jine pohledy ■ Bunecne automaty ■ Neuronove pocítace PB001 16 Podzim 2010 Paralelní systémy ■ Úzce propojené (tightly coupled) ■ Volné propojené (loosely coupled) ■ Distribuovane ■ Gridy PB001 17 Podzim 2010 Uzcě propojeně systěmy ■ Casto spolecna pamet ■ Minimalní vliv vzdalenosti procesoru ■ Specialní propojení procesoru a pametí ■ Vhodne pro tzv. jemný paralelismus ■ Typicky vypocetní model: sdílena pamet (i kdyby byla pouze virtualní) PB001 18 Podzim 2010 Volne propojené systémy ■ Převazne distribuovana pamet (kazdy procesor zvlast) ■ Vzdalenost procesoru muze hrat roli ■ Specialní propojení procesoru ■ Vyrazne vyssí latence (zpozdení) v meziprocesorove komunikaci (jednotky mus a mene) ■ Existence operací remote put a remote get pro prístup do pameřti vzdaleneho procesoru ■ Typicky vypocetní model: zasílaní zprav PB001 19 Podzim 2010 Distribuovane systemy ■ Rozsíření predchozího modelu ■ Vzdy distribuovana pamet ■ Vzdalenost procesoru hraje vyznamnou roli ■ Propojení procesoru casto formou bezne LAN síte ■ Vysoka latence v meziprocesorove komunikaci (100/xs az jednotky ms) ■ Typicky vypocetní model: zasílaní zprav PB001 20 Podzim 2010 Gridy ■ System distribuovany po geograficky rozsahlych prostorech (zeme, kontinent, ...) ■ Propojeny samostatne pocítace (vcetne paralelních) ■ Propojení pocítacu WAN sítí ■ Extremne vysoko latence v meziprocesorove komunikaci (desítky az stovky ms) ■ Prakticky jediny vypocetní model: zasílaní zprav PB001 21 Podzim 2010 Programové vybavení ■ Nadstavba těChniCkyCh prostrědku ■ Vrstvy opěraCního systému: ■ TěChniCkě vybavění Sprava paměti Sprava proCěsu Sprava pěrifěrií (I/O) Sprava souboru dat Uzivatělsky prostor (něpřěsně) PB001 22 Podzim 2010 Programové vybavení - jiný pohled ■ Operační systém ■ UNIX, Linux, OS/370, MS Windows, ... ■ Programovací jazyky ■ C, Pascal, Ada, Occam, ML, Prolog, perl, python, Java, ... ■ PodpUrné nastroje ■ debuggery, profilery, ... ■ Aplikacní programy PB001 23 Podzim 2010 Programovací jazyky ■ RozliSujémé ■ Styl ■ Míru abstrakcé ■ „Dialékť PB001 24 Podzim 2010 Programovací jazyky - styl Imperátivní/Procedurální: C, Fortrán Objektove orientováne: Jává, C++ Deklárátivní/Funkcionální: ML, Lisp, MIRANDA Deklárátivní/Logicke: Prolog, GHC S jedinym priřázením: SISAL Produkcní systemy: OPS5 Semánticke síte: NETL Neuronove síte: SAIC ANSpec PB001 25 Podzim 2010 Procedurální vs. deklarativní styl fac := 1; if n > 0 then fac(0) := 1; fac(n>0) := n*fac(n-1); for i:=1 to n do fac := i*fac; | fac(0,1). | fac(N,F1*N) :- fac(N-1,F1). PB001 26 Podzim 2010 Programovací jazyky - míra abstrakce ■ Strojový jazyk: přímo kody jednotlivých instrukcí ■ Assembler: jmena instrukcí, operandy, pojmenované cílove adresy skokU ■ Vyssí jazyky: obecne konstrukty, tvorí „kontinuum" ■ Agregovane datove typy ■ Cykly namísto skoku ■ Procedury a funkce ■ Procesy a vlakna PB001 27 Podzim 2010 Programovací jazyky - implementace ■ Překladače ■ Zdrojový kód-mezijazyk-strojový jazyk ■ Překlad a sestavení PB001 28 Podzim 2010 Programovací jazyky - implementace ■ Překládáce ■ Zdrojovy kód-mezijázyk-strojovy jázyk ■ Preklád á sestávení ■ Interprety ■ Abstráktní pocítác ■ Vhodne pro slozite operáce (nápř. práce s texty, s máticemi á álgebráickymi objekty) PB001 28 Podzim 2010 Programovací jazyky - implementace ■ Překladače ■ Zdrojový kód-mezijazyk-strojový jazyk ■ Preklad a sestavení ■ Interprety ■ Abstraktní počítač ■ Vhodne pro sloZite operace (např. prace s texty, s maticemi a algebraičkymi objekty) ■ Just-in-time překladače (nejen Java) ■ Znamy jiZ od osmdesatyčh let (řesil se tak nedostatek pameti) PB001 28 Podzim 2010 Výpočetní model ■ Souvislost mezi architekturou a jazyky ■ von Neumannova architektura a imperativní jazyky ■ objektova architektura a objektove orientovane jazyky ■ redukcní architektura a funkcionalní programovaní PB001 29 Podzim 2010 Výpočetní model - varianty ■ Datově orientovaný (nejpoužívanější) ■ Objektový ■ Funkcionální ■ Logický PB001 30 Podžim 2010 Aplikace Dávají počítačům smysl ■ Vědecko-technické výpočty (vojenství: atomová bomba) PB001 31 Podzim 2010 Aplikace Davají poCítaCům smysl ■ Věděcko-těchnickě vypoCty (vojenství: atomovaa bomba) ■ Zpracovaní informací (Hollěrith/IBM: censůs USA) PB001 31 Podzim 2010 Aplikace Dávají počítačům smysl ■ Vědecko-technické výpočty (vojenství: atomová bomba) ■ Zpracovaní informací (Hollerith/IBM: censůs USA) ■ Zabava (pocítacove hry, video-on-demand) PB001 31 Podzim 2010 Aplikace Dávají počítačům smysl ■ Vědecko-technické výpočty (vojenství: atomová bomba) ■ Zpracovaní informací (Hollerith/IBM: censůs USA) ■ Zabava (pocítacove hry, video-on-demand) ■ Řízení (management strojů i lidí, real-time systemy) PB001 31 Podzim 2010 Společenské aspekty ■ Vyrobní a obChodní proCěsy ■ Nastroj vědy ■ KomunikaCě ■ Zabava PB001 32 Podzim 2010 Společenské aspekty ■ Vyrobní a obchodní procesy ■ Nastroj vedy ■ Komunikace ■ Zabava ■ Kriminalní cinnost PB001 32 Podzim 2010 Výrobní a obchodní procesy ■ Rízení vyrobních procesu ■ Informacní a manazerske systemy ■ Nove formy vyvoje (simulace místo fyzickych modelu) ■ Ovlivnení forem spoluprace/komunikace ■ Mezi institucemi (B2B, Bussiness to Bussiness) ■ Instituce a zakazník (B2C, Bussiness to Customer) ■ Mezi zakazníky (C2C) ■ Zcela nove prílezitosti (Google, mapy, GPS, ...) PB001 33 Podzim 2010 Nástroj vědy ■ Puvodní pouzití pocítacu ■ Trvale klícovy smer vyuzití ■ Ovlivnuje zpusob vedecke prace ■ Experimenty versus simulace ■ Statisticke zpracovaní velkych souboru * Astronomie * Bio-informatika ■ Virtualní vedecke tymy (spoluprace) ■ Formule 1 vypocetní techniky PB001 34 Podzim 2010 Komunikace ■ Komunikáce mezi pocítác ■ Komunikáce mezi lidmi (přípádne dovek-áutomát) - opet roste vyznám ■ Telefony ■ Fáxy ■ Mobilní komunikáce ■ Mediá ■ Zvysení frágility spolecnosti PB001 35 Podzim 2010 Zábava ■ Televize ■ Pocítacove hry ■ Fenomen on-line her: specificke prostředí pro spolůpraci ■ Pasivní versůs aktivní prístůp ■ Peer to peer sítee (Napster, Gnůtella, ...) ■ Virtůaalní realita PB001 36 Podzim 2010 Kriminální Činnost PB001 37 Podzim 2010 ■ Kriminalita bílych líméckU ■ ZnéuZívaní zdrojU na síti (Ucty, vypocétní vykon, kapacita síté, poStovní sluzby, ...) ■ Kradézé informací (císla kréditních karét, téléfonní linky, spionazní cinnost) ■ Viry ■ Zaimémé spatné informacé ■ Déstabilizacé spolécnosti ■ Spécifickym síréním informací ■ Útoky na infrastrukturu ■ Útoky na citlivé informacní zdrojé ■ PB001 38 Podzim 2010 Pravo a etika v IT ■ V podstate inZenyrska disciplína avsak neinZenyrske prístupy (shrink wrap licence, minimalní odpovednost za chyby, ...) ■ Kody/normy spravneho chovaní/prístůpů ■ Fakticka a pravní odpovednost ■ IPŘ (Intellectůal Property Rights), aůtorska ochrana, softwarove patenty PB001 39 Podzim 2010 (Císelne soustavy ■ Defiňovaňý zakladem: desítkova, dvojkova, osmičkova, Sestňačtkova ■ Volňe mezi sebou převoditelňe (čela čísla bez ztratý přesňosti) ■ Cela čísla a zlomký ■ Realňa čísla ■ Koňečňa reprezeňtače PB001 40 Podzim 2010 Císělně soustavy ■ Definovany zakladem: desítkova, dvojkova, osmickova, sestnactkova ■ Volne mezi sebou převoditelne (cela ccísla bez ztraty přesnosti) ■ Cela císla a zlomky ■ Realna císla ■ Konecna reprezentace ■ První pocítace v desítkove soustave PB001 40 Podzim 2010 Dvojkova soustava ■ Zaklad císlo dve: ■ pouze dve císlice/dva stavy ■ vhodna pro reprezentaci v elektrickych systemech PB001 41 Podzim 2010 Dvojková soustava v počítači ■ Konecna reprezentace: interval hodnot ■ Pro realna císla: ■ Rozlisitelnost (nejmensí zobrazitelne císlo): X + e > X a X + e/2 = X ■ Presnost (rozsah) ■ Zobrazení: mantisa m a exponent e 0 < m < 1 A x = m.2e ■ Zaporna císla: ■ Přímy kod ■ Inverzní kod ■ Dvojkovy doplnkovy kod PB001 42 Podzim 2010 Záporná cisla - zobrazeni Přímý kod: ■ Přidáme znaménko ■ Dvé nulý: +0 a -0 (10 ... 00) ■ Rozsah: (-MAX, -0) a (+0, +MAX) Inverzní kod: ■ Přidame znaménko ■ Dvé nulý: +0 a -0 (11... 11) ■ Rozsah: (-MAX, -0 a (+0, +MAX) PB001 43 Podzim 2010 Záporná cisla - zobrazeni Dvojkový doplňkový kod: ■ Inverze bitu a přičtení jedňičký ■ Pouze jedňa ňula (11... 11 je —1) ■ Nesymetrický rozsah: (—MAX — 1, —1) a (+0, +MAX) Skutečňe pouZívaň v počítačích PB001 44 Podzim 2010 Rozsahy čísel ■ Podle počtu bitů: ■ Byte: 8 bitů, tj. (0,255) nebo (-128,127) ■ Půl slovo, 2 byte: 16 bitů, tj. (0,65535) nebo (-32768, 32767) ■ Slovo, 4 byte: 32 bitů, tj. približne (-2.109,2.109) ■ Dvojslovo (nebo dloůhe slovo), 8 byte: 64 bitů, tj. približne (-9.1018,9.1018) PB001 45 Podžim 2010 Racionalní ccísla Formát dle IEE 754 Soucásti: ■ Známenko ■ Mántisá (přímy kod, normálizáce, m bitu) ■ Exponent (v kodu posunuta nuly, n bitu) PB001 46 Podzim 2010 Racionální čísla ■ Normalizace mantisy (exponent ma n bitu): ■ Nejvyssí bit vzdy jedna: l.aaaaaa; 1 nezapisujeme ■ Nejmensí kladna císlo: 1.0 x 2—2n—1+1(2—127 pro n = 8) ■ Nejvetsí císlo: 1.0 x 22n-1(2128) ■ Exponent (n bitu, dvojkovaa soustava) ■ Přicteme 2n—1 — 1 (=127 pro n = 8), abychom získali spravnou hodnotu pro ulození ■ 000000000 je —127 ■ 111111111 je 128 ■ Zvlastní a nenormalizovana ccísla PB001 47 Podzim 2010 Racionální ccisla II ■ Rozsah zobrazení: (NejvétSí zaporné, NejvétSí kladné) ■ Přesnost zobrazení: počet bitU mantisý+1 ■ Rozlisitelnost: nejmensí nenulové číslo ■ Normalizované vs. nenormalizované (2mkrat mensí, m počet bitU mantisý) PB001 48 Podzim 2010 Jiné soustavy ■ Osmičková ■ 001 101101 1112 = 155 78 = 879io ■ Šestnáctková ■ 0011 0110 11112 = 36F16 = 87910 ■ Používány předevSím pro „hutný" zápis binárních čísel PB001 49 Podzim 2010 Operační systémy - trocha historie ■ Bootstrap loader ■ Spooling ■ Nezávisle zavadění programu a jeho vykonávaní ■ VyZaduje DMA (Direct Memory Access) ■ Zavedlo multiprogramování ■ Stale zpracovaní dávek (batch processing) ■ Timesharing ■ Virtualizace pocítace/CPU ■ Zpracovaní interaktivních Uloh ■ Souvisí se zavedení diskU (Direct Access Storage Device, DASD od IBM, 60ta leta) PB001 50 Podzim 2010 Operační systémy: Učel ■ Zkrásnění: ■ Zjednodusení prace s pocítacem * Prace s pametí * Prace se soubory * Prístup k periferiím PB001 51 Podzim 2010 OperaCní systemy: úccel ■ Sdílení: ■ Zajistit sdílení vzacnych zdroju ■ Musí zajistit: * Aby to vubec fungovalo * Aby to fungovalo ucinne (vyuzití, propustnost, rychlost odezvy) * Aby to fungovalo spravne • Omezení nasledku chyb (avsak pozor na chyby v samotnem operacním systemu) • Oprávnení k prístupu (autentizace a autorizace) PB001 52 Podzim 2010 OS: probiem časovaní ■ Periferie výrazňe pomalejsí ňez pročesor ■ Príklad ■ 1 GHz Peňtium IV: 1.109 operačí za sekuňdu ■ Bezňý disk: 10 ms pro prečteňí 1 býte ■ Pomer 1 : 10 000 000 ■ Stejňe zpomaleňí človeka: 1 uhoz ňa klavesňiči čča 20 dňí. ■ Mozňe řeseňí: prokladaňí I/O a výpočtu ■ Spusť diskovou operaci Prováděj instrukce nad jinými daty (alespoň 1~milion instrukcí) PoCkej na dokonňení Prílis tezkopadňe a slozite PB001 53 Podzim 2010 OS časování: jiné řešení Proces 1 { Spusť diskovou operaci PoCkej na dokončení Zpracuj získaná data } Proces 2 { Nejaka jina aplikace } Přehlednější OS muší „přepínat" mezi procesy {priorita) PB001 54 Podzim 2010 OS: paměť ■ Vetsina pameti nevyuzita ■ Zpracovaní cyklu (zbytek programu) ■ Zpracovaní konkrétních dat (ostatní neaktivní) ■ Čekaní na I/O ■ Virtualizace pameti ■ Data a programy na disku ■ Do pameti na zadost ■ Umoznuje * Kazdy program ma „celou" pamet * Program muze adresovat více jak rozsah fyzicke pameti ■ Ochrana pameti PB001 55 Podzim 2010 OS: zakladní složky ■ Procesy a jejich sprava ■ Pamet a její sprava ■ Periferie a jejich sprava ■ System souboru ■ Ochrana a bezpecnost PB001 56 Podzim 2010 Pročesy ■ Proces je abstrakce prUchodu programem ■ Sekvencní model: program = 1 proces ■ Paralelní model: program > 1 proces ■ Proces ma interní stav, charakterizovany ■ programovym citacem (program counter) ■ zasobníkem (volaní funkcí a procedur) ■ vlastní pametí pro data PB001 57 Podzim 2010 Typy procesu ■ Klasické (heawy-weight) procesy (napr. UNIX) ■ VSechna data privátní ■ Sdílen pouze program (read-only) ■ Lehké (light-weight) procesy Ci Viakna (threads) ■ Minimum vlastní pameti ■ Vetsina dat sdílena PB001 58 Podzim 2010 Procesy detailněji Vytvorení procesu ■ fork() a jeho varianty ■ Přesná kopie puvodního procesu ■ Rodič a potomek ■ První proces v OS vytvořen jinak (init v Unixu) Stavy ■ Start/vytvorení, připraven (ready), bezí (running), je blokovan (ceka) skoncil PB001 59 Podzim 2010 Synchronizace - problém Race condition: soupeření v case ■ Proces P { Load Registra, X Load RegistrB, Y Add Registra, RegistrB Store RegistrA, X # X+=Y } Dve instance procesu P, pouzívají stejna X a Y Nedefinovatelne výsledky ■ Je-li na zacatku X=Y=1, pak na konci muze byt X=2 nebo X=3 PB001 60 Podzim 2010 Synchronizace - resení Kritická sekce ■ Semafory: áno/ne ■ Monitory: CitáCe Smrtelne objetí (deádlock) Odstránení sdílených zdrojů: zasílání zpráv ■ Synchronizáce ná ůrovni zásílání á přijímání zpráv ■ Bůffery PB001 61 Podzim 2010 Procesy - plánování ■ Sdílení (timesharing) ■ časove kvantum ■ přeruSení ■ Prioritní ■ Statističke ■ Real-time ■ Pianovač (scheduler) PB001 62 Podzim 2010 Sprava paméti ■ Dve zakladní operace: ■ alokuj/přidel pamet (velikost, vrací pocatecní adresu) ■ dealokuj/uvolni pamet (velikost a pocatecní adresa) ■ Vetsinou zavisle (lze uvolnit jen presne totez, co jsme alokovali dríve) ■ Doplnkova operace: zmen rozsah alokovane pameti (reallocate) ■ Organizace pameti ■ Čistení pameti (garbage collection) PB001 63 Podzim 2010 Správa paměti OS ■ Virtualizace paměti - nutno uvolnit fyzickou pamet ■ Swapping ■ Celych procesU ■ „Děr" v paměti ■ Stránkovaní ■ Segmentace PB001 64 Podzim 2010 Ochrana a bezpečnost ■ Ohrožení: ■ Přístup (čtení) ■ Zápis (modifikace) ■ Znepřístupnění služby (denial of service) ■ Trojsky kun ■ Vydává se žá neco, co není ■ Viry PB001 65 Podžim 2010 Principy navrhu bězpěcnych systému Zverejnení algoritmu Standardní nastavení = zadny přístup Pravidelne kontroly Minimalní opravnení Jednoduchy a uniformní mechanismus Urovneř opravneřní PB001 66 Podzim 2010 Client-server model ■ Distribuované počítání: rozložení úkolů na více prvků ■ Client-server model ■ Speciální případ distribuovaného počítání ■ Více strukturovane ■ Asymetricke: klient posíla požadavek na zpracovaní serveru ■ Server pro jednoho klienta může byt klientem pro jiny server. PB001 67 Podzim 2010 Vlastnosti modelu client-server ■ Klient a server samostatne procesy ■ Na stejnem nebo rUznych podtadch ■ Interní informace je „soukromaa" pro kaZdy proces ■ Komunikují tzv. peer-to-peer protokolem PB001 68 Podzim 2010 SpoleCne vlastnosti ■ Interoperábilitá ■ Portábilitá ■ Integráce ■ Tránspárence ■ Bezpecnost PB001 69 Podzim 2010 Příklady telnet X Window systém na Unixu Světová pavučina (World Widé Wéb) PB001 70 Podzim 2010 Trŕvrstevny model ■ Základní rozčlenění ■ Data ■ Logika ■ Prezentace ■ Sousední moZno kombinovat/rozdělit (tj. napr. Logika můZe být součastí datove i prezentační vrstvý, a to i současne) PB001 71 Podzim 2010 „Tlustý" a „tenký" ■ Platí pro server i klient, podstatné zejména v souvislosti s klienty ■ „Tlusty" (fat) klient: ■ Značna spotřeba lokalních zdrojU (CPU, pamet, disk) ■ Komplexní provedení i instalace ■ Príklad: Mozilla ■ „Tenky" (thin) klient: ■ Jednodussí ■ Snadna sprava ■ Mensí skalovatelnost (prílis mnoho prace dela server) ■ Zpravidla vyssí naroky na propustnost sítee PB001 72 Podzim 2010 Middleware ■ „Zkratka" v rámci protokolu ■ Komunikace přímo na vySSí abstraktní Úrovni ■ Realizuje jednu (RPC) nebo více (DCE) funkcí PB001 73 Podzim 2010 Middleware - príklady ■ Primitívni: prenos souború ■ Základni: RPC (Remote Procedure Call) ■ Integrovane: DCE (Distributed Computing Environment) ■ Distribuovane objektove služby: CORBA, OGSA (Open Grid Service Architecture) PB001 74 Podzim 2010 CORBA ■ Common Object Request Broker Architecture ■ Základem ORB: vrstva, která zprostředkovává komunikaci (middleware pro middleware) ■ Kompomenty: ■ Rozhraní (řetezce) ■ Pojmenovaní (naming service) ■ „Obchodní" sluZba (trader) PB001 75 Podzim 2010 Mobilní systémy ■ Inherentně distribuované ■ Casto klient-server model ■ Tencí i tlustí klienti ■ Kompromis mezi výkonem a propustností site/pripojení ■ Konvergence ■ Od notebooku po mobilní telefoný PB001 76 Podzim 2010 Návrh - principy ■ efektivita ■ robustnost ■ flexibilita ■ přenositelnost ■ kompatibilita PB001 77 Podzim 2010 Efěkťiviťa ■ Maximalní vyuzití dostupnych zdroju ■ Pouzití jednoduchych ajasnych principu ■ Dekompozice návrhu ■ Objektove orientovany navrh (pozor na prílisnou fragmentaci) ■ Agenti ■ Komponentní programovaní PB001 78 Podzim 2010 Robustnost ■ Schopnost uspeSne se vzpamatovat po výpadku ■ Reseno redundancí (standardní inZenyrske řesení): sniZuje ovsem pozorovanou efektivitu ■ První výzkum v CR koncem 50. a zacatkem 60. let (Ing. Svoboda) ■ Bezne trojnasobne jistení (napr. rídící pocítace atomových ponorek USA) ■ V soucasne dobe zajem o self-healing programy PB001 79 Podzim 2010 Flexibilita ■ Moznost upravy (adaptace) podle zmenenych potreb ■ Často pouzívana ve vyznamu rozšiřitelnost (extenzibilita) ■ Definuje a fixuje se ramec (framework) ■ Pridaní nove slozky bez zmeny ramce snadne ■ Případne hierarchie ramcu (pridaní ci modifikace noveho ramce) PB001 80 Podzim 2010 Přenositelnost ■ Úzce souvisí s operacními systemy ■ Dostatecna abstrakce detailu ■ Virtualní „disk" namísto konkrétního zařízení ■ Programy psany bez odkazu na specialní vlastnosti ■ Vyuzití standardu ■ Opet mozny rozpor s pozadavkem efektivity PB001 81 Podzim 2010 Kompatibilita ■ Odstínení spečifičkýčh detailů ■ Výuzití standardů ■ Efektivita? ■ Nemusí být negativne ovlivnena PB001 82 Podzim 2010 Externí požadavky (na funkcionalitu OS) ■ Stejný (podobný) hw a mzne priority ■ Server: např. stabilita, bezpeCnost, propustnost ■ Pracovní stanice: napr. snadnost ovládaní, rozumný výkon ve vsech oblastech ■ Specializovana graficka stanice: maximalizace grafickeho výkonu ■ Řídící sýstem: pozadavký real-time, robustnost, PB001 83 Podzim 2010 Bezpečnost ■ Snižuje snadnost použití ■ Klade dodatečná omezení na uživatele (disciplina) ■ VetSí naroky na spravu systemu ■ Srovnaní: MS Windows 95 versus MS Windows NT PB001 84 Podžim 2010 Klasifikace OS ■ Monolitický ■ Vrstvený ■ Modulární ■ mikro-kernel PB001 85 Podzim 2010 Monolický OS ■ PUvodní operační systemy (proprietarní) ■ Abstrakce nepouzívana prílis dovnitř ■ Nejasne rozlisení funkcí uvnitr operacního systemu ■ „Velke", spatne rozsiritelne, spatne udrzovatelne ■ Poplatne dobe pomalejsího vyvoje hardware a jeho vysoke ceny PB001 86 Podzim 2010 Vrstvený OS ■ Vrstvy odpovídají procesům správy: ■ Správa CPU ■ Správa pameti ■ Sprava periferií ■ Sprava systemů souborů ■ Lepsí abstrakce ■ Komunikace mezi vrstvami PB001 87 Podzim 2010 Modulární OS ■ Moduly namísto vrstev ■ Zapouzdření (enkapsulace) funkcí ■ Komunikace mezi moduly ■ Príbuzný objektovemu prístupu ■ Lepsí udrZba ■ Riziko vzniku „fatware" PB001 88 Podzim 2010 Kernel operačního systému ■ Kernel, též jádro operačního systému: ■ Základní složka operačního systému ■ Odpovída ža: * Alokaci a spravu ždrojU * Príme ovladaní hardware (nížkoUrovnove interfaces) * Bežpečnost ■ Mikrokernel: ■ Málé je pěkné ■ Modularní prístup, male moduly odpovídající ža konkretní operace ■ Rada funkcí až v uživatelskem prostoru ■ Vysoce flexibilní, upravení operacního systemu podle potreby PB001 89 Podžim2010 AplikaCnŕ programová rozhraní (API) ■ Definují zpusob (,,calling conventions'') přístupu k operacnímu systemu a dalsím sluzbam ■ Definovano na urovni zdrojoveho kodu ■ Představuje abstrakci volane sluzby ■ Ucel: ■ Přenositelnost ■ Snadna sprava kodu ■ Dalsí pouzití ■ Preklad mezi sluzbami vysoke a nízke urovne * Převod typu/struktury parametru PB001 * Převod mezi zpusoby předavan90parametru (by-value a by-refere Podzim201o API - příklady ■ Prace se soubory: Otevření: int open(char *path, int oflag, ...) v ■ Ctení: int read(int fildes, char *buf, unsigned nbytes) ■ Zapis: int write(int fildes, char *buf, unsigned nbytes) Zavření: int close(int fildes) ■ Prace s pametí: Alokace pameti: void *malloc(size_t size) ■ Uvolneení pameeti: void free(void *ptr) Zmeena alokace: void *realloc(void *ptr, size_t size) PB001 91 Podzim 2010 Periferie z pohledu (modulárního) OS ■ Ovladace na nejnizsí urovni („nejblíze" hardware) ■ Specificke „jazyky" ovladaní periferií na teto urovni ■ Prace se signály (např. zmena stavu periferie) ■ Príklady * Prace s diskem * Ovladaní klavesnice a mysi (ctení signalu) * Grafika a ovladaní grafickych rozhraní * Sítove karty PB001 92 Podzim 2010 Periférie - pohled „shora" ■ Zpřístupneny prostřednictvím příslusneho API ■ Abstrakce: moznost vymeny konkretního zařízení (disk, sítova karta) bez vlivu na zpusob pouzití ■ Príznaky a klíce pro ovladaní specifickych vlastností: přrenositelnost versus efektivita PB001 93 Podzim 2010 System souboru ■ Zakladní funkce: ■ Vytvoření souboru ■ Čtení a psaní z/do souboru ■ Odstranení (smazaní) souboru ■ Spustení souboru (soubor=program) ■ Podpora na urovni operaCního systemu PB001 94 Podzim 2010 Struktura sýstemu souboru ■ Hierarchicke systemy: ■ Koren (root) ■ Adresaře jako specialní typ (meta)soůborů: drZí informace o souborech, nikoliv jejich vlastní data ■ Databazove systemy: ■ Soůbory (nebo jejich casti) jako poloZka v databazi ■ Bohatsí mnozina operací ■ Slozitejsí implementace PB001 95 Podzim 2010 Struktura souboru ■ Posloupnost bytů - vnitřní struktura pro OS neznáma ■ Posloupnost záznamů (records) ■ Strom - kaZdy uzel má vlastní klíC PB001 96 Podzim 2010 Typ á prístup ■ Typy souboru (v UNIXovem OS) ■ Řadne: beZne soubory ■ Adresare: udrZení hierarchická struktury ■ Specialní: přístup ke konkrétnímu zarízení (/dev/mouse, /dev/audio, /dev/lp); specialní /proc system ■ Blokove: nahodny přístup na zakladní urovni (/dev/hd, /dev/kmem) ■ Přístupove metody; príklady: ■ Sekvencní ■ Nahodny (random) ■ Indexsekvencní (není v beeznem UNIXu) PB001 97 Podzim 2010 Struktura na disku ■ Možné typy ■ Souvislé * souvislé posloupnost blokU (složitá alokace, plytvaní místem) ■ Provázány séžnam: * každy blok odkážujé na dalsí (mUžé rUst, vyssí režie - pro ukážátél, složity náhodny prístup) ■ Indexové: * Napr. FAT (Filé Allocation Table) v MS DOSu * Tabulka pro vsechny bloku na disku * Provážány odkážém na dalsí blok daného souboru ■ inodes PB001 98 Podžim 2010 Struktura - inodes Podobne indexovemu Pevna delka tabulky pro kazřdy soubor ■ Kratsí soubory adresovaný přímo ■ Pro deisí soubory alokovana daisí tabulka ■ Tabulky provazany hierarchicky (1., 2. a 3. uroven) Flexibilní, mala rezie PB001 99 Podzim 2010 Volné bloky ■ V tabulce ■ Bitový vektor ■ Provázaný seznam ■ vetSinou zpracovávaný podle FCFS (First Come First Served) PB001 100 Podzim 2010 Vyrovnávací paměť ■ Obecne přístup pro skrytí zpoždění (latence) ■ NejCasteji používane bloky/soubory uloženy v pameti ■ Použe pro Ctení (snažsí) nebo i pro žapis ■ Problem: konžistence pri prístupech/žapisech ž více míst ■ Zakladnítypy ■ Write-through: okamžite po žapisu i na disk ■ Write-back: až po urcite dobe (30 s) PB001 101 Podžim2010 Ochrana souboru Zakladní operače: ■ čtení, zapis (včetne výtvorení), smazaní, prodlouzení a spustení souboru Očhranne domený: ■ Skupina, ktera ma stejna prava ■ Napr.: Ja, moji přatele, ostatní ■ Statičke versus dýnamičke ■ UNIX: user—group—other PB001 102 Podzim 2010 Řízení přístupu k souborům ■ Access Control List, ACL (seznamy přístupovych opravnení); připojen ke kazdemu souboru ■ Zakladní (z UNIXovych systemu): * r: ctení souboru (ctení obsahu adresaře) * w: zapis souboru (vcetne vytvoření) * x: spustení (sestoupení do podadresare) ■ Plne ACL: více prav, dynamicka prace se skupinami ■ Capability List, CL ■ Uspořadaní podle domen, nikoliv podle souboru ■ Vhodne pro distribuovane systemy ■ Schopnost (capability) tj. prava přístupu patří procesu a ten je muze PB001 predavat dalsím procesum Podzim 2010 Ochráná prístupu uvnitř OS ■ Kernel a uzivatelsky prostor ■ Oddelení na hw urovni ■ Kazda stranka nekomu patrí ■ Pouze kernel ma přístup k hardware ■ Kontroluje präva prístupu ■ Obsluhuje zařízení (pro vsechny) ■ Garantuje serializaci přístupu ■ Uzivatelske procesy pouzívají volání kernelu (jadra) PB001 104 Podzim 2010 Prístup k pameti ■ Příslůsnost virtůalních stranek k procesů ■ Vypadek stranky: nepovoleny prístůp ■ Ochrana ■ Mezi procesem a jadrem ■ Mezi procesy ■ Uvnitr procesů PB001 105 Podzim 2010 Prerušení ■ Operacní sýstemý obecne reagují na udalosti (events) ■ Přerušení: mechanismus, jak přerusit výkonavanou praci na zaklade externí príciný (nejake udalosti) PB001 106 Podzim 2010 Význam přeruSení ■ Výpadek proudu ■ Výpadek hardware ■ Problem v programovem výbavení ■ Neautorizovaný přístup ■ Nelegalní instrukče nebo operandý ■ Zasah operatora ■ Podpora I/O ■ Pozadavek počítačem rízeneho sýstemu PB001 107 Podzim 2010 Príklady ■ Prerusení od casovace (preplanovaní procesu, timeout, ...) ■ Prerusení od periferie (klavesnice, mýs, sítova karta, ...) ■ Prerusení z procesoru (delení nulou, chýbna operace, ...) PB001 108 Podzim 2010 Principy preruSení ■ Přeruší beh aktualního programu ■ Nutno schovat stav ■ a zapamatovat místo navratu ■ Více zdroju a prícin přerusení ■ Nutno rozlisit typy (přícinu) přerusení ■ Nutno zapamatovat zdroj přerusení PB001 109 Podzim 2010 Obsluha pŕeruSení Obsluha prerusení realižována v kernelu ■ Zajisténí serialižácé ■ Béžpecnost Vyvolá tžv. přepnutí kontextu PB001 110 Podžim 2010 Další vlastnosti ■ Maskování přerušení ■ dočasne a trvale ■ možna ztrata prerušení/udalosti ■ Priorita prerušení/obsluhy ■ Zakladní tři urovnee: * Nemaskovana prerusení: vyssí priorita * Aktualne zpracovavane prerusení * Maskovana přerusení: nižsí priorita PB001 111 Podzim 2010 Polling ■ Polling = opakované dotazování (na stav/událost) ■ MoZna alternativa pro néktera preruSení ■ Zaméstnava procesor ■ MUZé zUstat v uZivatélském prostoru PB001 112 Podzim 2010