Supporting Parallelism in Operating Systems and Programming Languages - Fall 2012

Overview

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.

Lectures

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

  • [24.09] Course Introduction (slides)
  • [01.10] Parallel programming: a brief introduction (slides)
  • [08.10] Scheduling (slides)
  • [15.10] Synchronization (slides)
  • [22.10] Synchronization (cont'd)
  • [29.10] Transactional Memory (slides)
  • [05.11] Memory Management (slides)
  • [12.11] Garbage Collection (slides)
  • [19.11] I/O (slides)

Exercises

  • Exer #1: warm-ups (pdf, resources)
  • Exer #2: scheduling (pdf) [Note: deadline for final report extended to 25/10]
  • Exer #3: synchronization (pdf)
  • Exer #4: memory management (pdf)

Material

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 spospl-course mailing list.

Contact

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

Lecturer

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.