4.5 KiB
Operating Systems
- Introduction
- Execution and communication mechanisms
- Processes. Models of representation
- Process interaction
- Semaphores
The goal of this course is to discuss two of the many fundamental domains in which operating systems must operate: asynchronous input/output (I/O), and parallelism and concurrency. The course starts with a brief presentation of large classes of operating systems and their historic evolution. Then asynchronous, interrupt-driven, and buffered I/O is discussed. Finally, algorithms for maximising parallelism and deadlock handling and avoidance are shown and analysed.
This course is taught in French to the students of L3 informatique (3rd year of bachelor education) at Université d'Évry. Basic understanding of the computer architecture as well as some programming experience are required.
This course is strongly based upon Jean-Marc Delosme's notes about operating systems. Starting with the school year 2018/2019, the course includes more practical demonstrations and assignments.
The following sections briefly describe the 4 main chapters of the course, as well as 2 executable code examples.
The materials of this course are distributed under the Creative Commons Attribution Alone licence.
Introduction
This chapter introduces the basic terminology used in the study, design, and development of operating systems: computer system, operating system, physical machine, abstract machine, etc. Some of the essential functions of the operating systems are enumerated, then a generic classification and the historic development of operating systems are described.
The slides for this chapter (in French) are available here.
Execution and communication mechanisms
This chapter describes the design of the communication in a concurrent and asynchronous open system. The object of study of this part are the interruptions, hardware and software (including supervisor calls). Some classical applications of interruptions are shown, including pseudoparallel process scheduling and buffered input/output.
The slides for this chapter (in French) are available here.
Processes. Models of representation
This chapter defines the notion of a process and describes its role and its technical representation inside an operating system. The chapter starts with a technical discussion and transitions into the abstract model of systems of concurrent tasks. Sequential and parallel composition operations are then considered.
The slides for this chapter (in French) are available here.
This chapter comes with a runnable code example (comments in French)
showing how to use fork
to create new processes.
Process interaction
This chapter focuses on two fundamental issues of any concurrent system: maximal parallelism and deadlocks. Maximal parallelism is considered in the framework of systems of tasks. An algorithm for constructing a maximally parallel system equivalent to a given one is presented and analysed. Then, a different formal framework is built for deadlock analysis and a deadlock detection algorithm is shown. Finally, an approximate algorithm for deadlock avoidance is described.
The slides for this chapter (in French) are available here.
Semaphores
This part of the course aims to define and understand semaphores through interactive development of a program synchronising several threads. This is the runnable code which is to be written by the end of the interactive session (the inline comments are in French).