François BOURDON
Cours
sur les "Systèmes d'Exploitation (UNIX)
1 ère année"
Département d'Informatique(IUT de Caen)
(maj le 4 mai 2012)
![]()
Transparents/polycopiés
du
cours
Exercices
(TD/TP)
– Corrigés
Devoir :
Sujet 2010-2011 (pdf).
Ce cours sur les Systèmes d'Exploitation (SE) se déroule sur les deux années du DUT. L'objectif de ce cours est d'acquérir les notions indispensables à la compréhension et à la manipulation des SE. La première année donne les bases (côté utilisateur) des SE et prend en charge l'apprentissage du langage "C". Nous abordons les langages de commandes (SHELL) à la fois comme un moyen de manipuler directement le système d'exploitation et comme un "pseudo" langage de programmation. Cette partie donne les notions essentielles permettant aux étudiants d'aborder par eux-mêmes certains langages de commandes utilisés dans la pratique comme par exemple "PERL". Nous ne ferons que quelques exercices de programmation shell, dans la mesure où nous les ferons principalement en langage "C", afin de ne pas introduire conjointement deux systèmes syntaxiques différents.
La deuxième partie complète les notions vues en première partie et met l'accent sur les problèmes liés à la synchronisation, au partage de ressources et à la communication entre processus sur UNIX.
Transparents/polycopiés du cours
PS : Les fichiers sont enregistrés en général au format «pdf», d'autres en «html» , d'autres encore au format (ps-gz) PostScript (ps) compressé (gzip).
1) Présentation générale des Systèmes d'Exploitation (pdf)
2) Généralités sur UNIX (pdf)
Présentation d'UNIX
Comment démarrer
3) Les bases du Système
Le système de fichiers et les commandes
associées ( pdf).
Les processus et les commandes associées
(pdf).
Les redirections d'Entrées/Sorties (pdf).
Communication entre processus
(contenu dans le chapitre précédent)
4) Les langages de commandes (SHELL)
Commandes internes et externes (pdf).
Les
variables (contenu dans "Commandes ...)
Les procédures (contenu
dans "Commandes ...)
Les
structures de contrôle (pdf).
Les opérateurs (pdf).
Commandes
diverses (contenu dans "Les opérateurs").
5) Le langage de programmation "C". Version complète (ps-gz "463 K") ou version pdf (4,3 M). Ce support de cours a été réalisé par Patrick Corde (corde@idris.fr).
Le compilateur C ()
Présentation - Historique
Généralités - Compilation
et édition de liens
Compilation
et pré-processeur
Lexèmes et ponctuation
Les
entrées/sorties
Types, fonctions et
récursivité
Variables
et zones mémoire
Expressions
(arithmétiques, logiques ...)
Instructions
de contrôle
Pointeurs,
tableaux et structures
L'allocation
dynamique
Exemples
: listes et arbres
Je vous conseille le cours de "C" de Christian Bac, qui est disponible sur le site de l'INT d'Evry (http://www-inf.int-evry.fr/COURS/).
Supplément de cours « C » :
Partie 1 : Les outils de la compilation et de la mise au point (pdf).
Partie 2 : Gestion de la mémoire en « C » (pdf).
6) Système de Gestion des Fichiers : Concepts avancés
Représentation interne du SGF
(pdf
"110 K")
E/S tamponnées : le Buffer
Cache (pdf
"61 K")
Le Système de
Fichiers Virtuels ( chapitre inclus dans le
précédent)
Appels Systèmes et SGF (pdf
"97 K")
Cohérence du SGF (
chapitre inclus dans "Appels Systèmes ...")
Le Système de fichiers
"/proc" ( chapitre inclus dans "Appels
Systèmes ...")
Monter et démonter un SGF (
chapitre inclus dans "Appels Systèmes ...")
Caractéristiques physiques et
ordonnancement d'un disque ( chapitre inclus dans
"Appels Systèmes ...")
Organisation
classique (Unix) d'un SGF ( chapitre inclus dans
"Appels Systèmes …")
7) Création et Ordonnancement de Processus (pdf "127 K")
Les bases d'UNIX
TD.1
: UNIX premiers contacts (html).
TD.2
: L'éditeur de texte vi" (html).
TD.3
: L'arborescence
du
système de fichiers d'UNIX (html).
Corrigé (pdf).
TD.4
: La politique d'accès aux fichiers dans UNIX (html).
Corrigé (pdf).
TD.5
: Bases de la communication entre processus (pipe, tee, grep …) -
(html).
TD.6
: Bases de la gestion de processus (echo, exec, " ." ps,
…) - (html). Corrigé (html).
TDshell
: Bases de la programmation shell (html).
TDshell :
variables et procédures (html).
Corrigé (html).
TDshell-suite
: Exercices complémentaires (html).
Corrigé (pdf).
Le langage "C"
TD.7
: Les étapes du compilateur ; utilisation des fonctions getenv
et
setenv
(html).
Corrigé (html).
TD.8
: Déclaration et définitions de fonction : la compilation séparée
(html). Un fichier Makefile
pour compléter le sujet du TD. Corrigé (html).
TD.9
: Pointeurs et passage des paramètres par valeur (html).
Corrigé (html).
TD.12
: Argc / Argv (html). Corrigé
(html)
TD.12bis :
Valgrind (html).
TD.13
: Manipulation des fichiers à l'aide des fonctions "malloc",
"fopen", "fread", "fwrite", "fseek",
"rewind" et "fclose" (html).
Corrigé (html).
TD.14
: Ecriture en "C" d'un "ls" récursif (html).
Corrigé (.c).
TD.15
: Création de processus (html).
Corrigé (html).
TD.16
: Synchronisation
entre processus (fork, exec, wait ...) - (html).
L'exemple donné ici (".C")
montre comment on peut utiliser les fonctions d'E/S de bas niveau
(read/write) pour manipuler des caractères ou des entiers. Exemples
d'écriture sur un fichier par deux processus parent-enfant, avec
perte d'information (.c)
et sans perte d'information (.c).
Corrigés : Q1.1 (.c),
Q1.2 (.c),
Q2.1 (.c), Q2.2 (.c),
Q3.1 (.c), Q3.2 (.c),
salut (.c).