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>
|
-
Intel 64 and IA-32 Architectures: Software Developer's Manual: Volume 3A: System Programming Guide, Part 1. [online]. Intel: 2016-09 [cit. 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 – 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. 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 – 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 – AUSTIN, Todd. Structured Computer Organization. 6. vydání. Pearson, 2012. ISBN 978-0132916523.
-
TANENBAUM, Andrew Stuart – WOODHULL, Albert. Operating Systems Design and Implementation. 3. vydání. USA: Prentice Hall, 2006. ISBN 978-0-13-142938-3.
|