Předmět: Operační systémy

« Zpět
Název předmětu Operační systémy
Kód předmětu KIT/BOSYS
Organizační forma výuky Přednáška + Cvičení
Úroveň předmětu Bakalářský
Rok studia 2
Semestr Letní
Počet ECTS kreditů 5
Vyučovací jazyk Čeština
Statut předmětu Povinný
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Vyučující
  • Hudec Tomáš, Mgr.
Obsah předmětu
Přednášky: 1. Definice OS, historie a vývoj OS, přehled koncepcí, systémová volání, struktura jádra, virtualizace. 2. HW a OS, požadavky OS na HW. 3. Procesy, signály, příkazy a systémová volání. 4. Vlákna, možné implementace, posixová vlákna. 5. Plánování procesů a vláken. 6. Konkurence procesů a vláken, problémy souběhu, vzájemné vylučování, synchronizace a možná řešení. 7. IPC (Inter-Process Communication), posixová volání: semafor, mutex, bariéra. 8. Stav uváznutí (deadlock), řešení a předcházení. Vyhladovění. 9. Komunikace procesů, sokety, klient/server nad TCP/IP. 10. Správa paměti: historie a současnost, stránkování. 11. Soubory a souborové systémy, integrita metadat. 12. Víceprocesorové systémy, systémy reálného času a vestavěné systémy. 13. Design OS, zabezpečení systému, útoky na systém. Cvičení: 1. Základní pojmy, instalace OS GNU/Linux, rozdíly POSIX × Windows: dělení disků, swap, MBR, GPT, bootmanager, role administrátora. Souborový systém: soubory a adresáře (strom, cesta, nepovolené znaky, velikost písmen, skryté soubory, spustitelné soubory, rezervované názvy). 2. Rozdíly v GUI - POSIX × Windows: X Window, windowmanager, desktopová prostředí, KDE Plasma, shell. 3. Vzdálené přihlášení: šifrování, asymetrická kryptografie, princip protokolu ssh, generování klíčů, autentizace heslem a klíčem, passphrase, agent SSH. Laboratorní cvičení: SSH, autentizace klíčem. 4. Příkazy a procesy: základní příkazy: man(1), ls(1), cat(1), echo(1), cd, pwd(1), more(1), less(1), cp(1), mv(1), rm(1), mkdir(1), rmdir(1); další užitečné příkazy: who(1), w(1), finger(1), write(1), talk(1), mesg(1), type(1), file(1), head(1), tail(1), wc(1), sleep(1), date(1). Procesy: ps(1), pstree(1), PID, PPID, terminál, top(1), nice(1), renice(1). 5. Signály, job control, plánování úloh: signal(7), kill(1). Job Control: jobs, fg, bg, kill, wait, &, ^C, ^Z, ^\. Pojem démon, atd(8), at(1), cron(8), crontab(1), crontab(5). Laboratorní cvičení: Spouštění úloh v daných časech. 6. Kompilace programů v Unixu, gcc, make, Makefile, GNU (./configure, make, make install). LinuxHint: Compile C Program in Linux Using GCC, LinuxHint: GNU Make Tutorial. Tutorial for UNIX programmers (archivovaná verze, originál již není dostupný), lokální kopie: Tutorial for UNIX programmers. 7. Vznik procesu, posílání signálů, komunikace mezi procesy: fork(2), exec(3), wait(2), exit(3), kill(2). 8. Zpracování signálů: kill(2), sigaction(2), pause(2), sigprocmask(2), sigfillset(3). 9. Posixová vlákna, kritická sekce: pthreads(7), pthread.h(7), pthread_create(3), pthread_exit(3), pthread_join(3); mutexy posixových vláken: pthread_mutex_init(3), pthread_mutex_lock(3), pthread_mutex_unlock(3), pthread_mutex_destroy(3), posixové semafory: sem_init(3), sem_wait(3), sem_post(3), sem_destroy(3), příklady thread_add, thread_add_mutex, thread_add_sem. 10. Synchronizace: synchronizace vláken: bariéry posixových vláken: pthread_barrier_init(3), pthread_barrier_wait(3), pthread_barrier_destroy(3), synchronizace posixovými semafory, příklady sync_barrier, sync_sem, producer_consumer. 11. Komunikace procesů, sockety: nepojmenované roury, |, pipe(2), pojmenované roury, mknod(1), mknod filename p, mkfifo(1). Klient/server nad TCP/IP: network byteordering, klient, jednoklientový a víceklientový server; getaddrinfo(3)/gethostbyname(3), socket(2), connect(2), read(2) / recv(2), write(2) / send(2), close(2), bind(2), listen(2), accept(2), select(2). 12. Převody adres, opakování: procvičování převodu virtuální adresy na adresu fyzickou, stránkování, příprava na zkoušku. <span id="aktivity"></span><span id="activities"></span>

Studijní aktivity a metody výuky
Přednášení, Monologická (výklad, přednáška, instruktáž), Dialogická (diskuze, rozhovor, brainstorming), Metody samostatných akcí, Pozorování, Demonstrace, Nácvik dovedností
Výstupy z učení
Cílem předmětu je seznámit studenty se základy teorie operačních systémů a praktickým použitím teorie v posixových operačních systémech. Umožnit studentům získat základní praktické zkušenosti a dovednosti při řešení problémů souběhu v posixových OS (se zaměřením na Linux).
Student po absolvování předmětu prokazuje znalosti z teorie OS, je schopen vysvětlit principy OS, řešit problémy souběhu (kritické sekce a synchronizace) nástroji OS.
Předpoklady
Uživatelská znalost práce s operačním systémem, znalost algoritmizace a programovacího jazyka C, základoškolská a středoškolská matematika (např. procenta, mocniny, rovnice) a logické uvažování.

Hodnoticí metody a kritéria
Ústní zkouška, Písemná zkouška, Posouzení zadané práce, Didaktický test

Cvičení jsou nepovinná, docházka se neeviduje, avšak aktivita na cvičeních může být hodnocena bonusovými body do zkoušky. Získání zápočtu je podmíněno odevzdáním řešení semestrální úlohy. Posouzení odevzdaných řešení je součástí hodnocení zkoušky. Zkouška se skládá ze vstupního testu s možností používat materiály, teoretického testu a vyhodnocení semestrální úlohy. Podrobnosti jsou uvedeny na serveru Moodle.
Doporučená literatura
  • Intel 64 and IA-32 Architectures: Software Developer's Manual: Volume 3A: System Programming Guide, Part 1. [online]. Intel: 2016-09 [cit.&nbsp;2021-04-27].
  • Standard for Information Technology---Portable Operating System Interface (POSIX): Base Specifications, Issue 7. [online]. New York: IEEE Computer Society and The Open Group, 2016-09-30 [cit. 2021-04-27]. ISBN 978-1-5044-2337-3.
  • BOVET, Daniel Pierre &ndash; CESATI, Marco. Understanding the Linux Kernel. 2. vydání. USA: O'Reilly, 2005. ISBN 978-0596005658.
  • BRANDEJS, Michal. UNIX: Materiály k výuce. [online]. Brno: FI MU, 2008 [cit. 2021-04-27].
  • HUDEC, Tomáš. SSH -- Postup pro vzdálené přihlášení pomocí klíče. [online]. Pardubice: Univerzita Pardubice, FEI, 2021-03-02 [cit.&nbsp;2021-04-27].
  • LOVE, Robert. Linux kernel development. 3. vydání. Upper Saddle River: Addison-Wesley, 2010. ISBN 978-0-672-32946-3.
  • MAUERER, Wolfgang. Professional Linux Kernel Architecture. Wrox, 2008. ISBN 978-0470343432.
  • STALLINGS, William. Operating Systems: Internals and Design Principles. 9. vydání. Pearson, 2018. ISBN 978-0-13-467095-9.
  • STONES, Richard &ndash; MATTHEW, Neil. Linux: Začínáme programovat. 4. vydání. Brno: Computer Press, 2008. ISBN 978-80-251-1933-4.
  • TANENBAUM, Andrew Stuart. Modern Operating Systems. 4. vydání. Pearson, 2014. ISBN 978-0133591620.
  • TANENBAUM, Andrew Stuart &ndash; AUSTIN, Todd. Structured Computer Organization. 6. vydání. Pearson, 2012. ISBN 978-0132916523.
  • TANENBAUM, Andrew Stuart &ndash; WOODHULL, Albert. Operating Systems Design and Implementation. 3. vydání. USA: Prentice Hall, 2006. ISBN 978-0-13-142938-3.


Studijní plány, ve kterých se předmět nachází
Fakulta Studijní plán (Verze) Kategorie studijního oboru/specializace Doporučený ročník Doporučený semestr