Detail předmětu

Operační systémy a sítě

FEKT-MOSSAk. rok: 2016/2017

První část předmětu je věnována základním principům operačních systémů, správě procesů a vláken, komunikaci mezi procesy, synchronizaci procesů a vláken, správě paměti, souborovým systémům, strukturám operačních systémů a virtualizaci. Druhá část předmětu se zabývá počítačovými sítěmi. Studenti získají informace o síťových protokolech a standardech jako Ethernet, IEEE 802.1Q VLAN, PoE, TCP/IP, HTTP, SMTP, fungování systému DNS a DHCP a směrování v IP sítích. Zvláštní pozornost je věnována novému protokolu IPv6.

Jazyk výuky

čeština

Počet kreditů

5

Garant předmětu

Výsledky učení předmětu

Absolvent je schopen:
- vytvořit jednoduchý aplikační program pro operační systém UNIX/Linux,
- vytvořit jednoduchou síťovou aplikaci založenou na rozhraní BSD socket,
- vytvářet programy s více vlákny,
- aplikovat synchronizační prostředky jako mutex, semafor, podmínková proměnná,
- popsat síťové protokoly a standardy Ethernet, IEEE 802.1Q VLAN, PoE, TCP/IP, IPv6, DNS, DHCPv4/DHCPv6, HTTP, SMTP,
- vysvětlit navázání a ukončení TCP spojení,
- vysvětlit mechanismy objevování sousedů u IPv6.

Prerekvizity

Student, který si předmět zapíše, by měl být schopen vytvořit jednoduchý program v jazyce C, využívat základní knihovní funkce jazyka C, vysvětlit základní činnost Von Neumannova počítače a popsat činnost procesoru při obsluze přerušení.

Plánované vzdělávací činnosti a výukové metody

Metody vyučování zahrnují přednášky a cvičení na počítači. Student vypracuje osm úloh.

Způsob a kritéria hodnocení

Počítačová cvičení jsou hodnocena max. 30 body, z toho 15 bodů za samostatné naprogramování zadaných úloh a 15 bodů za závěrečný test.
Závěrečná zkouška má ústní část a je hodnocena max. 70 body.

Osnovy výuky

1. Úvod: hodnocení, podmínky ukončení předmětu. Základní pojmy: operační systém (dále OS). uniprogramming, multiprogramming, sdílení času, preemptivní a nepreemptivní multitasking. Abstrakce poskytované OS. Jádro OS, uživatelský mód procesoru a mód jádra. Procesy: tabulka procesů, PCB, stavy procesů, kontext procesu, přepínání kontextu, plánování procesů, fronty procesů. Přístup ke službám OS: systémová volání, API, standard POSIX. Blokující a neblokující operace.
2. Vytvoření procesu a spuštění programu. Vytváření procesů a spouštění programů v OS UNIX/Linux (funkce fork(), funkce rodiny exec()). Identifikátory spojené s procesem. Ukončení procesu. Čekání na ukončení procesu, vyzvednutí návratového kódu procesu (funkce wait()).
3. Signály: vymezení pojmu signál, asynchronní a synchronní signály, reakce procesu na signál, doručení a akceptování signálu, blokování obsluhy signálů, důležité signály, zasílá signálů procesům. Řízení úloh.
4. Souborové systémy: implementace souborového systému (pouze základy), tabulky v jádře OS pro práci se soubory, duplikace deskriptorů, přesměrování vstupů a výstupů, typy souborů v OS UNIX/Linux.
5. Vlákna: pojem vlákno, vlákna a procesy, typické multivláknové aplikace, způsoby implementace vláken. Vytváření, ukončování a spojování vláken.
6. Synchronizace procesů a vláken: proč je třeba synchronizovat, kritická sekce, nízkoúrovňové prostředky synchronizace (atomická instrukce, zákaz přerušení, spin-lock), aktivní a pasivní čekání, vysokoúrovňové prostředky synchronizace (mutex, semafor, podmíněná proměnná, bariéra, zprávy). Problém uváznutí.
7. Počítačové sítě: TCP/IP model, vztah k ISO OSI modelu. Fyzická a linková vrstva. Ethernet: rámec Ethernet II, funkce ethernetového přepínače (switche). VLAN, IEEE 802.1Q VLAN Tagging, typy portů přepínače. PoE.
8. IPv4 protokol: funkce IP protokolu, IPv4 datagram, adresování rozhraní, IPv4 adresy, fragmentace. ARP protokol. ICMP protokol. Protokoly UDP a TCP: adresování procesů - porty, porovnání TCP a UDP protokolů. UDP protokol: UDP paket, položky hlavičky, kontrolní součet.
9. Protokol TCP: TCP segment, položky hlavičky, navázání, průběh a ukončení TCP spojení. POSIX sockets API (dříve BSD sockets): charakteristika, vztah k souborovému systému, typy socketů, funkce a datové struktury. Aplikace typu UDP klient, UDP server, TCP klient, TCP server.
10. Architektura aplikací: klient-server, peer-to-peer (P2P), hybrid klient-server a peer-to-peer (P2P). Iterativní a konkurentní server. Modely realizace konkurentních serverů.
11. IPv6 protokol: formát IPv6 datagramu, zřetězení hlaviček, položky základní hlavičky. Bezpečnostní problém řetězení hlaviček. IPv6 adresy, identifikátory rozhraní, problém ochrany soukromí.
12. IPv6 protokol: Mechanismus objevování sousedů. Automatická konfigurace. Bezpečnostní problémy.
13. Směrování, směrovací tabulka, agregace položek směrovací tabulky, základní algoritmus směrování. Protokol HTTP, SMTP.

Učební cíle

Cílem předmětu je seznámit studenty se základními principy operačních systémů, základy programování uživatelských a síťových aplikací pro OS UNIX/Linux a síťovými protokoly a standardy jako Ethernet, IEEE 802.1Q VLAN, PoE, TCP/IP, IPv6, DNS, DHCPv4/DHCPv6, HTTP, SMTP.

Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky

Počítačová cvičení jsou povinná, řádně omluvené zmeškané počítačové cvičení lze po domluvě s vyučujícím nahradit.

Základní literatura

Perlík, L. Jemný úvod do systému UNIX. Dotisk prvního vydání. České Budějovice: Koop, 2000. 189 s. ISBN 80-85828-28-6. (CS)
Tanenbaum, S., A. Modern operating systems. 3.ed. Upper Saddle River, New Jersey 07458: Pearson Prentice Hall, 2008. 1076 p. ISBN 0-13-600663-9. (EN)
Silberschatz, A., Galvin, P., B., Gagne, G. Operating System Concepts. 8th ed. Hoboken: Wiley, 2010. 972 p. ISBN 978-0-470-233399-3. (EN)
Mitchell, M., Oldham, J., Samuel, A. Pokročilé programování v operačním systému Linux. Praha: SoftPress, 2002. 320 s. ISBN 80-86497-29-1. (CS)
Dostálek, L., Kabelová, A. Velký průvodce protokoly TCP/IP a systémem DNS. 5. akt. vyd. Brno: Computer Press, 2008. 488 s. ISBN 978-80-251-2236-5. (CS)

Zařazení předmětu ve studijních plánech

  • Program EEKR-M1 magisterský navazující

    obor M1-KAM , 1. ročník, zimní semestr, volitelný oborový

  • Program EEKR-M magisterský navazující

    obor M-KAM , 2. ročník, zimní semestr, volitelný oborový

  • Program EEKR-CZV celoživotní vzdělávání (není studentem)

    obor ET-CZV , 1. ročník, zimní semestr, volitelný oborový

Typ (způsob) výuky

 

Přednáška

26 hod., nepovinná

Vyučující / Lektor

Osnova

1.Klasický model operačního systému, funkce jednotlivých vrstev, požadavky na OS, model OS UNIX, jádro, systémová volání, knihovní funkce. Historie a rodokmen OS UNIX, standardizace, adresářová struktura. Příkazové interprety a práce v nich: zástupné znaky, regulární výrazy, standardní vstup a výstup, přesměrování vstupů a výstupů, roury.
2.Shell: proměnné, speciální proměnné shellu, operátory && a ||, podmínky, příkazy expr, test, konstrukce case, cykly, funkce, interaktivní skripty (příkazy read, switch).
3.Souborový systém UNIXU, typy souborových systémů, inode, adresáře, tvrdé a měkké odkazy. Přístupová práva. Funkce pro práci se soubory a s adresáři.
4.Procesy - kontext procesu, stavy procesu, prostředí procesu, proměnné prostředí, spouštění procesů (funkce fork a exec), ukončení procesu(funkce exit, wait, wait3, wait4), proces init.
5.Sdílení souborů mezi procesy. Přesměrování vstupů a výstupů. Komunikace a synchronizace mezi procesy: roury, FIFO (pojmenované roury), signály, sdílená paměť, semafory.
6.Vlákna, synchronizace mezi vlákny (kritická sekce, mutex, semafor, podmíněná proměnná).
7.Bloková a znaková zařízení, ovladače zařízení, speciální soubory, programování ovladačů zařízení pro Linux.
8.Protokoly Ethernet, IEEE 802.11 (WiFi), TCP/IP, směrování paketů.
9.Protokoly ICMP, DHCP, DNS, SNMP.
10.SMTP, POP3, IMAP4, LDAP. Zabezpečená komunikace pomocí SSL, SSH.
11.Sokety. Síťová komunikace pomocí soketů. Klient. Server.
12.Deamoni (cron, at, xinetd, ...), časová synchronisace. Start OS UNIX, inicializační soubory.
13.OS reálného času - požadavky, základní principy, příklady (Windows CE a RT-Linux).

Cvičení na počítači

26 hod., povinná

Vyučující / Lektor

Osnova

1.Manuálové stránky (man, info), použití základních příkazů UNIXu: cat, less, more, head, tail, cut, sort, mail, chmod, chown, chgrp, du, df, tar, bzip. Přesměrování vstupu a výstupu.
2.Regulární výrazy, příkazy grep, find, sed, awk, kolony.
3.Interaktivní programy v shellu.
4.Programy gcc, gmake. Použití služeb pro práci se soubory a adresáři. Vytváření dočasných souborů.
5.Prostředí procesu. Vytváření procesů (funkce fork, exec), ukončení procesu (funkce wait, wait3, wait4, exit, abort). Získávání informací o procesech.
6.Přesměrování vstupů a výstupů (funkce dup, dup2), kolony (funkce pipe, popen, pclose).
7.Pojmenované roury (FIFO), signály, sdílená paměť.
8.Vlákna - vytváření, spojování vláken, zrušení vlákna, data specifická pro vlákna.
9.Synchronizace vláken - příklady na použití mutexů a semafororů.
10.Synchronizace vláken - příklad na synchronizaci vláken pomocí podmíněné proměnné.
11.Programování klienta pomocí soketů.
11.Programování servru pomocí soketů.
12.Dokončení programování klienta pomocí soketů.
13.Zápočtový test.