Overview
Would you like to investigate beyond the surface of Windows, MacOS, Linux, Android? Fed up with not understanding the origin of segmentation faults, why you need to eject a USB key before physically removing it, or why/how your Android system can execute Pokemon Go and Instagram at the same time? You want to delve into the details of the inner workings of the Linux kernel? Join us to discover the power of Operating Systems!From basic to advanced concepts - interrupts, scheduling, timers -, you will gradually enter into fundamental and practical elements of OS. The lectures occupy 35% of class time, labs around 35%, and the rest will involve working on the project. In labs, you will experiment with advanced functions provided by Operating Systems, and also modify the Linux kernel. In the project, you will program real-time applications in Linux, and compete against each other in an ultimate battle for OS supremacy. Don't panic, OS masters will assist you!
Note that you can even be a young padawan in programming to attend the course.
Content
Architecture and main concepts of Operating Systems
Presentation of main Operating Systems (Windows, GNU/Linux, Android, MacOS, Solaris, etc.). Then, introduction to processes, threads, synchronization techniques, scheduling policies, and to the management of memory, interrupts and devices.Real-Time Operating Systems (RTOS)
Presentation of issues related to real-time embedded systems, and how they are addressed by RTOS (timers, interruptions, etc.), and programming real-time interfaces such as POSIX. At last, architecture and features of Real-Time Linux are explained.Labs and projects
Many labs gives the opportunity to start processes and make those processes communicate.Programming of extensions to the Linux kernel.
Programming of realt-ime application in Linux
Practise with IoT operating systems (Android).