Introduction au Système d'Exploitation Linux
Introduction au Système d'Exploitation Linux
1
Qu’est-ce qu’un Système
d’Exploitation?
2
Définition formelle : Un Système d’Exploitation (S.E.) est une
machine abstraite conçue pour faciliter l’exploitation du
matériel (pilotes de périphériques) ou pour arbitrer l’accès au
matériel par les utilisateurs.
3
Définition pratique:
• Ensemble de programmes nécessaires au
fonctionnement de l’ordinateur, indépendant des
programmes d’applications mais indispensable à
leur mise en œuvre.
• Chargé en mémoire centrale au démarrage
• Fonctions
– Gestion des ressources (mémoire…)
– Gestion des entrées-sorties
– Gestion des fichiers
– Gestion des programmes
– Assurer l’interface avec l’utilisateur
4
Un chef d’orchestre 5
Les différentes classes de SE
6
Structure d’un SE
7
Histoire de Linux
8
Qu'est-ce qu'UNIX ?
9
Philosophie UNIX
10
Naissance de GNU/Linux
En 1991, un étudiant finlandais nommé Linus Torvalds décide de créer un
nouveau noyau basé sur Minix (un dérivé d’UNIX) afin de contourner ses
limitations et celles de MS-DOS. Ce nouveau noyau est distribué
gratuitement sur Internet en août 1991 sous le nom : Linux.
11
Les distributions GNU/Linux
De part son esprit communautaire, Linux se décline en plus d'une
centaine de distributions. Toutes ces distributions possèdent un
noyau Linux, mais différent dans la composition des
programmes qui l'entourent.
12
13
Logiciels open-sources et
propriétaires
Un logiciel peut être disponible sous différentes formes, la première
est la version source c'est à dire la version écrite dans un langage
de programmation et compréhensible par l'homme. L'autre est la
version compilée, c'est la traduction de la version source en
version compréhensible par la machine, on parle aussi de version
binaire.
Ainsi on distinguera un logiciel open-source d'un logiciel
propriétaire : le logiciel open-source met à disposition les sources
du programme tandis que le logiciel propriétaire se cantonne à
distribuer la version compilée
14
Structure de Linux
15
Structure de Linux
• Le noyau gère les tâches de base du système :
L'initialisation du système
La gestion des ressources
La gestion des processus
La gestion des fichiers
La gestion des Entrées/Sorties
• L’utilisateur communique avec le noyau par l'intermédiaire d'un SHELL. Les Shells sont aussi des
langages de commandes et de programmation.
• Les utilitaires sont des outils d'interfaçage avec le système, de programmation et de communication.
16
Éléments d'administration de Linux
Linux supporte 2 modes d'administration :
À la main :
Édition (manuelle) des fichiers de configuration
Utilisation (manuelle) des commandes d'administration
Utilisation (manuelle) des gestionnaires de paquets
Édition de scripts de commande (langage : shell, perl, awk, ...)
17
Processus de démarrage de Linux
18
GESTION DES PROCESSUS
19
Les processus, à quoi ça sert?
• À faire plusieurs activités ”en même temps”.
• Exemples
• Faire travailler plusieurs utilisateurs sur la même machine.
Chaque utilisateur a l’impression d’avoir la machine à lui tout
seul.
• Compiler tout en lisant son mail
Processus ≠ Programme
21
États des processus
22
Bloc de contrôle de processus(1)
• Chaque processus est représenté dans le SE par un PCB
(process control block)
23
Bloc de contrôle de processus (2)
• L’état du processus : nouveau, prêt, en exéion, etc.
• Les registres du processeur : compteur d’instructions, pointeur de pile, etc. Ces
informations sont utilisées en cas d’interruption.
• des informations sur l’ordonnancement : information concernant la priorité du
processus.
• des informations sur la gestion mémoire : tables des pages, registres des
segments.
• des informations sur les E/S : liste des périphériques E/S allouées à ce
processus, une liste des fichiers ouverts, etc.
• des informations diverse : temps processeur, temps depuis le lancement,
numéro du processus, nom du fichier exéable, etc.
24
Hiérarchie de processus (1)
• Dans certains SE, lorsqu’un processus crée un autre processus, les
processus parent et enfant continuent d’être associés d’une certaine
manière. Le processus enfant peut lui même créer plusieurs processus,
formant une hiérarchie de processus.
• Un processus a un seul parent et peut avoir 0 ou plusieurs fils.
Linux/UNIX:
• Si le processus A crée le processus B, A est le parent de B, B est
le fils de A (A par défaut, exée le même code que B) B peut à
son tour créer des processus. Un processus avec tous ses
descendants forment un groupe de processus représenté par un
arbre de processus.
• fork est le seul appel système de création de processus.
25
Hiérarchie de processus (2)
26
L'ordonnancement des processus
Pour gérer les processus durant leur séjour, le SE maintient plusieurs files
d’attente. On peut citer entre autres :
• File d’attente des processus prêts.
• File d’attente de périphérique
Une fois qu’on a alloué le processeur au processus et que celui-ci est en cours
d’exéion, il pourrait se produire l’un des événements suivants :
• Le processus pourrait émettre une requête d’E/S et ensuite placé dans une
file d’attente d’E/S.
• Le processus pourrait créer un nouveau processus et attendre la fin de celui-
ci.
• Le processus pourrait être enlevé du processeur ;
• Le processus pourrait se terminer.
.
27
L'ordonnanceur (en anglais scheduler)
28
Les critères d'ordonnancement
29
Les algorithmes
d’ordonnancement
" scheduling algorithms "
30
L’algorithme du Premier Arrivé Premier Servi (FCFS)
31
:
L’algorithme du Plus Court d’abord (SJF)
32
L’algorithme de Round Robin (Tourniquet)
Il alloue le processeur aux processus à tour de rôle, pendant une tranche de temps
appelée quantum.
Exemple :
33
L'ordonnancement avec priorité
34
La fin d’un processus
• Un processus peut se terminer suite à l’un des 4 événements :
• Sortie normale, lorsque le processus a terminé sa tâche (sous Linux
par l’appel système exit)
• Sortie suite à une erreur (e.g. division par 0, inexistence d’un
fichier passé en paramètre)
• Tué par un autre processus (sous Linux par l’appel système kill)
• Toutes les ressources du processus sont libérées par le SE.
35
Le Shell Linux
Le Shell est un programme (application), qui assure l'interface entre les différents
programmes et la machin
A quoi cela sert-il ?
- Administrer.
- Tuer des processus
- Sur une machine multiprocesseur, avoir une idée de son occupation.
- Automatiser des traitements
- Savoir se connecter à une machine Linux distante
Syntaxe d’une commande Shell
Syntaxe :
command [ -options ] [ arguments ]
• Le nom de la commande est le plus souvent le premier mot.
• Une option précise un fonctionnement particulier de la commande.
• Les arguments désignent les objets sur lesquels doit s’exécuter la commande.
36
Commandes shell de
manipulation de processus
La commande ps (process) liste les processus de l'utilisateur. L'option -e
affiche tous les processus en cours d'exécution sur un ordinateur et -f
affichent des informations détaillées. Ainsi, la commande produit une
sortie semblable à :
37
Commandes shell de
manipulation de processus
L’utilisation de l’option u permet d’afficher les processus lancés par un
utilisateur particulier.
38
Commandes shell de
manipulation de processus
Pour tuer un processus, on doit connaître son PID, et écrire la commande
suivante : kill -9 <PID>
39
Gestion de la mémoire
40
Gestion de mémoire: objectifs
• Connaître les zones libre de mémoire physique
• Allouer de la mémoire aux processus (sans gaspillage et avec sécurité)
• Transformer les adresses virtuelles référencées dans un programme en
adresses réelles de la mémoire physique
• Offrir une mémoire virtuelle plus grande que la mémoire physique
• Récupérer la mémoire qui se libère lorsqu'un processus se termine
41
Mémoire/Adresses physiques et
logiques
• Mémoire physique:
– la mémoire principale RAM de la machine
• Adresses physiques: les adresses de cette mémoire
• Mémoire logique: l’espace d’adressage d’un programme
• Adresses logiques: les adresses dans cet espace
• Il faut séparer ces concepts car normalement, les
programmes sont à chaque fois chargés à des positions
différentes dans la mémoire
Donc adresse physique ≠ adresse logique
42
Aspects du chargement
43
I—Affectation contiguë de
mémoire
Affectation de tout le processus en un
seul morceau en mémoire SE
disponible
programme 3
44
Partitions fixes
Première organisation de
l’allocation contiguë
Mémoire principale subdivisée
en régions distinctes: partitions
Les partitions sont soit de
même taille ou de tailles
inégales
N’importe quel programme
peut être affecté à une partition
qui soit suffisamment grande
45
Algorithme de placement pour
partitions fixes
Partitions de tailles inégales:
utilisation de plusieurs queues
assigner chaque processus
à la partition de la plus
petite taille pouvant le
contenir
1 file par taille de partition
tente de minimiser la
fragmentation interne
Problème: certaines files
seront vides s’il n’y a pas
de processus de cette taille
(fragemantation externe) 46
Algorithme de placement pour
partitions fixes
Partitions de tailles
inégales: utilisation d’une
seule file
On peut affecter une
partition de grande taille
a une petite tache
fragmentation interne
47
Partitions dynamiques
48
Partitions dynamiques: exemple
49
Partitions dynamiques: exemple
(e-f) P2 est suspendu, P4 est chargé. Un trou de 224-128=96K est créé (fragmentation
externe)
(g-h) P1 se termine ou il est suspendu, P2 est chargé à sa place: produisant un autre
trou de 320-224=96K...
Nous avons 3 trous petits et probablement inutiles. 96+96+64=256K de fragmentation
externe
50
COMPACTAGE pour en faire un seul trou de 256K
Technique d’allocation de la
mémoire
• Le système garde la trace des emplacements occupés de la
mémoire par l’intermédiaire :
– D’une table de bits ou bien
– D’une liste chaînée.
51
Tables de bits
On peut conserver l’état des blocs de mémoire grâce à
une table de bits. Les unités libres étant notées par 0 et
ceux occupées par un 1.
0 0 1 1 0 0
L P P
0 5 8
5 3 2
la plus loin
54
Fragmentation: mémoire non
utilisée
• Un problème majeur dans l’affectation
contiguë:
– Il y a assez d’espace pour exécuter un
programme, mais il est fragmenté de façon non
contiguë
• externe: l’espace inutilisé est entre partitions
• interne: l’espace inutilisé est dans les partitions
55
Compactage
• Une solution pour la fragmentation externe
• Les programmes sont déplacés en mémoire de façon à
réduire à 1 seul grand trou plusieurs petits trous
disponibles
• Effectuée quand un programme qui demande d’être
exécuté ne trouve pas une partition assez grande, mais sa
taille est plus petite que la fragmentation externe existante
• Désavantages:
– temps de transfert programmes
– besoin de rétablir tous les liens entre adresses de différents
programmes
56
II—Allocation non contiguë
• A fin réduire le besoin de compression, le prochain pas est d`utiliser
l’allocation non contiguë
– diviser un programme en morceaux et permettre l`allocation
séparée de chaque morceau
– les morceaux sont beaucoup plus petits que le programme entier et
donc permettent une utilisation plus efficace de la mémoire
• les petits trous peuvent être utilisés plus facilement
57
Les segments comme unités
d’alloc mémoire
0
3
0
2 1
3
Étant donné que les segments sont plus petits que les programmes entiers,
cette technique implique moins de fragmentation (qui est externe dans ce cas)
58
Détails
• le tableau des segments contient:
– la base
– la limite
• Dans le PBC du processus il y aura un pointeur à l’adresse
en mémoire du tableau des segments
• Il y aura aussi là dedans le nombre de segments dans le
processus
59
emacs
VI
72773
60
Évaluation de la segmentation simple
PAGINATION
61
Segmentation contre pagination
62
Pagination simple
La mémoire est partitionnée en petits morceaux de même
taille: les pages physiques ou ‘cadres’ ou ‘frames’
Chaque processus est aussi partitionné en petits morceaux
de même taille appelés pages (logiques)
Les pages logiques d’un processus peuvent donc être
assignés aux cadres disponibles n’importe où en mémoire
principale
63
Exemple de chargement de processus
64
Exemple de chargement de processus
Nous pouvons maintenant
transférer en mémoire un
processus D, qui demande
5 cadres
bien qu`il n’y ait pas 5
cadres contigus
disponibles
65
Tableaux de
pages
67
La mémoire virtuelle
Page E seulement
sur disque
69
Avantages du chargement partiel
Plus de processus peuvent être maintenus en exécution en mémoire
Car seules quelques pièces sont chargées pour chaque processus
L’usager est content, car il peut exécuter plusieurs processus et faire
référence à des gros données sans avoir peur de remplir la mémoire
centrale
Avec plus de processus en mémoire principale, il est plus probable
d’avoir un processus dans l’état prêt, meilleure utilisation d’UCT
Plusieurs pages ou segments rarement utilisés n’auront peut être pas
besoin d`être chargés du tout
Il est maintenant possible d’exécuter un ensemble de processus lorsque
leur taille excède celle de la mémoire principale
Il est possible d’utiliser plus de bits pour l’adresse logique que le
nombre de bits requis pour adresser la mémoire principale
Espace d’adressage logique > > esp. d ’adressage physique
70
Mémoire Virtuelle
71
Exécution d’un Processus
Le SE charge la mémoire principale de quelques pièces (seulement)
du programme
Chaque entrée de la table de pages (ou segments) possède un bit
présent qui indique si la page ou segment se trouve en mémoire
principale
L’ensemble résident (résident set) est la portion du processus se
trouvant en mémoire principale
Une interruption est générée lorsque l’adresse logique réfère à une
pièce qui n’est pas dans l’ensemble résident
défaut de pagination (page fault)
72
Exécution d’un défaut de page:
va-et-vient plus en détail
73
Remplacement de pages
• Quoi faire si un processus demande une nouvelle page et il
n’y a pas de cadres libres en RAM?
• Il faudra choisir une page déjà en mémoire principale,
appartenant au même ou à un autre processus, qu’il est
possible d’enlever de la RAM
– la victime!
• Un cadre de mémoire sera donc rendu disponible
74
Quand la RAM est pleine mais
nous avons besoin d`une page pas
en RAM
75
La page victime...
76
Algorithmes de remplacement
pages
• Choisir la victime de façon à minimiser le
taux de défaut de pages
– pas évident!!!
• Page dont nous n`aurons pas besoin dans le
futur? impossible à savoir! OPT
• Page pas souvent utilisée? LRU
• Page qui a déjà séjournée longtemps en
mémoire?? FIFO
77
• etc.
Explication et évaluation des
algorithmes
• Nous allons expliquer et évaluer les algorithmes en utilisant
la chaîne de référence suivante :
2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2
78
Algorithmes pour la politique de remplacement
79
Algorithmes pour la politique de
remplacement
Algorithme LRU (Least Recently Used) remplace la page
dont la dernière référence remonte au temps le
plus lointain (le passé utilisé pour prédire le
futur)
Il s’agit de la page qui a le moins de chance d’être
référencée
performance presque aussi bonne que l’algorithme
OPT
80
Algorithmes pour la politique de
remplacement
• Premier arrivé, premier sorti (FIFO)
Logique: une page qui a été longtemps en mémoire a eu
sa chance pour s’exécuter
• Lorsque la mémoire est pleine, la plus vieille page est
remplacée. Donc: “first-in, first-out”
• Simple à mettre en application
• Mais: Une page fréquemment utilisée est souvent la plus
vielle, elle sera remplacée par FIFO!
81
Note sur le comptage des défauts de page
82
Gestion de la mémoire
sous GNU/Linux
83
les différentes mémoires d’un système LINUX
84
Le fonctionnement de la mémoire
85
La commande FREE
La commande free affiche un résultat tel que : root@~~:/#free
86
Éléments du langage (2)
Par exemple, sur un serveur disposant de 7,5 Go de mémoire, la commande
free -m donne :
87
Utilisation du swap
88
Espace d'adressage d'un processus
Les fichiers /proc/PID/status donnent des informations intéressantes sur
les processus en cours d'exécution.
89
Systèmes de gestion de fichiers
90
Que c’est qu’un fichier
Répertoires
Fichiers
F1 F2 F4
F3
Fn
94
Répertoires à deux niveaux
• Rép. séparé pour chaque usager
• `path name`, nom de chemin
• même nom de fichier pour usagers différents est permis
• recherche efficace
• Pas de groupements
95
Répertoires à arbres (normal
aujourd’hui)
96
La gestion de l’organisation de
l’espace disque
Trois méthodes d’allocation de fichiers :
Allocation contiguë
Allocation enchaînée
Allocation indexée
97
Allocation contiguë sur disque
répertoire
98
Allocation contiguë disque
Chaque fichier occupe un
ensemble de blocs contigu sur
disque
Simple: nous n’avons besoin
que d’adresses de début et
longueur
99
Allocation contiguë
Application des problèmes
et méthodes vus dans le
chapitre de l’alloc de
mémoire contiguë
Les fichiers ne peuvent pas
grandir
Impossible d’ajouter au
milieu
Exécution périodique
d’une compression
(compaction) pour
récupérer l’espace libre
100
Allocation enchaînée
répertoire
101
Allocation enchaînée disque
• Le répertoire contient
l ’adresse du premier et
dernier bloc, possibl. le
nombre de blocs
• Chaque bloc contient un
pointeur à l’adresse du
prochain bloc:
bloc = pointeur
données
102
Avantages - désavantages
• Pas de fragmentation externe - allocation de
mémoire simple, pas besoin de compression
• L’accès à un fichier est totalement
séquentiel
• La perte d’un chainage
103
Allocation indexée: semblable à la
pagination
104
Allocation indexée
bloc 217
bloc 618
107
UNIX – LINUX inode
C’est une structure contenant les informations suivantes:
la taille,
l’identité du propriétaire et du groupe : un fichier en Unix est créé par un
propriétaire, qui appartient à un groupe,
Les droits d’accès : pour chaque fichier, Unix définit trois droits d’accès
(lecture (r), écriture (w) et exécution (x)
les dates de création, de dernière consultation et de dernière modification,
le nombre de références existant pour ce fichier dans le système,
108
Inode: Système fichiers indexé à niveaux:
UNIX et Linux
109
Gestion de l’espace libre
110
Gestion d’espace libre
Solution 1: vecteur de bits
Vecteur de bits (n blocs)
0 1 2 n-1
…
0 block[i] libre
bit[i] =
1 block[i] occupé
111
Gestion d’espace libre
Solution 2: Liste liée de mémoire libre
112
GESTION DE FICHIERS
SOUS LINUX
113
Arborescence
114
Arborescence typique de Linux
116
Les chemins d’accès sous Linux
117
Commandes shell de manipulations de
fichiers
La commande cd (change directory):
Cette commande permet de changer le répertoire courant. Sans argument
cd permet de se déplacer vers le répertoire de connexion.
cd [chemin]
Exemples :
cd ~ et cd ramènent dans le répertoire de connexion.
cd . : ne change pas le répertoire courant.
cd .. : permet de se déplacer vers le répertoire parent.
cd / : il permet de se déplacer vers la racine.
118
119
Commandes shell de manipulations de
fichiers
La commande ls (list files) : La commande Ls permet de lister le contenu
d’un répertoire
ls [-options] chemin
120
Commandes shell de manipulations de
fichiers
La commande ls (list files)
Exemple:
cat [Link] : cette commande permet d’afficher sur l’écran le contenu du
fichier [Link]
122
Commandes shell de manipulations de
fichiers
La commande touch : La commande touch permet de créer des fichiers
vides.
Exemple:
touch [Link] [Link] : Créer les fichiers [Link] et [Link] sous votre répertoire
de travail.
124
Gestion des utilisateurs et des groupes
Les fichiers et les répertoires possèdent 3 types de droits :
• les droits en lecture (symbolisés par la lettre r)
• les droits en écriture (symbolisés par la lettre w)
• les droits en exécution (symbolisés par la lettre x)
125
Gestion des utilisateurs et des groupes
La commande chmod : permet de modifier les permissions d'un fichier ou d'un
dossier.
• les symboles liés aux utilisateurs : "u" correspond au propriétaire, "g"
correspond au groupe lié au fichier (ou au répertoire), "o" correspond aux
autres utilisateurs et "a" correspond à "tout le monde" (permet de modifier
"u", "g" et "o" en même temps)
• les symboles liés à l'ajout ou la suppression des permissions : "+" on ajoute
une permission, "-" on supprime une permission, "=" les permissions sont
réinitialisées (permissions par défaut)
• les symboles liés aux permissions : "r" : lecture, "w" : écriture, "x" :
exécution.
chmod [u g o a] [+ - =] [r w x] nom_du_fichier
126
Gestion des utilisateurs et des groupes
Exemple1:
chmod o+w [Link]
Il est possible de combiner les symboles :
chmod g-wx [Link]
Exemple2:
chmod a=r [Link] autorise uniquement l'ensemble des utilisateurs à accéder
au fichier toto en lecture seule.
127
Gestion des utilisateurs et des groupes
La syntaxe chiffrée peut être utilisée pour régler d'un trait l'accès de tous les
ensembles d'usagers. Par exemple, la commande
chmod 664 [Link]
est équivalente à
chmod ug=rw [Link]
chmod o=r [Link]
Le premier chiffre de la valeur numérique fixe l'accès de l'usager propriétaire, le
deuxième fixe l'accès du groupe propriétaire et le dernier fixe l'accès des
« autres ». Chaque chiffre est la somme d'un ou plusieurs chiffres
correspondant à des accès différents :
• 4 : lecture
• 2 : écriture
• 1 : exécution
• 0 : aucun
128
GESTION DES
ENTREES/SORTIES
129
Introduction(1)
130
Introduction(2)
Il existe deux grandes catégories de périphériques
Les périphériques caractères : on accède bien sur à
l’information caractère par caractère (exemple : le clavier,
imprimante)
Les périphériques blocs : on ne peut accéder à
l’information que par blocs et chaque bloc possède une
adresse (exemple : le disque).
131
L’unité d’échange
132
Constitution d’une unité
d’échange
Un registre de commande dans
lequel le processeur décrit le travail
à effectuer
Un registre de données qui contient
les mots à échanger entre le
périphérique et la mémoire centrale
Un registre d ’état qui indique si l
’unité d ’échange est prête, si
l’échange s’est bien déroulé, etc...
133
Gestion des Entrées/Sorties
Dans un système d’exploitation, cette
fonction est réalisée par un ensemble de
services appelé gestionnaire d’entrée-sortie.
134
Gestion des Entrées/Sorties
Trois méthodes de gestion des entrées/sorties:
❑ La liaison programmée
❑ Les entrées-sorties pilotées par les
interruptions
❑ L’utilisation d’un dispositif permettant
des accès directs à la mémoire, DMA
135
Entrées/Sorties programmées
Par défaut, une unité d'échange :
ne sait pas accéder à la mémoire
centrale
ne sait pas délivrer son état
➢ 1. Le processeur doit lire chaque
mot depuis la mémoire centrale et
le placer dans RD (ou vice versa)
➢ 2. Le processeur doit scruter le
registre RE pour savoir si l'unité
d'échange est prête pour un
nouveau transfert
136
137
Entrées/Sorties par interruption
Par défaut, une unité d'échange :
ne sait pas délivrer son état
➢ 1. Le processeur doit scruter le
registre RE pour savoir si l'unité
d'échange est prête pour un
nouveau transfert
Solution: Il faut ajouter un mécanisme
qui permette à l‘UE de signaler son
état par elle même : les interruptions
138
Entrées/Sorties par interruption
141
142
Les flux de redirection
143
> et >> : rediriger le résultat
dans un fichier
Cut [Link]
144
> : rediriger dans un nouveau
fichier
146
2>, 2>> et 2>&1 : rediriger les
erreurs
Il faut savoir que toutes les commandes produisent deux flux de données
différents, comme le montre la figure suivante :
• la sortie standard : pour tous les messages (sauf les erreurs) ;
• la sortie d'erreurs : pour toutes les erreurs.
147
Rediriger les erreurs dans un
fichier à part
148
Fusionner les sorties
149
< : lire depuis un fichier
150
| : chaîner les commandes
151
Le pipe effectue la connexion entre la sortie de cut (des noms dans le
désordre) et l'entrée de sort, comme l'illustre la figure suivante.
152