Course: Operating Systems 1

» List of faculties » FEI » KIT
Course title Operating Systems 1
Course code KIT/NNOS1
Organizational form of instruction Lecture + Tutorial
Level of course Master
Year of study not specified
Semester Winter
Number of ECTS credits 6
Language of instruction Czech
Status of course Compulsory
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Lecturer(s)
  • Brandejský Tomáš, doc. Ing. Dr.
  • Neradová Soňa, Ing. Ph.D.
  • Hudec Tomáš, Mgr.
Course content
  1. OS conceptions, kernel architecture, HW prerequisities.   2. Process implementation, POSIX signals, system calls.   3. Thread implementation, problem of global variables and reentrant functions, POSIX calls.   4. Scheduling algorithms, scheduling in Linux: scheduling classes and priorities -- deadline, real-time (FIFO, RR, static priority) and normal (dynamic priority).   5. Race conditions, multiprocessor systems (SMP), critical section, SW a HW solutions.   6. Solution of the critical section access control using OS tools, implementation of a semaphore and a mutex, system calls.   7. Synchronization using a barrier, a condition variable and their implementation, semaphore, system calls.   8. System calls for IPC (inter-process communication): pipes, sockets, message queues and their usage for solving synchronization and critical section access control.   9. Programming languages tools: concept of the monitor (Java, C#). 10. Deadlock, livelock and starvation. Prevention and solutions. 11. Virtual memory: paging and related algorithms (fetch, replacement and cleaning policies), multilevel page tables, segmentation. Intel architecture: IA-32, PAE, IA-32e (x86_64). 12. Virtualization: native, paravirtualization, containers. 13. OS development principles, security (data conzistency, user permissions, process permissions, encryption, firewall), attack types. <span id="aktivity"></span>

Learning activities and teaching methods
unspecified
  • Contact teaching - 65 hours per semester
  • Preparation for a credit (assessment) - 6 hours per semester
  • Term paper - 39 hours per semester
  • Preparation for an exam - 30 hours per semester
  • Data/material collection - 13 hours per semester
  • Home preparation for classes - 26 hours per semester
Learning outcomes
The goal is to extend students' knowledge of general operating systems theory (advanced concepts of memory management, solving race conditions, etc.) and practically applying the theory in the POSIX operating systems with a focus on Linux IPC (Inter-Process Communication: system calls for solving race conditions, communication and synchronization, implementation of semaphore, message queues, scheduling classes, etc.).
Passing the course enables to master advanced OS principles, particularly memory management, process and threads management, solving inter-process communication and race conditions.
Prerequisites
User knowledge of any UNIX-like (POSIX) OS, knowledge of the C programming language, basic knowledge of OS management.

Assessment methods and criteria
Oral examination, Written examination, Home assignment evaluation

Credit: Students are given tasks as source code with a problem which should be solved. Successful solution of practical tasks given during seminars is a prereqisition of gaining a credit. Gained points are counted for exam.
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