Chapitre 1

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 42

Systèmes d’exploitation M.

Mokaddem

INTRODUCTION
Un système d’exploitation est un programme software offrant un environnement de
programmation dans lequel d’autres programmes peuvent s’exécuter et, d’une manière très
simple, prendre avantage du processeur et de ces organes d’entrée/sortie. Un autre fait
important est qu’un système n’est pas strictement nécessaire pour l’usage du hardware. Dans les
premiers âges de l’informatique, les programmeurs chargeaient directement leurs programmes
en mémoire via des pupitres dédiés. Ensuite, manuellement ils indiquèrent une adresse début et
ordonnèrent le processeur de s’y brancher. Cependant, les programmeurs modernes se sont
habitués, actuellement, à des facilités trop sophistiquées.
Actuellement, les systèmes modernes offrent deux services fondamentaux aux utilisateurs.
Premièrement, ils permettent un usage facile du hardware, en définissant et créant une machine
virtuelle qui diffère de marque, uniquement, de la machine réelle. Pour cette raison, le succès des
ordinateurs des deux dernières décades est dû aux systèmes d’exploitation qui ont su achever
une couverture de l’obscurité hardware. En plus, les programmeurs n’ont pas besoin de réécrire
leurs applications lorsqu’ils changent d’une machine à une autre. Deuxièmement, ils gèrent les
ressources, par partage, entre plusieurs utilisateurs. Une des plus importantes ressources est le
processeur. Un système multi-tâche divise la tâche à exécuter entre plusieurs processus et
procure pour chaque processus les ressources nécessaires pour son exécution, en particulier, la
mémoire et au moins un thread d’exécution. Le système exécute un thread pour une très courte
durée et passe ensuite au suivant permettant une équitable exécution des différents threads.
Même dans un système mono-utilisateur, le multi-tâche est extrêmement utile puisqu’il permet
l‘exécution d’au moins deux tâches à la fois. Par exemple, un utilisateur peut éditer un texte en
même temps où il imprime ou compile un second. Chaque processus se voit servi et, à l’œil de
l’utilisateur, les programmes semblent s’exécuter simultanément.
En plus du partage du processeur, le système gère la mémoire et régularise l’accès aux fichiers
et organes d’entrée/sortie. Les systèmes se distinguent les uns des autres selon la façon dont ils
présentent leurs machines virtuelles et leur gestion des ressources.

1
Systèmes d’exploitation M. Mokaddem

Ce chapitre discute comment les systèmes définissent la machine virtuelle et gèrent les
ressources.
La première section présente une définition détaillée des systèmes d’exploitation en
expliquant ces deux fonctions primordiales que chaque système assure. La seconde section
présente un historique qui relèvera l’évolution des systèmes à travers les âges. Une troisième
section décrira les principales structures des systèmes et met le point sur les appels systèmes
pour montrer comment a lieu l’exécution des commandes utilisateurs. En fin, une dernière
section décrit un exemple de système qui servira tout au long de ce cours de référence de base.
Cet exemple est typiquement éducatif et peut être réalisé sous forme de travail pratique par les
étudiants.

I.1 DEFINITION DES SYSTEMES D’EXPLOITATION


Les programmes qui s‘exécutent sur un ordinateur sont habituellement classés en deux
classes :
 Logiciel de base
 Logiciel d’application
Le système d’exploitation constitue une part importante du logiciel de base. Pour mieux
définir un système on doit donner sa décomposition hiérarchique et l’ensemble des fonctions
qu’il remplit.
I.1.1 Décomposition hiérarchique
I.1.1.1 Machine
Une machine est définie par :
 Un répertoire de base (ensemble des instructions ou primitives)
 Une mémoire (registre et mémoire principale)
 Un mécanisme d’exécution (cycle d’exécution d’une instruction)
Donc une machine nue a pour répertoire l’ensemble des instructions machine, pour mémoire
les registres du processeur et la mémoire centrale et pour mécanisme la méthode d’exécution
d’une instruction (lecture, décodage et exécution de l’instruction)
I.1.1.2 Machine abstraite
Comme tout langage, par sa définition générale, permet de définir :
 Des objets et les mécanismes permettant de les créer.
 Des actions (primitives) permettant de manipuler ces objets.
 Des règles de composition de ces actions.
On remarque, tout de suite, que tout langage définit au moins une machine capable de
l’interpréter. Le répertoire est l’ensemble des primitives du langage, la mémoire est la
représentation des objets par ce langage et le mécanisme d’exécution est l’ensemble des règles
d’interprétation du langage. Donc tout langage définit une machine abstraite. Elle est dite
abstraite parce qu’elle n’a pas de représentation physique.

2
Systèmes d’exploitation M. Mokaddem

I.1.1.2 Décomposition hiérarchique


La conception descendante est une application qui consiste à décomposer un problème en
une succession de sous-problèmes plus élémentaires que l’on espère résoudre plus aisément. A
cet effet, si on appelle M la machine nue, on peut définir une machine M0 en associant un
langage à M tel que le problème deviendra plus simple à résoudre. La spécification de M0 se
réduit à son interface, donc aux objets et règles offerts par M0.
Ainsi, une machine Mi ne dépend que de Mj et non des détails de sa réalisation interne. La
relation entre machine est dite relation de dépendance.
La fig.I.1 donne les principaux cas de figure de cette relation.

M0 M0 M0 niveau 0

M1 M1 M2 M1 niveau 1

M2 M2 M3 M4 niveau 2

M3 M3 M5 niveau 3

(a) (b) (c)


Fig. 1.1 Représentations en niveau de machines
a- Une machine ne peut utiliser que les primitives fournies par la machine d’un niveau
strictement inférieur.
b- Une machine peut utiliser des primitives fournies par toute machine de niveau inférieur.
c- Plus généralement, les machines sont classées en couches ou niveaux d’abstraction. Une
machine de niveau i n’utilise que des machines de niveau inférieur à i.
Ainsi, la structure d’un système peut être décrite par un graphe. Cette décomposition
hiérarchique en niveau présente plusieurs avantages qui résultent de l’indépendance introduite
par l’abstraction :
 Indépendance de conception : chaque machine est décrite par son interface.
 Indépendance de modification : la modification d’une machine n’implique aucune
modification des machines qui l’utilisent tant que l’interface reste inchangée.
 Indépendance de mise au point : une fois son interface spécifiée, une machine peut
être mise au point indépendamment des machines qui l’utilisent et inversement. D’où
la notion de portabilité.
En conclusion un système constitue une interface entre l’utilisateur et la machine, une
interface qui se définit par un langage ou moyen de communication. Toute information
nécessaire à la bonne gestion du système doit être contenue dans cette interface. Une tâche
exprimée très simplement selon les avantages offerts par la machine abstraite s’avère plus

3
Systèmes d’exploitation M. Mokaddem

complexe à un niveau d’abstraction inférieur. Donc une opération de haut niveau se décompose
en plusieurs opérations de bas niveau.
D’autre part, plusieurs machines virtuelles (abstraites) peuvent être définies sur une même
machine pour des utilisateurs différents. De là, il apparaît la décomposition suivante fig.I.2 :

User User User User


1 2 3 .. .. .. n

C
Cooom
C mpppiiilllaaattteeeuuurrr A
m Asssssseeem
A mbbbllleeeuuurrr E
m Edddiiittteeeuuurrrdddeeettteeexxxttteee...
E .. .. B
Baaassseeedddeeedddooonnnnnnéééeeesss
B

mee dd’’eexxppllooiittaattiioonn
SSyyssttèèm
L
Looggiicciieell ddee B
Baassee

M
Maacchhiinnee PPhhyyssiiqquuee

Fig. 1.2 Situation abstraite d’un système


d’exploitation

 Un utilisateur est caractérisé par un logiciel d’application qui constitue son environnement
de travail. Tout utilisateur a son propre environnement.
 Une partie commune à tous les utilisateurs appelée logiciel de base. Tout logiciel
d’application dépend de cette partie.
Les frontières entre ces couches ne sont pas définitives, il arrive parfois qu’un logiciel
d’application puisse être intégré au logiciel de base. Ce qui est la tâche du manager. Une
fonction du logiciel de base peut être câblée par besoin d’économie. Ce qui est la tâche du
concepteur.
A l’intérieur du logiciel de base, nous distinguons les outils et services
(compilateurs, éditeurs, utilitaires…) et le système d’exploitation lui-même, qui nous
intéresse le plus dans ce cours.
I.1.2 Fonctions d’un système d’exploitation
Cette partie du logiciel de base, en contact direct avec la machine remplit deux fonctions
essentielles.
I.1.2.1 Gestion des ressources
I.1.2.1.1 Ressources physiques
 Processeurs centraux.
 Mémoire principale.
 Mémoire secondaire.
 Organes d’E/S.

4
Systèmes d’exploitation M. Mokaddem

I.1.2.1.2 Ressources logiques


 Partage et échange d’information entre utilisateurs.
 Protection mutuelle des utilisateurs.
I.1.2.1.3 Divers
 Comptabilité et facturation.
 Statistiques et mesure des performances.
I.1.2.2 Machine virtuelle
I.1.2.2.1 Gestion de l’information
 Structuration.
 Conservation.
 Désignation.
 Transfert.
I.1.2.2.2 Exécution
 Exécution de programmes en séquence (Batch).
 Exécution de programmes en parallèle.
 Composition de programmes (compilation séparée).
I.1.2.2.3 Divers
 Mise au point.
 Traitement des défaillances.
 Mesure du temps.
 Etc.…

I.2 HISTORIQUE
Pour comprendre encore mieux les systèmes d’exploitation et ce qu’ils font, il faudrait voir
comment ils se sont développés au cours de cette dernière décennie. En suivant cette évolution,
on pourra identifier les éléments communs à ces systèmes et comprendre leur développement.
Comme les systèmes d’exploitation dépendent étroitement de l’architecture des
ordinateurs sur lesquels ils fonctionnent, on passera en revue les générations
d’ordinateurs pour en examiner les différents systèmes d’exploitation.
I.2.1 Première génération (1945-1955)
Les machines de cette génération étaient construites au moyen de tubes électroniques
A cette époque, un seul groupe de personne concevait, construisait, programmait, utilisait et
effectuait la maintenance de le machine. La programmation se faisait intégralement en langage
machine. Les systèmes d’exploitation étaient inconnus.
Chaque utilisateur se réservait l’usage de la machine pour un temps fini et disposait de toutes
ses ressources de la machine. A l’aide d’un pupitre, il communique son programme écrit en
binaire et lance son exécution.

5
Systèmes d’exploitation M. Mokaddem

 Inconvénients : matériel trop cher, perte de temps, risque d’erreur et de panne


Au début des années 50, il y eut l’introduction de cartes perforées et la naissance de quelques
logiciels de base qui furent les outils de développements de programmes (assembleurs,
compilateurs, aide à la mise au point) et des sous programmes d’E/S. Ce modèle s’appelle la
porte ouverte open Shop

 Inconvénients : peu économique par rapport au prix du matériel, mauvaise gestion du


matériel.
I.2.2 Deuxième génération (1955-1965)
La naissance des transistors améliorait la situation où les ordinateurs devinrent suffisamment
fiables pour être construits et vendus.
Pour lancer un job, le programmeur écrit et tape son programme sur cartes perforées et les
remet à l’opérateur qui prépare le compilateur en question, lance l’exécution et remet les
résultats de l’imprimante au programmeur qui corrige son programme et ainsi de suite. La
majeure partie du temps de l’ordinateur est perdue au cours des déplacements de l’opérateur.
On adopta, alors, le traitement par lots Batch Processing qui consiste à rassembler un
ensemble de travaux et préparer leur exécution, d’où la naissance des moniteurs
d’enchaînement qui consistaient à automatiser le passage d’un programme à un autre.
La fonction principale d’un tel système est la gestion des ressources. L’automatisation des
travaux implique une nécessité de protection de l’ensemble des travaux contre les risques de
perturbation en cas d’erreur.
 Limitation du temps d’occupation du processeur d’où la naissance de l’horloge pour éviter
les boucles infinies.
 Supervision des E/S d’où la naissance de routines standards appelées par les langages
évolués.
 Protection de la zone mémoire contenant le moniteur d’où la naissance de la protection
hardware.
Inconvénients : Les E/S étaient gérées par le CPU d’où la faiblesse du rendement.
La solution est la naissance du parallélisme entre le traitement et les E/S. Une première
solution consiste à utiliser deux ordinateurs séparés, un pour le traitement et l’autre pour les
E/S (IBM 1401 pour les E/S et IBM 7094 pour le traitement).
 Inconvénients : déplacement des bandes coûteux en temps.
La solution est l’intégration des canaux d’E/S. Un canal ou unité d’échange est un processeur
capable d’exécuter des E/S de manière autonome, indépendamment du processeur central qui
exécute le traitement proprement dit.

 Inconvénients : Le CPU et les canaux accèdent à des informations communes en


mémoire centrale, et les vitesses relatives du traitement et du transfert devient un
facteur important. Le débit du périphérique est très faible par rapport à la capacité de
traitement.

6
Systèmes d’exploitation M. Mokaddem

Conséquence :
 On doit lire plusieurs travaux avant le traitement.
 On doit conserver un grand nombre de résultats à imprimer.
En voulant faire du transfert simultané, on a crée une accumulation d’information sous forme
de buffers d’E/S en MC.
La solution est de transporter les buffers en mémoire secondaire à grande capacité telle que
le débit de transfert soit un peu plus élevé que les périphériques lents. Ces transferts sont
généralement commandés par un canal.
Cette forme de traitement est appelée SPOOLING fig. I.3. Ce nom est acronyme pour
Simultaneous Peripheral Operation On Line. Le Spooling utilise essentiellement le disque
comme un buffer très grand pour lire sur les dispositifs d’entrée et mémoriser les fichiers de
sortie jusqu’à ce que les dispositifs de sortie puissent les accepter.

CPU

LECTEUR PRINTER

MC

DISQUE
Fig.1.3 Spooling
Inconvénients :
a- Lorsque le job en cours lit des données nécessaires à la suite de son exécution, le
processeur arrête et reste inactif pendant la durée de l’E/S.
b- Un travail bref arrivant pendant l’exécution d’un travail lent attend la fin de celui-ci.
La solution est qu’il faut songer à un système où :
a- Un job en attente d’exécution peut utiliser le CPU libéré par un job en attente
d’E/S.
b- Le CPU peut changer de programme avant la fin d’un programme en cours pour
satisfaire au temps de réponse.

7
Systèmes d’exploitation M. Mokaddem

Dans ces deux cas, le temps de réaffectation du CPU doit être bref par rapport au transfert de
la mémoire secondaire vers la mémoire centrale.
Donc il est nécessaire que plusieurs programmes coexistent en mémoire centrale.
I.2.3 Troisième génération (1965-1980)
Cette génération est caractérisée par la naissance des circuits intégrés et la
multiprogrammation. Des mémoires rapides et de grande capacité ont vu le jour et ont permis
de penser au partage de celles-ci entre plusieurs utilisateurs en même temps.
On dit qu’il y a multiprogrammation lorsque plusieurs programmes coexistent en mémoire et que
le déroulement de l’un peut être interrompu au profit d’un autre avec reprise ultérieure du
programme interrompu.
La solution qui en a résulté consiste à partitionner la mémoire. Chaque partition contient une
tâche différente. Lorsqu’une tâche attend la fin d’une E/S, une autre tâche peut utiliser le CPU.
 Inconvénients :
Complexité du système : partage de la mémoire et protection des programmes entre eux en
mémoires centrale et secondaire.
a- Partage des ressources : équilibre de la charge du CPU, mémoire centrale et des
organes d’E/S.
b- Protection mémoire et réentrance.
La solution est donc la naissance du temps partagé. Le premier système à temps partagé est le
TCSS qui fut suivi après son succès par des travaux communs au MIT, les laboratoires Bells et
la General Electric pour donner naissance à MULTICS ( MULTiplexed Information and
Computing Service). Multics ne réussissait pas, mais de nombreuses idées furent introduites
dans la littérature informatique.
Cette génération est aussi caractérisée par le développement des mini-ordinateurs de la série
PDP 11 de la DEC où Ken Thompson travaillant déjà sur Multics, Brian Kernighan et Dennie
Ritchie améliorèrent une nouvelle de
Multics qu’ils baptisèrent UNIX (UNiplexed Information and computing service).
I.2.3.1 Principes du temps partagé
Allouer à chaque utilisateur une portion quanta de temps lui permettant de disposer de toutes
les ressources dont il a besoin. Ces tranches de temps sont de quelques millisecondes (ms).
A l’expiration du quantum de temps le programme est sauvegardé sur mémoire secondaire
s’il n’est pas complètement exécuté.
C’est un programme d’ordonnancement (Scheduling) particulier aux moniteurs d’emploi
partagé qui détermine l’utilisateur qui prend la machine ainsi que le quantum alloué.

8
Systèmes d’exploitation M. Mokaddem

 Avantages :
 Possibilités d’interaction directe d’un usager avec ses programmes (meilleure mise au point).
 Existence de langages spéciaux adaptés au mode interactif
 Naissance de langage de commande.
Les systèmes à temps partagés se distinguent par trois catégories
1. Mode Swapping
Le système travaille en temps partagé avec un programme en mémoire centrale seulement.
Le système se charge de partager les ressources entre les processus par des swapping de
processus. L’ensemble des processus est sur disque avec un seul processus uniquement en
mémoire. Dés qu’un processus est élu, le système le charge en mémoire en vidant le
précédent et lui attribue toutes les ressources nécessaires.
2. Multiprogrammation
Plusieurs processus sont en même temps en mémoire. Le système se charge de partager les
ressources entre ces processus.
3. Mixte
On affecte à chaque utilisateur un espace mémoire, si son programme, pendant son
exécution, a besoin de données ou fait appel à d’autres procédures (sous-programmes), le
système exécute des swappings à l’intérieur de son espace. Plusieurs programmes sont en
mémoire. A un certain état, le système se charge de vider, par swapping, certains programmes
pour les remplacer par d’autres par des critères de choix préalablement prédéfinis.
Cette génération fut aussi caractérisée par le développement des systèmes temps réel qui
sont une forme de systèmes d’exploitation spécialisés. Ils consistent à conduire des processus
industriels par un ordinateur. L’ordinateur fait lui-même des prélèvements de données dont il a
besoin (température, pression, etc.…) et agit directement sur les organes du processus
industriel. Les mesures sont enregistrées périodiquement, affichées sur un tableau de bord et
stockées pour des statistiques d’exploitation. L’ordinateur veille que les mesures prises soient
normales et ne dépassent pas un certain seuil. Sinon, il provoque l’arrêt du processus industriel.
Comme les pannes ou les défaillances sont aléatoires, le système doit rester en garde pour
éviter tout accident. On dit qu’il travaille en temps réel.
I.2.4. Quatrième génération (1980 – 1990)
Cette génération est caractérisée par les ordinateurs personnels, les réseaux et les systèmes
répartis.
I.2.4.1 Ordinateurs Personnels
L’électronique LSI (Large Scale Integration) et VLSI a permis la production d’une large
gamme de PC qui ne sont pas sensiblement différents de la PDP-11, mais encore moins chers.
Ces machines nécessitent des systèmes assez simples. Les dispositifs d’E/S ont radicalement
changé. Les pupitres et les lecteurs de cartes ont été remplacés par le clavier et la souris. Les
imprimantes ligne par ligne ont succombé aux écrans et aux petites imprimantes bon marché.

9
Systèmes d’exploitation M. Mokaddem

Les PCs sont apparus dans les années 1970 et comme leurs CPUs manquaient encore de
caractéristiques nécessaires pour la protection, leurs systèmes d’exploitation n’étaient ni multi-
utilisateurs ni multi-tâches. Et depuis, ces systèmes ont opté pour la commodité et la rapidité
d’où la naissance de CPM, MSDOS, OS/2, Xenix qui sont simples d’utilisation et ont
commencé à intégrer beaucoup de concepts d’Unix. Microsoft a étendu MSDOS pour inclure
un système de fenêtrage et IBM a intégré le multitâche et le système de fenêtrage a OS/2.
Ainsi, la baisse des prix de ces matériels augmentera notre besoin de comprendre les concepts
des systèmes d’exploitation qui commencent à envahir ces machines.
En même temps que les caractéristiques des grands systèmes d ‘exploitation étaient réduites
pour s’adapter aux PCs, on a développé également du matériel plus puissant, plus rapide et plus
sophistiqué. Les stations de travail comme les stations Sun, Appolo d’HP ou la RS/6000
d’IBM sont des résultats d’un tel effort. Actuellement, beaucoup d’universités et de sociétés
préfèrent utiliser un grand nombre de stations connectées en réseaux locaux. La ligne qui sépare
la station du PC tend à s’effacer dans l’avenir.
I.2.4.2 Les systèmes distribués
De tels systèmes possèdent plus d’un processeur en étroite communication partageant le bus
de l’ordinateur, l’horloge et quelquefois la mémoire et les périphériques. Il existe plusieurs
raisons pour créer de tels systèmes. En augmentant le nombre de processeurs, on espère
améliorer la capacité de traitement, c’est à dire, effectuer plus de travail en moins de temps. Un
autre avantage aussi considérable est la fiabilité. Si l’on peut distribuer correctement les
fonctions parmi les différents processeurs, une panne d’un processeur n’arrêtera pas le système
mais peut être le ralentira seulement. Les autres processeurs auront à effectuer les tâches du
processeur en panne jusqu’à son rétablissement. Ce mode de fonctionnement s’appelle le mode
dégradé.
Les systèmes multiprocesseurs actuels les plus courants utilisent le modèle de traitement
symétrique où chaque processeur exécute une copie du système d’exploitation. Au besoin, ces
copies communiquent entre elles. D’autres utilisent le traitement asymétrique où à chaque
processeur est assignée une tâche spécifique. Un processeur maître contrôle le système, les
autres attendent que le maître donnent des instructions. Le processeur maître alloue par
scheduling du travail aux processeurs esclaves. Dans de tels systèmes, les utilisateurs n’ont pas à
connaître où se trouvent leurs fichiers ou leurs programmes. Les systèmes distribués permettent
l’exécution simultanée et distribuée de plusieurs programmes sur plusieurs processeurs. Le
scheduling est complexe et doit optimiser le parallélisme. Il doit également se dérouler en cas
d’informations incomplètes ou fausses à cause des délais de communication.
I.2.4.3 les systèmes répartis
Les processeurs ne partagent pas de mémoire ni d’horloge. Au lieu de cela, chaque processeur
possède sa propre mémoire locale. Les processeurs communiquent à travers diverses lignes de
communication.
Dans un système réparti, les processeurs peuvent varier en taille et en fonction. Ils peuvent
inclure des PCs, des stations, des mini-ordinateurs et de grands systèmes à usage général. Ces
processeurs portent différentes appellations sites, nœuds, ordinateurs, etc. Dans un tel système,
les utilisateurs connaissent l’existence des différents sites, peuvent se connecter sur une

10
Systèmes d’exploitation M. Mokaddem

machine distante et transférer des fichiers d’une machine à une autre. Chaque ordinateur
fonctionne avec son propre système et au compte d’un utilisateur particulier.
Les raisons pour construire des systèmes répartis sont le partage des ressources, l’accélération
du calcul, la fiabilité et la communication.

I.3 STRUCTURES D’UN SYSTEME D’EXPLOITATION


Un système doit être conçu soigneusement pour fonctionner correctement et être modifié
facilement. Il est très intéressant, pour compléter l’étude des systèmes d’exploitation, d’étudier
comment les différents composants d’un système sont interconnectés et fondus dans un seul
noyau.
I.3.1 Système monolithique
Le système est, dans ce cas, un ensemble de procédures pouvant s’appeler entre elles. Chaque
procédure doit avoir une interface bien définie. Le système est considéré comme une seule
pièce, lorsqu’il prend le contrôle il masque toutes les caractéristiques matérielles en particulier
les interruptions.
Cette structure est relativement simple à concevoir et à implémenter. L’inconvénient est que
n’importe quelle interruption qui invoque le système, immédiatement masque toutes les autres.
Ceci tend à dégrader le temps de réponse, spécialement quand il y a plusieurs processus.

PPrrooggrraam
mmmeess dd’’aapppplliiccaattiioonn

PPrrooggrraam
mmmeess ssyyssttèèm
meess rrééssiiddeennttss

D
Drriivveerrss M
MSSD
DOOSS

D
Drriivveerrss B
BIIO
OSS

Fig.I.4 structure de MSDOS


De tels systèmes ont fréquemment commencé comme des systèmes petits, simples et limités
pour passer ensuite, au-delà de leur portée originale. MSDOS en est un exemple écrit pour
fournir le plus de fonctionnalité possible dans le moindre espace, à cause du matériel sur lequel
il allait tourner. Il n’a donc pas été soigneusement divisé en modules. La fig. I.4 montre sa
structure courante. Même s’il possède une structure quelconque, ses interfaces et ses niveaux de
fonctionnalités ne sont pas bien séparés. Les programmes d’application sont capables d’accéder
aux routines D’E/S de base (BIOS) afin d’écrire directement sur l’écran ou sur l’unité de disque
par exemple. Un tel risque rend MSDOS vulnérable devant les programmes erronés, ce qui se
caractérise par des blocages complets assez souvent du système.

11
Systèmes d’exploitation M. Mokaddem

Les premiers systèmes Unix sont également un second exemple de structure limitée. Il est
constitué de deux parties : le noyau et les programmes systèmes. Le noyau est composé d’une
série d’interface et de drivers qui ont été ajoutés et améliorés au fil du temps et au fur et à
mesure de l’évolution d’Unix. Le système est présenté à la fig. I.5. Le noyau est constitué par
tout ce qui se trouve en dessous de l’interface d’appels système et au-dessus du matériel. Le
noyau fournit le scheduling du CPU, la gestion de la mémoire, le système de fichiers, et d’autres
fonctions grâce aux appels système.

LLeess uuttiilliissaatteeuurrss

SShheelllss eett ccoommm maannddeess


CCoommppiillaatteeuurrss eett iinntteerrpprréétteeuurrss
BBiibblliiootthhèèqquueess dduu ssyyssttèèm mee

Signaux Système de fichiers Scheduling du CPU


Gestion des terminaux swapping Remplacement de pages
E/S caractéres E/S blocs Page à la demande
Drivers de terminaux Drivers de disques et bandes mémoire virtuelle

CCoonnttrrôôlleeuurrss ddee tteerrm


miinnaauuxx CCoonnttrrôôlleeuurrss ddee CCoonnttrrôôlleeuurrss ddee m
méém mooiirree
TTeerrm miinnaauuxx ppéérriipphhéérriiqquueess MMéém mooiirree pphhyyssiiqquuee
D i sq u e s e
Disques et bandest b a n d e s
Fig.I.5 structure d’Unix
I.3.1.1 Principes
Le programme utilisateur pour invoquer un service système doit placer les paramètres d’appels
dans les registres du processeur ou dans la pile et lance un appel superviseur fig.I.6. Cet appel
transfert le contrôle au système et change le mode d’exécution en mode noyau. 1

Le système analyse les paramètres et sélectionne le service demandé dans une table. 2
Le système identifie et exécute la primitive. 3
Le contrôle est donné au programme utilisateur provoquant l’appel 4

I.3.2 système en couches


La modularisation d’un système peut se faire de plusieurs façons, la plus intéressante est
l’approche en couches déjà détaillée précédemment. Une couche est une implémentation d’un
objet abstrait qui est l’encapsulation de données et d’opérations pouvant manipuler ces
données. Chaque couche représente une machine virtuelle cachant tous les détails de la machine
de niveau inférieur. Dans l’approche en couches, on dit également noyau, le système est réparti
en un noyau et un nombre de processus système s’exécutant simultanément.

12
Systèmes d’exploitation M. Mokaddem

PPrrooggrraam
mmmee uuttiilliissaatteeuurr nn

..
..
..

PPrrooggrraam
mmmee uuttiilliissaatteeuurr 11

4
1

T
Taabbllee ddeess
pprriim
miittiivveess
ssyyssttèèm
mee 3
2

Exécution

Fig.I.6 Exécution d’appels système dans un système monolithique


Le principal avantage de la structure en couches est la modularité. Les couches sont
sélectionnées de telle sorte que chacune utilise seulement les fonctions et services des couches
inférieures. Cette approche, tel qu’explicité précédemment, simplifie la mise au point du
système.
Cette approche a été utilisée pour la première fois dans le système THE (Technische
Hogeschool des Eindoven). THE a été défini en six couches fig.I.7. La difficulté majeure de la
structure en couches consiste à définir les diverses couches de façon adéquate. Une soigneuse
planification est nécessaire. Il existe un autre problème : pour exécuter une opération d’E/S, un
programme utilisateur doit exécuter un appel système à la couche gestion des E/S qui appelle,
elle-même, la couche gestion de la mémoire puis la couche scheduling du CPU et enfin le
matériel. Dans chaque couche, les paramètres d’appel sont sujets de changement. Chaque
couche ajoute une surcharge à l’appel, ce qui rend l’appel plus lent que dans un système qui
n’est pas en couches. Ces limitations ont provoqué, ces dernières années, une hésitation quant à
l’usage de cette structure. Il serait préférable de concevoir moins de couches avec plus de
fonctionnalités et d’opter pour tous les avantages de la modularité en évitant pour autant tous
les problèmes liés à l’interaction des couches.
OS/2, descendant direct de MSDOS, a été conçu pour surmonter les limites de ce dernier.
Pour cela le système a été implémenté en couches fig.I.8.

13
Systèmes d’exploitation M. Mokaddem

C
Coouucchhee 55 PPrrooggrraammm meess uuttiilliissaatteeuurr
C
Coouucchhee 44 G
Geessttiioonn ddeess EE//SS
C
Coouucchhee 33 CCoommm muunniiccaattiioonn ooppéérraatteeuurr -- pprroocceessssuuss
C
Coouucchhee 22 GGeessttiioonn ddee llaa m
méém mooiirree
C
Coouucchhee 11 SScchheedduulliinngg dduu C CPPU U eett m muullttiipprrooggrraammm maattiioonn
C
Coouucchhee 00 M
Maacchhiinnee
Fig. I.7 Structure en couches du système THE

aapppplliiccaattiioonn aapppplliiccaattiioonn aapppplliiccaattiioonn

IInntteerrffaaccee ddee pprrooggrraam


mmmaattiioonn dd’’aapppplliiccaattiioonn EExxtteennssiioonn A
APPII

SSoouuss ssyyssttèèm
mee SSoouuss ssyyssttèèm
mee SSoouuss ssyyssttèèm
mee

Noyau du système
 G Geessttiioonn mméém mooiirree
 D Diissppaattcchhiinngg ddee ttââcchheess
 GGeessttiioonn ddeess ppéérriipphhéérriiqquueess

Device Driver Device Driver Device Driver

Fig.I.8 structure du système OS/2

aapppplliiccaattiioonn aapppplliiccaattiioonn aapppplliiccaattiioonn


User Mode
Kernel Mode

SSyysstteem
m SSeerrvviicceess

FFiillee SSyysstteem
m

M
Meem
moorryy aanndd II//O
ODDeevviiccee M
Maannaaggeem
meenntt

PPrroocceessssoorr SScchheedduulliinngg

H
HAAR
RDDW
WAAR
REE

Fig.I.9 Principes d’une structure en couches


14
Systèmes d’exploitation M. Mokaddem

I.3.2.1 Principes
Dans le cas du système THE, le noyau répond aux interruptions par traitement direct de ces
dernières. Les interruptions sont autorisées durant le traitement d’une requête antécédente.
La première couche gère le processeur et la synchronisation de l’ensemble des processus via le
système d’interruption (multiprogrammation). La deuxième couche se charge de gérer la
mémoire entre les différents processus, elle alloue l’espace nécessaire aux processus. Chaque
processus dispose d’un espace sur disque et d’un espace en mémoire. La couche trois est
chargée d’associer à chaque processus un terminal. La couche quatre gère les E/S par l’usage de
buffers. Les processus écrivent et lisent les buffers que cette couche est chargée de
communiquer aux périphériques. La couche cinq regroupe les processus utilisateurs. La fig.I.9
est un autre exemple du principe de système en couches. MULTICS est une généralisation de
cette approche.
I.3.3 Machines virtuelles
Conceptuellement, un système est composé de couches. Le matériel constitue toujours la
première couche. L’approche en couches a abouti à sa conclusion logique dans le concept de
machines virtuelles. La fig.I.10 montre une telle structure. Le noyau se charge de la
multiprogrammation et fournit plusieurs machines virtuelles. Ces machines sont des modèles
logiques de la machine réelle. Chaque machine virtuelle exécute n’importe quel système
d’exploitation. Il serait préférable d’utiliser des systèmes mono-utilisateurs tels que MSDOS.
IBM, le pionnier de ce domaine, appelle ces machines des CMS (Conversational Monitor
System). Java : les programmes compilés en Java tournent sur une machine virtuelle (JVM).
Le concept de machines virtuelles possède plusieurs avantages. Les diverses ressources du
système sont totalement protégées. Chaque machine virtuelle est entièrement isolée des autres,
il n’existe pas de problème de sécurité. Il n’y a aucun partage direct des ressources. Il est
possible de définir un réseau de machines virtuelles communiquant entre elles.
I.3.3.1 Principes
Lors d’un appel système, ce dernier se trouve au niveau de sa machine virtuelle (CMS). La
machine virtuelle essaie de répondre à l’appel par l’exécution du service approprié en
demandant la machine réelle au noyau. Le noyau réalise un scheduling de machines virtuelles
selon un algorithme approprié et alloue la machine réelle à la machine virtuelle qui exécute alors
l’appel et redonne la main à l’utilisateur. L’appel est traité selon de système exécuté le type par la
machine virtuelle.
I.3.4 Client/serveur
L’idée est de décomposer le système en un ensemble de processus clients et serveurs, chacun
des processus serveurs implémentant un ensemble de services, par exemple les services de
gestion de la mémoire, des processus ou du scheduling. Chaque serveur tourne en mode
utilisateur, exécutant une boucle qui vérifie toujours s’il y a des requêtes de services des clients.
Le client qui peut être un autre composant (serveur) du système d’exploitation ou une
application utilisateur exprime ses requêtes de services par envoi de messages aux serveurs. Un
noyau tournant en mode kernel gère (la communication) le transfert des messages entre les
différents éléments (clients et serveurs).

15
Systèmes d’exploitation M. Mokaddem

U
Usseerr 11 U
Usseerr 22 U
Usseerr 33 U
Usseerr 44

CCMMSS CCMMSS CCMMSS CCMMSS


M
Maacchhiinnee vviirrttuueellllee M
Maacchhiinnee vviirrttuueellllee M
Maacchhiinnee vviirrttuueellllee M
Maacchhiinnee vviirrttuueellllee
N o y a u
Noyau local l o c a l N o y a u
Noyau local lo c a l N o y a u
Noyau local l o c a l NNooyyaauu llooccaall

Noyau
M
Muullttiipprrooggrraam
mmmaattiioonn
G
Geessttiioonn ddeess m
meessssaaggeess

Matériel

Fig.I.10 machines virtuelles


Cette approche résulte en un système dont les composants sont petits, simples et autonomes.
Parce que chaque serveur est un processus, pour le noyau, s’il tombe en panne, le système ne
s’écroule pas. Ce processus peut être tué, crée et relancé pour remettre le système en équilibre,
sans pour autant corrompre le reste du système. De ce principe, chaque processus peut
s ‘exécuter sur un processeur distinct, ce qui rend le système adaptable à une structure
distribuée. Ce modèle se prête bien aux réseaux et systèmes répartis. La fig.I.11 est un modèle
idéal de système client/serveur dans lequel le noyau consiste en une implémentation d’une
gestion de communication par messages uniquement. Le noyau ne réalise qu’un simple effort, le
reste est reporté au reste du système c’est à dire aux serveurs. Le système MACH est un
exemple contemporain d’architecture client/serveur, implementant au niveau noyau le
scheduling des threads, la gestion des messages, la mémoire virtuelle et les drivers. Les APIs, le
système de fichiers et le réseau parmi d’autres font partie du reste du système.
PPPrororcocoececsesessssususu
rP sss
su PPPrororcocoececsesessssususu
rP sss
su SSSererevrvrevevueueu
eS rrr
ru SSSererevrvrevevueueu
eS rrr
ru SSSererevrvrevevueueu
eS rrr
ru SSSererevrvrevevueueu
eS rrr
ru
cclclciileleiinenen
tnt tt cclclciileleiinenen
tnt tt PPP rocessusu
rPr
or o
c o ecc e
s essss
u sss
su Mémoiriereree
MMMé méé mmo o
i r
oi FFFichiersrss
iF
c i h
icc hihe i r
ies
er TTT
eT e
r r
m
erminaa
e r mm i n iin
a n a
uu
u xxx
xu

NO
N OY
YAAU
U

MATERIEL

Fig.I.11 modèle client/serveur

16
Systèmes d’exploitation M. Mokaddem

I.3.4.1 Principes
Le principe est très simple. Les clients et les serveurs demandent des services par envoi de
messages. Tous les messages transitent par le noyau, ce qui peut conduire à un goulot
d’étranglement lors d’une intensification de communication. Le noyau identifie la destination,
note l’expéditeur et supervise le transfert. Si le message n’aboutit pas le noyau se charge de
résoudre le problème en régénérant le message à nouveau. Le noyau se base sur le système
d’interruption pour gérer la communication.
I.3.5 Modèle hybride
Ce modèle est une combinaison des modèles précédents. Il se base surtout sur le modèle à
couches et sur le modèle client/serveur. Le système se décompose généralement en une couche
d’abstraction du hardware ce qui constitue la machine virtuelle, d’un noyau et d’un exécutif. Le
noyau implémente les fonctions de bas niveau tout comme le noyau du modèle client/serveur.
Il comprend le scheduling des threads, la gestion des interruptions et la synchronisation
multiprocesseur. Il comprend également un ensemble de routines et d’objets de base
nécessaire à l’exécutif. La machine virtuelle (une DLL Dynamic Link Library ) protège le noyau
des spécificités hardware, elle manipule directement le hardware. L’exécutif est décomposé en
un ensemble de serveurs et de clients offrant la gestion de la mémoire virtuelle, la gestion des
processus, la gestion des E/S, la sécurité et bien d’autres choses.

POSIX OS/2 Win32 Security Win32


Subsystem Subsystem Subsystem Subsystem Client

SSyysstteem
mCCaallllss

Object Process Memory Security I/O


Manager Manager Manager Manager System

KERNEL
H
Haarrddw
waarree A
Abbssttrraaccttiioonn
LLaayyeerr

HARDWARE
Fig.I.12 Windows NT, un modèle hybride

17
Systèmes d’exploitation M. Mokaddem

La fig.I.12 présente le système windows NT, un exemple de modèle hybride tel que décrit par
ses concepteurs. Les composants du système windows NT sont :
 Object Manager : crée, manipule et détruit les objets de l’exécutif représentant les
ressources système.
 Security reference monitor : renforce la sécurité de la machine locale et surveille les
ressources système en protégeant dynamiquement les objets système.
 Process Manager : crée et termine les processus et les threads. Il suspend et reprend
l’exécution des threads assurant la gestion des processus.
 Local Procedure Call (LPC) : passe les messages entre clients et serveurs sur le
même site. C’est une forme flexible du RPC. Un standard de la communication
locale.
 Virtual Memory Manager : implémente la mémoire virtuelle, un schéma de gestion
de la mémoire offrant un espace pour chaque processus, suffisamment large pour
son exécution. Il assure la protection mémoire des processus et du système. Et
enfin gère le swapping entre le disque et la mémoire.
 Kernel : répond aux interruptions et assure le scheduling et la synchronisation des
threads sur une architecture multiprocesseur.
 I/O System : contient un ensemble de composants responsables des E/S.

 I/O manager : établit un mode des E/S indépendant des


périphériques et offre un modèle standard des E/S.
 File System : Ce module est considéré comme un driver de fichiers
qui convertit un fichier en des requêtes des E/S pour un
périphérique particulier.
 Devices Drivers : Ce sont des tâches qui manipulent directement le
Hardware.
 Hardware Abstraction Layer : présente le processeur virtuel et cache ainsi les
dépendances matérielles.
I.3.5.1 Principes
Après l’établissement de l’identité de l’utilisateur, le système de sécurité crée un processus,
l’attache à l’utilisateur et passe le processus au sous système WIN32 qui exécute son Program
Manager dans l’espace de ce processus. Ce sous système est très important car il remplit la
tâche de transit pour tous les autres sous systèmes. Il convertit les demandes de tâches des
utilisateurs en services système qu’il expédie au module System Services. Ces services sont
natifs du système. Le module System Services redirige ces requêtes vers les serveurs concernés.
Le VM Manager est concerné par les appels d’allocation et de désallocation de la mémoire. Le
Process Manager est concerné par la création et la destruction de processus etc. Ces appels sont
ensuite dirigés vers le Kernel qui exécute le service en mode noyau et retourne vers le serveur
concerné. Ici, on ne détaille pas le processus en entier, mais on soulève simplement les
principales caractéristiques. Les détails viendront lors de l’étude de chaque module
indépendamment.

18
Systèmes d’exploitation M. Mokaddem

I.3.6 Appels système


D’après les structures des systèmes précédentes les appels système peuvent être divisés en
plusieurs catégories selon les modules ou serveurs des couches inférieures. Grossièrement, ils
sont représentés en cinq catégories.

 Processus :
 Arrêter (end), stopper un processus (abort)
 Charger (load), exécuter un processus (execute)
 Créer (fork), terminer (exit)
 Obtenir (get, set process attib), définir des attributs
 Attendre un certain temps (wait time)
 Attendre, signaler des événements ( wait, signal )
 Allouer, libérer la mémoire (alloc, dealloc)

 Fichiers :

 créer, supprimer (create, delete)


 ouvrir, fermer (open, close)
 lire, écrire, repositionner (read, write, reposition)
 obtenir, définir des attributs (get ,set file attributes)

 I/O :
 demander, libérer des périphériques (request, release)
 obtenir, définir des attributs de périphériques (get, set)
 attacher, détacher attach, detach)

 information :

 date et heure (date, time)


 données système (get, set)
 processus, fichiers, périphériques (get,set)

 communication :

 créer, supprimer des connexions (open, close)


 envoyer, recevoir des messages (send receive)
 transférer des informations sur les états (get , set)
 attacher, détacher des périphériques à distance

19
Systèmes d’exploitation M. Mokaddem

En général, les processeurs ont deux modes de fonctionnement :

 Le mode superviseur (noyau, privilégié ou maître) : pour le système d'exploitation, où


toutes les instructions sont autorisées.

 Le mode utilisateur (esclave) : pour les programmes des utilisateurs et les utilitaires, où
certaines instructions ne sont pas permises.
Ces modes de fonctionnement assurent la protection du système d'exploitation contre les
intrusions et les erreurs. Ce n'est pas le cas des systèmes mono-utilisateur comme MS-DOS ou
MacOS qui ont un seul mode de fonctionnement : le mode utilisateur. Ils ne sont pas protégés
et donc peu fiables. Un appel système consiste en une interruption logicielle (instruction
TRAP) qui a pour rôle d'activer le système d'exploitation. Il a pour but : changer de mode
d'exécution pour passer du mode utilisateur au mode maître, récupérer les paramètres et vérifier
la validité de l'appel, de lancer l'exécution de la fonction demandée, de récupérer la (les)
valeur(s) de retour et de retourner au programme appelant avec retour au mode utilisateur.
I.1.3.6.1 Les processus
Un processus est un programme en cours d'exécution. Il est composé d'un programme
exécutable (code), un compteur ordinal (co), un ensemble de données, une pile d'exécution
et autres registres et informations nécessaires à l'exécution. Les appels systèmes permettent
notamment la création et l'arrêt des processus. Un processus peut créer un ou plusieurs
processus fils qui, à leur tour, peuvent créer des processus fils dans une structure arborescente.
Les processus peuvent se synchroniser et communiquer entre eux. Actuellement, on utilise de
plus en plus le concept de processus légers (on parlera des processus et des processus légers
dans le Chapitre III). Les processus légers sont un moyen de raffiner et de diviser le travail
normalement associé à un processus. Lorsqu'on lance une application, le processus qui est créé
par le système d'exploitation exécute les instructions du programme en mode utilisateur.
À certains moments, on fait des appels système qui requièrent l'exécution d'instructions (et
l'accès à des données) qui appartiennent au système d'exploitation. Pour ce faire, le même
processus passe alors au mode superviseur. Il est à noter qu'il s'agit bien du même processus,
même s'il exécute des instructions du système d'exploitation. On peut considérer que des
routines du système d'exploitation sont exécutées au nom du processsus en question. La figure
1.7 illustre ce principe. La figure 1.8 illustre de manière plus détaillée ce qui se produit
typiquement lors d'un appel système. Dans cet exemple, une application exécute fork(). Il s'agit
ici d'une fonction d'une librairie qui a été compilée avec l'application. Cette fonction prépare le
terrain pour exécuter le véritable appel système, c'est-à-dire une instruction assembleur TRAP
qui prend comme paramètre un pointeur dont la valeur est ici indiquée par SYS_FORK.
Essentiellement, cette instruction met d'abord le processeur en mode superviseur, puis cherche
dans une table (qui a été créé lors du chargement du système d'exploitation), à la position
indiquée par SYS_FORK, l'adresse de la routine qui doit être exécutée. Puis le compteur
ordinal se positionne à cette adresse et continue l'exécution du processus, cette fois-ci avec des
instructions qui appartiennent au système d'exploitation. Lorsque le service demandé est
terminé, on revient à l'application, tout en rétablissant le mode utilisateur.

20
Systèmes d’exploitation M. Mokaddem

Mode utilisateur Mode superviseur

Approche basée sur des appels système


Fig.I.13 Alternance de modes d'exécution d'un processus
Application
………….
fork() ;
…………. Sys_fork() {

fork() {
…………. ……..
//mise à jour des registres Return ;
Trap SYS_FORK }
Librairie ………………
} sys_fork()

NOYAU
Fig.I.14 . Étapes d'un appel système
I.1.3.6.2 Les fichiers
Un fichier est un ensemble de données enregistrées de façon à être lues et traitées par
ordinateur. Les fichiers peuvent être regroupés dans des répertoires. Un répertoire peut
contenir soit des fichiers, soit d'autres répertoires dans une structure arborescente. L'accès aux
fichiers se fait en spécifiant un chemin d'accès, c'est-à-dire la liste des répertoires à traverser
pour accéder au fichier. Un chemin d'accès est absolu si le point de départ est le répertoire
racine. Un chemin d'accès est relatif si le point de départ est le répertoire courant. Les appels
système permettent de créer les fichiers et les répertoires, ainsi que de les supprimer, de les
ouvrir, de les lire et de les modifier.

21
Systèmes d’exploitation M. Mokaddem

I.4.2 Présentation de l'installation


I.4.2.1 Étapes fondamentales de l'installation
Le plan de l'installation de Linux est simple :
 Récupérez les informations sur la configuration de votre matériel.
 Créez les disquettes d'installation.
 Si vous voulez disposer d'un système « dual-boot » (Linux et DOS ou Windows à la fois)
réarrangez (repartitionnez) votre disque pour faire de la place à Linux.
 Démarrez un mini-Linux d'installation à partir des disquettes afin d'accéder au CD-ROM.
 Préparez les systèmes de fichiers Linux. (si vous n'avez pas modifié la table des partitions
du disque, vous le ferez à cette étape.)
 Installez un Linux de base à partir du CD-ROM.
 Démarrez Linux à partir du CD-ROM.
 (Optionnel) Installez d'autres paquetages à partir du CD-ROM.
I.4.2.2 Parties fondamentales d'un kit d'installation
Voici les parties fondamentales d'une distribution installable :
Les fichiers README et FAQ. Ceux-ci se trouvent habituellement dans le répertoire racine de
votre CD-ROM et peuvent être lus dès que le disque a été monté sous Linux. (En fonction de
la façon dont le CD-ROM a été fait, ils peuvent même être visibles sous DOS/Windows.) Il est
souhaitable de lire ces fichiers dès que vous pourrez y accéder afin d'être tenu au courant des
changements et des mises à jour importantes.
Plusieurs images de « bootdisk » (souvent dans un sous-répertoire). L'une de celles-ci est le
fichier que vous copierez sur une disquette afin de créer la disquette de boot. Vous choisirez
une de ces images en fonction du type de matériel dont vous disposez sur votre système.
Le problème est que certains pilotes de matériel entrent bizarrement en conflit les uns avec les
autres et, au lieu d'essayer de déceler les problèmes de matériel sur votre système, il est plus
facile d'utiliser une disquette image de boot qui ne lancera que les pilotes nécessaires. (Ceci aura,
en plus, l'avantage de réduire votre noyau.)
Une image de « rootdisk » (ou peut-être deux). C'est un fichier que vous copierez sur une
disquette pour créer la, ou les, disquette(s) d'installation. De nos jours, la (les) disquette(s) « root
» est (sont) généralement indépendante(s) du matériel ; elle(s) suppose(nt) un écran couleur
EGA ou mieux.
Une disquette image de dépannage. C'est une disquette contenant un noyau de base et des
outils pour réparer les dégats au cas où quelque chose n'irait pas avec le noyau ou si le
démarrage se bloquait sur votre disque dur.
RAWRITE.EXE. C'est un programme MS-DOS permettant d'écrire le contenu d'un fichier
(comme l'image de boot ou de rootdisk) directement sur une disquette, sans se soucier du
formatage. Vous n'avez besoin de RAWRITE.EXE que si vous prévoyez de créer vos
disquettes « boot » et « root » à partir d'un système MS-DOS. Si vous avez accès à une
station de travail UNIX disposant d'un lecteur de disquettes, vous pouvez vous en servir pour

22
Systèmes d’exploitation M. Mokaddem

créer les disquettes en utilisant la commande « dd», ou un script fourni par le vendeur. Lisez la
page de man sur dd(1) et demandez de l'aide aux gourous UNIX de votre entourage.
Le CD-ROM lui-même. Le but de la disquette « boot » est de préparer votre machine au
chargement des disquettes « root » ou d'installation, qui ne sont elles-mêmes que des moyens
pour préparer votre disque dur et copier dessus des parties du CD-ROM.
I.4.3 L'installation en détail
I.4.3.1 Se préparer pour l'installation
Linux utilise les composants d'un PC plus efficacement que MS-DOS, Windows ou NT, et est
donc moins tolérant vis à vis des matériels mal configurés. Il y a un minimum de choses à faire
avant de commencer pour diminuer les risques d'être arrêté par ce genre de problèmes.
D'abord, récupérez toutes les documentations que vous possédez sur votre matériel -- carte
mère, carte vidéo, écran, modem, etc. -- et gardez-les à portée de main.
Puis, rassemblez les informations détaillées sur votre configuration matérielle. Une façon de
réaliser cela facilement, si vous disposez de MS-DOS 5.0 ou supérieur, est d'imprimer un
rapport en utilisant l'utilitaire de diagnostic « msd.exe » de Microsoft (vous pouvez ignorer les
parties concernant les programmes résidents, la carte mémoire, les chaînes d'environnement et
la version du système). Entre autres choses, ceci vous garantit une information complète et
correcte sur votre carte graphique et le type de votre souris, ce qui sera utile lors de la
configuration de X.
Enfin, vérifiez votre machine pour les problèmes de configuration avec du matériel reconnu qui
pourrait causer un bloquage irrécupérable pendant l'installation de Linux.
Un système DOS/Windows peut utiliser un (des) disque(s) dur(s) et un CD-ROM IDE même
si les jumpers maître/esclave ne sont pas correctement positionnés sur ces disques. Linux ne
fonctionne pas ainsi. En cas de doute, vérifiez vos jumpers maître/esclave !
Est-ce que l'un de vos périphériques ne possède ni jumper, ni mémoire de configuration non
volatile ? Si c'est le cas, vous pouvez avoir besoin d'une initialisation au démarrage via un
utilitaire MS-DOS pour démarrer, et il peut être difficilement accessible par Linux. Les CD-
ROMs, les cartes sons, les cartes Ethernet et les lecteurs de bande de bas de gamme peuvent
avoir ce problème. Vous pourrez peut-être contourner le problème au moyen de paramètres
donnés à l'invite du démarrage.
Certains systèmes d'exploitation permettent à une souris de type bus de partager une IRQ avec
d'autres dispositifs. Linux ne le permet pas ; en fait, ce genre de choses peut entraîner le
bloquage de votre machine.
Si possible, récupérez le numéro de téléphone d'un utilisateur Linux expérimenté que vous
pourrez appeler en cas d'urgence. Neuf fois sur dix vous n'en n'aurez pas besoin, mais c'est
rassurant de l'avoir.
Évaluez le temps nécessaire à l'installation. Il sera d'à peu près une heure sur un système vierge
ou converti en tout Linux, ou jusqu'à trois heures pour un système « dual-boot » (ceux-ci ont un
taux de mauvais démarrage et de plantage bien plus élevé).

23
Systèmes d’exploitation M. Mokaddem

I.4.3.2 Créer les disquettes de « boot » et de « root »


Votre CD-ROM Linux peut contenir des aides à l'installation qui vous guideront de façon
interactive pendant le processus de création des disquettes de « boot », de « root » et de
récupération. Ce peut être un programme d'installation MS-DOS (comme le programme
redhat.exe de Red Hat), un script Unix, ou les deux.
Si vous avez un tel programme et que vous pouvez l'utiliser, lisez le reste de cette section
seulement pour information. Lancez le programme pour réaliser l'installation -- ses auteurs
connaissent certainement mieux les spécificités de la distribution que moi, et vous éviterez de
nombreuses étapes manuelles sujettes aux erreurs.
Votre première étape sera de choisir une image de disquette de « boot » convenant à votre
matériel. Si vous devez le faire manuellement, vous consterez généralement que soit (a) les
images de « boot » sur votre CD-ROM portent un nom qui vous aidera à trouver celle qui
convient, soit (b) il y a un fichier index décrivant chaque image.
Puis, vous devrez créer des disquettes à partir de l'image « boot » que vous avez choisie, et à
partir des images « root » et « rescue ». C'est là que le programme MS-DOS RAWRITE.EXE
entre en jeu.
Ensuite, vous devrez avoir deux ou trois disquettes haute densité formatées MS-DOS. (Elles
doivent être du même type ; si le lecteur de disquettes sur lequel vous démarrez est un lecteur
3.5", vos disquettes doivent toutes être des disquettes haute densité de 3.5".) Vous utiliserez
RAWRITE.EXE pour copier les images de « boot » et de « root » sur les disquettes.
Appelez-le sans paramètre, de la façon suivante :
C:\> RAWRITE
Répondez aux questions concernant le nom du fichier à copier et la disquette de destination
(A:, par exemple). RAWRITE copiera le fichier, bloc par bloc, directement sur la disquette.
Utilisez aussi RAWRITE pour l'image de la disquette « root » (COLOR144, par exemple).
Quand c'est fait, vous avez deux disquettes : l'une est la disquette « boot », l'autre la disquette «
root ». Ces deux disquettes ne sont plus lisibles par MS-DOS (dans un certain sens, ce sont des
disquettes « formatées Linux »).
Vous pouvez utiliser les commandes dd(1) sur un système UNIX pour faire la même chose.
(Pour cela, vous aurez besoin d'une station de travail UNIX disposant d'un lecteur de
disquettes, bien sûr.) Par exemple, sur une station de travail Sun, avec un lecteur de disquette
piloté par /dev/rfd0, vous pouvez utiliser la commande :
$ dd if=bare of=/dev/rfd0 obs=18k
Sur certaines stations de travail (celles de Sun, par exemple), vous devrez fournir en paramètre
la bonne taille de bloc de sortie (le paramètre « obs ») ou la commande échouera. Si vous
rencontrez des problèmes, la page du manuel sur dd(1) peut s'avérer instructive.
Assurez-vous d'utiliser des disquettes neuves et sans erreur. Les disquettes ne doivent pas avoir
de blocs défectueux.

24
Systèmes d’exploitation M. Mokaddem

Vous n'avez pas besoin de faire tourner Linux ou MS-DOS pour installer Linux. Cependant,
cela facilite la création des disquettes de « boot » et de « root » à partir de votre CD-ROM. Si
vous n'avez pas de système d'exploitation installé sur votre machine, vous pouvez utiliser le
Linux ou le MS-DOS de quelqu'un d'autre juste pour créer les disquettes, et installer à partir de
là.
I.4.3.3 Repartitionner les disques DOS/Windows
Sur beaucoup de systèmes, le disque dur est déjà consacré à des partitions MS-DOS, OS/2, etc.
Vous devez modifier la taille de ces partitions pour faire de la place à Linux. Si vous comptez
avoir un système « dual boot », il vous est vivement conseillé de lire un, ou plusieurs, des mini-
HOWTOs qui décrivent certaines configurations « dual boot ». Même s'ils ne sont pas
directement applicables à votre système, ils vous aideront à comprendre tout ce qui est mis en
jeu.
REMARQUE : Certains Linux peuvent s'installer DANS un répertoire de votre partition MS-
DOS. (Ce qui n'est pas la même chose qu'installer Linux À PARTIR d'une partition MS-DOS).
Vous utiliserez alors le système de fichiers « UMSDOS » qui vous permet de traiter un
répertoire de votre partition MS-DOS comme un système de fichiers Linux. Vous n'aurez donc
pas besoin de repartitionner votre disque dur.
Je ne recommande cette méthode que dans le cas où votre disque a déjà quatre partitions (c'est
le maximum pour DOS) et qu'un repartionnement serait problématique (il ralentirait Linux à
cause du surcoût engendré par la traduction des noms de fichiers). Une autre raison d'utiliser
UMSDOS est que cela permet d'essayer Linux avant de repartitionner. Cependant, dans la
majeure partie des cas, vous devrez repartitionner votre disque comme cela est décrit ici. Si
vous avez l'intention d'utiliser UMSDOS, vous devrez vous débrouiller par vous-même -- ce
type d'installation n'est pas décrit ici. A partir de maintenant, nous considérons que vous
n'utilisez pas UMSDOS, et que vous devez repartitionner votre disque dur.
Une partition est simplement une section du disque dur, réservée pour un système d'exploitation
particulier. Si vous n'avez que MS-DOS installé, votre disque dur n'a probablement qu'une
seule partition qui lui est entièrement consacrée. Pour utiliser Linux, il faut repartitionner le
disque afin d'avoir une partition pour MS-DOS, et une (ou plusieurs) pour Linux.
Il y a trois types de partitions : primaire, étendue, et logique. Sans entrer dans les détails, les
partitions primaires correspondent aux quatre partitions principales de votre disque. Cependant,
si vous désirez avoir plus de quatre partitions par disque, vous devez créer une partition
étendue qui peut contenir plusieurs partitions logiques. On ne stocke pas les données
directement sur une partition étendue -- celle-ci ne sert qu'à contenir les partitions logiques. Les
données ne sont stockées que sur des partitions primaires ou logiques.
Autrement dit, la plupart des gens n'utilisent que des partitions primaires. Cependant, si vous
avez besoin de plus de quatre partitions sur un disque, vous devrez créer une partition étendue.
Les partitions logiques seront ensuite créées dans la partition étendue et vous aurez alors plus
de quatre partitions par disque.
Notez aussi que vous pouvez facilement installer Linux sur le second disque de votre machine
(D: sous MS-DOS). Il suffit de préciser le nom du périphérique approprié lors de la création
des partitions Linux. Ceci est décrit en détail plus loin.

25
Systèmes d’exploitation M. Mokaddem

Revenons au repartitionnement du disque. Le problème avec le changement de taille des


partitions est qu'il n'y a pas de moyen (facile) de le faire sans détruire les données stockées dans
ces partitions. Par conséquent, vous devrez effectuer une sauvegarde complète de votre système
avant de repartitionner. Pour changer la taille d'une partition, on détruit simplement la(les)
partition(s), et on les recrée avec des tailles inférieures.
REMARQUE: FIPS est un programme MS-DOS permettant de repartitionner un disque sans
détruire les données. Avec FIPS, un optimiseur disque (comme Norton Speed Disk), et un peu
de chance, vous devriez pouvoir changer la taille de vos partitions MS-DOS sans perdre les
données qui s'y trouvent. Il est quand même recommandé d'effectuer une sauvegarde totale
avant de tenter cette opération.
Si vous n'utilisez pas FIPS, la méthode classique pour modifier les partitions est d'utiliser le
programme FDISK. Par exemple, supposons que vous ayez un disque dur de 80 Mo
entièrement dédié à MS-DOS. Vous voulez le couper en deux -- 40 Mo pour MS-DOS et 40
Mo pour Linux. Pour ce faire, lancez FDISK sous MS-DOS, détruisez la partition MS-DOS de
80 Mo, et recréez une partition MS-DOS de 40 Mo à la place. Vous pouvez alors formater la
nouvelle partition et réinstaller vos programmes MS-DOS à partir des sauvegardes. 40 Mo sur
le disque sont inoccupés. Plus tard, vous créerez des partitions Linux sur cette portion inutilisée
du disque.
En résumé, pour modifier la taille de vos partitions MS-DOS avec FDISK, vous devez :
 Faire une sauvegarde complète de votre système.
 Créer une disquette système MS-DOS avec une commande comme :
FORMAT /S A:
 Copier les fichiers FDISK.EXE et FORMAT.COM sur cette disquette, ainsi que tous
les autres utilitaires dont vous pourriez avoir besoin. (Par exemple, ceux permettant de
restaurer la sauvegarde).
 Redémarrer votre ordinateur à partir de cette disquette.
 Lancer FDISK, en lui précisant éventuellement le disque à modifier (C: ou D:, par
exemple).
 Utiliser les options du menu de FDISK afin de détruire les partitions dont vous voulez
changer la taille. Cette opération détruira toutes les données de ces partitions..
 Utiliser les options du menu de FDISK pour recréer ces partitions avec des tailles
inférieures.
 Quitter FDISK et reformater les nouvelles partitions avec la commande FORMAT.
 Restaurez les fichiers originaux à partir de la sauvegarde.
Notez que le FDISK de MS-DOS vous permettra de créer un « disque DOS logique ». Un
disque DOS logique est simplement une partition logique sur votre disque dur. Vous pouvez
installer Linux sur une partition logique, mais ne la créez pas avec le programme FDISK de
MS-DOS. Ainsi, si vous utilisez actuellement un disque DOS logique, et que vous voulez
installer Linux à sa place, vous devez détruire le disque logique avec le FDISK de MS-DOS, et
(plus tard) créer une partition logique pour Linux à sa place.
Le mécanisme utilisé par OS/2 et d'autres systèmes d'exploitation est similaire. Lisez la
documentation de ces systèmes pour obtenir les détails.

26
Systèmes d’exploitation M. Mokaddem

I.4.3.4 Créer des partitions pour Linux


Après avoir repartitionné votre disque, vous devez créer des partitions pour Linux. Avant
d'expliquer comment faire, nous allons parler des partitions et des systèmes de fichiers sous
Linux.
Partitions :
Linux demande au moins une partition, pour le système de fichier racine qui contiendra le noyau
Linux. Vous pouvez vous représenter un système de fichiers comme une partition formatée pour
Linux. Les systèmes de fichiers servent à stocker les fichiers. Chaque système doit avoir au
moins un système de fichiers racine. Cependant, de nombreux utilisateurs préfèrent utiliser
plusieurs systèmes de fichiers -- un pour chaque partie importante de l'arborescence des
répertoires. Par exemple, vous pouvez créer un système de fichiers séparé pour y stocker tous
les fichiers se trouvant sous le répertoire /usr. (Notez que sur les systèmes UNIX, ce sont les «
/ » qui délimitent les répertoires et non les '\' comme sous MS-DOS). En ce cas, vous aurez un
système de fichiers racine et un système de fichiers /usr.
Chaque système de fichiers nécessite sa propre partition. Par conséquent, si vous utilisez les
systèmes de fichiers racine et /usr, vous devrez créer deux partitions Linux.
De plus, beaucoup d'utilisateurs créent une partition de swap, utilisée pour la mémoire virtuelle. Si
vous avez, disons, 4 Mo de mémoire installés sur votre machine, et une partition de swap de 10
Mo, pour Linux vous aurez 14 Mo de mémoire virtuelle.
Lorsqu'il utilise l'espace de swap, Linux déplace les pages mémoire inutilisées pour les mettre
sur le disque, ce qui permet d'exécuter plus d'applications en même temps sur votre système.
Cependant, ce déplacement est lent, et ne peut remplacer la mémoire physique réelle. Les
applications qui nécessitent beaucoup de mémoire (comme X-Window) utilisent souvent un
espace de swap lorsqu'elles n'ont pas assez de mémoire physique.
Presque tous les utilisateurs de Linux emploient une partition de swap. Si vous avez 4 Mo de
mémoire voire moins, une partition de swap est nécessaire pour installer Linux. De toutes
façons, il est fortement recommandé d'avoir une partition de swap, sauf si vous disposez de
beaucoup de RAM physique.
La taille de votre partition de swap dépend de vos besoins en mémoire virtuelle. On conseille
souvent d'avoir au moins 16 Mo de mémoire virtuelle : par conséquent, si vous avez 8 Mo de
RAM physique, vous créerez une partition de swap de 8 Mo. Notez que les partitions de swap
ne peuvent dépasser 128 Mo. Si vous avez besoin de plus de 128 Mo de swap, vous devrez
donc créer plusieurs partitions de swap, et vous pouvez en avoir jusqu'à 16 en tout.
Remarque : Il est possible, bien qu'un peu délicat, de partager les partitions de swap entre
Linux et Windows 95 sur un système « dual boot ». Pour les détails, consultez le Linux Swap
Space Mini-HOWTO.
Remarque #1 : Si vous avez un disque EIDE avec une partition dépassant 504 Mo, votre
BIOS peut ne pas vous permettre de démarrer un système Linux qui y serait installé. Par
conséquent, mettez votre partition racine sous ces 504 Mo. Il ne devrait pas y avoir de

27
Systèmes d’exploitation M. Mokaddem

problèmes avec les disques SCSI qui ont généralement leur propre BIOS disque. Pour les
détails techniques, consultez le Large Disk Mini-HOWTO.
Remarque #2 : Vous mélangez les disques IDE et SCSI ? Alors attention. Votre BIOS ne
vous permettra peut-être pas de démarrer directement à partir d'un disque SCSI.
Taille des partitions
A côté de vos partitions racine et de swap, vous créerez une ou plusieurs partitions pour y
mettre vos programmes et les répertoires d'accueil des utilisateurs.
Bien, qu'en théorie, vous puissiez tout faire marcher avec une seule grosse partition, presque
personne ne le fait. Disposer de plusieurs partitions a de nombreux avantages : souvent, cela
diminue le temps nécessaire aux vérifications des systèmes de fichiers qui sont effectuées au
démarrage ; les fichiers ne peuvent grandir au delà des frontières de partitions. En conséquence,
vous pouvez utiliser ces frontières de partition comme des protections contre les programmes
(comme les news Usenet) qui voudraient consommer d'énormes quantités de disque, afin de les
empêcher de surpeupler l'espace disque nécessaire à votre noyau et au reste de vos applications
; si jamais vous avez un problème sur votre disque, formater et récupérer une seule partition est
une opération moins pénible que d'avoir à tout refaire en partant de zéro.
Sur les disques actuels, une bonne configuration de base consiste en une petite partition racine
(moins de 80 Mo), une partition /usr moyenne (environ jusqu'à 300 Mo) pour contenir les
logiciels systèmes, et une partition /home occupant le reste de l'espace disque disponible pour les
répertoires utilisateurs.
Vous pouvez faire des choses plus élaborées. Par exemple, si vous savez que vous allez utiliser
les forums Usenet, vous pouvez leur attribuer une partition qui leur sera dédiée afin de
contrôler leur occupation disque maximale, ou créer une partition /var regroupant les fichiers
du courrier, des news, et les fichiers temporaires. Mais, à l'heure des disques de très grandes
capacités et très peu chers, ces complications semblent de moins en moins nécessaires pour les
premières installations Linux. Pour votre premier essai, surtout, restez simple.
I.4.3.5 Démarrer la disquette d'installation
La première étape consiste à lancer la disquette de boot que vous avez créée. Normalement,
tout devrait se passer sans problème ; le prompt de démarrage du noyau devrait se terminer
automatiquement après 10 secondes. Normalement, c'est ainsi que vous démarrerez à partir
d'un disque IDE.
En donnant certaines options à la suite du nom du noyau, vous pouvez préciser différents
paramètres matériels, comme l'IRQ et l'adresse de votre contrôleur SCSI, ou la géométrie du
disque, avant de lancer le noyau Linux. Ce sera peut-être nécessaire si Linux ne détecte pas
votre contrôleur SCSI ou la géométrie de votre disque, par exemple.
Notamment, de nombreux contrôleurs SCSI nécessitent de spécifier l'adresse du port et l'IRQ
au moment du démarrage. De même, les machines PS/1, ThinkPad, et ValuePoint d'IBM ne
mémorisent pas la géométrie des disques dans la CMOS, et vous devrez alors la spécifier au
démarrage. (Plus tard, vous saurez configurer votre système afin qu'il fournisse lui-même ces
paramètres.)

28
Systèmes d’exploitation M. Mokaddem

Faites attention aux messages qui s'affichent lors du démarrage du système. Ils énumèreront et
décriront le matériel que votre installation Linux a détecté. Notamment, si vous avez un
contrôleur SCSI, vous devriez voir une liste des hôtes SCSI détectés. Si vous voyez le message :
SCSI: 0 hosts
Cela veut dire que votre contrôleur SCSI n'a pas été reconnu, et que vous devez vous poser la
question de savoir comment informer le noyau de son emplacement.
Le système affichera aussi des informations sur les partitions et les périphériques détectés. Si
l'une de ces informations n'est pas correcte, ou manque, vous devrez provoquer une détection
du matériel. Si tout va bien et que votre matériel semble avoir été reconnu, vous pouvez passer
à la section suivante, « Utiliser la disquette root ». Pour forcer la détection de votre matériel,
vous devez entrer les paramètres corrects au prompt du démarrage en utilisant la syntaxe
suivante :
linux <paramètres...>
Un bon nombre de paramètres sont disponibles ; nous donnons ci-dessous la liste des plus
courants. Les disquettes de boot Linux récentes vous permettront, le plus souvent, de consulter
un écran d'aide décrivant ceux-ci avant de démarrer.
hd=cylindres,têtes,secteurs Précise la géométrie du disque dur. Nécessaire pour des machines
comme le PS/1, ValuePoint, et ThinkPad d'IBM. Par exemple, si votre disque dur a 683
cylindres, 16 têtes et 32 secteurs par piste, entrez :
linux hd=683,16,32
tmc8xx=memaddr,irq Précise l'adresse et l'IRQ pour les contrôleurs SCSI TMC-8xx de Future
Domain. Par exemple :
linux tmc8xx=0xca000,5
Notez que le préfixe 0x doit être utilisé pour les valeurs exprimées en hexadécimal. Ceci est vrai
pour toutes les options suivantes.
st0x=memaddr,irq Précise l'adresse et l'IRQ pour les contrôleurs STO2 de Seagate.
t128=memaddr,irq Précise l'adresse et l'IRQ pour les contrôleurs T128B de Trantor.
ncr5380=port,irq,dma Précise le port, l'IRQ, et le canal DMA pour les contôleurs NCR5380
génériques.
aha152x=port,irq,scsi_id,1 Précise le port, l'IRQ et l'identificateur SCSI pour les contrôleurs AIC-
6260. Ceci s'applique aux contrôleurs Adaptec 1510, 152x, et Soundblaster-SCSI.
Si vous avez des questions sur ces options de démarrage, lisez le SCSI HOWTO, disponible sur
tous les sites archives FTP Linux.
I.4.3.6 Utiliser la disquette root

29
Systèmes d’exploitation M. Mokaddem

Après le démarrage de la disquette de boot, vous serez invité à insérer la ou les disquettes root.
Ôtez la disquette de boot du lecteur, insérez la disquette root, puis tapez Entrée pour continuer.
Éventuellement, une deuxième disquette root vous sera demandée.

Ce qui se passe, en fait, c'est que la disquette boot fournit un mini-système d'exploitation qui
(parce que le disque dur n'est pas préparé) utilise une partie de la RAM comme un disque
virtuel (appelé, assez logiquement, un « ramdisk »).
Les disquettes root chargent sur le ramdisk un petit nombre de fichiers et d'outils d'installation
que vous utiliserez pour préparer votre disque dur et installer Linux dessus à partir de votre
CD-ROM.
Choisir une installation EGA ou X
Cette étape réalisée, les anciens Linux (dont la Slackware) lançaient un shell et vous
demandaient d'entrer manuellement les commandes d'installation dans un ordre déterminé.
Ceci est encore possible, mais les versions plus récentes démarrent en lançant un programme
d'installation fenêtré qui vous guide de façon interactive à travers ces étapes en vous fournissant
un maximum d'aide.
Vous aurez sûrement la possibilité de configurer X, ainsi le programme d'installation pourra
être graphique. Si vous choisissez cette façon de faire, le programme d'installation vous
questionnera sur votre souris et votre type d'écran avant de commencer l'installation
proprement dite. Lorsque l'installation de Linux aura été réalisée, cette configuration sera
sauvegardée. Vous pourrez affiner le fonctionnement de votre écran plus tard, par conséquent,
lors de cette étape, vous pouvez commencer avec un mode SVGA 640x480 de base.
X n'est pas nécessaire pour l'installation, mais (en supposant que l'on sache configurer la souris
et l'écran), beaucoup de gens trouvent l'interface graphique plus facile à utiliser. De toutes
façons, vous serez amenés à installer X, donc le faire dès le début est une chose plutôt sensée.
Suivez simplement les indications du programme. Elles vous guideront à travers les étapes
nécessaires à la préparation du disque, à la création des comptes utilisateurs et à l'installation des
paquetages à partir du CD-ROM.
Dans les sections suivantes, nous décrirons quelques parties épineuses de l'installation comme
si vous les réalisiez à la main. Ceci devrait vous aider à comprendre ce que fait le programme
d'installation, et pourquoi.
Utiliser fdisk et cfdisk
Votre première étape d'installation, une fois que la disquette root Linux a été lancée, sera de
créer ou d'éditer les tables de partitions de vos disques. Même si vous avez déjà utilisé FDISK
pour configurer vos partitions, vous devez revenir à la table des partitions et rajouter des
informations spécifiques à Linux. Pour créer ou éditer des partitions Linux, nous utiliserons la
version Linux du programme fdisk, ou sa version orientée écran cfdisk.
En général, le programme d'installation recherchera une table des partitions déjà existante et
proposera de lancer fdisk ou cfdisk sur elle pour vous. Des deux programmes, cfdisk est

30
Systèmes d’exploitation M. Mokaddem

vraiment le plus facile à utiliser, mais ses versions actuelles sont aussi moins tolérantes vis à vis
d'une table de partitions inexistante ou mal faite.
Par conséquent, vous pouvez (surtout si vous faites une installation sur du matériel vierge)
devoir commencer avec fdisk afin de vous placer dans une situation que cfdisk saura gérer.
Essayez de lancer cfdisk ; s'il y a des problèmes, lancez fdisk. (Une bonne façon de procéder, si
vous créez un système tout Linux et que cfdisk provoque des erreurs, est d'utiliser fdisk pour
détruire toutes les partitions existantes et de relancer cfdisk pour éditer la table vide.)
Quelques remarques sur fdisk et cfdisk : les deux programmes prennent en paramètre le nom
du disque sur lequel vous souhaitez créer les partitions Linux. Les noms des pilotes de disques
durs sont :
/dev/hda Premier disque IDE
/dev/hdb Second disque IDE
/dev/sda Premier disque SCSI
/dev/sdb Second disque SCSI
Par exemple, pour créer des partitions Linux sur le premier disque dur SCSI de votre système,
utilisez la commande (votre programme d'installation peut la générer à partir d'un choix du
menu) :
cfdisk /dev/sda
Si vous utilisez fdisk ou cfdisk sans paramètre, /dev/hda est pris par défaut.
Pour créer des partitions Linux sur le second disque de votre système, spécifiez simplement soit
/dev/hdb (pour un disque IDE), soit /dev/sdb (pour un disque SCSI) au moment de lancer fdisk.
Vos partitions Linux n'ont pas besoin d'être toutes sur le même disque. Par exemple, vous
pouvez créer la partition du système de fichier racine sur /dev/hda et votre partition de swap sur
/dev/hdb. Pour ce faire, lancez simplement fdisk ou cfdisk une seule fois pour chaque disque.
Sous Linux, les partitions ont un nom basé sur le disque auquel elles appartiennent. Par
exemple, la première partition du disque /dev/hda s'appelle /dev/hda1, la seconde /dev/hda2, et
ainsi de suite. Si vous avez des partitions logiques, elles sont numérotées en partant de
/dev/hda5, /dev/hda6 etc.
REMARQUE : Il est préférable de ne pas créer, ou détruire, des partitions d'autres systèmes
d'exploitation que Linux avec les programmes fdisk ou cfdisk de Linux. Autrement dit, ne créez
pas ou ne supprimez pas des partitions MS-DOS avec cette version de fdisk ; utilisez plutôt la
version MS-DOS de FDISK.
Voici un exemple d'utilisation de fdisk. Nous avons une unique partition MS-DOS occupant
61693 blocs sur le disque, le reste est disponible pour Linux. Sous Linux, un bloc fait 1024
octets, par conséquent 61693 blocs représentent à peu près 61 Mo.
Nous ne créerons que deux partitions dans cet exemple :
 une pour le swap
 une pour la racine.

31
Systèmes d’exploitation M. Mokaddem

Vous étendrez probablement cette configuration à quatre partitions en ligne selon les
recommandations suivantes : une pour le swap, une pour le système de fichiers racine, une pour
les logiciels systèmes et une pour la zone des répertoires des utilisateurs.
D'abord, nous utilisons la commande « p » pour afficher la table de partition courante. Comme
on peut le constater, /dev/hda1 (la première partition de /dev/hda) est une partition DOS de
61693 blocs.
Command (m for help): p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
Units = cylinders of 608 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M
Command (m for help):
Puis, nous utilisons la commande « n » pour créer une nouvelle partition. La partition racine
Linux aura une taille de 80 Mo.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
On nous donne alors le choix entre la création d'une partition étendue ou primaire. Dans la
plupart des cas, on utilisera des partitions primaires, à moins que l'on ait besoin de plus de
quatre partitions sur un même disque. Voir la section sur le repartitionnement, ci-dessous, pour
plus d'informations.
Partition number (1-4): 2
First cylinder (204-683): 204
Last cylinder or +size or +sizeM or +sizeK (204-683): +80M
Le premier cylindre doit être le premier cylindre libre APRÈS la fin de la partition précédente..
Dans notre cas, /dev/hda1 se termine sur le cylindre 203, nous démarrerons donc la nouvelle
partition au cylindre 204.
Comme on peut le constater, si l'on utilise la notation « +80M », celle-ci spécifie une partition
de 80 Mo. De même, la notation « +80K » spécifierait une partition de 80 Ko, et « +80 » une
partition qui ne ferait que 80 octets.
Warning: Linux cannot currently use 33090 sectors of this partition

32
Systèmes d’exploitation M. Mokaddem

Si vous voyez cet avertissement, vous pouvez l'ignorer. Il provient d'une ancienne restriction
qui limitait les systèmes de fichiers Linux à 64 Mo. Cependant, avec les nouveaux types de
systèmes de fichiers, ce n'est plus le cas...
Puis, nous créeons notre partition de swap de 10 Mo, /dev/hda3.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (474-683): 474
Last cylinder or +size or +sizeM or +sizeK (474-683): +10M
À nouveau, nous affichons le contenu de la table de partition. Assurez-vous de noter ces
informations, notamment la taille de chaque partition en blocs. Vous aurez besoin de celles-ci
plus tard.
Command (m for help): p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
Units = cylinders of 608 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M
/dev/hda2 204 204 473 82080 83 Linux native
/dev/hda3 474 474 507 10336 83 Linux native
Notez que la partition de swap Linux (ici, /dev/hda3) a le type « Linux native ». On doit changer
ce type en « Linux swap » afin que le programme d'installation la reconnaisse comme partition
de swap. Pour ce faire, on utilise la commande « t » de fdisk :
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 82
Si vous utilisez « L » pour obtenir la liste des types, vous verrez que 82 est le type qui
correspond au swap Linux.

33
Systèmes d’exploitation M. Mokaddem

Pour quitter fdisk et sauvegarder les changements dans la table de partition, on utilise la
commande « w ». Pour quitter fdisk SANS sauvegarder les changements, on utilise la
commande « q ».
Après avoir quitté fdisk, le système peut vous demander de relancer le système afin d'être sûr
que les modifications soient prises en compte. En général, on n'a pas besoin de redémarrer
après avoir utilisé fdisk -- les versions récentes de fdisk et cfdisk sont suffisamment évoluées
pour mettre à jour les partitions sans redémarrer.
Étapes suivantes
Après avoir édité les tables de partitions, le programme d'installation devrait les consulter et
vous proposer d'activer la partition de swap. Répondez oui.
Puis, le programme vous demandera d'associer des noms de systèmes de fichiers Linux (comme
/, /usr, /var, /tmp, /home, /home2, etc.) à chacune des partitions non swap que vous désirez
utiliser.
Il existe une seule règle pour cela. Il doit y avoir un système de fichiers racine, appelé /, et on
doit pouvoir démarrer dessus. Vous pouvez appeler vos autres partitions Linux comme vous
voulez, mais certaines conventions concernant leurs noms vous simplifieront probablement la
vie plus tard.
Plus haut, je recommandais une configuration basée sur trois partitions comprenant une petite
racine, une partition système moyenne et une grosse partition utilisateur. Traditionnellement,
elles doivent s'appeler /, /usr, et /home. Le nom peu intuitif « /usr » vient des temps où les
systèmes Unix (beaucoup plus petits) mélangaient les logiciels systèmes et les répertoires
utilisateurs sur une seule partition non racine. Le fonctionnement de certains logiciels dépend
de son existence.
Si vous avez plus d'une zone pour les répertoires des utilisateurs, la convention veut qu'on les
nomme /home, /home2, /home3, etc. Ceci peut arriver lorsque l'on a deux disques physiques. Sur
mon système, par exemple, la configuration est la suivante :
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/sda1 30719 22337 6796 77% /
/dev/sda3 595663 327608 237284 58% /usr
/dev/sda4 1371370 1174 1299336 0% /home
/dev/sdb1 1000949 643108 306130 68% /home2
En réalité, le second disque (sdb1) n'est pas entièrement dédié à /home2 ; les partitions de swap
sur sda et sdb ne sont pas montrées dans cette liste. Vous pouvez constater que /home est
l'importante zone libre sur sda et /home2 la zone utilisateurs sur sdb.
Si vous voulez créer une partition pour les fichiers spool, temporaires, de courriers, et des news,
appelez-la /var. Sinon, faites un /usr/var et créez un lien symbolique nommé /var pointant
dessus (le programme d'installation peut vous proposer de le faire).
I.4.3.7 Installer les paquetages

34
Systèmes d’exploitation M. Mokaddem

Lorsque vos partitions ont été préparées, le reste de l'installation est presque automatique.
Votre programme d'installation (qu'il soit EGA ou X) vous guidera à travers une série de
menus qui vous permettront de spécifier le CD-ROM à partir duquel vous installez, les
partitions à utiliser, etc.
Nous n'allons pas décrire ici la plupart des spécificités de cette étape de l'installation. C'est une
des parties qui varie le plus entre les distributions Linux (généralement, les distributeurs y
rivalisent entre eux pour valoriser leur produit), mais c'est aussi la plus simple. Les programmes
d'installation sont plutôt bien auto-documentés et avec de bons écrans d'aide.
I.4.3.8 Après l'installation des paquetages
Lorsque l'installation est finie, et que tout s'est bien passé, le programme d'installation vous
proposera plusieurs options pour configurer votre système avant son premier démarrage à
partir du disque dur.
LILO, le LInux Loader
LILO (qui signifie LInux LOader) est un programme vous permettant de lancer Linux (ainsi
que d'autres systèmes d'exploitation comme MS-DOS) à partir de votre disque dur.
On peut vous donner la possibilité d'installer LILO sur votre disque dur. A moins que vous
n'utilisiez OS/2, répondez « oui ». OS/2 a des besoins particuliers, voir Custom LILO
Configuration ci-dessous.
Installer LILO comme chargeur principal évite d'avoir besoin d'une disquette de démarrage ; au
lieu de cela, à chaque démarrage, vous pouvez indiquer à LILO quel système lancer.
Créer une disquette de démarrage (option)
Il est possible que l'on vous propose de créer une « disquette de démarrage standard », que vous
pourrez utiliser pour lancer votre système Linux nouvellement installé. (Il s'agit d'une ancienne
méthode, plutôt peu pratique, qui suppose que vous démarrez normalement sur DOS et que
vous utilisez une disquette de démarrage pour lancer Linux.)
Pour la créer, vous aurez besoin d'une disquette haute-densité, formatée MS-DOS et vierge.
Insérez celle-ci lorsqu'on vous le demande et la disquette de démarrage sera générée. (Ce n'est
pas la même chose qu'une disquette de démarrage d'installation, et vous ne pouvez remplacer
l'une par l'autre !)
Configurations système diverses
La procédure qui suit l'installation peut aussi vous conduire à travers différents menus vous
permettant de configurer votre système. Ceci comprend la spécification de votre modem et de
votre souris, ainsi que votre zone horaire. Laissez-vous guider par les options du menu. Elle
peut aussi vous demander de créer des comptes utilisateurs ou de donner un mot de passe pour
le compte root (administrateur). Ce n'est pas compliqué et vous n'avez qu'à suivre les
instructions affichées à l'écran.
I.4.3.9 Démarrer votre nouveau système

35
Systèmes d’exploitation M. Mokaddem

Si tout se passe comme prévu, vous devriez pouvoir démarrer Linux à partir du disque dur en
utilisant LILO. Sinon, vous devriez pouvoir lancer votre disquette de démarrage Linux (pas la
disquette de démarrage originale, mais celle créée après l'installation des paquetages). Après le
démarrage, loggez vous sous le login root. Bravo ! Vous avez votre système Linux personnel.
Si vous démarrez en utilisant LILO, essayez de presser les touches shift ou contrôle pendant le
démarrage. Ceci vous présentera une invite de démarrage ; pressez la touche tab pour avoir la
liste des options. De cette façon, vous pourrez lancer Linux, MS-DOS, ou n'importe quel
système directement à partir de LILO.

36
Systèmes d’exploitation M. Mokaddem

Exercices
1. Quels sont les objectifs principaux d’un système d’exploitation ?
2. Une méthode extrême de Spooling connue comme Staging, consiste à lire le contenu
d’une bande magnétique sur disque avant de l’utiliser. Exposez le principal avantage d’un
tel système ?
3. dans un système multiprogrammé et en temps partagé, plusieurs utilisateurs partagent le
système simultanément. Cette situation peut provoquer divers problèmes de sécurité :
a. quels sont ces deux problèmes ?
b. dans une machine en temps partagé, pouvez vous assurer le même degré de
sécurité que dans une machine dédiée ? expliquez ?
4. quelle est le principal avantage de la multiprogrammation ?
5. quelles sont les principales différences entre les systèmes pour les gros ordinateurs et les
ordinateurs personnels ?
6. Définissez les propriétés suivantes :
a. batch
b. interactif
c. temps partagé
d. temps réel
e. réparti
7. Nous avons insisté sur la nécessité pour un OS d’utiliser efficacement le matériel, quand
est-il intéressant que le système (OS) délaisse ce principe et gaspille des ressources ?
Pourquoi un tel système n’est-il pas un gaspilleur ?
8. Dans quelles circonstances serait-il mieux qu’un user utilise un système en temps partagé
plutôt qu’un PC ou une station de travail mono utilisateur ?.
9. Donner les différences entre multitraitement symétrique et asymétrique ? quels sont les
avantages et inconvénients des OS multiprocesseurs ?
10. pourquoi les systèmes répartis sont-ils souhaitables ?
11. Quelle est la principale difficulté à surmonter pour écrire un système temps réel?
Exercice 2 :
12. Quelles sont les cinq activités principales d’un système d’exploitation en ce qui
concerne la gestion de processus ?
13. Quelles sont les trois activités principales d’un système d’exploitation en ce qui
concerne la gestion de la mémoire ?
14. Quelles sont les trois activités principales d’un système d’exploitation en ce qui
concerne la gestion de la mémoire auxiliaire ?

37
Systèmes d’exploitation M. Mokaddem

15. Quelles sont les cinq activités principales d’un système d’exploitation en ce qui
concerne la gestion de fichiers?
16. Quel est l’objectif de l’interpréteur de commandes ? Pourquoi est-il habituellement
séparé du noyau ?
17. Enumérer les cinq services fournis par un système d’exploitation. Expliquer comment
chacun d’entre eux rend le système plus pratique pour les utilisateurs. Expliquer également
dans quels cas il serait impossible pour les programmes niveau utilisateur de fournir ces
services ;
18. Quel est l’objectif des appels système ?
19. Quel est l’objectif des programmes système ?
20. Quel est le principal avantage de l’approche en couches pour la conception des OS ?
21. Pour un concepteur d’OS, quel est le principal avantage de l’utilisation d’une
architecture de machine virtuelle ? Quel en est le principal avantage pour un utilisateur ?

22. Indiquez si les éléments logiciels suivants se situent parmi la catégorie des programmes
d'application, des programmes système, ou des programmes de systèmes d'exploitation.
(a) Le programme more
(b) L'éditeur de texte emacs
(c) La librairie de routines X-Window (Xlib)
(d) Un script de shell
(e) Le traitement de texte Ms-word
(f) La fonction read
2. L'ordinateur personnel compatible IBM fournit une interface aux périphériques en utilisant
des routines du BIOS (Basic Input and Output System) qui est stockée en mémoire morte
(ROM). Quel avantage cette interface fournit-elle aux développeurs d'applications pour la plate-
forme Intel 80x86 ?
3. Dans un environnement multiprogrammé, y-a-t-il partage des ressources entre les processus
d'un même utilisateur ? Expliquez.
4. Le degré de multiprogrammation représente le nombre maximal de processus qu'un système
monoprocesseur peut manipuler à tout moment. Expliquez quelques facteurs matériels et
logiciels qui pourraient avoir une certaine influence sur le degré de multiprogrammation d'un
système.
5. Décrivez le facteur principal qui sert de mesure du temps de réponse pour un système à
soumission de lots et pour un système en temps partagé.

38
Systèmes d’exploitation M. Mokaddem

6. Expliquez la différence fondamentale qui existe entre un système d'exploitation


multiprogrammé et un système d'exploitation réseau.
7. Une fenêtre (window) représente un certain niveau d'abstraction de l'écran car les
applications interagissent avec celle-ci et non pas directement à l'écran. Décrivez trois
prototypes de fonctions qu'une application pourrait utiliser pour interagir avec une fenêtre
d'écran.
8. Quelle différence existe-il entre un système temps réel et une application en temps réel ?
Donnez un exemple pour chaque cas.
9. Expliquez la raison principale de l'utilisation de deux modes (usager, système) d'opération
dans les systèmes d'exploitation modernes.
10. Quel est le rôle d'un système d'exploitation ? Les interpréteurs de commandes et les
compilateurs font-ils parties du système d'exploitation?
11. Qu'est ce qu'un système multiprogrammé ? Un système de traitement par lots ? Un système
en temps partagé ?
12. Dans le système Unix, les véritables appels système sont effectués à partir :
(a) D'un programme utilisateur.
(b) D'une commande shell.
(c) D'une procédure de la bibliothèque standard.
(d) Sont-ils exécutés en mode superviseur ou en mode utilisateur ?
13. Comment sont organisés les fichiers dans le système Unix ? Un utilisateur peut-il accéder à
un fichier d'un autre utilisateur ? Si oui, comment?
14. Est-ce qu'un Système d'Exploitation multitâche est nécessairement multiusager ? Et pour
l'inverse ? Expliquez.

39
Systèmes d’exploitation M. Mokaddem

Bibliographie
La bibliographie sur les systèmes d’exploitation est très abondante et elle se renouvelle très
rapidement. Elle comprend à la fois des revues de recherche, des ouvrages pédagogiques et des
ouvrages sur la programmation et l'utilisation d'un système particulier. La liste que nous
donnons concerne ne concerne pas la recherche et n’est absolument pas exhaustive. Par
ailleurs, cette recherche est largement passée des laboratoires universitaires à ceux de quelques
industriels : Microsoft et IBM notamment. Notre liste fournit seulement les références que
nous pensons être les plus utiles.
Littérature générale sur les systèmes d’exploitation
A. Tanenbaum, Modern Operating Systems, Prentice–Hall, 1992, est une référence générale très
pédagogique. Distributed Computer Systems, Prentice Hall, 1994, examine plus en détail les
systèmes répartis. Operating Systems, 2nd ed., Prentice-Hall, 1997, est une référence par le même
auteur qui comprend le code, très formateur, d’un système d’exploitation voisin d’Unix.
Cette édition ne comprend pas les systèmes répartis.
A. Silberschatz and P. Galvin, Operating System Concepts, 5th ed., Addison Wesley, 1997, est un
ouvrage plus conceptuel et plus théorique que le précédent. Il reste néanmoins très clair. Il
est traduit en français chez Addison-Welsey sous le titre Principes des systèmes d’exploitation mais
peut être pas l’édition la plus récente.
Sur les noyaux de systèmes d’exploitation commerciaux
M. Bach, La conception du système Unix, Masson, a longtemps été l’ouvrage de référence. Sa
rédaction est extrêmement lourde – à éviter après le dessert – et elle est doublée d’une
traduction maladroite. Cet ouvrage est cependant une mine de renseignements pour ceux qui
veulent connaître les algorithmes internes d’Unix en détail.
L’ouvrage qui précède a inspiré les firmes conceptrices d’autres systèmes. Ceci a donné lieu à
plusieurs ouvrages, en général plus clairs et mieux écrits que leur ancêtre :
 H.M Deitel et M.S. Kogan, La conception d’OS/2, Addison-Wesley, 1992.
 Helen Custer, Au cœur de Windows NT, Microsoft Press, 1993.
Sur la programmation des systèmes d’exploitation
Le man d’Unix est la meilleure référence pour le programmeur. Il n’y a rien d’équivalent sur
papier.
J.M. Rifflet, La programmation sous Unix, 3e éd., McGraw-Hill, 1993, est une bonne référence
et un ouvrage assez complet.
Charles Petzold, Programming Windows 95, Microsoft Press, 1996, est une bonne référence
pour apprendre la programmation Windows. Elle a été la première du genre. Actuellement, il
y a des dizaines d’ouvrages équivalents.
Microsoft, Microsoft Visual C++, Version 4, Microsoft Press, 1995, est la référence de
programmation de Microsoft. Cette encyclopédie est en 6 volumes comporte tous les appels
systèmes de Windows ainsi que les MFC. Elle est disponible sous forme électronique.

40
Systèmes d’exploitation M. Mokaddem

Apple Computer, Inside Macintosh Series, Addison-Wesley, 1992, 1993, 1994, est une série
traitant des caractéristiques du Macintosh. Elle détaille aussi bien les mécanismes internes
que les méthodes de programmation.
Sur l’utilisation du système Unix
R.S. Bourne, Le système Unix, InterEditions, est une référence antique, mais qui reste un
modèle de clarté. L’auteur est le concepteur du premier interprète de commande d’Unix. La
traduction comprend beaucoup de fautes, par exemple dans les listings de programmes.
B. Kernighan et R. Pike, L’environnement Unix, InterEditions, s’axe plutôt sur les outils
d’Unix. Il est plus difficile à lire que le précédent et il privilégie parfois la « bidouille » info-
maniaque.
J.L. Nebut, Unix pour l’utilisateur : Commandes et langages de commandes, Technip, 1990, est une
bonne référence sur les outils d’Unix.
Sur les langages C et C++
B. Kernighan et D. Ritchie, Le langage C, 2e édition, Masson, est la seule référence
intéressante pour ceux qui ont déjà des notions de programmation dans un autre langage.
Toute la programmation système se faisant actuellement en langage C, il est indispensable
d’en posséder des notions.
P.H. Winston, On to C++, Addison Wesley, 1994, est un excellent manuel à la fois court et
clair.
B. Stroustrup, Le langage C++, 2e éd., Addisson Wesley, 1992, est une référence plus
complète mais plus difficile à lire que la précédente.
Sur les réseaux
Apple, Understanding Computer Networks, Addisson Wesley, est une référence courte mais
exceptionnellement claire sur les concepts des réseaux. Les illustrations sont particulièrement
explicatives.
Guy Pujolle, Les réseaux, Eyrolles, 2000, est la meilleure référence en français.
A. Tanenbaum, Computer Networks, 3rd ed., Prentice-Hall, 1996, est une bonne référence
souvent citée.
W. R. Stevens, Unix Network Programming, 2nd ed, Prentice Hall, 1997, est une excellente
référence de programmation. De nombreux programmes très biens expliqués.
D. Comer, Internetworking with TCP/IP, Prentice Hall, 1990, (3 volumes en collaboration) est
bonne référence sur l’ensemble des protocoles constituant TCP/IP.
C. Hunt, TCP/IP Network Administration, 2nd ed, 1997, O’Reilly & Associates, est une
excellente référence pour l’administration des systèmes TCP/IP.
Sur le langage Java

41
Systèmes d’exploitation M. Mokaddem

D. Flanagan, Java in a Nutshell, 3nd ed, O’Reilly, 1999, est une excellente référence, concise et
claire. Elle est traduite en français.
P. Niemeyer & J. Knudsen, Learning Java, 3nd ed, O’Reilly, 2000, est un ouvrage très
pédagogique pour apprendre Java. Il est traduit en français.
Deitel & Deitel, Java How to Program, 3rd ed, 1999, est un livre très complet sur l’ensemble du
langage Java. Il est traduit en français.

42

Vous aimerez peut-être aussi