Course: Operating Systems

» List of faculties » FEI » KIT
Course title Operating Systems
Course code KIT/IOSYR
Organizational form of instruction Lecture + Tutorial
Level of course Bachelor
Year of study not specified
Semester Winter and summer
Number of ECTS credits 5
Language of instruction Czech
Status of course unspecified
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Lecturer(s)
  • Dvořák Miroslav, Ing. Dipl.tech.
  • Hudec Tomáš, Mgr.
  • Kysela Jiří, Ing. Ph.D.
Course content
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>

Learning activities and teaching methods
unspecified, Monologic (reading, lecture, briefing), Dialogic (discussion, interview, brainstorming), Methods of individual activities, Monitoring, Demonstration, Skills training, Work-related activities
Learning outcomes
The goal of this course is to familiarize students with the basics of the theory of operating systems and the practical application of the theory in POSIX operating systems. To enable students to gain basic practical experience and skills in solving race condition problems in POSIX OSes (with a focus on Linux).
After completing the course, the student exhibits knowledge of OS theory, is able to explain OS principles, solve rece condition problems (critical sections and synchronization) with OS tools.
Prerequisites
User knowledge of operating system, knowledge of algorithmization and the C programming language, basic and secondary school mathematics (like percents, powers, equations) and logic thinking.

Assessment methods and criteria
Oral examination, Written examination, Home assignment evaluation, Student performance assessment, Work-related product analysis, Didactic test

Active presence on seminars where selected topics will be practised. Gaining the course credit depends on submitting solution to practical problems assigned during seminars. Evaluation of submitted solutions is part of the exam grading.
Recommended literature
  • 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.


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester