Lectures: - Definition of the OS, history and trends, OS concepts, system calls, kernel structure. - HW and OS, hardware requirements, virtualization. - Processes, signals, commands and system calls. - Threads, possible implementations, POSIX threads. - Scheduling of processes and threads. - Process and Thread competition, race conditions: mutual exclusion and possible solutions. - IPC (Inter-Process Communication), synchronization, POSIX calls: semaphore, mutex, barrier. - Deadlock, solutions and prevention. Starvation. - Inter-Process Communication, sockets, client/server over TCP/IP. - Memory management: history and present, paging. - Files and file systems, metadata integrity. - Multiprocessor systems, real-time and embedded systems. - OS design and security, common attacks. Seminars: - Basic concepts, OS Linux installation, differencies POSIX × Windows: disk partitioning, swap, MBR, boot-manager, administrator role. GUI (X Window, window-manager), shell, file system: diles and directories (tree, path, invalid characters, case-sensitivity, hidden files, executable files). - Remote login: cryptography, asymmetric cryptography, ssh protocol prinriples, key generation, password and key authentication, passphrase, SSH agent. - Commands and processes: basic commands: 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); other useful commands: 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). Processes: ps(1), pstree(1), PID, PPID, terminal, top(1), nice(1), renice(1). - Signals, job control, job scheduling: signal(7), kill(1). Job Control: jobs, fg, bg, kill, wait, &, ^C, ^Z, ^\. Daemons, atd(8), at(1), cron(8), crontab(1), crontab(5). - Program compiling in Unix, gcc, make, Makefile, GNU (./configure, make, make install). - Process creation, sending signals: fork(2), exec(3), wait(2), exit(3), kill(2). - Signal handling: kill(2), sigaction(2), pause(2), sigprocmask(2), sigfillset(3). - POSIX threads, critical section: pthreads(7), pthread.h(7), pthread_create(3), pthread_exit(3), pthread_join(3); POSIX mutex: pthread_mutex_init(3), pthread_mutex_lock(3), pthread_mutex_unlock(3), pthread_mutex_destroy(3), POSIX semaphore: sem_init(3), sem_wait(3), sem_post(3), sem_destroy(3), examples thread_add, thread_add_mutex, thread_add_sem. - Synchronization: thread synchronization: POSIX barriers: pthread_barrier_init(3), pthread_barrier_wait(3), pthread_barrier_destroy(3), synchronization with POSIX semaphore, examples sync_barrier, sync_sem, producer_consumer. - Inter-Process communication, sockets: unnamed pipes, |, pipe(2), named pipes, mknod(1), mknod filename p, mkfifo(1). Client/server over TCP/IP: network byte-ordering, klient, single-client and multi-client 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). - Address translation, revision: training of virtual to physical address translation, paging, preparation to the exam.<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.
|