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

SemesterAutumn Semester 2013
LecturersA. K. Kourtis
Periodicityyearly recurring course
Language of instructionEnglish

AbstractThis 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.
ObjectiveThis course intends to explore how parallelism is supported and managed Operating Systems (OSes) and Parallel Programming Languages (PPLes).
ContentThe 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.