PB001: Ú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 2009 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 2009 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 2009 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 2009 ■ Dva rozměry: ■ Od fyzické po programovou vrstvu ■ Různé komponenty na téže vrstvě PB001 5 ozice Podzim 2009 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 2009 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 2009 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 2009 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 2009 ■ Technické prostředky Architektura počítačů a sítí PB001 :iphny 6 Podzim 2009 ■ Technické prostředky Architektura počítačů a sítí ■ Programové prostředky ■ Operační systémy ■ Programovací jazyky ■ Aplikace PB001 :iphny 6 Podzim 2009 Technické prostředky - základní pojmy ■ Procesor(-řadič)-paměí-periferie: von Neumannova architektura PB001 7 Podzim 2009 Technické prostředky - základní pojmy ■ Procesor(-řadič)-paměí-periferie: von Neumannova architektura ■ Řízené zpracování dat PB001 7 Podzim 2009 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 2009 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 2009 47 Typy procesorů ■ Univerzální ■ CISC: Complex Instruction Set Computer ■ RISC: Reduced Instruction Set Computer ■ ... ■ Specializované ■ Vektorové ■ Grafické ■ 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 2009 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 2009 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 2009 17 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 2009 Permanentní ukládání dat ■ Paměti (ROM, PROM, EPROM, NVRAM) ■ Disky ■ Magnetické ■ Magnetooptické ■ Optické ■ Pásky - Sítě PB001 13 Podzim 2009 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 2009 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 2009 Speciální ■ Virtuální realita ■ Brýle a helmy ■ 3D projekce a prostorový zvuk ■ Haptika (rukavice, ...) ■ Detekce polohy a pohybu PB001 15 periferie Podzim 2009 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 2009 ■ Standardní pohled: ■ Procesor(y) ■ Paměí ■ Periferie ■ Možné i jiné pohledy ■ Buněčné automaty ■ Neuronové počítače PB001 to počítač? 16 Podzim 2009 Paralelní systémy ■ Úzce propojené (tightly coupled) ■ Volně propojené (loosely coupled) ■ Distribuované ■ Gridy PB001 17 Podzim 2009 Ú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 2009 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 (jednotky mus 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 2009 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 (100/xs až jednotky ms) ■ Typický výpočetní model: zasílání zpráv PB001 20 Podzim 2009 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 až stovky ms) ■ Prakticky jediný výpočetní model: zasílání zpráv PB001 21 Podzim 2009 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 2009 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 2009 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 2009 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*fac(n-l); fac(0,l). fac(N,Fl*N) :- fac(N-l,Fl). 26 Podzim 2009 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 2009 Programovací jazyky - implementace ■ Překladače ■ Zdrojový kód-mezijazyk-strojový jazyk ■ Překlad a sestavení PB001 28 Podzim 2009 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 2009 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 2009 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 2009 Výpočetní model - varianty ■ Datově orientovaný (nejpoužívanější) ■ Objektový ■ Funkcionální ■ Logický PB001 30 Podzim 2009 Aplikace Dávají počítačům smysl ■ Vědecko-technické výpočty (vojenství: atomová bomba) PB001 31 Podzim 2009 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 2009 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 2009 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 strojů i lidí, real-time systémy) PB001 31 Podzim 2009 Společenské aspekty ■ Výrobní a obchodní procesy ■ Nástroj vědy ■ Komunikace ■ Zábava PB001 32 Společenské aspekty Výrobní a obchodní procesy Nástroj vědy Komunikace Zábava Kriminální činnost PB001 32 Podzim 2009 Výrobní a obchodní procesy ■ Řízení výrobních procesů ■ Informační a manažerské systémy ■ Nové formy vývoje (simulace místo fyzických modelů) ■ Ovlivnění forem spolupráce/komunikace ■ Mezi institucemi (B2B, Bussiness to Bussiness) ■ Instituce a zákazník (B2C, Bussiness to Customer) ■ Mezi zákazníky (C2C) ■ Zcela nové příležitosti (Google, mapy, GPS, ...) PB001 33 Podzim 2009 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 34 Podzim 2009 Komunikace ■ Komunikace mezi počítači ■ Komunikace mezi lidmi (případně člověk-automat) - opět roste význam ■ Telefony ■ Faxy ■ Mobilní komunikace ■ Média ■ Zvýšení fragility společnosti PB001 35 Podzim 2009 Zábava ■ Televize ■ Počítačové hry ■ Fenomén on-line her: specifické prostředí pro spolupráci ■ Pasivní versus aktivní přístup ■ Peer to peer sítě (Napster, Gnutella, ...) ■ Virtuální realita PB001 36 Podzim 2009 Kriminální činnost PB001 37 Podzim 2009 ■ 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 ■ Destabilizace společnosti ■ Specifickým šířením informací Útoky na infrastrukturu ■ Útoky na citlivé informační zdroje ■ PB001 38 Podzim 2009 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 39 Podzim 2009 Čí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 40 Podzim 2009 Čí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 40 Podzim 2009 Dvojková soustava ■ Základ číslo dvě: ■ pouze dvě číslice/dva stavy ■ vhodná pro reprezentaci v elektrických systémech PB001 41 Podzim 2009 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 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 57 Podzim 2009 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 58 Podzim 2009 6285 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 59 Podzim 2009 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 60 Podzim 2009 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 61 Podzim 2009 Procesy - plánování ■ Sdílení (timesharing) ■ časové kvantum ■ přerušení ■ Prioritní ■ Statistické ■ Real-time ■ Plánovač (scheduler) PB001 62 Podzim 2009 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 63 Podzim 2009 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 64 Podzim 2009 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 65 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 66 Podzim 2009 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 67 Podzim 2009 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 68 Podzim 2009 Společné vlastnosti Interoperabilita Portabilita Integrace Transparence Bezpečnost PB001 69 Podzim 2009 Příklady ■ telnet ■ X Window systém na Unixu ■ Světová pavučina (World Wide Web) PB001 70 Podzim 2009 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 71 Podzim 2009 „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 72 Podzim 2009 Middleware ■ „Zkratka" v rámci protokolů ■ Komunikace přímo na vyšší abstraktní úrovni ■ Realizuje jednu (RPC) nebo více (DCE) funkcí PB001 73 Podzim 2009 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 74 Podzim 2009 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 75 Podzim 2009 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 76 Podzim 2009 Návrh - principy efektivita robustnost flexibilita přenositelnost kompatibilita PB001 77 Podzim 2009 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 78 Podzim 2009 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 79 Podzim 2009 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 80 Podzim 2009 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 81 Podzim 2009 Kompatibilita ■ Odstínění specifických detailů ■ Využití standardů ■ Efektivita? ■ Nemusí být negativně ovlivněna PB001 82 Podzim 2009 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 83 Podzim 2009 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 84 Klasifikace OS ■ Monolitický ■ Vrstvený ■ Modulární ■ mikro-kernel PB001 85 Podzim 2009 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 86 Podzim 2009 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 87 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 88 Podzim 2009 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 89 Podzim 2009 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|0parametrů (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 91 Podzim 2009 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 92 Podzim 2009 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 93 Podzim 2009 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 94 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 95 Podzim 2009 Struktura souborů ■ Posloupnost bytů - vnitřní struktura pro OS neznáma ■ Posloupnost záznamů (records) ■ Strom - každý uzel má vlastní klíč PB001 96 Podzim 2009 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 97 Podzim 2009 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 98 Podzim 2009 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 99 Podzim 2009 Volné bloky ■ V tabulce ■ Bitový vektor ■ Provázaný seznam ■ Většinou zpracovávány podle FCFS (First Come First Served) PB001 100 Podzim 2009 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 101 Podzim 2009 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 102 Podzim 2009 Ří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 103 Pod2 67 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 104 Podzim 2009 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 105 Podzim 2009 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 106 Podzim 2009 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 107 Podzim 2009 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 108 Podzim 2009 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 109 Obsluha přerušení ■ Obsluha přerušení realizována v kernelu ■ Zajištění serializace ■ Bezpečnost ■ Vyvolá tzv. přepnutí kontextu PB001 110 Podzim 2009 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 111 Podzim 2009 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 112 Podzim 2009