PBOOl: Uvod do informačních technologií Luděk Matýska Fakulta informatiky Masarykovy univerzity podzim 2014 Bvropský sociální fond v CR evropská unie JLSTVÍ, OPVMMvM V^Jhd^J7 INVESTICE DO ROZVOJE VZDĚLÁVANÍ Luděk Matýska (Fl MU) PBOOl: Úvod do informačních technologií podzim 2014 1 / 37 Ql Programové vybavení 0 Číselné soustavy Q Operační systémy Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií I podzim 2014 2 / 37 Nadstavba technických prostředků Vrstvy operačního systému: • Technické vybavení Správa paměti Správa procesu Správa periferií (1/0) Správa souborů dat Uživatelský prostor (nepřesné) Programové vybaver • 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 Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 4/37 Rozlišujeme • Styl • Míru abstrakce • „Dialekt" Programové vybavení • Imperativní/Procedurální: C, Fortran • Objektově orientované: Java, C++ • Deklarativní/Funkcionální: ML, Lisp, MIRANDA • Deklarativní/Logické: Prolog, GHC • S jediným prirazením: SISAL • Produkční systémy: 0PS5 • Sémantické sítě: NETL • Neuronové sítě: SAIC ANSpec Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 6/37 Programové vybaver WBEM fac := 1; if n > 0 then for i:=l to n do fac := i*fac; fac(O) := 1; fac(n>0) := n*fac(n-l); fac(0,1)• fac(N,Fl*N) :- fac(N-l.Fl). Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 7/37 Programové vybaver 1 • 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 Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 8/37 Programové vybaver • Překladače • Zdrojový kód-mezijazyk-strojový jazyk • Překlad a sestavení atyska (Fl MU) PB001: Úvod do informačních techn Programové vybaver • 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) Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 9/37 Programové vybaver • 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) Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 9/37 Programové vybavení • 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í Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 10 / 37 Programové vybaver ■3 • Datově orientovaný (nejpoužívanější) • Objektový • Funkcionální • Logický Luděk Matýska (Fl MU) PB001: Uvod do informačních techn Programové vybavení Dávají počítačům smysl • Vědecko-technické výpočty (vojenství: atomová bomba) Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 12 / 37 Programové vybavení Dávají počítačům smysl • Vědecko-technické výpočty (vojenství: atomová bomba) • Zpracování informací (Hollerith/IBM: census USA) Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií I podzim 2014 12 / 37 Programové vybavení 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) Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 12 / 37 Programové vybavení 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) Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 12 / 37 Čísel i i stavy • 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 Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 13 / 37 Čísel i i stavy • 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ě Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 13 / 37 Čísel i i stavy • Základ číslo dvě: • pouze dvě číslice/dva stavy • vhodná pro reprezentaci v elektrických systémech Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 14 / 37 i stavy očitá • 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 čitačem (program counter) • zásobníkem (volání funkcí a procedur) • vlastní pamětí pro data Luděk Matýska (Fl MU) PB001: Úvod do informačních techn Operační systémy • Klasické (heavy-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 Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 31 / 37 Operační systémy • Vytvoření procesu • f ork() 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ře ní, připraven (ready), běží (running), je blokován (čeká), skončil Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 32 / 37 Operační systémy • 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 Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 33 / 37 Operační systémy • Kritická sekce • Semafory: celočíselné proměnné (čitače) • Monitory: vyšší konstrukty programovacího jazyka Je možné semafor implementovat pomocí monitoru a naopak • 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 Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 34 / 37 Operační systémy • Sdílení (timesharing) • časové kvantum • přerušení • Prioritní • Statistické • Real-time • Plánovač (scheduler) Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií I podzim 2014 35 / 37 Operační systémy • Dvě základní operace: • alokuj/přiděl paměť (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) Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 36 / 37 Operační systémy • Virtualizace paměti - nutno uvolnit fyzickou paměť • Swapping • Celých procesů • „Děr" v paměti • Stránkování • Segmentace Luděk Matýska (Fl MU) PB001: Úvod do informačních technologií podzim 2014 37 / 37