Teaching

K22: Operating Systems @ DIT

Operating Systems: Internals and Design Principles

Announcements

- Programming assignment #1 is announced.
- The midtern exam for K22 will be scheduled for Wednesday, November 26 / 19.00-21.00 @main-auditorium.
- Programming assignment #2 is announced.
- New deadline for programming assignment #2.
- Final deadline for programming assignment #2: Wednesday, December 24, 23.59.

Calendar

Lecture Date Material
01 / Introduction 29/9 Slides, Notes
02 / Introduction (cont’d) 3/10 Slides, Notes
03 / Events 6/10 Slides, Notes
04 / Runtime 8/10 Slides, Notes
05 / Processes 13/10 Slides, Notes
06 / Quiz Day 15/10 Quiz-02
07 / IPC 20/10 Slides, Notes
08 / Threads 22/10 Slides, Notes
09 / Quiz Day 17/10 Quiz-03
10 / Synchronization 29/10 Slides, Notes
11 / Synchronization (cont’d) 3/11 Slides, Notes
12 / Synchronization (cont’d) 5/11 Slides, Notes
13 / Synchronization (cont’d) 10/11 Slides, Notes
14 / Time Management 12/11 Slides, Notes, Quiz-04
15 / Time Management (cont’d) 19/11 Slides, Notes
16 / Revision (for Midterm) 24/11 Slides
17 / Midterm 26/11 Exam
18 / Midterm Postmortem 1/12 Slides
19 / Time Management (cont’d) 3/12 Slides, Notes
20 / Memory Management 6/12 Slides, Notes
21 / Invited Talk (Vissarion Moutafis) 15/12 Slides, Recording
22 / Memory Management (cont’d) 19/12 Slides, Notes
23 / Memory Management (cont’d) 22/12 Slides, Notes

Tutorial Date Material
01 15/10 How to make a “Hello World” system call in Linux.”

Programming Assignment Date Announced Deadline
01 (link) 20/10 12/11
02 (link) 19/11 24/12

Schedule

Every Monday and Wednesday 15.00-17.00 @ A2.

Summary

The goal of this course is to provide a hands-on introduction to Operating System (OS) internals and design principles, and to help you understand what is really happening when you execute a program on a machine. On the plus side, core OS abstractions, such as processes and threads, and OS primitives, such as locking and Inter-Process Communication (IPC), are ubiquitous in any software stack. Furthermore, the complex and architecture-dependent management of hardware resources performed by the OS is implemented following traditional design principles and optimization patterns that are useful in engineering any software system.

Rationale

The idea that software engineering is about producing vast amounts of source code was never a good one, and now, with the prevalence of Generative Artificial Intelligence (GenAI), it is finally coming to an end. What matters is principled understanding. To this end, producing small portions of code, but being able to quickly navigate and understand large code bases – potentially written by various people and different teams – is of paramount importance. Working with OSes, and more specifically with OS kernels (such as the Linux kernel), is an excellent playground to master the aforementioned skill. You cannot copy-paste code repeatedly and hope for something good to eventually happen. Instead, you need to understand the rationale behind the structure of software, abstract portions irrelevant to your goal, focus on the relevant ones, and spend your energy there.

Syllabus

The course will revolve around questions regarding the following topics


Homeworks

You will have to implement new features directly on the Linux kernel, build it, and run a VM with it. There is no diplomatic way to put this: it is going to be difficult painful [the truth resurfaces after popular request] and will require your time and engagement. However, the reward will be enormous. If you understand and own how things are being built at the OS kernel level, no codebase will ever again be complex enough to intimidate you in the future.

Logistics

- Programming assignments: 50%
- Midterm exam: 20%
- Final exam: 30%
Everyone must get then base on at least on of the two written exams for the above formula to be applicable.

Contact

  • Eclass
  • Piazza
  • Instructor: Vaggelis Atlidakis (vatlidak@di.uoa.gr)
  • TAs: Alexandros Kostas (sdi2100080@di.uoa.gr), Christos Komis (sdi2200073@di.uoa.gr), Christos Kotsis (sdi2200087@di.uoa.gr), Stefanos Stamatis (stef@di.uoa.gr)

Office hours

  • Every Thursday, 10.00-12.00 at A37.

Feedback

  • If you have feedback regarding the course, use this form to share it anonymously over the semester.

Open door policy

  • Whether you’re a colleague or a student, you’re always welcome to stop by for a chat, a question, or to just say hello.

Similar OS courses

Textbooks

Source Code Reference

Acknowledgments

This course, and especially the programming assignments, are heavily inspired by the OS course taught at Columbia University by Jason Nieh. Jason’s class (COMS W4118) was the first to introduce virtualization as a tool for teaching operating systems. During my time at Columbia, this class changed my perspective on how working with any software systems should be approached.