Se Uds Iutfv GTR1
Se Uds Iutfv GTR1
Se Uds Iutfv GTR1
Juin 2020
Table des matières
1
3.6.1 Critères d’ordonnancement . . . . . . . . . . . . . . . . . . . . 30
3.6.2 Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.6.3 Algorithmes d’ordonnancement . . . . . . . . . . . . . . . . . 30
3.7 Travaux dirigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4 La gestion de la mémoire 35
4.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2 Concepts de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2.1 Mémoire logique . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2.2 Allocation de la mémoire . . . . . . . . . . . . . . . . . . . . . 36
4.3 Partage de la mémoire sans réimplantation . . . . . . . . . . . . . . . 38
4.3.1 Système à partition unique (va-et-vient simple) . . . . . . . . 38
4.3.2 Partition fixe de la mémoire . . . . . . . . . . . . . . . . . . . 39
4.4 Systèmes à partitions variables . . . . . . . . . . . . . . . . . . . . . . 40
4.4.1 Réimplantation dynamique par registre de base . . . . . . . . 40
4.4.2 Algorithme de estion de la mémoire par zone . . . . . . . . . . 40
4.4.3 Fragmentation et compactage . . . . . . . . . . . . . . . . . . 42
4.5 Mémoire paginée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.5.1 Pagination d’une mémoire contiguë . . . . . . . . . . . . . . . 43
4.5.2 Comportement des processus en mémoire paginée . . . . . . . 45
4.5.3 Mémoire associative et pagination . . . . . . . . . . . . . . . . 46
4.5.4 Partage et protection de l’information . . . . . . . . . . . . . . 48
4.6 Mémoire segmentée . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.6.1 Principe de la segmentation . . . . . . . . . . . . . . . . . . . 49
4.6.2 Pagination d’une mémoire segmentée . . . . . . . . . . . . . . 50
4.6.3 Partage de segments . . . . . . . . . . . . . . . . . . . . . . . 51
4.7 Travaux pratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Ce cours a pour objectif d’initier les étudiants aux notions de Système d’Exploi-
tation (SE). De ce fait, il sera question tout au long de cette unité d’enseignement
de :
1. Définir la notion de système d’exploitation
2. Donner le rôle du SE dans un système informatique
3. Décrire les éléments constitutifs d’un SE
4. Décrire de façon détaillée le principe de fonctionnement des SE
5. Prendre en main les SE Windows et Linux
4
Chapitre 1
1.1 Objectifs
Ce chapitre introductif vise à outiller l’étudiant aux notions de bases relatives aux
systèmes d’exploitation. Ainsi, après l’avoir achevé, l’étudiant devra être cappable
de :
— Définir la notion de système d’exploitation
— Connaitre les fonctionnalités d’un système informatique
— Donner le rôle et la composition d’un système d’exploitation
— Donner l’historique de l’évolution des systèmes d’exploitation
— Maitriser le mode de fonctionnement des différentes différents SE apparus au
fil du temps
La charge horaire destinée à ce chapitre est départie comme suit :
1. Cours magistral : 3h
2. Travaux dirigés : 2h
3. Travail personnel de l’étudiant : 1h
5
Les logiciels sont des séquences d’instructions que l’on appelle souvent pro-
grammes. Un programme est l’implantation d’un ensemble de méthodes de résolu-
tion de problèmes dans un langage compris par l’ordinateur. La compréhension de
l’ordinateur n’est en fait que la séquence d’actions résultant du programme (écrire
sur l’imprimante, sur le disque, a‘ l’écran, . . .). La méthode de résolution est ce que
l’on appelle l’algorithme.
Le système d’exploitation d’un ordinateur est un programme servant d’in-
terface entre le matériel et les utilisateurs. Son but est de rendre le maniement
de l’ordinateur facile et de proposer une utilisation efficace de celui-ci (il n’est par
exemple, pas question pour l’utilisateur de savoir quelle va être l’organisation du
fichier sur le disque lorsqu il le sauve).
La figure 1.1 précise l’organisation logicielle d’un système informatique avec d’une
part le logiciel d’application (traitement de textes, gestionnaire de bases de données,
compilateurs, etc.) et d’autres parts le logiciel de base livré avec la machine.
Dans les années 60/70 les premiers systèmes en temps partagé (time sharing)
sont disponibles. Ces systèmes sont directement liés à l’utilisation interactive des
machines au moyen de terminaux vidéo. Ce mode d’utilisation impose un temps de
réponse acceptable puisque les utilisateurs attendent devant leur terminaux. Pour
garantir un bon temps de réponse moyen, le temps d’exécution de la CPU est dé-
coupé en tranches appelées des quanta. Ces quanta sont allouées aux programmes
en cours d’activité. Le temps d’exécution de la CPU est donc partagé entre les
programmes utilisateurs. Si le nombre d’utilisateurs n’est pas trop important et, sa-
chant qu’un utilisateur moyen passe 90% de son temps à réfléchir et seulement 10%
On suppose maintenant que les périphériques sont gérés par un ordinateur sé-
paré, qui constitue une bande magnétique d’entrée à partir des cartes et liste
sur l’imprimante le contenu d’une bande magnétique de sortie. L’ordinateur
principal est alimenté par la bande d’entrée et produit la bande de sortie ; on
néglige la durée de lecture et d’écriture des bandes. Le temps de permutation
des bandes d’un ordinateur à l’autre est de 5 min dans chaque sens ; on sup-
pose qu’une bande regroupe une fournée de 50 travaux ; on possède au moins
trois bandes.
(a) On suppose que le rythme de soumission des travaux est suffisant pour
occuper l’ordinateur central à plein temps. Calculez les valeurs de h et de
D.
(b) Etablir la planification de la constitution des trains de travaux et calcu-
ler le temps d’attente moyen d’un usager (entre soumission du travail et
réception résultats). On admettra que les travaux arrivent à un rythme
régulier, que le temps de constitution d’une fournée est de 10 min et que
le temps de distribution des résultats est aussi de 10 min.
3. Utilisation des cannaux d’E/S
1.7 Conclusion
Dans ce chapitre, il était question de présenter les concepts fondamentaux néces-
saires à la compréhension des S.E. C’est ainsi qu’après avoir définis quelques mots
clefs liés aux SE, nous avons situé la place de ces derniers dans un système infor-
matique, par la suite nous avons présenté leur structure interne, puis nous avons
présenté leur évolution au fil du temps. Nous avons bouclé le chapitre par une fiche
de travaux dirigés qui avait pour objectifs d’une part de mesurer le degré de com-
préhension des apprenants relativement aux objectifs énoncés au début du chapitre,
et d’autres part de permettre aux apprenants d’étendre leurs connaissances sur les
généralités liées aux SE qui n’ont pas été abordées dans le chapitre.
Interruptions, déroutements et
appels système
2.1 Objectifs
Avant d’entrer plus en détail dans l’étude des éléments constitutifs d’un SE, nous
jugeons utile de présenter le mode d’exécution des programmes, car ce mode impacte
significativement sur la gestions des ressources matérielles par le SE. Ainsi, à la fin
de ce chapitre, l’apprenant devra :
— Comprendre le mode d’exécution des programmes sur une machine
— Définir et comprendre le mécanisme des interruptions
— Donner le rôle des interruptions
— Savoir à quoi renvoie les notions d’appel système et de déroutement
La charge horaire destinée à ce chapitre est départie comme suit :
1. Cours magistral : 3h
2. Travaux dirigés : 3h
3. Travail personnel de l’étudiant : 1h
17
— etc.
La notion de mode a été introduite essentiellement pour des raisons de protection,
afin qu’un programme quelconque ne puisse accéder à des zones ou à des registres
propres au S.E. Dans la pratique, la CPU distingue les instructions normales et les
instructions privilégiées. Ces dernières ne sont utilisables qu’en mode maître. Elles
permettent en général la modification des registres spécialisés et le dialogue avec les
unités d’E/S.
Partons du principe que le S.E. s’exécute en mode maître et que les programmes
utilisateur s’exécutent en mode esclave. La programmation directe des E/S est donc
réservée au S.E. et les E/S des programmes utilisateurs devront passer par des
requêtes au S.E.
Une exécution est une évolution discrète de l’état de la machine. Cet état est
donné par le contenu de la mémoire et la valeur des registres de la CPU. Nous
sommes donc capables d’observer l’évolution d’une machine mais seulement sur cer-
tains points que nous appellerons les points observables ou points interruptibles.
Ces points sont situés dans le temps à la fin de l’exécution d’une instruction de la
CPU. Le schéma 2.1 d´ecrit sommairement l’évolution des registres d’une C.P.U.
simplifiée lors de l’exécution d’un programme
2.8 Conclusion
Nous avons débuté ce chapitre par la présentation du mode d’exécution des pro-
grammes dans un ordinateur. Puis nous avons présenté le mécanisme d’interruptions
ainsi que les potentielles causes d’interruptions. Nous avons ensuite poursuivi avec
la présentation des appels systèmes et des déroutements et avons achevé le chapitre
par les travaux dirigés relatifs aux éléments élaborés tout au long du chapitre.
Nous considérons le présent chapitre comme le point d’entrée nécessaire à la
bonne compréhension des différents autres composants du SE que sont la gestion
de la mémoire, des fichiers, des processus, ... Ainsi, dans le capitre suivant, nous
entrons dans le vif du sujet, en commençant par la gestion des processus et de leur
ordonnancement.
3.1 Objectifs
Ce chapitre a pour principal objectif de présenter la façon dont les instructions
sont exécutées en machine, en insistant sur l’ordonnacement des tâches telles qu’elles
sont définies par le SE. A la fin du chapitre, l’apprenant devra être cappable :
— De définir la notion de processus ainsi que les différents états de ce dernier
— De comprendre les principes par lesquels le SE alloue le processeur aux pro-
cessus
— Identifier les différents états d’un processus
— De créer les processus dans un SE
— D’identifer la différenc entre un processus léger et un processus lourd
La charge horaire destinée à ce chapitre est départie comme suit :
1. Cours magistral : 3h
2. Travaux dirigés : 2h
3. Travaux pratiques : 3h
4. Travail personnel de l’étudiant : 1h
26
L’ensemble de ces composantes forme le contexte d’exécution d’un processus
ou plus simplement le contexte
3.6.2 Principes
Un processus est donc successivement en phases de calcul, et en phase d’entrées-
sorties. L’idée est donc de tenter de se faire recouvrir une phase d’E/S d’un processus
avec des phases de calcul d’un autre processus.
Exemple 2
Figure 3.4 – Exécution de l’algorithme d’ordonnancement SJF
RR - Round Robin
L’ordonnancement par tourniquet (Round Robin) est préemptif, et sélectionne
le processus attendant depuis le plus longtemps. Un quantum de temps est spécifié,
et à chacun de ces intervalles, on choisit une nouvelle sélection. Plus le quantum
est faible, plus les temps de réponse sont courts, mais plus les commutations sont
fréquentes, d’où une dégradation possible des performances.
Avec priorité
Pour l’ordonnancement préemptif à priorité, on affecte une valeur à chaque pro-
cessus. Le processus actif est celui qui à la priorité la plus élevée (valeur la plus
faible), et en cas d’égalité, on utilise FIFO. Les priorités peuvent être fixées en
fonction des caractéristiques du processus (beaucoup d’E/S, utilisation de la mé-
moire,...), de l’utilisateur, ou même d’une priorité fixée par l’administrateur ou l’uti-
lisateur (commande nice sous Unix). Pour éviter le risque de famine des processus
de trop faible priorité, on peut augmenter la priorité en fonction du temps d’attente
écoulé.
Exemple 5
Figure 3.7 – Exécution de l’algorithme d’ordonnancement MQS
Dans cet exemple, chaque file de processus est ordonnancée par un algorithme
différent.
Les processus des files de plus basse priorité ne peuvent s’exécuter que lorsque
les processus de la file supérieure sont tous bloqués. Il y a donc risque de famine.
3.8 Conclusion
La gestion de la mémoire
4.1 Objectifs
Dans ce chapitre il est question de présenter le processus par lequel le système
d’exploitation gère la mémoire centrale de l’ordinateur. Ainsi, à la fin du chapitre,
l’étudiant devra être cappable :
— De comprendre le principe d’allocation de la mémoire aux processus
— D’établir la différence entre les différents types de partition de la mémoire
— De maitriser les principes de segmentation et de pagination de la mémoire
— De maitriser les techniques utilisées par le SE pour le partage de la mémoire
La charge horaire destinée à ce chapitre est départie comme suit :
1. Cours magistral : 4h
2. Travaux dirigés : 3h
3. Travail personnel de l’étudiant : 1h
35
Dans un programme écrit en langage évolué, noms et objets sont définis par ce
langage. Ils sont différents de ceux que manipule le processeur physique. Le pro-
gramme doit donc subir une série de transformations appelée liaison. Celle-ci com-
porte une étape de traduction (mise en correspondance des objets avec les emplace-
ments mémoire et des noms avec les adresses relatives correspondantes), une étape
d’édition de lien (liaison entre programmes traduits séparément), et enfin une étape
de chargement (fixation définitive des adresses, jusque là définies à une translation
près). La séparation conceptuelle des problèmes de désignation et liaison, d’une part,
et des problèmes d’allocation mémoire, d’autre part, peut être schématisée par la
figure 4.1.
Le fait que la notion de mémoire logique ne soit pas restée un outil conceptuel,
mais ait été mise en œuvre sur certaines machines par des dispositifs physiques de
transformation d’adresse a conduit à ce que la séparation des fonctions soit plus ou
moins bien respectée.
— Mémoire logique contiguë : Elle est constituée d’une suite d’emplacements
identiques (mots) organisés de manière séquentielle et désignés par des entiers
consécutifs appelés adresses logiques. Un objet est une information occupant
un mot ou plusieurs mots consécutifs ; il est désigné par l’adresse logique du
premier mot. Cette organisation est donc identique à celle des emplacements
d’une mémoire physique.
— Mémoire logique non contiguë ou segmentée : Elle est constituée d’un en-
semble de segments. Un segment est une suite de mots et regroupe générale-
ment des informations de même nature. Il peut avoir une taille variable. Les
mots contenus dans un segment sont désignés par des entiers consécutifs ap-
pelés déplacements. L’adresse logique d’un mot est donc un couple (numéro
de segment, déplacement dans le segment) appelé adresse segmentée. Un ob-
jet, qui peut occuper un segment entier ou une suite de mots consécutifs dans
un segment, est désigné par l’adresse segmentée de son premier mot.
— Mémoire physique non contiguë. Le placement des mémoires logiques en mé-
moire physique peut être contiguë ou pas. Dans ce dernier cas, les pages qui
composent la mémoire logique sont disséminées dans différentes pages phy-
siques. C’est une organisation en mémoire paginée ou segmentée et pagine.
Algorithmes de sélection
Une demande étant émise, on connaît la taille requise pour charger le programme
du processus demandeur. Le plus souvent, cette demande sera satisfaite grâce à
une partition de taille supérieure ; la différence, ou résidu est rattachée à la liste
des partitions libres, pour autant que cette différence ne soit pas trop petite. Deux
possibilités peuvent être envisagées quant au choix de la partition libre pour satisfaire
une demande :
— Prendre la première possible, c’est à dire, parcourir la liste jusqu’à ce que l’on
en trouve une dont la taille est supérieure ou égale à la demande (first-fit) ;
— Prendre la partition la plus petite possible, celle donnant le plus petit résidu
(best-fit).
L’allocation d’une partition à un processus peut se décomposer en deux phases,
recherche de la partition selon l’algorithme choisi puis placement du résidu dans
la liste. Le classement par tailles croissantes évite de parcourir toute la liste pour
trouver la plus petite partition possible (permettant ainsi une implémentation aisée
du best-fit). Par contre le placement du résidu impose une modification du chaînage.
A l’opposé, le classement par adresses croissantes autorise une gestion rapide des
résidus (seule la taille doit être modifiée, le chaînage demeurant inchangé) pour peu
que le chargement s’opère en bas de partition. Cette technique est mieux adaptée à
l’algorithme du first-fit.
On peut constater que certaines tailles sont demandées plus fréquemment que les
autres. Dans ces conditions, on améliore l’efficacité de l’allocation en réservant un
certain nombre de partitions possédant ces tailles privilégiées. En cas d’épuisement
de cette réserve, le mécanisme classique est utilisé.
même taille appelé pages physiques. Nous présentons successivement les mécanismes
de pagination d’une mémoire contiguë paginée et d’une mémoire paginée segmentée.
Une adresse logique paginée est alors construite par concaténation d’un numéro
de page logique (n bits) et d’un déplacement dans la page (l bits). De même, une
Dans cette mémoire associative on conserve les couples <npl, npp> relevés lors
des accès les plus récents. En raison de la propriété de localité des programmes,
on a une probabilité élevée (80% à 95% avec les tailles usuelles) de trouver dans la
mémoire associative le numéro de la page logique adressée et donc de déterminer sa
page physique. Ce n’est qu’en cas d’échec que l’on passe par la table des pages ; la
mémoire associative est alors mise à jour, le couple <npl, npp> courant remplaçant
le plus anciennement utilisé (figure 4.10).
Si l’unité de partage est la page, une page physique partagée peut recevoir des
droits d’accès distincts dans chaque mémoire logique où elle figure. Ces droits sont
spécifiés à l’entrée correspondante de la table de pages.
Une adresse logique dans un système segmenté (aussi appelée adresse segmentée)
est un couple <no de segment, déplacement>
Comme dans les mémoires paginées, le S.E. maintient une table des segments
pour chaque processus (figure 4.13). La correspondance proprement dite est établie
par le matériel de la manière suivante :
Ce mécanisme doit être couplé à une mémoire associative pour améliorer le temps
d’accès moyen en évitant l’utilisation de la table des segments.
Les avantages de cette organisation sont doubles : d’une part, la notion de seg-
ment est directement utilisable dans un processus et de ce fait on peut espérer une
réduction des temps d’accès moyens (les accès fréquents étant regroupés sur un petit
groupe de segments, voire même sur un segment unique) ; d’autre part, la notion
de protection est plus facilement utilisable puisqu’elle porte directement sur des
segments, c’est à dire des objets logiques.
Les segments sont des zones contiguës (du moins pour l’instant). On retrouve
donc les problèmes d’allocation/libération de zones et l’apparition d’une fragmen-
tation externe éventuellement corrigée par des compactages de la mémoire. Dans
le cas de la mémoire segmentée, ces compactages impliquent une remise à jour des
pointeurs origine des tables de segments.
5.1 Objectifs
Ce chapitre a pour but de présenter le système de gestion de fichiers tel que
perçu par le système d’exploitation. A la fin du chapitre, l’étudiant devra pouvoir :
1. Connaitre le concept de système de gestion de fichiers et donner son rôle
2. Présenter le rôle du formatage et du partitionnement d’un disque
3. Présenter les différents type de partitionnement d’un disque
4. Établir la différence entre un fichier et un répertoire
5. Établir la différence entre un chemin d’accès absolu et un chemin d’accès
relatif
La charge horaire destinée à ce chapitre est départie comme suit :
1. Cours magistral : 3h
2. Travaux dirigés : 2h
3. Travaux pratiques : 2h
4. Travail personnel de l’étudiant : 1h
5.2 Introduction
Le système de gestion de fichiers (SGF) est la partie la plus visible d’un système
d’exploitation qui se charge de gérer le stockage et la manipulation de fichiers (sur
une unité de stockage : partition, disque, CD, disquette). Un SGF a pour principal
rôle de gérer les fichiers et d’offrir les primitives pour manipuler ces fichiers.
53
dans son premier secteur (secteur zéro), le MBR (Master Boot Record). Deux types
de partitionnement :
1. Primaire : On peut créer jusqu’à 4 partitions primaires sur un même disque
2. Etendue : est un moyen de diviser une partition primaire en sous-partitions
(une ou plusieurs partitions logiques qui se comportent comme les partitions
primaires, mais sont créées différemment (pas de secteurs de démarrage))
Dans un même disque, on peut avoir un ensemble de partitions (multi-partition),
contenant chacune un système de fichier (par exemple DOS et UNIX)
5.3.2 Le formatage
Avant qu’un système de fichiers puisse créer et gérer des fichiers sur une unité de
stockage, son unité doit être formatée selon les spécificités du système de fichiers.
Le formatage inspecte les secteurs, efface les données et crée le répertoire racine du
système de fichiers. Il crée également un superbloc pour stocker les informations
nécessaires à assurer l’intégrité du système de fichiers.
5.3.3 Le formatage
Un superbloc contient notamment : L’identifiant du système de fichiers (C :,
D : ..), Le nombre de blocs dans le système de fichiers, La liste des blocs libres,
l’emplacement du répertoire racine, la date et l’heure de la dernière modification du
système de fichiers, une information indiquant s’il faut tester l’intégrité du système
de fichiers.
">" pour Multics, "/" pour UNIX, "\" pour Dos et Winxx et ": " pour MacOS.
Un tel chemin (exprimé à partir de la racine) est appelé chemin absolu. Voici un
exemple de chemin absolu sous MS-DOS
Par contre, un chemin qui ne commence pas par la racine est un chemin relatif.
Ces deux concepts de fichier et de répertoire sont considérés par le système d’ex-
ploitation comme une seule entité différentiable par un bit à rajouter aux attributs.
Sous Unix, le répertoire racine (le répertoire /) contient les sous répertoires de
la figure 5.5
La plus part des systèmes actuels appliquent ce mode. MS-DOS utilise la FAT
(File Allocation Table) pour y conserver les chaînages entre les blocs. Windows NT
utilise la MFT (Master File Table) associé au système NTFS (New Technology
File System) .UNIX, GNU/Linux utilisent le I-Node (Index node).
1. FAT : On parle généralement de système de fichiers FAT16 et FAT32.
— Le FAT16 est utilisé par MS-DOS. En FAT16, les numéros de blocs sont
écrits sur 16 bits. Si on suppose que la taille d’un bloc est 32Ko, la taille
maximale adressables est alors 2Go (21 6x32 Ko = 2097152 Ko = 2Go)
— Le FAT32 est pris en charge par Windows 95 et les versions qui ont suivis.
Les numéros de blocs sont écrits sur 32 bits (en réalité, sur 28bits, 4 bits
étant réservés). Si on suppose que la taille d’un bloc est de 32 ko, la taille
maximale adressable théoriquement est de 8 To (228 x 32 Ko = 8 To).
Toutefois, Microsoft la limite volontairement à 32 Go sur les systèmes
Windows 9x afin de favoriser NTFS.
2. NTFS : Le système de fichiers NTFS (New Technology File System) est utilisé
par Windows2000, WindowsNT, Windows XP et Windows Vista. Il utilise un
système basé sur une structure appelée MFT (Master File Table), permettant
de contenir des informations détaillées sur les fichiers. Ce système permet
ainsi l’utilisation de noms longs, mais, contrairement au système FAT32, il
est sensible à la casse, c’est-à-dire qu’il est capable de différencier des noms
en majuscules de noms en minuscules.
Coté performances, l’accès aux fichiers sur une partition NTFS est plus rapide
que sur une partition de type FAT car il utilise un arbre binaire performant
Exemple 2 Par exemple, un disque de 300 Mo, organisé en blocs de 1 Ko. Suppo-
sons que chaque bloc soit adressé par 4 octets. Chaque bloc de la liste pourra contenir
255 (1024/4) adresses de blocs libres. La liste comprendra donc au plus 307.200/255
= 1205 blocs. Cette solution mobilise beaucoup plus de place que la précédente.
63