Üvod do informačních technologií Luděk Matýska Fl MU Základní podmínky * Přednášky nejsou povinné * Zkouška je pouze písemná * Termíny oznámím do konce října (cca 5, 2 řádné, dva kombinované, jeden pouze opravný) Jeden náhradní termín * Vzhledem ke kapacitním omezením doporučuji rané termíny * Prototypové zadání písemky dám k dispozici koncem listopadu * Studijní literatura uvedena u sylabu * Přednáška je nahrávána na video PB001 2 Podzim 2007 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í. * Etické a sociální rozměry informačních technologií. * Systémový (konceptuálni) pohled na celou oblast. * ,,Průvodce" následujícím studiem PB001 3 Podzim 2007 Dualita Informatiky * Unikátní kombinace reálných a abstraktních (virtuálních) systémů * Technické komponenty (hardware): podléhají fyzikálním zákonům * Programy (software): ,,ztělesnění" abstraktních konstrukcí PB001 4 Podzim 2007 Dualita Informatiky * Unikátní kombinace reálných a abstraktních (virtuálních) systémů * Technické komponenty (hardware): podléhají fyzikálním zákonům * Programy (software): ,,ztělesnění" abstraktních konstrukcí * Důsledky: * Virtuální prostředí * Pocit, že IT stojí mimo ,,realitu" * Fenomém vaporware PB001 4 Podzim 2007 ˇ Dva rozměry: * Od fyzické po programovou vrstvu * Různé komponenty na téže vrstvě PB001 5 ozice Podzim 2007 Dekompozice Dva rozměry: * Od fyzické po programovou vrstvu * Různé komponenty na téže vrstvě Příklady: * ISO OSI sííový model: např. linková, transportní a aplikační vrstva PB001 5 Podzim 2007 Dekompozice * Dva rozměry: * Od fyzické po programovou vrstvu * Různé komponenty na téže vrstvě * Příklady: * ISO OSI sííový model: např. linková, transportní a aplikační vrstva * Vrstvy operačního systému: např. kernel, ovladače, překladače, aplikace PB001 5 Podzim 2007 Dekompozice * Dva rozměry: * Od fyzické po programovou vrstvu * Různé komponenty na téže vrstvě * Příklady: * ISO OSI sííový model: např. linková, transportní a aplikační vrstva * Vrstvy operačního systému: např. kernel, ovladače, překladače, aplikace * Různé typy procesorů PB001 5 Podzim 2007 Dekompozice * Dva rozměry: * Od fyzické po programovou vrstvu * Různé komponenty na téže vrstvě * Příklady: * ISO OSI sííový model: např. linková, transportní a aplikační vrstva * Vrstvy operačního systému: např. kernel, ovladače, překladače, aplikace * Různé typy procesorů * Různé programovací jazyky PB001 5 Podzim 2007 ˇ Technické prostředky Architektura počítačů a sítí PB001 :iphny 6 Podzim 2007 ˇ Technické prostředky Architektura počítačů a sítí * Programové prostředky * Operační systémy * Programovací jazyky * Aplikace PB001 :iphny 6 Podzim 2007 Technické prostředky - základní pojmy * Procesor(-řadič)-paměí-periferie: von Neumannova architektura PB001 7 Podzim 2007 Technické prostředky - základní pojmy * Procesor(-řadič)-paměí-periferie: von Neumannova architektura * Řízené zpracování dat PB001 7 Podzim 2007 Technické prostředky - základní pojmy * Procesor(-řadič)-paměf-periferie: von Neumannova architektura * Řízené zpracování dat * Jiné modely architektury: * Turingovy stroje * Dataflow přístup * Objektově-orientovaná * Deklarativní (funkcionální či logická) PB001 7 Podzim 2007 Procesor Stroj vykonávající instrukce Vnitřní hodiny: takt procesoru Základní jednotka sekvenční (ALU) Může obsahovat více jednotek: vnitřní paralelismus Instrukční cyklus: výběr a provedení instrukce jednou jednotkou PB001 8 Podzim 2007 Typy procesorů * Univerzální * CISC: Complex Instruction Set Computer * RISC: Reduced Instruction Set Computer * . . . * Specializované * Vektorové * Embedded PB001 9 Paměť (vnitřní) * Uchovává data * Přímo adresovatelná: sloupec a řádek * Rozsah adres: 16, 32, 64, ... bitů * Cyklus paměti: doba nezbytná pro vystavení nebo zápis dat * Vzpamatování se po provedené operaci, prokládání pamětí * Statická vs. dynamická paměí, volatilita * Hierarchie pamětí * Rychlá--pomalá * Drahá--levná PB001 10 Podzim 2007 Paměť (vnitřní) * Uchovává data * Přímo adresovatelná: sloupec a řádek * Rozsah adres: 16, 32, 64, ... bitů * Cyklus paměti: doba nezbytná pro vystavení nebo zápis dat * Vzpamatování se po provedené operaci, prokládání pamětí * Statická vs. dynamická paměí, volatilita * Hierarchie pamětí * Rychlá--pomalá * Drahá--levná * Ilustrace ekonomického imperativu v IT PB001 10 Podzim 2007 Periferie * Zajištují vstup/výstup informací: * komunikace s uživatelem * permanentní ukládání dat komunikace s jinými systémy PB001 11 Podzim 2007 Komunikace s uživatelem * Interaktivní * Klávesnice: vstup * Myš, tablet, stylus, ...: vstup * Obrazovka: výstup i vstup * Zvuk: výstup i vstup * Dávkové: prostřednictvím jiných zařízení PB001 12 Podzim 2007 Permanentní ukládání dat * Paměti (ROM, PROM, EPROM, NVRAM) * Disky * Magnetické * Magnetooptické * Optické * Pásky - Sítě PB001 13 Podzim 2007 Permanentní ukládání dat * Paměti (ROM, PROM, EPROM, NVRAM) * Disky * Magnetické * Magnetooptické * Optické * Pásky - Sítě * Papír: trvanlivost! PB001 13 Podzim 2007 Komunikace * Počítačové sítě * Drátové * Elektrické * Optické PB001 14 Komunikace * Počítačové sítě * Drátové * Elektrické * Optické * Bezdrátové * Radiové vlny * Optické PB001 14 Komunikace * Počítačové sítě * Drátové * Elektrické * Optické * Bezdrátové * Radiové vlny * Optické * Akustické PB001 14 Komunikace * Počítačové sítě * Drátové * Elektrické * Optické * Bezdrátové * Radiové vlny * Optické * Akustické * Mechanické PB001 14 Podzim 2007 Speciální * Virtuální realita * Brýle a helmy * 3D projekce a prostorový zvuk * Haptika (rukavice, ...) * Detekce polohy a pohybu PB001 15 periferie Podzim 2007 Speciál * Virtuální realita * Brýle a helmy * 3D projekce a prostorový zvuk * Haptika (rukavice, ...) * Detekce polohy a pohybu * Wearable computers PB001 1 periferie Podzim 2007 ˇ Standardní pohled: * Procesor(y) * Paměí * Periferie * Možné i jiné pohledy * Buněčné automaty * Neuronové počítače PB001 to počítač? 16 Podzim 2007 Paralelní systémy * Úzce propojené (tightly coupled) * Volně propojené (loosely coupled) * Distribuované * Gridy PB001 17 Podzim 2007 Úzce propojené systémy Často společná paměí Minimální vliv vzdálenosti procesorů Speciální propojení procesorů a pamětí Vhodné pro tzv. jemný paralelismus Typický výpočetní model: sdílená paměí (i kdyby byla pouze virtuální) PB001 18 Podzim 2007 Volně propojené systémy * Převážně distribuovaná paměf (každý procesor zvláší) * Vzdálenost procesorů může hrát roli * Speciální propojení procesorů * Výrazně vyšší latence (zpoždění) v meziprocesorové komunikaci ( /xs a méně) * Existence operací remote put a remote get pro přístup do paměti vzdáleného procesoru * Typický výpočetní model: zasílání zpráv PB001 19 Podzim 2007 Distribuované systémy Rozšíření předchozího modelu Vždy distribuovaná paměí Vzdálenost procesoru hraje významnou roli Propojení procesorů často formou běžné LAN sítě Vysoká latence v meziprocesorove komunikaci (1 -- 100/xs) Typický výpočetní model: zasílání zpráv PB001 20 Podzim 2007 Gridy * Systém distribuovaný po geograficky rozsáhlých prostorech (země, kontinent, ...) * Propojeny samostatné počítače (včetně paralelních) * Propojení počítačů WAN sítí * Extrémně vysoká latence v meziprocesorové komunikaci (desítky ms) * Prakticky jediný výpočetní model: zasílání zpráv PB001 21 Podzim 2007 Programové vybavení * Nadstavba technických prostředků * Vrstvy operačního systému: * Technické vybavení Správa paměti Správa procesů Správa periferií (I/O) Správa souborů dat Uživatelský prostor (nepřesné) PB001 22 Podzim 2007 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, ... * Podpůrné nástroje * debuggery, profilery, ... * Aplikační programy PB001 23 Podzim 2007 Programovací jazyky * Rozlišujeme Styl * Míru abstrakce * ,,Dialekt" PB001 24 Programovací jazyky - styl * Imperativní/Procedurální: C, Fortran * Objektově orientované: Java, C++ * Deklarativní/Funkcionální: ML, Lisp, MIRANDA * Deklarativní/Logické: Prolog, GHC * S jediným přiřazením: SISAL * Produkční systémy: OPS5 * Sémantické sítě: NETL * Neuronové sítě: SAIC ANSpec PB001 25 Podzim 2007 Procedurální fac := 1; I if n > 0 then I for i : = l to n do I fac := i*fac; I PB001 vs. deklarativní styl fac(O) := 1; fac(n>0) := n * f a c ( n - l ) ; f a c ( 0 , l ) . fac(N,Fl*N) :- f a c ( N - l , F l ) . 26 Podzim 2007 Programovací jazyky - míra abstrakce * Strojový jazyk: přímo kódy jednotlivých instrukcí * Assembler: jména instrukcí, operandy, pojmenované cílové adresy skoků * Vyšší jazyky: obecné konstrukty, tvoří ,,kontinuum" * Agregované datové typy * Cykly namísto skoků * Procedury a funkce * Procesy a vlákna PB001 27 Podzim 2007 Programovací jazyky - implementace * Překladače * Zdrojový kód-mezijazyk-strojový jazyk * Překlad a sestavení PB001 28 Podzim 2007 Programovací jazyky - implementace * Překladače * Zdrojový kód-mezijazyk-strojový jazyk * Překlad a sestavení * Interprety * Abstraktní počítač * Vhodné pro složité operace (např. práce s texty, s maticemi a algebraickými objekty) PB001 28 Podzim 2007 Programovací jazyky - implementace * Překladače * Zdrojový kód-mezijazyk-strojový jazyk * Překlad a sestavení * Interprety * Abstraktní počítač * Vhodné pro složité operace (např. práce s texty, s maticemi a algebraickými objekty) * Just-in-time překladače (nejen Java) * Známy již od osmdesátých let (řešil se tak nedostatek paměti) PB001 28 Podzim 2007 Výpočetní model * Souvislost mezi architekturou a jazyky * von Neumannova architektura a imperativní jazyky * objektová architektura a objektově orientované jazyky * redukční architektura a funkcionální programování PB001 29 Podzim 2007 Výpočetní model - varianty * Datově orientovaný (nejpoužívanější) * Objektový * Funkcionální * Logický PB001 30 Podzim 2007 Aplikace Dávají počítačům smysl * Vědecko-technické výpočty (vojenství: atomová bomba) PB001 31 Podzim 2007 Aplikace Dávají počítačům smysl * Vědecko-technické výpočty (vojenství: atomová bomba) * Zpracování informací (Hollerith/IBM: census USA) PB001 31 Podzim 2007 Aplikace Dávají počítačům smysl * Vědecko-technické výpočty (vojenství: atomová bomba) * Zpracování informací (Hollerith/IBM: census USA) * Zábava (počítačové hry, video-on-demand) PB001 31 Podzim 2007 Aplikace Dávají počítačům smysl * Vědecko-technické výpočty (vojenství: atomová bomba) * Zpracování informací (Hollerith/IBM: census USA) * Zábava (počítačové hry, video-on-demand) * Řízení (management, control) PB001 31 Podzim 2007 Společenské aspekty * Nástroj vědy * Komunikace * Zábava PB001 32 Společenské aspekty * Nástroj vědy * Komunikace * Zábava * Kriminální činnost PB001 32 Nástroj vědy * Původní použití počítačů * Trvale klíčový směr využití * Ovlivňuje způsob vědecké práce * Experimenty versus simulace * Statistické zpracování velkých souborů * Astronomie * Bio-informatika * Virtuální vědecké týmy (spolupráce) * Formule 1 výpočetní techniky PB001 33 Podzim 2007 Komunikace * Komunikace mezi počítači * komunikace mezi lidmi (případně člověk-automat) - opět roste význam * Telefony * Faxy * Mobilní komunikace * Změna forem spolupráce (B2B, B2C, C2C) * Zvýšení fragility společnosti PB001 34 Podzim 2007 Zábava Televize Počítačové hry Pasivní versus aktivní přístup Peer to peer sítě (Napster, Gnutella, ...) Virtuální realita PB001 35 Podzim 2007 Kriminální činnost * Kriminalita bílých límečků * Zneužívání zdrojů na síti (účty, výpočetní výkon, kapacita sítě, poštovní služby, ...) * Krádeže informací (čísla kreditních karet, telefonní linky, špionážní činnost) * Viry * Záměrně špatné informace PB001 36 Podzim 2007 Právo a etika v IT * V podstatě inženýrská disciplína avšak neinzenýrske přístupy (shrink wrap licence, minimální odpovědnost za chyby, ...) * Kódy/normy správného chování/přístupu * Faktická a právní odpovědnost * IPR (Intellectual Property Rights), autorská ochrana, softwarové patenty PB001 37 Podzim 2007 Číselné soustavy * Definovány základem: desítková, dvojková, osmičková, šestnáctková * Volně mezi sebou převoditelné (celá čísla bez ztráty přesnosti) * Celá čísla a zlomky * Reálná čísla * Konečná reprezentace PB001 38 Podzim 2007 Číselné soustavy * Definovány základem: desítková, dvojková, osmičková, šestnáctková * Volně mezi sebou převoditelné (celá čísla bez ztráty přesnosti) * Celá čísla a zlomky * Reálná čísla * Konečná reprezentace * První počítače v desítkové soustavě PB001 38 Podzim 2007 Dvojková soustava * Základ číslo dvě: * pouze dvě číslice/dva stavy * vhodná pro reprezentaci v elektrických systémech PB001 39 Podzim 2007 Dvojková soustava v počítači * Konečná reprezentace: interval hodnot * Pro reálná čísla: * Rozlišitelnost (nejmenší zobrazitelné číslo): X + e>XaX + e/2 = X * Přesnost (rozsah) * Zobrazení: mantisa m a exponent e 0 < m < l A x = m.2e * Záporná čísla: * Přímý kód * Inverzní kód * Dvojkový doplňkový kód PB001 40 Podzim 2007 Záporná čísla - zobrazení * Přímý kód: * Přidáme znaménko * Dvě nuly: +0 a - 0 (10 ... 00) * Rozsah: (-MAX, -0) a (+0, +MAX) * Inverzní kód: * Přidáme znaménko * Dvě nuly: +0 a - 0 (11... 11) * Rozsah: (-MAX, - 0 a (+0, +MAX) PB001 41 Záporná čísla - zobrazení * Dvojkový doplňkový kód: * Inverze bitu a přičtení jedničky * Pouze jedna nula (11... 11 je --1) * Nesymetrický rozsah: (-MAX - l , - 1 ) a (+0, +MAX) * Skutečně používán v počítačích PB001 42 Podzim 2007 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. přibližně (-2.109 ,2.109 ) * Dvojslovo (nebo dlouhé slovo), 8 byte: 64 bitů, tj. přibližně (-9.1018 ,9.1018 ) PB001 43 Podzim 2007 Racionální čísla * Formát dle IEE 754 * Součásti: * Znaménko * Mantisa (přímý kód, normalizace, m bitů) * Exponent (v kódu posunuté nuly, n bitů) PB001 44 Podzim 2007 Racionální čísla * Normalizace mantisy (exponent má n bitů): * Nejvyšší bit vždy jedna: l.aaaaaa; 1 nezapisujeme * Nejmenší kladné číslo: 1.0 x 2~2n_1+1 (2~127 pro n = 8) - Největší číslo: 1.0 x 22n_1 (2128 ) * Exponent (n bitů, dvojková soustava) * Přičteme 2n _ 1 -- 1 (=127 pro n = 8), abychom získali správnou hodnotu pro uložení * ooooooooo je -127 * 111111111 je 128 * Zvláštní a nenormalizovaná čísla PBOOI 45 Podzim 2007 Racionální čísla II * Rozsah zobrazení: (Největší záporné, Největší kladné) * Přesnost zobrazení: počet bitů mantisy+1 * Rozlišitelnost: nejmenší nenulové číslo * Normalizované vs. nenormalizované (2m krát menší, m počet bitů mantisy) PB001 46 Podzim 2007 Jiné soustavy * Osmičková * 0 0 1 1 0 1 1 0 1 1 1 1 2 = 15578 = 879io * Šestnáctková * 0011 0110 11112 = 36Fi6 = 879io * Používány především pro ,,hutný" zápis binárních čísel PB001 47 Podzim 2007 Operační systémy - trocha historie * Bootstrap loader * Spooling * Nezávislé zavádění programu a jeho vykonávání * Vyžaduje DMA (Direct Memory Access) * Zavedlo multiprogramování * Stále zpracování dávek (batch processing) * Timesharing * Virtualizace počítače/CPU * Zpracování interaktivních úloh * Souvisí se zavedení disků (Direct Access Storage Device, DASD od IBM, 60tá léta) PB001 48 Podzim 2007 Operační * Zkrásnění: * Zjednodušení práce s počítačem * Práce s pamětí * Práce se soubory * Přístup k periferiím PB001 49 témy: účel Podzim 2007 Operační systémy: účel * Sdílení: * Zajistit sdílení vzácných zdrojů * Musí zajistit: * Aby to vůbec fungovalo * Aby to fungovalo účinně (využití, propustnost, rychlost odezvy) * Aby to fungovalo správně * Omezení následků chyb (avšak pozor na chyby v samotném operačním systému) * Oprávnění k přístupu (autentizace a autorizace) PB001 50 Podzim 2007 OS: problém časování * Periferie výrazně pomalejší než procesor * Příklad * 1 GHz Pentium IV: 1.109 operací za sekundu * Běžný disk: 10 ms pro přečtení 1 byte * Poměr 1 : 10 000 000 * Stejné zpomalení člověka: 1 úhoz na klávesnici cca 20 dní. * Možné řešení: prokládání I/O a výpočtu * Spusť diskovou operaci Prováděj instrukce nad jinými daty (alespoň l~milion instrukcí) Počkej na dokončení Příliš těžkopádné a složité PB001 51 Podzim 2007 OS časování: jiné řešení Proces 1 { Spusť diskovou operaci Počkej na dokončení Zpracuj získaná data } Proces 2 { Nějaká j i n á aplikace } * Přehlednější * OS musí ,,přepínat" mezi procesy {priorita) PB001 52 Podzim 2007 OS: paměf * Většina paměti nevyužita * Zpracování cyklu (zbytek programu) * Zpracování konkrétních dat (ostatní neaktivní) * Čekání na I/O * Virtualizace paměti * Data a programy na disku * Do paměti na žádost * Umožňuje * Každý program má ,,celou" paměí * Program může adresovat více jak rozsah fyzické paměti * Ochrana paměti PB001 53 Podzim 2007 OS: ' Procesy a jejich správa Paměí a její správa Periferie a jejich správa Systém souborů Ochrana a bezpečnost PB001 adní složky 54 Podzim 2007 Procesy * Proces je abstrakce průchodu programem * Sekvenční model: program = 1 proces * Paralelní model: program > 1 proces * Proces má interní stav, charakterizovaný * programovým čítačem (program counter) * zásobníkem (volání funkcí a procedur) * vlastní pamětí pro data PB001 55 Podzim 2007 Typy procesů * Klasické (heawy-weight) procesy (např. UNIX) * Všechna data privátní * Sdílen pouze program (read-only) * Lehké (light-weight) procesy či Vlákna (threads) * Minimum vlastní paměti * Většina dat sdílena PB001 56 Podzim 2007 Procesy detailněji * Vytvoření procesu * forkO a jeho varianty * Přesná kopie původního procesu * Rodič a potomek * První proces v OS vytvářen jinak (init v Unixu) * Stavy * Start/vytvoření, připraven (ready), běží (running), je blokován (čeká), skončil PB001 57 Podzim 2007 Synchronizace - problém * Race condition: soupeření v čase * Proces P { Load RegistrA, X Load RegistrB, Y Add RegistrA, RegistrB Store RegistrA, X # X+=Y } * Dvě instance procesu P, používají stejná X a Y * Nedefinovatelné výsledky * Je-li na začátku X=Y=1, pak na konci může být X=2 nebo X=3 PB001 58 Podzim 2007 Synchronizace - řešení * Kritická sekce * Semafory: ano/ne * Monitory: čitače * Smrtelné objetí (deadlock) * Odstranění sdílených zdrojů: zasílání zpráv * Synchronizace na úrovni zasílání a přijímání zpráv * Buffery PB001 59 Podzim 2007 Procesy - plánování * Sdílení (timesharing) * časové kvantum * přerušení * Prioritní * Statistické * Real-time * Plánovač (scheduler) PB001 60 Podzim 2007 Správa paměti * Dvě základní operace: * alokuj/přiděl pamět (velikost, vrací počáteční adresu) * dealokuj/uvolni paměí (velikost a počáteční adresa) Většinou závislé (lze uvolnit jen přesně totéž, co jsme alokovali dříve) * Doplňková operace: změň rozsah alokované paměti (reallocate) * Organizace paměti * Čištění paměti (garbage collection) PB001 61 Podzim 2007 Správa paměti OS * Virtualizace paměti - nutno uvolnit fyzickou paměí * Swapping * Celých procesů * ,,Děr" v paměti * Stránkování * Segmentace PB001 62 Podzim 2007 Ochrana a bezpečnost * Ohrožení: * Přístup (čtení) * Zápis (modifikace) * Znepřístupnění služby (denial of service) * Trojský kůň * Vydává se za něco, co není * Viry PB001 63 Principy návrhu bezpečných systémů Zveřejnění algoritmů Standardní nastavení = žádný přístup Pravidelné kontroly Minimální oprávnění Jednoduchý a uniformní mechanismus Úrovně oprávnění PB001 64 Podzim 2007 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 strukturované * Asymetrické: klient posílá požadavek na zpracování serveru * Server pro jednoho klienta může být klientem pro jiný server. PB001 65 Podzim 2007 Vlastnosti modelu client-server * Klient a server samostatné procesy * Na stejném nebo různých počítačích * Interní informace je ,,soukromá" pro každý proces * Komunikují tzv. peer-to-peer protokolem PB001 66 Podzim 2007 Společné vlastnosti Interoperabilita Portabilita Integrace Transparence Bezpečnost PB001 67 Podzim 2007 Příklady * telnet * X Window systém na Unixu * Světová pavučina (World Wide Web) PB001 68 Podzim 2007 Třívrstevný model * Základní rozčlenění * Data * Logika * Prezentace * Sousední možno kombinovat/rozdělit (tj. např. Logika může být součástí datové i prezentační vrstvy, a to i současně) PB001 69 Podzim 2007 ,,Tlustý" a ,,tenký" * Platí pro server i klient, podstatné zejména v souvislosti s klienty * ,,Tlustý" (fat) klient: * Značná spotřeba lokálních zdrojů (CPU, paměí, disk) * Komplexní provedení i instalace * Příklad: Mozilla * ,,Tenký" (thin) klient: * Jednodušší * Snadná správa * Menší skalovatelnost (příliš mnoho práce dělá server) * Zpravidla vyšší nároky na propustnost sítě PB001 70 Podzim 2007 Middleware * ,,Zkratka" v rámci protokolů * Komunikace přímo na vyšší abstraktní úrovni * Realizuje jednu (RPC) nebo více (DCE) funkcí PB001 71 Podzim 2007 Middleware - příklady * Primitivní: přenos souborů * Základní: RPC (Remote Procedure Call) * Integrované: DCE (Distributed Computing Environment) * Distribuované objektové služby: CORBA, OGSA (Open Grid Service Architecture) PB001 72 Podzim 2007 CORBA * Common Object Request Broker Architecture * Základem ORB: vrstva, která zprostředkovává komunikaci (middleware pro middleware) * Kompomenty: * Rozhraní (řetězce) * Pojmenování (naming service) * ,,Obchodní" služba (trader) PB001 73 Podzim 2007 Mobilní systémy * Inherentně distribuované * Často klient-server model * Tencí i tlustí klienti * Kompromis mezi výkonem a propustností sítě/připojení * Konvergence * Od notebooků po mobilní telefony PB001 74 Podzim 2007 Návrh - principy efektivita robustnost flexibilita přenositelnost kompatibilita PB001 75 Podzim 2007 Efektivita * Maximální využití dostupných zdrojů * Použití jednoduchých a jasných principů * Dekompozice návrhu * Objektově orientovaný návrh (pozor na přílišnou fragmentaci) * Agenti * Komponentní programování PB001 76 Podzim 2007 Robustnost * Schopnost úspěšně se vzpamatovat po výpadku * Řešeno redundancí (standardní inženýrské řešení): snižuje ovšem pozorovanou efektivitu * První výzkum v ČR koncem 50. a začátkem 60. let (Ing. Svoboda) * Běžné trojnásobné jištění (např. řídící počítače atomových ponorek USA) * V současné době zájem o self-healing programy PB001 77 Podzim 2007 Flexibilita * Možnost úpravy (adaptace) podle změněných potřeb * Často používána ve významu rozšiřitelnost (extenzibilita) * Definuje a fixuje se rámec (framework) * Přidání nové složky bez změny rámce snadné * Případně hierarchie rámců (přidání či modifikace nového rámce) PB001 78 Podzim 2007 Přenositelnost * Úzce souvisí s operačními systémy * Dostatečná abstrakce detailů * Virtuální ,,disk" namísto konkrétního zařízení * Programy psány bez odkazů na speciální vlastnosti * Využití standardů * Opět možný rozpor s požadavkem efektivity PB001 79 Podzim 2007 Kompatibilita * Odstínění specifických detailů * Využití standardů * Efektivita? * Nemusí být negativně ovlivněna PB001 80 Podzim 2007 Externí požadavky (na funkcionalitu OS) * Stejný (podobný) hw a různé priority * Server: např. stabilita, bezpečnost, propustnost * Pracovní stanice: např. snadnost ovládání, rozumný výkon ve všech oblastech * Specializovaná grafická stanice: maximalizace grafického výkonu * Řídící systém: požadavky real-time, robustnost, PB001 81 Podzim 2007 Bezpečnost * Snižuje snadnost použití * Klade dodatečná omezení na uživatele (disciplina) * Větší nároky na správu systému * Srovnání: MS Windows 95 versus MS Windows NT PB001 82 Klasifikace OS * Monolitický * Vrstvený * Modulární * mikro-kernel PB001 83 Podzim 2007 Monolický OS Původní operační systémy (proprietární) Abstrakce nepoužívána příliš dovnitř Nejasné rozlišení funkcí uvnitř operačního systému ,,Velké", špatně rozšiřitelné, špatně udrzovatelne Poplatné době pomalejšího vývoje hardware a jeho vysoké ceny PB001 84 Podzim 2007 Vrstvený OS * Vrstvy odpovídají procesům správy: * Správa CPU * Správa paměti * Správa periferií Správa systému souborů * Lepší abstrakce * Komunikace mezi vrstvami PB001 85 Modulární OS Moduly namísto vrstev Zapouzdření (enkapsulace) funkcí Komunikace mezi moduly Příbuzný objektovému přístupu Lepší údržba Riziko vzniku ,,fatware" PB001 86 Podzim 2007 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ídá za: * Alokaci a správu zdrojů * Přímé ovládání hardware (nízkoúrovňové interfaces) * Bezpečnost * Mikrokernel: * Malé je pěkné * Modulární přístup, malé moduly odpovídající za konkrétní operace * Řada funkcí až v uživatelském prostoru * Vysoce flexibilní, upravení operačního systému podle potřeby PB001 87 Podzim 2007 Aplikační programová rozhraní (API) * Definují způsob (,,calling conventions") přístupu k operačnímu systému a dalším službám * Definováno na úrovni zdrojového kódu * Představuje abstrakci volané služby * Účel: * Přenositelnost * Snadná správa kódu * Další použití * Překlad mezi službami vysoké a nízké úrovně * Převod typů/struktury parametrů B001 * Převod mezi způsoby předáván|8parametrů (by-value a by-referen^g^ API - příklady * Práce se soubory: * Otevření: int open(char *path, int of lag, . . . ) v * Ctení: int read(int fildes, char *buf, unsigned nbytes) * Zápis: int write(int fildes, char *buf, unsigned nbytes) * Zavření: int close(int fildes) * Práce s pamětí: * Alokace paměti: void *malloc(size_t size) * Uvolnění paměti: void free(void *ptr) * Změna alokace: void *realloc(void *ptr, size_t size) PB001 89 Podzim 2007 Periferie z pohledu (modulárního) OS * Ovladače na nejnižší úrovni (,,nejblíže" hardware) * Specifické ,,jazyky" ovládání periferií na této úrovni * Práce se signály (např. změna stavu periferie) * Příklady * Práce s diskem * Ovládání klávesnice a myši (čtení signálů) * Grafika a ovládání grafických rozhraní * Sííové karty PB001 90 Podzim 2007 Periferie - pohled ,,shora" * Zpřístupněny prostřednictvím příslušného API * Abstrakce: možnost výměny konkrétního zařízení (disk, sííová karta) bez vlivu na způsob použití * Příznaky a klíče pro ovládání specifických vlastností: přenositelnost versus efektivita PB001 91 Podzim 2007 Systém souborů * Základní funkce: * Vytvoření souboru * Čtení a psaní z/do souboru * Odstranění (smazání) souboru * Spuštění souboru (soubor=program) * Podpora na úrovni operačního systému PB001 92 Struktura systému souborů * Hierarchické systémy: * Kořen (root) * Adresáře jako speciální typ (meta)souboru: drží informace o souborech, nikoliv jejich vlastní data * Databázové systémy: * Soubory (nebo jejich části) jako položka v databázi * Bohatší množina operací * Složitější implementace PB001 93 Podzim 2007 Struktura souborů * Posloupnost bytů - vnitřní struktura pro OS neznáma * Posloupnost záznamů (records) * Strom - každý uzel má vlastní klíč PB001 94 Podzim 2007 Typ a přístup * Typy souborů (v UNIXovém OS) * Řádné: běžné soubory * Adresáře: udržení hierarchické struktury * Speciální: přístup ke konkrétnímu zařízení (/dev/mouse, /dev/audio, /dev/ip); speciální /proč systém * Blokové: náhodný přístup na základní úrovni (/dev/hd, /dev/kmem) * Přístupové metody; příklady: * Sekvenční * Náhodný (random) * Indexsekvenční (není v běžném UNIXu) PB001 95 Podzim 2007 Struktura na disku * Možné typy * Souvislé * souvislé posloupnost bloků (složitá alokace, plýtvání místem) * Provázaný seznam: * každý blok odkazuje na další (může růst, vyšší režie - pro ukazatel, složitý náhodný přístup) * Indexové: * Např. FAT (File Allocation Table) v MS DOSu * Tabulka pro všechny bloku na disku * Provázány odkazem na další blok daného souboru * inodes PB001 96 Podzim 2007 Struktura - inodes * Podobné indexovému * Pevná délka tabulky pro každý soubor * Kratší soubory adresovány přímo * Pro delší soubory alokována další tabulka * Tabulky provázány hierarchicky (1., 2. a 3. úroveň) * Flexibilní, malá režie PB001 97 Podzim 2007 Volné bloky * V tabulce * Bitový vektor * Provázaný seznam * Většinou zpracovávány podle FCFS (First Come First Served) PB001 98 Podzim 2007 Vyrovnávací paměf Obecně přístup pro skrytí zpoždění (latence) Nejčastěji používané bloky/soubory uloženy v paměti Pouze pro čtení (snazší) nebo i pro zápis Problém: konzistence při přístupech/zápisech z více míst Základní typy * Write-through: okamžitě po zápisu i na disk * Write-back: až po určité době (30 s) PB001 99 Podzim 2007 Ochrana souborů Základní operace: * čtení, zápis (včetně vytvoření), smazání, prodloužení a spuštění souboru Ochranné domény: Skupina, která má stejná práva * Např.: Já, moji přátelé, ostatní * Statické versus dynamické * UNIX: user--group--other PB001 100 Podzim 2007 Řízení přístupu k souborům * Access Control List, ACL (seznamy přístupových oprávnění); připojen ke každému souboru * Základní (z UNIXových systémů): * r: čtení souboru (čtení obsahu adresáře) * w: zápis souboru (včetně vytvoření) * x: spuštění (sestoupení do podadresáře) * Plné ACL: více práv, dynamická práce se skupinami * Capability List, CL * Uspořádání podle domén, nikoliv podle souborů * Vhodné pro distribuované systémy * Schopnost (capability) tj. práva přístupu patří procesu a ten je může PB001 předávat dalším procesům 101 Pod. Ochrana přístupu uvnitř OS * Kernel a uživatelský prostor * Oddělení na hw úrovni * Každá stránka někomu patří * Pouze kernel má přístup k hardware * Kontroluje práva přístupu * Obsluhuje zařízení (pro všechny) * Garantuje serializaci přístupu * Uživatelské procesy používají volání kernelu (jádra) PB001 102 Podzim 2007 Přístup k paměti * Příslušnost virtuálních stránek k procesu * Výpadek stránky: nepovolený přístup * Ochrana Mezi procesem a jádrem * Mezi procesy * Uvnitř procesu PB001 103 Podzim 2007 Přerušení * Operační systémy obecně reagují na události (events) * Přerušení: mechanismus, jak přerušit vykonávanou práci na základě externí příčiny (nějaké události) PB001 104 Podzim 2007 Význam přerušení * Výpadek proudu * Výpadek hardware * Problém v programovém vybavení * Neautorizovaný přístup * Nelegální instrukce nebo operandy * Zásah operátora * Podpora I/O * Požadavek počítačem řízeného systému PB001 105 Podzim 2007 Příklady * Přerušení od časovače (přeplánování procesů, timeout, ...) * Přerušení od periferie (klávesnice, myš, sííová karta, ...) * Přerušení z procesoru (dělení nulou, chybná operace, ...) PB001 106 Podzim 2007 Principy přerušení * Přeruší běh aktuálního programu * Nutno schovat stav * a zapamatovat místo návratu * Více zdrojů a příčin přerušení * Nutno rozlišit typy (příčinu) přerušení * Nutno zapamatovat zdroj přerušení PB001 107 Obsluha přerušení * Obsluha přerušení realizována v kernelu * Zajištění serializace * Bezpečnost * Vyvolá tzv. přepnutí kontextu PB001 108 Podzim 2007 Další vlastnosti * Maskování přerušení * dočasné a trvalé * možná ztráta přerušení/události * Priorita přerušení/obsluhy * Základní tři úrovně: * Nemaskovaná přerušení: vyšší priorita * Aktuálně zpracovávané přerušení * Maskovaná přerušení: nižší priorita PB001 109 Podzim 2007 Polling * Polling = opakované dotazování (na stav/událost) * Možná alternativa pro některá přerušení * Zaměstnává procesor * Může zůstat v uživatelském prostoru PB001 110 Podzim 2007