UE Advanced aspects of operating systems

Degrees incorporating this pedagocial element :

Description

Operating systems are the foundation of computer systems, often complemented with middleware systems to help with more domain-specific features. Operating systems wrap the underlying hardware platforms into an effective software platform, creating an illusion, hidding hardware details away and offering instead high-value services. In the end, operating systems create an effective virtual world for software developers and end users alike. As such, operating systems are virtual machines.

Virtual platforms come in many shapes and sizes, creating virtual platforms with different specifics, for different application domains. Some virtual platforms are real-time operating systems for mission-critical systems such as avionics or aerospace systems. Others are sheer veneers above very specific hardware like in Game consoles or Aduino-like embedded systems for the Do-It-Yourself communities. Others are combining operating system kernels with high-level languages, such as the Google Android platform that combines the Linux kernel and the Java virtual machine. Others are for world-scale cloud infrastructures, often associating modified Linux and hypervisors, along with advanced distributed services such as shared storage or shared FPGA accelerators.

Across this massive domain, there are only few key enabling technologies, technologies that we will help you learn and master in this course. The course starts with understanding some of the key evolutions of current hardware platforms; platforms facing the challenge to deliver increasing performance while keeping the energy consumption under control. The course then discusses what is an operating system kernels and what are the architectural options that have been tried so far, such as discussing monolithic kernels, micro-kernels, and hypervisors. We will discuss these approach, debating their original design goals and comparing them with the characteristics of their implementations.

Then the course moves onto the key enabling technologies for the Cloud infrastructures. These technologies are the enablers of popular online services such as search engines, social networks, or streaming services. They are also the enablers of Big Data applications. All these complex systems share similar requirements such as requiring large amount of computing resources and having stringent constraints in terms of reliability, availability and performance. To fulfill such requirements, these complex systems are implemented above Cloud platforms that exploit large numbers of servers hosted in a data center, forming so-called “rack-scale” or even “warehouse-scale” platforms.

These platforms are at the heart of companies like Google, Facebook, Twitter or Amazon. Everyday, these companies face the challenge of exploiting data center resources efficiently and reliably through well-designed software infrastructures. While a few challenges are specific to the massive size of the these giants, most of the design principles they rely on are also of interest for smaller scale systems. Through this course, you will learn about these design principles and get a chance to understand the underlying theoretical and practical challenges, including the study of scalability, fault tolerance, and data consistency---all in the context of virtualized hardware platforms.

Organization and evaluation :

The courses is organized into several types of activities: lectures and case studies, lab sessions (mini-projects), study and presentation of influential research papers. The evaluation will combine a final exam with continuous evaluation throughout the semester.

Targeted audience and contents :

This course is intended for students interested in the design and/or the usage of hypervisors, operating systems, and distributed Cloud services. This course is primarily aimed at students of the PDES (parallel distributed and embedded systems) track, being especially complementary to the two other core courses: Parallel Systems and Distributed Systems. This course can also be of interest to students registered in other MoSIG tracks, including AISSE (advanced information systems and software engineering) and DS (data science).

Prerequisites

A good knowledge of the C programming language is preferrable, with some previous experience with assembly programming. Also, knowing the basics of operating system design is definitely a plus.