Přednášky: - Definice OS, historie a vývoj OS, přehled koncepcí, systémová volání. - HW a OS, požadavky OS na HW, virtualizace. - Procesy, signály, příkazy a systémová volání. - Vlákna, možné implementace, posixová vlákna. - Plánování procesů a vláken. - Konkurence procesů a vláken, problémy souběhu, vzájemné vylučování a možná řešení. - IPC (Inter-Process Communication), synchronizace, posixová volání: semafor, mutex, bariéra. - Stav uváznutí (deadlock), řešení a předcházení. Vyhladovění. - Komunikace procesů, sokety, klient/server nad TCP/IP. - Správa paměti: historie a současnost, stránkování. - Soubory a souborové systémy, integrita metadat. - Víceprocesorové systémy, systémy reálného času a vestavěné systémy. - Design OS, zabezpečení systému, útoky na systém. Cvičení: - Základní pojmy, instalace OS Linux, rozdíly POSIX × Windows: dělení disků, swap, MBR, GPT, boot-manager, role administrátora. Souborový systém: soubory a adresáře (strom, cesta, nepovolené znaky, velikost písmen, skryté soubory, spustitelné soubory, rezervované názvy). GUI (X Window, window-manager), shell. - Vzdálené přihlášení: šifrování, asymetrická kryptografie, princip protokolu ssh, generování klíčů, autentizace heslem a klíčem, passphrase, agent SSH. - 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). - 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). - Kompilace programů v Unixu, gcc, make, Makefile, GNU (./configure, make, make install). - Vznik procesu, posílání signálů, komunikace mezi procesy: fork(2), exec(3), wait(2), exit(3), kill(2). - Zpracování signálů: kill(2), sigaction(2), pause(2), sigprocmask(2), sigfillset(3). - 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. - 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. - Komunikace procesů, sockety: nepojmenované roury, |, pipe(2), pojmenované roury, mknod(1), mknod filename p, mkfifo(1). Klient/server nad TCP/IP: network byte-ordering, 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). - 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>
|
-
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.
|