Supporting Parallelism in Operating Systems and Programming Languages


This course intends to explore how parallelism is supported and managed in low-level software systems. We will focus on two layers of the software stack: Operating Systems (OSes) and Parallel Programming Languages (PPLes).

The course is arranged by topics (scheduling, synchronization, memory management, etc). For each topic the course will investigate:

  • What are the system design challenges posed by parallel hardware in the OS and in PPLes
  • How the OS and PPLes deal with these challenges
  • What interfaces are provided by the OS, and how they are used
  • How PPLes implement the high-level interface provided to the programmer

Beyond understanding of current designs, the course also aims to identify issues in the interaction between OSes and PPLes, and investigate ways of bringing the gap.

The course will have a strong emphasis on how the various concepts discussed are applied in practice. Lectures will include examples from real-world OSes (e.g., Linux) and PPLes (e.g., OpenMP, Cilk, etc), and will be accompanied by a number of hands-on exercises.

This course is aimed at advanced bachelor students and above. Proficiency in C programming is assumed, and students should be familiar with basic OS design and systems programming. Some familiarity with parallel programming would be helpful, but is not a prerequisite.


The lecture prograrm will be updated in due time, and slides will be posted after each lecture.

  • 23.09: Introduction to the course (slides)
  • 30.09: Parallelism: a brief introduction (slides)
  • 07.10: Scheduling (slides)
  • 14.10: Scheduling (cont'd)
  • 21.10: Synchronization (slides)
  • 28.10: Synchronization (cont'd)
  • 04.11: [No lecture]
  • 11.11: Transactional Memory (slides)
  • 18.11: Memory Management (slides)
  • 25.11: Garbage Collection (slides)
  • 02.12: I/O (slides)


  • Exer #1: Warm-ups (pdf, resources) (deadline: 11.10)
  • Exer #2: Scheduling (pdf) (intermediate report: 18.10, final report: 25.10)
  • Exer #3: Synchronization (pdf) (intermediate report: 11.11 08.11, final report: 18.11 15.11)
  • Exer #4: Memory management (pdf) (intermediate report: 29.11, final report: 06.12)


There is no single textbook that covers the material presented in this course. I will give references to textbooks, research papers and documentation as the course progesses. Material used in OS and system programming courses (e.g., ETHZ courses 252-0061-00L, 252-0062-00L) is  a good starting point.

Mailing List

 Please subscribe to the course's mailing list here:


If you have any questions about the course, please send me an e-mail at: kornilios <dot> kourtis <at>  inf <dot> ethz <dot> ch


Course Hours

  • Lectures: Mon, 13-15h, CAB G 57
  • Exercises: Mon 15-16h, CAB G 57

Additional Information

This course will be taught in english and is listed as course number 263-3820-00L. It's a 4 credit, 2V+1U course. The examination will last 15 minutes and will be performed in English. Final assessment will be a combination of examination and exercises grades, as well as class participation.