96 lines
4.5 KiB
Org Mode
96 lines
4.5 KiB
Org Mode
#+TITLE: Operating Systems
|
|
|
|
#+LANGUAGE: en
|
|
|
|
#+ATTR_HTML: :alt in French :class lang-lifted
|
|
[[file:../fr/os-ueve.org][file:../content/imgs/fr.png]]
|
|
|
|
#+ATTR_HTML: :alt return home :class home
|
|
[[file:home.org][file:../content/imgs/home.png]]
|
|
|
|
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
|
|
course, as well as 2 executable code examples.
|
|
|
|
#+ATTR_HTML: :alt image of Creative Commons Attribution Alone licence :class ccby
|
|
[[https://en.wikipedia.org/wiki/Creative_Commons_license][file:../content/imgs/ccby.png]]
|
|
|
|
The materials of this course are distributed under the [[https://en.wikipedia.org/wiki/Creative_Commons_license][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 [[file:../content/courses/os-ueve/se-01.pdf][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 [[file:../content/courses/os-ueve/se-02.pdf][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 [[file:../content/courses/os-ueve/se-03.pdf][here]].
|
|
|
|
This chapter comes with a runnable [[file:../content/courses/os-ueve/ton-paire.cpp][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 [[file:../content/courses/os-ueve/se-04.pdf][here]].
|
|
|
|
* Semaphores
|
|
This part of the course aims to define and understand semaphores
|
|
through interactive development of a program synchronising several
|
|
threads. [[file:../content/courses/os-ueve/semaphores.py][This]] is the runnable code which is to be written by the end
|
|
of the interactive session (the inline comments are in French).
|
|
|
|
|
|
* Local Variables :noexport:
|
|
# Local Variables:
|
|
# org-link-file-path-type: relative
|
|
# eval: (auto-fill-mode)
|
|
# ispell-local-dictionary: "en"
|
|
# End:
|
|
|