work-site/en/os-ueve.org
2018-09-22 19:10:41 +02:00

97 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: