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 [[https://www.univ-evry.fr/formation/loffre-de-formation/domaines-de-formation/domaine/sciences-technologies-sante/programme/licence-mention-informatique-1.html][L3 informatique]]
(3rd year of bachelor education) at [[http://www.univ-evry.fr/fr/index.html][Université d'Évry]]. Basic
understanding of the computer architecture as well as some programming
experience are required.
This course is strongly based upon [[https://www.ibisc.univ-evry.fr/~delosme/][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