263-3820-00L  Supporting Parallelism in Operating Systems and Programming Languages

Semester Autumn Semester 2013
Lecturers A. K. Kourtis
Periodicity yearly course
Language of instruction English

Abstract This course is intended to give students a deep understanding of how low-level software systems support parallelism by investigating the design and implementation of parallel programming languages and operating systems. The course is organized in topics and covers scheduling, synchronization, memory management, and I/O.
Objective This course intends to explore how parallelism is supported and managed Operating Systems (OSes) and Parallel Programming Languages (PPLes).
Content The course is organized in topics such as synchronization, scheduling, memory management and I/O. The topics will be dealt in a holistic manner - i.e., how the OS deals with it internally, what kind of interfaces are exported to user-space and how are they implemented, how are these interfaces utilized by libraries or language run-time systems, what is 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 has a strong emphasis on how the various concepts discussed are applied in practice. Lectures will include examples from real-world operating systems (e.g., Linux) and parallel programming languages (e.g., OpenMP, Cilk, etc), and will be accompanied by a number of hands-on exercises.