Cours de Syst`eme d`Exploitation Unix M.S.T. Télécom 1 Année

publicité
Université de Metz
Cours de Système
d’Exploitation Unix
M.S.T. Télécom 1reAnnée
Année Universitaire 2002/2003
Y. Morère
Table des matières
1 Introduction à la notion d’ordinateur
1.1 Présentation de l’ordinateur . . . . . . . . . . . . . . . . .
1.1.1 Types d’ordinateurs . . . . . . . . . . . . . . . . .
1.1.2 Constitution de l’ordinateur . . . . . . . . . . . . .
1.1.3 Présentation de la carte-mère . . . . . . . . . . . .
1.1.3.1 Facteur d’encombrement d’une carte-mère
1.1.4 Le chipset . . . . . . . . . . . . . . . . . . . . . . .
1.1.5 L’horloge et la pile du CMOS . . . . . . . . . . . .
1.1.6 Le BIOS . . . . . . . . . . . . . . . . . . . . . . .
1.1.6.1 Présentation du BIOS . . . . . . . . . . .
1.1.6.2 Le BIOS Award . . . . . . . . . . . . . .
1.1.7 Le processeur . . . . . . . . . . . . . . . . . . . . .
1.1.8 La mémoire-cache . . . . . . . . . . . . . . . . . .
1.1.9 La mémoire vive . . . . . . . . . . . . . . . . . . .
1.1.10 Les connecteurs d’extension . . . . . . . . . . . . .
1.1.11 Le bus système . . . . . . . . . . . . . . . . . . . .
1.2 Qu’est-ce qu’un processeur ? . . . . . . . . . . . . . . . . .
1.2.1 le processeur . . . . . . . . . . . . . . . . . . . . . .
1.2.2 A quoi ressemble une instruction ? . . . . . . . . . .
1.2.3 Les registres . . . . . . . . . . . . . . . . . . . . . .
1.2.4 les signaux de commande . . . . . . . . . . . . . .
1.2.5 Qu’est-ce qu’un microprocesseur ? . . . . . . . . . .
1.2.6 Le parallelisme . . . . . . . . . . . . . . . . . . . .
1.2.7 Le pipelining . . . . . . . . . . . . . . . . . . . . .
1.2.8 L’architecture CISC . . . . . . . . . . . . . . . . .
1.2.9 L’architecture RISC . . . . . . . . . . . . . . . . .
1.2.10 CISC ou RISC . . . . . . . . . . . . . . . . . . . .
1.3 Rôle de la mémoire vive (RAM) . . . . . . . . . . . . . . .
1.3.1 Fonctionnement de la mémoire vive . . . . . . . . .
1.3.2 La correction d’erreurs . . . . . . . . . . . . . . . .
1.3.2.1 Bit de parité . . . . . . . . . . . . . . . .
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
13
13
13
14
14
14
15
15
15
16
16
17
17
17
18
19
19
19
19
19
20
20
22
22
22
22
23
23
23
24
24
4
Cours de Système d’Exploitation UNIX
1.4
1.5
1.6
1.3.2.2 Barrettes ECC . . . . . . . . . .
1.3.3 Types de barrettes de mémoire vive . . . .
1.3.3.1 DRAM PM . . . . . . . . . . . .
1.3.3.2 DRAM FPM . . . . . . . . . . .
1.3.3.3 DRAM EDO . . . . . . . . . . .
1.3.3.4 SDRAM . . . . . . . . . . . . . .
1.3.3.5 DDR-SDRAM . . . . . . . . . .
1.3.3.6 DR-SDRAM (Rambus DRAM) .
La mémoire morte (ROM) . . . . . . . . . . . . .
1.4.1 Les types de ROM . . . . . . . . . . . . .
1.4.1.1 ROM . . . . . . . . . . . . . . .
1.4.1.2 PROM . . . . . . . . . . . . . .
1.4.1.3 EPROM . . . . . . . . . . . . . .
1.4.1.4 EEPROM . . . . . . . . . . . . .
Le rôle du disque dur . . . . . . . . . . . . . . . .
1.5.1 Le fonctionnement interne . . . . . . . . .
1.5.2 La lecture et l’écriture . . . . . . . . . . .
1.5.3 Le mode bloc des disques durs . . . . . . .
1.5.4 Le mode 32 bits des disques durs . . . . .
1.5.5 L’interface SCSI . . . . . . . . . . . . . . .
1.5.6 Le serial ATA . . . . . . . . . . . . . . .
1.5.6.1 Serial ATA . . . . . . . . . . . .
1.5.6.2 Serial Attached SCSI . . . . . . .
1.5.6.3 L’avenir . . . . . . . . . . . . . .
1.5.7 Les caractéristiques du disque . . . . . . .
Périphérique interne . . . . . . . . . . . . . . . .
1.6.1 Les cartes accélératrices 2D . . . . . . . .
1.6.2 Les cartes accélératrices 3D . . . . . . . .
1.6.3 Glossaire des fonctions accélératrices 3D et
1.6.4 Qu’est-ce qu’une carte réseau ? . . . . . .
1.6.5 Quel est le rôle de la carte réseau ? . . . .
1.6.6 La préparation des données . . . . . . . .
1.6.7 Le rôle d’identificateur . . . . . . . . . . .
1.6.8 Les autres fonctions de la carte réseau . .
1.6.9 Envoi et contrôle des données . . . . . . .
1.6.10 Paramètres de configuration de la carte . .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
2D
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
25
25
26
27
27
27
27
27
28
29
29
29
30
30
30
30
31
32
33
33
34
35
35
35
35
35
36
36
37
39
39
39
40
40
40
40
2 Introduction aux systèmes d’exploitation
43
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.2 Systèmes multi-tâches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.3 Systèmes multi-processeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
2.4
2.5
2.6
2.7
2.8
5
Les types de systèmes d’exploitation . . . . . . .
Notions de fichier . . . . . . . . . . . . . . . . . .
2.5.1 Les fichiers corrompus . . . . . . . . . . .
2.5.2 Infection par un virus . . . . . . . . . . .
Notion de répertoire . . . . . . . . . . . . . . . .
Relations relatives . . . . . . . . . . . . . . . . .
La création du DOS . . . . . . . . . . . . . . . .
2.8.1 Présentation du système . . . . . . . . . .
2.8.2 Les fichiers sous DOS . . . . . . . . . . .
2.8.3 L’organisation des fichiers en répertoires .
2.8.4 Commandes MS-DOS . . . . . . . . . . .
2.8.5 Lister les fichiers . . . . . . . . . . . . . .
2.8.6 Utiliser des caractères génériques . . . . .
2.8.7 Envoyer les informations envoyées à l’écran
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
dans
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
un
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
fichier
3 Caractéristiques générales du système Unix
3.1 Évolution d’Unix . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Philosophie d’Unix . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Caractère universel d’Unix . . . . . . . . . . . . . . . . . .
3.2.1.1 Le noyau . . . . . . . . . . . . . . . . . . . . . .
3.2.1.2 Le Shell . . . . . . . . . . . . . . . . . . . . . . .
3.2.2 Le système de gestion de fichiers . . . . . . . . . . . . . . .
3.2.2.1 Vision générale . . . . . . . . . . . . . . . . . . .
3.2.2.2 Les droits d’accès . . . . . . . . . . . . . . . . . .
3.2.3 Les processus . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.3.1 Vision générale . . . . . . . . . . . . . . . . . . .
3.2.3.2 Terminal de contrôle d’un processus, exécution en
3.2.3.3 La propriété effective et réelle d’un processus . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
arrière
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
plan
. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
44
45
45
45
45
46
47
47
47
48
48
48
49
49
.
.
.
.
.
.
.
.
.
.
.
.
51
51
52
52
53
53
54
54
54
55
55
55
55
4 Présentation de l’environnement du CESIUM
57
4.1 Les serveurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2 Les stations de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5 Utilisation du Shell
5.1 Introduction . . . . . . . . . . . . . . . . .
5.1.1 Qu’est ce que le Shell . . . . . . . .
5.1.2 Les différents utilisateurs . . . . . .
5.1.2.1 L’utilisateur de base . . .
5.1.2.2 Le programmeur . . . . .
5.1.2.3 L’administrateur système
5.1.3 Exemple de session utilisateur . . .
Yann MORÈRE
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
M.S.T. Télécom 1re Année
59
59
59
59
60
60
60
61
6
Cours de Système d’Exploitation UNIX
5.2
Le Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1 Entrée dans le système . . . . . . . . . . . . . . . . . . . . .
5.2.1.1 Changer son mot de passe . . . . . . . . . . . . . .
5.2.1.2 Format général des commandes . . . . . . . . . . .
5.2.1.3 stuces pour se déplacer sur la ligne de commandes :
5.2.1.4 Le manuel en ligne . . . . . . . . . . . . . . . . . .
5.2.1.5 Sortie du système . . . . . . . . . . . . . . . . . . .
5.2.2 Syntaxe de commande . . . . . . . . . . . . . . . . . . . . .
5.2.2.1 Fonctionnement de l’exécution d’une commande . .
5.2.2.2 Commandes liées à l’arborescence de fichiers . . . .
5.2.2.3 Commandes liées aux répertoires . . . . . . . . . .
5.2.2.4 Gestion des sorties imprimantes . . . . . . . . . . .
5.2.2.5 Commandes d’observation du système . . . . . . .
6 Le Shell - Interpréteur de commandes
6.1 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1 Variables simples . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1.1 Mécanismes d’affectation . . . . . . . . . . . . . . .
6.1.1.2 Désignation de la variable . . . . . . . . . . . . . .
6.1.1.3 Affichage d’une variable . . . . . . . . . . . . . . .
6.1.1.4 Saisie au clavier . . . . . . . . . . . . . . . . . . . .
6.1.1.5 1.1.5 Exportation des variables . . . . . . . . . . .
6.1.1.6 Visualisation des variables disponibles . . . . . . .
6.1.1.7 Supprimer une variable . . . . . . . . . . . . . . .
6.1.1.8 Substitutions . . . . . . . . . . . . . . . . . . . . .
6.1.2 Variables du shell - personnalisation de l’environnement . . .
6.1.2.1 Les principales variables . . . . . . . . . . . . . . .
6.1.2.2 Que se passe-t-il au login ? . . . . . . . . . . . . . .
6.1.3 Variables spéciales . . . . . . . . . . . . . . . . . . . . . . .
6.2 Mécanismes d’interprétation du shell . . . . . . . . . . . . . . . . .
6.2.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.2 Commandes et processus . . . . . . . . . . . . . . . . . . . .
6.2.3 Prompts et tourmenterais de commandes . . . . . . . . . . .
6.2.4 Environnement d’une commande . . . . . . . . . . . . . . .
6.2.5 Recherche d’une commande . . . . . . . . . . . . . . . . . .
6.2.6 Les alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.7 Substitution de commande . . . . . . . . . . . . . . . . . . .
6.2.8 Substitution de nom de fichier et autres caractères spéciaux
6.2.9 Mécanismes d’interprétation . . . . . . . . . . . . . . . . . .
6.2.10 Lancement de l’exécution d’un shellscript . . . . . . . . . . .
6.2.10.1 Lancement par le nom du shellscript . . . . . . . .
M.S.T. Télécom 1re Année
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
62
62
62
63
63
63
66
66
66
66
74
75
77
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
85
85
85
85
85
86
86
86
86
86
87
87
87
87
88
88
88
88
88
89
89
89
90
90
90
91
91
5 octobre 2003
Cours de Système d’Exploitation UNIX
6.3
6.4
7
6.2.10.2 Lancement par appel explicite du shell . . . . . . . . . . . . . .
92
6.2.10.3 Lancement par appel de la commande interne . . . . . . . . .
92
Les redirections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
6.3.1
Redirections des sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
6.3.1.1
Redirection avec écrasement du fichier de redirection . . . . . .
92
6.3.1.2
Redirection avec ajout à la fin du fichier de redirection . . . . .
92
6.3.1.3
Redirection du fichier d’erreur . . . . . . . . . . . . . . . . . . .
93
6.3.2
Redirection des entrées . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
6.3.3
La notion de pipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
Lancement de processus en arrière plan . . . . . . . . . . . . . . . . . . . . . . .
95
6.4.1
Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
6.4.2
Gestion des jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
7 Le Shell - Langage de programmation
97
7.1
Tests divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
7.2
Décaler la position des paramètres . . . . . . . . . . . . . . . . . . . . . . . . . .
98
7.3
Sortie d’un shellscript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
7.4
Les structures de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
7.4.1
if..then..else..fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
7.4.2
case..esac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.4.3
for..do..done . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.4.4
while..do..done . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.4.5
until..do..done . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.4.6
Instructions liées aux boucles . . . . . . . . . . . . . . . . . . . . . . . . 102
7.5
Commandes built-in diverses . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
7.6
Calculs, traitements des chaı̂nes de caractères . . . . . . . . . . . . . . . . . . . 103
8 Manipulation des données d’un fichier
105
8.1
Trier les lignes d’un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
8.2
Recherche d’une chaı̂ne de caractères . . . . . . . . . . . . . . . . . . . . . . . . 106
8.3
Compter les caractères, les mots, les lignes . . . . . . . . . . . . . . . . . . . . . 107
8.4
Conversion et suppression de caractères . . . . . . . . . . . . . . . . . . . . . . . 107
8.5
Comparaison du contenu de 2 fichiers . . . . . . . . . . . . . . . . . . . . . . . . 107
8.6
8.7
8.5.1
Comparaison de 2 fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8.5.2
Différence entre 2 fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Extraire le début ou la fin d’un fichier . . . . . . . . . . . . . . . . . . . . . . . . 108
8.6.1
Début du fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
8.6.2
Fin du fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Autres commandes utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Yann MORÈRE
M.S.T. Télécom 1re Année
8
9 Introduction au système X-Window
9.1 Introduction . . . . . . . . . . . . .
9.1.1 Systèmes de fenêtrage . . .
9.1.2 Le projet Athena . . . . . .
9.2 Le système X Window . . . . . . .
9.2.1 Architecture . . . . . . . . .
9.2.2 Client-Serveur ? . . . . . . .
9.2.3 Le serveur X . . . . . . . . .
9.2.4 Requêtes et événements . .
M.S.T. Télécom 1re Année
Cours de Système d’Exploitation UNIX
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
109
109
109
109
110
111
111
112
112
5 octobre 2003
Table des figures
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13
Le BIOS Award . . . . . .
Schéma d’un slot . . . . .
Processeur Intel 4004 . . .
Cœur d’un processeur . . .
Processeur Intel Pentium .
Structure de ma mémoire .
Mémoire SIMM 30 broches
Mémoire SIMM 72 broches
Mémoire DIMM . . . . . .
Structure d’un disque dur
Notion de Piste . . . . . .
Notion de secteur . . . . .
Notion de cylindre . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
18
20
21
21
24
25
26
26
31
32
32
32
2.1
2.2
2.3
Principe du Système d’exploitation . . . . . . . . . . . . . . . . . . . . . . . . .
Système de répertoire de Win 95 . . . . . . . . . . . . . . . . . . . . . . . . . .
Invite MS-Dos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
46
47
3.1
3.2
Structure d’un système Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Système de fichier d’un système Unix . . . . . . . . . . . . . . . . . . . . . . . .
53
54
4.1
Reseau de Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
5.1
Connexion en mode graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
6.1
6.2
6.3
Redirections des entrées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mécanisme de fonctionnement de ”|” . . . . . . . . . . . . . . . . . . . . . . . . .
Mécanisme de fonctionnement de tee . . . . . . . . . . . . . . . . . . . . . . . .
93
95
95
9.1
9.2
Architecture du système X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Requêtes et Evénements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
9
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Cette page est laissée blanche intentionnellement
Liste des tableaux
5.1
Tableau récapitulatif des droits d’accès . . . . . . . . . . . . . . . . . . . . . . .
11
68
Cette page est laissée blanche intentionnellement
Chapitre 1
Introduction à la notion d’ordinateur
La compréhension du vocabulaire informatique représente généralement la principale difficulté à
laquelle se heurtent les acheteurs potentiels d’ordinateurs personnels. En effet, contrairement à
un téléviseur, pour lequel les critères de choix sont assez limités, le choix d’un ordinateur revient
à choisir chaque élément qui le compose et à en connaı̂tre les caractéristiques. Ce dossier n’a
pas pour but de donner un sens à toutes les abbréviations informatiques (dans la mesure où
de nombreux constructeurs ont leurs propres technologies) mais il a vocation à donner de la
visibilité sur les principaux composants d’un ordinateur, d’en expliquer le fonctionnement et
d’en donner les principales caractéristiques à connaı̂tre.
1.1
Présentation de l’ordinateur
Un ordinateur est un ensemble de circuits électronique permettant de manipuler des données
sous forme binaire, c’est-à-dire sous forme de bits. Le mot ”ordinateur” provient de la firme IBM.
Celle-ci demanda en 1954 à un professeur de lettres à Paris de trouver un mot pour désigner ce
que l’on appelait vulgairement un ”calculateur” (traduction littérale de computer en anglais).
1.1.1
Types d’ordinateurs
Toute machine capable de manipuler des informations binaires peut être qualifiée d’ordinateur.
Toutefois, la plupart des personnes pensent à un ordinateur personnel (PC, abbréviation de personal computer ), le type d’ordinateur le plus présent sur le marché, toutefois il existe beaucoup
d’autres types d’ordinateurs (la liste suivante est non exhaustive) :
B Amiga
B Atari
B Apple Macintosh
B stations Alpha
B stations SUN
B stations Silicon Graphics
Nous nous interesserons dans la suite qu’aux ordinateurs de type PC, appelés aussi ordinateurs
compatible IBM, car IBM est la firme qui a créé les premiers ordinateurs de ce type et a
longtemps (jusqu’en 1987) été le leader dans ce domaine, à un tel point qu’elle contrôlait les
standards, copiée par les autres fabricants.
13
14
1.1.2
Cours de Système d’Exploitation UNIX
Constitution de l’ordinateur
Un ordinateur est un ensemble de composants électroniques modulaires, c’est-à-dire des composants pouvant être remplacés par d’autres composants ayant éventuellement des caractéristiques différentes. Ces composants sont architecturés autour d’une carte principale comportant
de nombreux circuits intégrés (soudés sur la carte) et un grand nombre de connecteurs ; cette
carte est appelée carte-mère.
La carte-mère est logée dans un boı̂tier, comportant des emplacements pour les périphériques de
stockage sur la face avant, ainsi que des boutons permettant de contrôler la mise sous tension
de l’ordinateur et un certain nombre de voyants permettant de vérifier l’état de marche de
l’appareil et l’activité des disques durs. Sur la face arrière le boı̂tier propose des ouvertures en
vis-à-vis des cartes d’extension et des interfaces d’entrée-sortie connectées sur la carte-mère.
Enfin le boı̂tier héberge une alimentation, chargée de fournir un courant électrique stable à
l’ensemble des éléments constitutifs de l’ordinateur.
On appelle unité centrale l’ensemble composé du boı̂tier et de l’ensemble des éléments qu’il
embarque. L’unité centrale doit être connectée à un ensemble de périphériques externes. Un
ordinateur est généralement composé au minimum d’une unité centrale, un écran (moniteur),
d’un clavier et d’une souris, mais il est possible de connecter une grande diversité de périphériques externes sur les interfaces d’entrée-sortie (ports séries, port parallèle, port USB, port
firewire, ...) :
B imprimante
B scanner
B périphérique de stockage externe
B appareil photo ou caméra numérique
B assistant personnel (PDA)
B ...
1.1.3
Présentation de la carte-mère
L’élément constitutif principal de l’ordinateur est la carte-mère, c’est sur cette carte que sont
connectés ou soudés l’ensemble des éléments essentiels de l’ordinateur.
La carte-mère contient des éléments embarqués (intégrés à la carte) :
B Le chipset, circuit qui contrôle la majorité des ressources (interface de bus du processeur,mémoire cache et mémoire vive, slots d’extension,...)
B L’horloge et la pile du CMOS
B Le BIOS
B Le bus système
Il existe plusieurs façons de caractériser une carte-mère :
B son facteur d’encombrement
B son chipset
B son type de support de processeur
1.1.3.1
Facteur d’encombrement d’une carte-mère
nd généralement par facteur d’encombrement, la géométrie et les dimensions de la carte-mère.
Afin de fournir des cartes-mères pouvant s’adapter dans différents boı̂tiers de marques différentes, des standards ont été mis au point :
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
B
B
B
B
B
15
AT baby
AT full format
ATX
LPX
NLX
1.1.4
Le chipset
Le chipset (traduisez jeu de composants) est un circuit électronique chargé de coordonner les
échanges de données entre les divers composants de l’ordinateur (processeur, mémoire ; ...).
Dans la mesure où le chipset est intégré à la carte-mère, il est important de choisir une cartemère embarquant un chipset récent afin de garantir à votre PC un maximum de chance de
pouvoir évoluer.
Certains chipsets intègrent parfois une puce graphique ou une puce audio (généralement sur
les PC bas de gamme), ce qui signifie qu’il n’est pas nécessaire d’installer une carte graphique
ou une carte son. Toutefois, étant donné la piètre qualité de ces composants intégrés, il est
généralement conseillé de les désactiver (lorsque cela est possible) dans le setup du BIOS et
d’installer des cartes d’extension dans les emplacements prévus à cet effet !
1.1.5
L’horloge et la pile du CMOS
L’horloge temps réel (parfois notée RTC, ou real time clock ) est un circuit chargé de la synchronisation des signaux du système. Elle est constituée d’un cristal qui, en vibrant, donne des
impulsions (appelés tops d’horloge) afin de cadencer le système. On appelle fréquence de l’horloge (exprimée en Mhz ) le nombre de vibrations du cristal par seconde, c’est-à-dire le nombre
de tops d’horloge émis par seconde. Plus la fréquence est élevée, plus il y a de tops d’horloge et
donc plus le système pourra traiter d’informations.
Lorsque vous mettez votre ordinateur hors tension, l’alimentation cesse de fournir du courant à
la carte-mère. Or, lorsque vous le rebranchez, votre système d’exploitation est toujours à l’heure
bien que l’unité centrale n’était plus alimentée pendant un certain temps.
En réalité même lorsque votre PC est débranché ou qu’une panne d’électricité intervient, un
circuit électronique appelé CMOS (Complementary Metal-Oxyde Semiconductor, parfois appelé
BIOS CMOS ) conserve certaines informations sur le système, y compris l’heure et la date
système. Le CMOS est continuellement alimentée par une pile (au format pile bouton) située
également sur la carte-mère. Ainsi, les informations sur le matériel installé dans l’ordinateur
(comme par exemple le nombre de pistes, de secteurs de chaque disque dur) sont conservées
dans le CMOS. Dans la mesure où le CMOS est une mémoire lente, certains systèmes recopient
parfois le contenu du CMOS dans la RAM (mémoire rapide).
Ainsi, si vous constatez que votre PC à tendance à oublier l’heure, où que l’horloge prend du
retard, pensez à en changer la pile !
1.1.6
Le BIOS
Le BIOS (Basic Input/Output System) est le programme basique servant d’interface entre le
système d’exploitation et la carte-mère. Le BIOS est stocké dans une ROM (mémoire morte,
c’est-à-dire une mémoire en lecture seule), ainsi il utilise les données contenues dans le CMOS
pour connaı̂tre la configuration matérielle du système.
Yann MORÈRE
M.S.T. Télécom 1re Année
16
Cours de Système d’Exploitation UNIX
Il est possible de ”configurer” le BIOS grâce à une interface (nommée BIOS setup, traduisez configuration du BIOS ) accessible au démarrage de l’ordinateur par simple pression d’une
touche (généralement la touche Suppr. En réalité le setup du BIOS sert uniquement d’interface
pour la configuration et les données sont stockées dans le CMOS. Pour plus d’informations
n’hésitez pas à vous reporter au manuel de votre carte-mère).
1.1.6.1
Présentation du BIOS
Tous les PC utilisent un BIOS (”Basic Input/Output System”traduisez ”Système d’entrées/sorties
basique”) pour permettre le contrôle du matériel.
C’est un composant essentiel de votre ordinateur, il s’agit d’un petit logiciel dont une partie est
dans une mémoire morte (ROM : que vous ne pouvez donc pas modifier), et une autre partie
est dans un EEPROM (ROM que l’on peut modifier par impulsions électriques, d’où le terme
flasher lorsque vous la modifiez).
Lorsque le système est mis sous-tension ou réamorcé (Reset), le CPU est lui aussi réamorcé et
le BIOS va effectuer les opérations (barbares) suivantes :
B Faire le test du CPU
B Vérifier le BIOS
B Vérifier la configuration du CMOS
B Initialiser le timer (l’horloge interne)
B Initialiser le contrôleur DMA
B Vérifier la mémoire vive et la mémoire cache
B Installer toutes les fonctions du BIOS
B Vérifier toutes les configurations (clavier, disquettes, disques durs ...)
La plupart des BIOS ont un ”setup” (programme de configuration) qui permet de modifier
la configuration basique du système. Ce type d’information est stockée dans une RAM autoalimentée afin que l’information soit conservée même lorsque le système est hors-tension (nous
avons vu que la mémoire vive était réinitialisée à chaque redémarrage).
Il existe de nombreux BIOS dans votre machine :
B Le BIOS de la carte-mère que nous allons voir
B Le BIOS qui contrôle le clavier
B Le BIOS de la carte vidéo et éventuellement
B Le BIOS de contrôleurs SCSI qui permettent de booter sur le périphérique SCSI, qui communique alors avec le DOS sans pilote supplémentaire
B (Le BIOS de cartes réseau qui permettent de booter sur le réseau
Lorsque le système est mis sous tension, le BIOS affiche un message de copyright à l’écran, puis
il effectue les tests de diagnostics et d’initialisation. Lorsque tous les tests ont été effectués, le
BIOS affiche un message du genre :
TO ENTER SETUP BEFORE BOOT PRESS CTRL-ALT-ESC OR DEL KEY
qui signifie ”PRESSEZ ”CTRL-ALT-ESC” ou la touche ”DEL” pour entrer dans le ”SETUP”
avant le démarrage du PC”
1.1.6.2
Le BIOS Award
Lorsque vous appuyez sur la touche ”Suppr” au démarrage de l’ordinateur, vous tombez sur un
écran ressemblant à peu de chose près à celui-ci :
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
17
Fig. 1.1 – Le BIOS Award
1.1.7
Le processeur
Le processeur (aussi appelé microprocesseur ) est le coeur de l’ordinateur, car il exécute les
instructions des programmes grâce à un jeu d’instructions. Le processeur est caractérisé par
sa fréquence, c’est-à-dire la cadence à laquelle il exécute les instructions. Ainsi, de manière
grossière, un processeur cadencé à 600 Mhz effectuera 600 millions d’opérations par seconde.
La carte-mère possède un emplacement (parfois plusieurs dans le cas de cartes-mères multiprocesseurs) pour accueillir le processeur. On distingue deux catégories de supports :
B slot : il s’agit d’un connecteur rectangulaire dans lequel on enfiche le processeur verticalement
B socket : il s’agit d’un connecteur carré possédant un grand nombre de petits connecteurs sur
lequel le processeur vient directement s’enficher
Dans la mesure où le processeur rayonne thermiquement, il est nécessaire d’en dissiper la chaleur
pour éviter que ses circuits ne fondent. C’est la raison pour laquelle il est généralement surmonté
d’un dissipateur thermique, un matériau ayant une bonne conduction thermique, chargé d’augmenter la surface d’échange thermique du microprocesseur. Le dissipateur thermique comporte
une base en contact avec le processeur et des ailettes afin d’augmenter la surface d’échange thermique. Un ventilateur accompagne généralement le dissipateur pour améliorer la circulation de
l’air autour du dissipateur et améliorer l’échange de chaleur. C’est le ventilateur du boı̂tier qui
est chargé d’extraire l’air chaud du boı̂tier et permettre à l’air frais provenant de l’extérieur d’y
entrer.
1.1.8
La mémoire-cache
La mémoire-cache permet au processeur de se ”rappeler” les opérations déjà effectuées auparavant. En effet, elle stocke les opérations effectuées par le processeur, pour qu’il ne perde pas de
temps à recalculer des choses qu’il a déjà faites précédemment. La taille de la mémoire-cache
est généralement de l’ordre de 512 Ko. Sur les ordinateurs récents ce type de mémoire est
directement intégré dans le processeur.
1.1.9
La mémoire vive
La mémoire vive (RAM pour Random Access Memory) permet de stocker des informations
pendant tout le temps de fonctionnement de l’ordinateur, son contenu est par contre détruit
dès lors que l’ordinateur est éteint ou redémarré, contrairement à une mémoire de masse comme
le disque-dur qui garde les informations même lorsqu’il est hors-tension.
Pourquoi alors se servir de mémoire alors que les disques durs sont moins chers ?
Car elle est extrèmement rapide comparé aux périphériques de stockage de type disque dur (de
Yann MORÈRE
M.S.T. Télécom 1re Année
18
Cours de Système d’Exploitation UNIX
l’ordre de quelques dizaines de nanosecondes : environ 70 pour la DRAM, 60 pour la RAM
EDO, et 10 pour la SDRAM).
Type de mémoire
1.1.10
Les connecteurs d’extension
Les connecteurs d’extension (en anglais slots) sont des receptacles dans lesquels il est possible
d’enficher des cartes d’extension, c’est-à-dire des cartes offrant de nouvelles fonctionnalités ou
de meilleures performances à l’ordinateur. Il existe plusieurs sortes de connecteurs :
B connecteur ISA (Industry Standard Architecture) : permettant de connecter des cartes ISA,
les plus lentes fonctionnant en 16-bit
B connecteur VLB (Vesa Local Bus) : Bus servant autrefois à connecter des cartes graphiques
B connecteur PCI (Peripheral Component InterConnect) : permettant de connecter des cartes
PCI, beaucoup plus rapides que les cartes ISA et fonctionnant en 32-bit
B connecteur AGP (Accelerated Graphic Port) : un connecteur rapide pour carte graphique.
B connecteur AMR (Audio Modem Riser ) : ce type de connecteur permet de brancher des
mini-cartes sur les PC en étant équipés
Fig. 1.2 – Schéma d’un slot
Le premier bus AGP (Accelerated Graphics Port) est sorti en même temps que le Pentium II
en Mai 1997, sur des chipsets à base de ”Slot One”. Puis ils sont apparus sur des supports à
base de Super 7.
Il sert à la connexion de cartes vidéos. Son avantage est de pouvoir partager la mémoire vive
centrale pour stocker des textures, ainsi les cartes utilisant ce support ont besoin de moins de
mémoire, donc elles sont moins chères.
Le bus AGP est cadencé à 66 Mhz (soit deux fois plus que le bus PCI), ce qui lui offre une
bande passante de 528 Mo/s (132 Mo/s pour le bus PCI), donc de meilleures performances,
notamment pour l’affichage de scènes 3D compliquées.
Le bus AGP a suivi des évolutions (AGP 1X 2X) si bien que l’on peut aujourd’hui trouver les
cartes graphiques aussi bien en version PCI ou en AGP
Avec l’apparition du bus AGP 4X, la bande passante passera à 1Go/s. Cette norme utilisera une
fois de plus un nouveau type de support, si bien que les cartes existantes seront incompatibles
avec cette norme.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
1.1.11
19
Le bus système
On appelle bus, le canal permettant de transférer des données entre deux éléments. Le bus
système est le canal (pistes de la carte-mère) reliant le microprocesseur à la mémoire vive
du système. Un bus est caractérisé par sa largeur, c’est-à-dire le nombre de bits pouvant être
simultanément transmis, et par sa fréquence, c’est-à-dire la cadence à laquelle les paquets de bits
peuvent être transmis. Des caractéristiques du bus système dépendent donc les caractéristiques
générales du système. La fréquence du microprocesseur est égale à la fréquence du bus système
multiplié par un facteur. Ainsi un PC tournant à 400 Mhz sera plus rapide s’il est basé sur un
bus système cadencé à 133 Mhz (3 x 133 Mhz) que si la carte-mère a un bus dont la fréquence
est 100 Mhz (la fréquence du processeur étant alors égale à 4 x 100 Mhz).
1.2
1.2.1
Qu’est-ce qu’un processeur ?
le processeur
Le processeur (CPU : Central Processing Unit) est un circuit électronique cadencée au rythme
d’une horloge interne, c’est-à-dire un élément qui envoie des impulsions (que l’on appelle top). A
chaque top d’horloge les éléments de l’ordinateur accomplissent une action. La vitesse de cette
horloge (le nombre de battements par secondes) s’exprime en Mégahertz, ainsi un ordinateur
à 200Mhz a donc une horloge envoyant 200,000,000 de battements par seconde (un cristal de
quartz soumis à un courant électrique permet d’envoyer des impulsions à une fréquence précise).
A chaque top d’horloge (pour les instuctions simples) le processeur :
B lit l’instruction à exécuter en mémoire
B effectue l’instruction
B passe à l’instruction suivante
Le processeur est en fait constitué :
B d’une unité de commande qui lit les instructions et les décode
B d’une unité de traitement (UAL - unité arithmétique et logique) qui exécute les instructions.
Lorsque tous les éléments d’un processeur sont regroupés sur une même puce, on parle alors de
microprocesseur.
1.2.2
A quoi ressemble une instruction ?
Les instructions (opération que le processeur doit accomplir) sont stockées dans la mémoire
principale. Une instruction est composée de deux champs :
B le code opération : c’est l’action que le processeur doit accomplir
B le code opérande : c’est les paramètres de l’action. Le code opérande dépend de l’opération,
cela peut être une donnée ou bien une adresse d’un emplacement mémoire
Une instruction peut être codée sur un nombre d’octets variant de 1 à 4 suivant le type de
données.
1.2.3
Les registres
Lorsque le processeur traite des donnés (lorsqu’il exécute des instructions) le processeur stocke
temporairement les données dans de petites mémoires de 8, 16 ou 32Ko (qui ont l’avantage
Yann MORÈRE
M.S.T. Télécom 1re Année
20
Cours de Système d’Exploitation UNIX
d’être très rapides) que l’on appelle registres. Suivant le type de processeur le nombre de
registres peut varier entre une dizaine et plusieurs centaines.
Les registres les plus importants sont :
B le registre accumulateur : il permet de stocker les résultats des opérations arithmétiques
et logiques
B le registre tampon : il permet de stocker temporairement une des opérandes
B le registre d’état : il permet de stocker les indicateurs
B le registre instruction : il contient l’instruction en cours de traitement
B le compteur ordinal : il contient l’adresse de la prochaine instruction à traiter
B le registre tampon : il permet de stocker temporairement une donnée provenant de la
mémoire
1.2.4
les signaux de commande
Les signaux de commande sont des signaux électriques qui permettent au processeur de communiquer avec le reste du système (le signal Read/Write - lecture/écriture - permet notamment
de signaler à la mémoire qu’il désire lire ou écrire une information.
1.2.5
Qu’est-ce qu’un microprocesseur ?
Le premier microprocesseur (Intel 4004) a été inventé en 1971.
Fig. 1.3 – Processeur Intel 4004
Depuis, la puissance des microprocesseurs augmente exponentiellement. Quels sont donc ces
petits morceaux de silicium qui dirigent nos ordinateurs ?
Le processeur (CPU) est le cerveau de l’ordinateur, c’est lui qui coordonne le reste des éléments,
il se charge des calculs, bref il exécute les instructions qui ont été programmées.
Toutes ces opérations sont des informations numériques.
Les microprocesseurs utilisent des petits transistors (équivalents transistors) pour faire des
opérations de base ; il y en a plusieurs millions sur un seul processeur.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
21
Fig. 1.4 – Cœur d’un processeur
Les éléments principaux d’un microprocesseur sont :
B Une horloge qui rythme le processeur. A chaque TOP d’horloge le processeur effectue une
instruction, ainsi plus l’horloge a une fréquence élevée, plus le processeur effectue d’instructions par seconde (MIPS : Millions d’instruction par seconde).
Par exemple un ordinateur ayant une fréquence de 100 Mhz effectue 100 000 000 d’instructions par seconde
B Une unité de gestion des bus qui gère les flux d’informations entrant et sortant
B Une unité d’instruction qui lit les données arrivant, les décode puis les envoie à l’unité
d’exécution.
B Une unité d’exécution qui accomplit les tâches que lui a donné l’unité d’instruction.
Fig. 1.5 – Processeur Intel Pentium
Le processeur travaille en fait grâce à un nombre très limité de fonctions (ET logique, Ou logique,
addition ...), celles-ci sont directement câblées sur les circuits électroniques. Il est impossible de
mettre toutes les instructions sur un processeur car celui-ci est limité par la taille de la gravure,
ainsi pour mettre plus d’instructions il faudrait un processeur ayant une très grande surface, or
Yann MORÈRE
M.S.T. Télécom 1re Année
22
Cours de Système d’Exploitation UNIX
le processeur est constitué de silicium et le silicium coûte cher, d’autre part il chauffe beaucoup.
Le processeur traite donc les informations compliquées à l’aide d’instructions simples.
1.2.6
Le parallelisme
Le parallèlisme consiste à exécuter simultanément sur des processeurs différents des instructions
relatives à un même programme. Cela se traduit par le découpage d’un programme en plusieurs
processus qui seront traités par des processeurs différents dans le but de gagner en temps
d’exécution. Cela nécessite toutefois une communication entre les différents processus. C’est
le même principe de fonctionnement que dans une entreprise : le travail est divisé en petits
processus traités par des services différents et qui ne servent à rien si la communication entre
les services ne fonctionne pas (ce qui est généralement le cas dans les entreprises...).
1.2.7
Le pipelining
Le pipelining est un principe simple à comprendre. Un programme comporte généralement des
portions de code (plus ou moins grandes) qui sont traitées de nombreuses fois par le processeur.
Dans les technologies n’utilisant pas le pipelining, le microprocesseur doit effectuer l’instruction,
puis aller chercher la suivante, ce qui utilise deux cycles d’horloge.
Le pipelining permet de mettre à disposition du microprocesseur les instructions qu’il va devoir
effectuer. Les instruction font la ”file” (c’est ce que l’on nomme le pipeline) dans la mémoire
cache. Ainsi, pendant que le microprocesseur execute une instruction, la suivante est déjà à sa
disposition. Le pipelining permet donc d’économiser un cycle d’horloge !
1.2.8
L’architecture CISC
L’architecture CISC (Complex Instruction Set Computer, ce qui signifie ”ordinateur avec jeu
d’instructions complexes”) est utilisée par tous les processeurs de type x86, c’est-à-dire les processeurs fabriqués par Intel, AMD, Cyrix, ...
Les processeurs basés sur l’architecture CISC peuvent traiter des instructions complexes, qui
sont directement câblées sur leurs circuits électroniques, c’est-à-dire que certaines instructions
difficiles à créer à partir des instructions de base sont directement imprimées sur le silicium de
la puce afin de gagner en rapidité d’exécution sur ces commandes.
L’inconvénient de ce type d’architecture provient justement du fait que des fonctions supplémentaires sont imprimées sur le silicium, d’où un coût élevé.
D’autre part, les instructions sont de longueurs variables et peuvent parfois prendre plus d’un
cycle d’horloge ce qui les rend lentes à l’exécution étant donné qu’un processeur basé sur
l’architecture CISC ne peut traı̂ter qu’une instruction à la fois !
1.2.9
L’architecture RISC
Contrairement à l’architecture CISC, un processeur utilisant la technologie RISC (Reduced
Instruction Set Computer, dont la traduction est ”ordinateur à jeu d’instructions réduit”) n’a pas
de fonctions supplémentaires câblées. Cela impose donc des programmes ayant des instructions
simples interprétables par le processeur. Cela se traduit par une programmation plus difficile
et un compilateur plus puissant. Cependant vous vous dı̂tes qu’il peut exister des instructions
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
23
qui ne peuvent pas être décrites à partir des instructions simples...
En fait ces instructions sont tellement peu nombreuses qu’il est possible de les câbler directement
sur le circuit imprimé sans alourdir de manière dramatique leur fabrication.
L’avantage d’une telle architecture est bien évidemment le coût réduit au niveau de la fabrication
des processeurs l’utilisant. De plus, les instructions, étant simples, sont exécutées en un cycle
d’horloge, ce qui rend l’exécution des programmes plus rapides qu’avec des processeurs basés sur
une architecture CISC. De plus, de tels processeurs sont capables de traı̂ter plusieurs instructions
simultanément en les traitant en parallèle.
1.2.10
CISC ou RISC
A comparer les spécificités des deux types d’architecture on pourrait conclure que les processeurs basé sur une architecture de type RISC sont les plus utilisés...
Cela n’est malheureusement pas le cas... En effet les ordinateurs construits autour d’une architecture RISC nécessitent une quantité de mémoire plus importante que les ordinateurs de type
CISC
1.3
Rôle de la mémoire vive (RAM)
La mémoire vive, généralement appelée RAM (Random Access Memory, traduisez mémoire
à accès aléatoire), est la mémoire principale du système, c’est-à-dire qu’il s’agit d’un espace
permettant de stocker de manière temporaire des données lors de l’exécution d’un programme.
En effet le stockage de données dans la mémoire vive est temporaire, contrairement au stockage
de données sur une mémoire de masse telle que le disque dur (mémoire avec laquelle les novices
la confondent généralement), car elle permet uniquement de stocker des données tant qu’elle
est alimentée électriquement. Ainsi, à chaque fois que l’ordinateur est éteint, toutes les données
présentes en mémoire sont irrémédiablement effacées.
La mémoire morte, appelée ROM pour Read Only Memory (traduisez mémoire en lecture
seule) est un type de mémoire permettant de conserver les informations qui y sont contenues
même lorsque la mémoire n’est plus alimentée électriquement. A la base ce type de mémoire ne
peut être accédée qu’en lecture. Toutefois il est désormais possible d’enregistrer des informations
dans certaines mémoires de type ROM.
1.3.1
Fonctionnement de la mémoire vive
La mémoire vive est constituée de centaines de milliers de petits condensateurs emmagasinant
des charges. Lorsqu’il est chargé, l’état logique du condensateur est égal à 1, dans le cas contraire
il est à 0, ce qui signifie que chaque condensateur représente un bit de la mémoire.
Etant donné que les condensateurs se déchargent, il faut constamment les recharger (le terme
exact est rafraı̂chir ) à un intervalle de temps régulier appelé cycle de rafraı̂chissement (d’une
durée d’environ 15 nanosecondes (ns) pour une mémoire DRAM).
Chaque condensateur est couplé à un transistor (de type MOS ) permettant de ”récupérer” ou
de modifier l’état du condensateur. Ces transistors sont rangés sous forme de tableau (matrice),
c’est-à-dire que l’on accède à une ”case mémoire” (aussi appelée point mémoire) par une ligne
et une colonne.
Yann MORÈRE
M.S.T. Télécom 1re Année
24
Cours de Système d’Exploitation UNIX
Fig. 1.6 – Structure de ma mémoire
Chaque point mémoire est donc caractérisé par une adresse, correspondant à un numéro de
ligne et un numéro de colonne. Or cet accès n’est pas instantané et s’effecue pendant un délai
appelé temps de latence. Par conséquent l’accès à une donnée en mémoire dure un temps
égal au temps de cycle auquel il faut ajouter le temps de latence.
Ainsi, pour une mémoire de type DRAM, le temps d’accès est de 60 nanosecondes (35ns de
délai de cycle et 25ns de temps de latence). Sur un ordinateur, le temps de cycle correspond
à l’inverse de la fréquence de l’horloge, par exemple pour un ordinateur cadencé à 200Mhz, le
temps de cycle est de 5ns (1/(200.106 )).
Par conséquent un ordinateur ayant une fréquence élevée et utilisant des mémoires dont le
temps d’accès est beaucoup plus long que le temps de cycle du processeur doit effectuer des
cycles d’attente (en anglais wait state) pour accèder à la mémoire. Dans le cas d’un ordinateur
cadencé à 200Mhz utilisant des mémoires de types DRAM (dont le temps d’accès est de 60ns),
il y a 11 cycles d’attente pour un cycle de transfert. Les performances de l’ordinateur sont
d’autant diminuées qu’il y a de cycles d’attentes, il est donc conseillé d’utiliser des mémoires
plus rapides.
1.3.2
La correction d’erreurs
Certaines mémoires possèdent des mécanismes permettant de pallier les erreurs afin de garantir
l’intégrité des données qu’elles contiennent. Ce type de mémoire est généralement utilisée sur
des systèmes travaillant sur des données critiques, c’est la raison pour laquelle on trouve ce
type de mémoire dans les serveurs.
1.3.2.1
Bit de parité
Les barrettes avec bit de parité permettent de s’assurer que les données contenues dans la
mémoire sont bien celles que l’on désire. Pour ce faire, un des bits de chaque octet stocké en
mémoire sert à conserver la somme des bits de données.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
25
Le bit de parité vaut 0 lorsque la somme des bits de données est impaire et 1 dans le cas
contraire.
De cette façon les barrettes avec bit de parité permettent de vérifier l’intégrité des données mais
ne permettent pas de corriger les erreurs. De plus pour 8 Mo de mémoire, seulement 7 serviront
à stocker des données, dans la mesure où le dernier mégaoctet conservera les bits de parité.
1.3.2.2
Barrettes ECC
Les barrettes de mémoire ECC (Error Correction Coding) sont des mémoires possédant plusieurs bits dédiés à la correction d’erreur (on les appelle ainsi bits de contrôle). Ces barrettes,
utilisées principalement dans les serveurs, permettent de détecter les erreurs et de les corriger.
1.3.3
Types de barrettes de mémoire vive
Il existe de nombreux types de mémoires vives. Celles-ci se présentent toutes sous la forme de
barrettes de mémoire enfichables sur la carte-mère.
Les premières mémoires se présentaient sous la forme de puces appelées DIP (Dual Inline
Package). Désormais les mémoires se trouvent généralement sous la forme de barrettes, c’està-dire des cartes enfichables dans des connecteurs prévus à cet effet. On distingue deux types
de barrettes de RAM :
B les barrettes au format SIMM (Single Inline Memory Module) : il s’agit de circuits imprimés
dont une des faces possède des puces de mémoire. Il existe deux types de barrettes SIMM,
selon le nombre de connecteurs :
. Les barrettes SIMM à 30 connecteurs (dont les dimensions sont 89x13mm) sont des mémoires 8 bits qui équipaient les premières générations de PC (286, 386).
Fig. 1.7 – Mémoire SIMM 30 broches
. Les barrettes SIMM à 72 connecteurs (dont les dimensions sont 108x25mm) sont des
mémoires capables de gérer 32 bits de données simultanés. Ces mémoires équipent des PC
allant du 386DX aux premiers pentiums. Sur ces derniers le processeur travaille avec un bus
de données d’une largeur de 64 bits, c’est la raison pour laquelle il faut absolument équiper
ces ordinateurs de deux barettes SIMM. Il n’est pas possible d’installer des barettes 30
broches sur des emplacements à 72 connecteurs dans la mesure où un détrompeur (encoche
au centre des connecteurs) en empêche l’enfichage.
Yann MORÈRE
M.S.T. Télécom 1re Année
26
Cours de Système d’Exploitation UNIX
Fig. 1.8 – Mémoire SIMM 72 broches
B les barrettes au format DIMM (Dual Inline Memory Module) sont des mémoires 64 bits, ce
qui explique pourquoi il n’est pas nécessaire de les apparier. Les barrettes DIMM possèdent
des puces de mémoire de part et d’autre du circuit imprimé et ont également 84 connecteurs
de chaque côté, ce qui les dote d’un total de 168 broches. En plus de leurs dimensions plus
grandes que les barrettes SIMM (130x25mm) ces barrettes possèdent un second détrompeur
pour éviter la confusion.
Fig. 1.9 – Mémoire DIMM
À noter que les connecteurs DIMM ont été améliorés afin de permettre une insertion facile des
barettes grâce à des leviers situés de part et d’autre du connecteur.
1.3.3.1
DRAM PM
La DRAM (Dynamic RAM, RAM dynamique) est le type de mémoire le plus répandu au début
du millénaire. Il s’agit d’une mémoire dont les transistors sont rangés dans une matrice selon
des lignes et des colonnes. Un transistor, couplé à un condensateur donne l’information d’un
bit. 1 octet comprenant 8 bits, une barrette de mémoire DRAM de 256 Mo contiendra donc
256000000*8 bits soit 2 048 000 000 (256000000*8) transistors. Ce sont des mémoires dont le
temps d’accès est de 60ns.
D’autre part, les accès mémoire se font généralement sur des données rangées consécutivement
en mémoire. Ainsi le mode d’accès en rafale (burst mode) permet d’accèder aux trois données
consécutives à la première sans temps de latence supplémentaire. Dans ce mode en rafales, le
temps d’accès à la première donnée est égale au temps de cycle auquel il faut ajouter le temps
de latence, et le temps d’accès aux trois autres données est uniquement égal aux temps de
cycle, on note donc sous la forme X-Y-Y-Y les quatre temps d’accès, par exemple la notation
5-3-3-3 indique une mémoire pour laquelle 5 cycles d’horloge sont nécessaires pour accéder à
la première donnée et 3 pour les suivantes.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
1.3.3.2
27
DRAM FPM
Pour accélérer les accès à la DRAM, il existe une technique, appelée pagination consistant à
accèder à des données situées sur une même colonne en modifiant uniquement l’adresse de la
ligne, ce qui permet d’éviter la répétition du numéro de colonne entre la lecture de chacune
des lignes. On parle alors de DRAM FPM (Fast Page Mode). La FPM permet d’obtenir
des temps d’accès de l’ordre de 70 à 80 nanosecondes pour une fréquence de fonctionnement
pouvant aller de 25 à 33 Mhz.
1.3.3.3
DRAM EDO
La DRAM EDO (Extended Data Out, soit Sortie des données amélioré parfois également appelé
”hyper-page”) est apparue en 1995. La technique utilisée avec ce type de mémoire consiste
à adresser la colonne suivante pendant la lecture des données d’une colonne. Cela crée un
chevauchement des accès permettant de gagner du temps sur chaque cycle. Le temps d’accès à
la mémoire EDO est donc d’environ 50 à 60 nanosecondes pour une fréquence de fonctionnement
allant de 33 à 66 Mhz.
Ainsi, la RAM EDO, lorsqu’elle est utilisée en mode rafale permet d’obtenir des cycles de la
forme 5-2-2-2, soit un gain de 4 cycles sur l’accès à 4 données. Dans la mesure où la mémoire
EDO n’acceptait pas des fréquences supérieures à 66 Mhz, elle a disparu au bénéfice de la
SDRAM.
1.3.3.4
SDRAM
La SDRAM (Synchronous DRAM, traduisez RAM synchrone), apparue en 1997, permet une
lecture des données synchronisée avec le bus de la carte-mère, contrairement aux mémoires
EDO et FPM (qualifiées d’asynchrones) possèdant leur propre horloge. La SDRAM permet
donc de s’affranchir des temps d’attente dûs à la synchronisation avec la carte-mère. Celle-ci
permet d’obtenir un cycle en mode rafale de la forme 5-1-1-1, c’est-à-dire un gain de 3 cycles
par rapport à la RAM EDO. De cette façon la SDRAM est capable de fonctionner avec une
cadence allant jusqu’à 150Mhz, lui permettant d’obtenir des temps d’accès d’environ 10ns.
1.3.3.5
DDR-SDRAM
La DDR-SDRAM (Double Data Rate SDRAM ) est une mémoire basée sur la technologie
SDRAM, permettant de doubler le taux de transfert de la SDRAM à fréquence égale.
1.3.3.6
DR-SDRAM (Rambus DRAM)
La DR-SDRAM (Direct Rambus DRAM ou encore RDRAM ) est un type de mémoire permettant de transférer les données sur un bus de 16 bits de largeur à une cadence de 800Mhz, ce
qui lui confère une bande passante de 1,6 Go/s. Comme la SDRAM, ce type de mémoire est
synchronisé avec l’horloge du bus pour améliorer les échanges de données. En contrepartie, la
mémoire RAMBUS est une technologie propriétaire, ce qui signifie que toute entreprise désirant
contruire des barrettes de RAM selon cette technologie doit reverser des droits (royalties) aux
sociétés RAMBUS et Intel.
La DDR-SDRAM est une évolution de cette bonne vieille SDRAM. Au niveau logique, la
différence est minime d’où un coût de production réduit. La grosse différence se situe sur le
Yann MORÈRE
M.S.T. Télécom 1re Année
28
Cours de Système d’Exploitation UNIX
principe même de la DDR, puisqu’à chaque cycle d’horloge, une barrette de DDR peut envoyer
deux mots de 64 bits (en utilisant à la fois le front montant et le front descendant), contre un
seul pour une barrette de SDRAM classique. D’un point de vue physique, il s’agit de modules
de type DIMM 184 pins alimentés en 2.5V.
Développé par Rambus, la RDRAM n’utilise qu’un bus 16 bits DDR, contre 64 bits DDR pour
la DDR-SDRAM. Ce désavantage est toutefois compensé par une fréquence de fonctionnement
bien plus importante, puisqu’on atteint 400 MHz avec le standard actuel, contre 133 MHz pour
le standard actuel en DDR. Autre avantage de poids en terme de bande passante : le chipset
i850 pour P4 ne la gère que sur deux canaux (2 ou 4 barrettes donc), ce qui double la bande
passante.
Bien entendu cela est également possible avec de la DDR-SDRAM, comme sur le nForce de
NVIDIA, mais aucun chipset P4 ne le gère pour le moment (ce sera le cas au second semestre).
Il est à noter que du fait de son architecture qui utilise un bus série et non pas parallèle,
la RDRAM a tendance à avoir des temps d’accès supérieurs à la DDR-SDRAM. Il est à noter
qu’un nouveau type de barrette a récemment été annoncé, les PC4200. Ces barrettes, qui seront
notamment supportée par une future carte mère ASUSTeK (P4T533) gèrent directement les
deux canaux RDRAM de l’i850 et offrent donc une bande passante similaire à deux barrettes
standard. Par contrer, les utiliser par paire n’augmente bien entendu plus la bande passante.
Le gros désavantage de la RDRAM se situe au niveau du prix, qui est du au fait que ce soit une
technologie propriétaire ainsi qu’au coût de production lié à la fréquence de fonctionnement.
Même après la forte hausse connue sur la DDR, une barrette de RDRAM PC800 est tout de
même 50% plus chère qu’une autre de DDR PC2100. Bien entendu les PC2700 et PC3200 sont
plus chères, et il faudra donc voir ce qui en est des performances avant d’en tirer des conclusions.
Voici à l’heure actuelle les différents types de DDR-SDRAM et de RDRAM qui sont présents
sur le marché ou qui vont l’être dans les mois qui viennent :
Puces
DDR266
DDR333
DDR400
RDRAM400
RDRAM533
RDRAM400
Barettes
PC2100
PC2700
PC3200
2x PC800
2x PC1066
PC4200
Fréquences
133 MHz
166 MHz
200 MHz
400 MHz
533 MHz
533 MHz
Bus
64 bits
64 bits
64 bits
16 bits
16 bits
16 bits
DDR
DDR
DDR
DDR
DDR
DDR
Débit
2,1 Go/s
2,7 Go/s
3,2 Go/s
3,2 Go/s
4,2 Go/s
4,2 Go/s
* 1er calcul fait avec l’équivalence 1 Ko = 1000 octets et second avec 1 Ko = 1024 octets
Comme vous pouvez le voir, l’ultime évolution de la DDR 1ère génération, la DDR400, parvient
à atteindre la même bande passante que la PC800 sur deux canaux. La RDRAM confirme son
avantage en terme de bande passante à l’aide des barrettes de RDRAM PC1066 et PC4200.
Bien entendu, la bande passante théorique est une chose ... mais ce qui nous incombe le plus se
sont les performances en pratique !
1.4
La mémoire morte (ROM)
Il existe un type de mémoire permettant de stocker des données en l’absence de courant électrique, il s’agit de la ROM (Read Only Memory, dont la traduction est mémoire en lecture
M.S.T. Télécom 1re Année
5 octobre 2003
2,0
2,5
3,0
3,0
4,0
4,0
Go/s
Go/s
Go/s
Go/s
Go/s
Go/s
Cours de Système d’Exploitation UNIX
29
seule) appelée parfois mémoire non volatile, car elle ne s’efface pas lors de la mise hors tension
du système.
Ce type de mémoire permet notamment de conserver les données nécessaires au démarrage de
l’ordinateur En effet, ces informations ne peuvent être stockées sur le disque dur étant donné
que les paramètres du disque (essentiels à son initialisation) font partie de ces données vitales
à l’amorçage.
Différentes mémoires de type ROM contiennent des données essentielles au démarrage, c’est-àdire :
B Le BIOS est un programme permettant de piloter les interfaces d’entrée-sortie principales
du système, d’où le nom de BIOS ROM donné parfois à la puce de mémoire morte de la
carte-mère qui l’héberge
B Le chargeur d’amorce : un programme permettant de charger le système d’exploitation
en mémoire (vive) et de le lancer. Celui-ci cherche généralement le système d’exploitation
sur le lecteur de disquette, puis sur le disque dur, ce qui permet de pouvoir lancer le système
d’exploitation à partir d’une disquette système en cas de dysfonctionnement du système
installé sur le disque dur
B Le Setup CMOS, c’est l’écran disponible à l’allumage de l’ordinateur permettant de modifier les paramètres du système (souvent appelé BIOS à tort...)
B Le Power-On Self Test (POST ), programme exécuté automatiquement à lamorçage du
système permettant de faire un test du système (c’est pour cela par exemple que vous voyez
le système ”compter” la RAM au démarrage)
Etant donné que les ROM sont beaucoup plus lentes que les mémoires de types RAM (une
ROM a un temps d’accès de l’ordre de 150 ns tandis qu’une mémoire de type SDRAM a un
temps d’accès d’environ 10 ns), les instructions contenues dans la ROM sont parfois copiées
en RAM au démarrage, on parle alors de shadowing (en français cela pourrait se traduire par
ombrage, mais on parle généralement de mémoire fantôme).
1.4.1
Les types de ROM
Les ROM ont petit à petit évoluées de mémoires mortes figées à des mémoires programmables,
puis reprogrammables.
1.4.1.1
ROM
Les premières ROM étaient fabriquées à l’aide d’un procédé inscrivant directement les données
binaires dans une plaque de silicium grâce à un masque. Ce procédé est maintenant obsolète.
1.4.1.2
PROM
Les PROM (Programmable Read Only Memory) ont été mises au point à la fin des années 70
par la firme Texas Instruments. Ces mémoires sont des puces constituées de milliers de fusibles
pouvant être ”grillés” grâce à un appareil appelé programmateur de ROM, envoyant un fort
courant (12V) dans certains fusibles. Ainsi, les fusibles grillées correspondent à des 0, les autres
à des 1.
Yann MORÈRE
M.S.T. Télécom 1re Année
30
1.4.1.3
Cours de Système d’Exploitation UNIX
EPROM
Les EPROM (Erasable Programmable Read Only Memory) sont des PROM pouvant être effacées. Ces puces possèdent une vitre permettant de laisser passer des rayons ultra-violets.
Lorsque la puce est en présence de rayons ultra-violets d’une certaine longueur d’onde, les fusibles sont reconstitués, c’est-à-dire que tous les bits de la mémoire sont à nouveau à 1. C’est
pour cette raison que l’on qualifie ce type de PROM d’effaçable.
1.4.1.4
EEPROM
Les EEPROM (Electrically Erasable read Only Memory) sont aussi des PROM effaçables, mais
contrairement aux EPROM, celles-ci peuvent être effacées par un simple courant électrique,
c’est-à-dire qu’elle peuvent être effacées même lorsqu’elles sont en position dans l’ordinateur.
Ces mémoires sont aussi appelées mémoires flash (ou ROM flash), et l’on qualifie de flashage
l’action consistant à reprogrammer une EEPROM.
1.5
Le rôle du disque dur
Le disque dur est l’organe du PC servant à conserver les données de manière permanente,
contrairement à la RAM, qui s’efface à chaque redémarrage de l’ordinateur.
Il a été inventé au début des années 50 par IBM.
1.5.1
Le fonctionnement interne
Un disque dur est constitué non pas d’un seul disque, mais de plusieurs disques rigides (en
anglais hard disk signifie disque dur ) en métal, en verre ou en céramiques empilés les uns après
les autres à une très faible distance les uns des autres.
Ils tournent très rapidement autour d’un axe (à plusieurs milliers de tours par minute actuellement) dans le sens inverse des aiguilles d’une montre.
Un ordinateur fonctionne de manière binaire, il faut donc stocker les données sous forme de 0 et
de 1, c’est pourquoi les disques sont recouverts d’une très fine couche magnétique de quelques
microns d’épaisseur, elle-même recouverte d’un film protecteur.
La lecture et l’écriture se font grâce à des têtes (head) situées de part et d’autre de chacun
des plateaux (un des disques composant le disque dur). Ces têtes sont des électroaimants qui
se baissent et se soulèvent (elles ne sont qu’à quelques microns de la surface, séparées par une
couche d’air provquée par la rotation des disques qui crée un vent d’environ 250km/h) pour
pouvoir lire l’information ou l’écrire. De plus ces têtes peuvent balayer latéralement la surface
du disque pour pouvoir accéder à toute la surface...
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
31
Fig. 1.10 – Structure d’un disque dur
Cependant, les têtes sont liées entre-elles et seulement une seule tête peut lire ou écrire à un
moment donné. On parle donc de cylindre pour pour désigner l’ensemble des données stockées
verticalement sur la totalité des disques.
L’ensemble de cette mécanique de précision est contenue dans un boitier totalement hermétique,
car la moindreparticule peut détériorer l’état de surface du disque. Vous pouvez donc voir sur
un disque des opercules permettant l’étanchéité, et la mention ”Warranty void if removed ” qui
signifie littéralement ”la garantie expire si retiré” car seul les constructeurs de disques durs
peuvent les ouvrir (dans des salles blanches : exemptes de particules).
1.5.2
La lecture et l’écriture
Les têtes de lecture/écriture sont dites ”inductives”, c’est-à-dire qu’elles sont capables de générer
un champ magnétique. C’est notamment le cas lors de l’écriture, les têtes en créant des champs
positifs ou négatifs viennent polariser la surface du disque en une très petite zone, ce qui se
traduira lors du passage en lecture par des changements de polarité induisant un courant dans
la tête qui sera ensuite transformer par un convertisseur analogique numérique (CAN) en 0 et
en 1 compréhensibles par l’ordinateur.
Les têtes commencent à inscrire des données à la périphérie du disque (piste 0), puis avancent
vers le centre. Les données sont organisées en cercles concentriques appelés ”pistes”, créées par
le formatage de bas niveau.
Yann MORÈRE
M.S.T. Télécom 1re Année
32
Cours de Système d’Exploitation UNIX
Fig. 1.11 – Notion de Piste
Les pistes sont séparées en quartiers (entre deux rayons) que l’on appelle secteurs, c’est la zone
dans laquelle on peut stocker les données (512 octets en général).
Fig. 1.12 – Notion de secteur
On appelle cylindre l’ensemble des données situées sur une même pistes de plateaux différents
(c’est-à-dire à la verticale les unes des autres) car cela forme dans l’espace un ”cylindre” de
données.
Fig. 1.13 – Notion de cylindre
On appelle cluster la zone minimale que peut occuper un fichier sur le disque. En effet le système
d’exploitation exploite des blocs qui sont en fait plusieurs secteurs (entre 1 et 16 secteurs).
Un fichier minuscule devra donc occuper plusieurs secteurs (un cluster).
1.5.3
Le mode bloc des disques durs
Le mode bloc et le tranfert 32 bits permettent d’exploiter pleinement les performances de votre
disque dur. Le mode bloc consiste à effectuer des transferts de données par bloc, c’est-à-dire par
paquets de 512 octets généralement, ce qui évite au processeur d’avoir à traiter une multitude de
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
33
minuscules paquets d’un bit. Le processeur a alors du ”temps” pour effectuer d’autres opérations.
Ce mode de transfert des données n’amalheureusement une véritable utilité que sous DOS car
Windows 95 et Windows NT utilisent leur propres gestionnaires de disque dur, ce qui rend ce
gestionnaire obsolète.
Une option du BIOS (IDE HDD block mode ou Multi Sector Transfer, ...) permet parfois de
déterminer le nombre de blocs pouvant être gérés simultanément. Ce nombre se situe entre 2
et 32. Si vous ne le connaissez pas, plusieurs solutions s’offrent à vous :
B consulter la documentation de votre disque dur
B rechercher les caractéristiques de votre disque sur Internet
B Le déterminer expérimentalement en effectuant des tests :
. exécuter scandisk sur votre ordinateur pour éliminer les erreurs
. augmenter progressivement le nombre de blocs puis faire une copie et lancer scandisk
. Si des erreurs apparaissent remettre la valeur précédente...sinon continuer
Le mode bloc peut toutefois générer des erreurs sous Windows 3.1 (à cause d’une redondance de
gestionnaire de disque dur) ou bien lors d’un gravage de CD (le tampon se vide).* La solution
consiste alors à désactiver l’un des deux gestionnaires :
B la gestion logicielle du mode 32-bit sous Windows
B le mode bloc dans le BIOS
1.5.4
Le mode 32 bits des disques durs
Le mode 32 bits (par opposition au mode 16 bits) est caractérisé par un transfert des données
sur 32 bits (Rappel : un ordinateur fonctionne avec des données binaires, c’est-à-dire avec des
zéros ou des 1, schématiquement une porte qui s’ouvre ou bien qui se ferme. Le tranfert sur 32
bits correspond à 32 portes qui s’ouvrent et se ferment simultanément. En mode 16 bits on a
deux mots (ensemble de bits) de 16 bits qui sont transmis successivement, puis assemblés).
Le gain de performance relatif au passage du mode 16 bits au mode 32 bits (pour les disques
durs) est généralement insignifiant. Quoi qu’il en soit il n’est la plupart du temps plus possible
de choisir le mode, car la carte-mère dértermine seule le type de mode à adopter en fonction
du type de disque dur branché sur l’interface E-IDE.
La détermination automatique du mode 32 bits peut toutefois ralentir les lecteurs de CD-ROM
IDE dont la vitesse est supérieure à 24x lorsqu’ils sont seuls sur une nappe IDE. En effet, dans le
cas où le lecteur de CD-ROM est seul sur le port, le BIOS peut ne pas détecter sa compatibilité
avec le mode 32 bits (puisqu’il cherche un disque dur) auquel cas il passe en mode 16 bits. Le
taux de transfert est alors en dessous du taux de transfert annoncé par le constructeur d’où
une grande déception de son possesseur...
Heureusement, il existe une solution : brancher sur la même nappe que le lecteur de CD-ROM
un disque dur supportant le mode 32 bits, ce qui aura pour effet d’activer le mode .
1.5.5
L’interface SCSI
L’interface SCSI est une interface qui permet la prise en charge d’un nombre important d’unités
(disques durs, CD-ROM, Graveur, scanner, ...), c’est-à-dire plus d’une dizaine simultanément.
Elle est beaucoup utilisée pour sa stabilité notamment au niveau du taux de transfert. En
effet, c’est un adaptateur SCSI (carte adaptatrice sur un emplacement PCI ou ISA ou bien
directement intégré sur la carte-mère pour les configurations haut de gamme) qui se charge
de la gestion et du transfert des données avec un microprocesseur dédié. Le microprocesseur
Yann MORÈRE
M.S.T. Télécom 1re Année
34
Cours de Système d’Exploitation UNIX
central est alors relégué de ses activités concernant le flux de données, il ne communique qu’avec
la carte SCSI.
Ainsi chaque contrôleur SCSI a ses propres caractéristiques (fréquence, ...), le BIOS n’a donc
aucune influence sur les performances de l’interface SCSI étant donné qu’elle possède elle-même
son propre BIOS. Il est toutefois possible d’optimiser cette interface en faisant évoluer le BIOS
de la carte SCSI.
1.5.6
Le serial ATA
Dans les débuts de la micro-informatique, on pratiquait essentiellement l’interface série, considérée comme la plus simple à réaliser. C’est ainsi que l’on reliait les claviers et les imprimantes
aux machines. La vitesse de transfert de l’information augmentant, l’interface parallèle s’imposa, qu’il s’agisse de l’imprimante, du disque dur ou du lecteur de CD-ROM. Les sorties série
des PC furent de plus en plus réservées aux périphériques dotés de performances modestes :
clavier, track-ball, douchette (lecteur de codes-barres), etc.
La fréquence de fonctionnement des composants s’élevant sans cesse, et les vitesses de transfert augmentant toujours, l’interface série fait un retour en force pour des raisons techniques
(problème de synchronisation des signaux propagés en parallèle). On la trouve dans l’USB (versions 1 et 2) pour connecter les périphériques externes, dans le FireWire (nom commercial de
IEEE 1394) pour relier les caméscopes numériques et les disques durs externes aux ordinateurs,
et dans le FibreChannel pour déporter les dispositifs de stockage externe et créer un SAN
(Storage Area Network).
Il n’est donc pas surprenant qu’on la trouve demain dans la nouvelle interface ATA (SATA), et
après-demain (vers 2004) dans la nouvelle mouture de l’interface SCSI, appelée Serial Attached
SCSI – SAS en abrégé.
A l’heure où nous écrivons ces lignes (avril 2003), on ne trouve pas encore sur le marché de
micro-ordinateur utilisant l’interface Serial ATA, encore appelée SATA. Mais quelques modèles
de disque dur et de carte-mère sont disponibles, ce qui permet aux spécialistes de se faire la
main. Des études peu nombreuses, mais bien documentées, ont déjà été publiées sur le web,
dont celle de Tom’s Hardware Guide (12 août 2002), et celle plus récente de The Tech Report
(19 mars 2003). Il en ressort que, pour l’instant, ouvrir son porte-monnaie pour s’offrir le Serial
ATA ne sert à rien – si ce n’est à dire que l’on s’est mis à jour avant les autres, et que l’on fait
partie des pionniers (bref, que l’on est ”tech savvy”). C’est pourquoi les pages web – encore rares
– qui traitent de la nouvelle interface, mentionnent principalement ses avantages secondaires
(voir par exemple Explosive Labs) :
B les câbles sont beaucoup plus minces, les connecteurs plus petits. Ils sont plus faciles à
monter, ils prennent moins de place dans la machine, la ventilation se fait mieux ;
B il n’y a plus de cavalier à installer ou de micro-interrupteur (dip) à basculer pour déclarer
le périphérique comme maı̂tre ou comme esclave ;
B les disques durs peuvent être connectés et déconnectés sans arrêter l’ordinateur (hot plug) ;
B la longueur maximale du câble (entre carte-mère et disque) est plus grande (1 m contre
0,6 m) ;
B les connecteurs sont plus petits et plus faciles à utiliser (blind mate) ;
B des adaptateurs arrivent sur le marché, qui permettent d’utiliser les anciens disques durs
avec les nouvelles cartes-mères (l’inverse ne sera sans doute pas possible).
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
1.5.6.1
35
Serial ATA
Les premiers micro-ordinateurs équipés en standard de la nouvelle interface Serial ATA doivent
faire leur apparition sur le marché à la fin de l’année 2003. Il faudra sans doute 1-2 ans pour
que cette nouvelle interface s’impose à la totalité des machines.
1.5.6.2
Serial Attached SCSI
De parallèle, l’interface SCSI va, à son tour, devenir série et, par la même occasion, compatible
avec le Serial ATA. Les premiers matériels ne sont pas attendus sur le marché avant 2004.
1.5.6.3
L’avenir
A en croire les constructeurs, les premiers micro-ordinateurs utilisant la nouvelle interface Serial
ATA devraient faire leur apparition sur le marché vers la fin de l’année en cours (2003). Il
s’agira, dans un premier temps, des modèles haut de gamme uniquement. La présence de cette
nouveauté sera sans doute utilisée comme argument pour essayer de réveiller un marché qui est
en croissance lente. Les fabricants de disques durs ne s’attendent pas à recevoir des commandes
conséquentes avant le début de l’année 2004. En effet, il faudra compter un à deux ans pour
que la nouvelle interface se répande dans toute la gamme des PC. Comme nous l’avons déjà
signalé, l’ATA est utilisé pour les PC, et le SCSI pour les serveurs et les stations de travail.
Il n’y a pas de raison pour que le passage de l’ATA d’une interface parallèle à une interface
série modifie cette situation, parce que le SCSI deviendra bientôt, lui aussi, une interface série
(Serial Attached SCSI) ; les premières réalisations sont attendus sur le marché en 2004 au plus
tôt. Ce nouveau SCSI devrait posséder toutes les propriétés de l’ancien. De plus, il devrait être
compatible avec le Serial ATA, ce qui facilitera la cohabitation de disques SATA et SAS sur la
même machine.
1.5.7
Les caractéristiques du disque
Le taux de transfert est la quantité de données qui peuvent être lues ou écrites sur le disque
en un temps donné. Il s’exprime aujourd’hui en Méga-Octets par seconde
Le temps de latence (aussi appelé délai rotationnel) représente le temps entre lequel le disque
a trouvé la piste et où il trouve les données.
Le temps d’accès est le temps que met la tête pour aller d’une piste à la piste suivante (elle
doit être la plus petite possible).
Le temps d’accès moyen est le temps que met le disque entre le moment où il a reçu l’ordre
de fournir des données et le moment où il les fournit réellement.
La densité radiale est le nombre de pistes par pouce (tpi : Track per Inch)
La densité linéaire est le nombre de bits par pouce sur une piste donnée (bpi : Bit per Inch)
La densité surfacique est le rapport de la densité linéaire sur la densité radiale (s’exprime
en bit par pouces carré)
1.6
Périphérique interne
Sur un PC on peut connecter des périphériques internes. Les périphériques internes sont connectés à l’intérieur du PC, c’est-à-dire sur les ports AGP, PCI, ou ISA de la carte-mère Il s’agit
Yann MORÈRE
M.S.T. Télécom 1re Année
36
Cours de Système d’Exploitation UNIX
principalement :
B de la carte vidéo (indispensable) qui permet de fournir l’image au moniteur
B de la carte son qui permet d’avoir le son sur le PC
B d’un modem interne
B de la carte réseau (qui permet d’interconnecter plusieurs ordinateurs)
B de cartes TV, Capture d’image, Radio ...
1.6.1
Les cartes accélératrices 2D
Les cartes 2D n’ont pas changé de principe depuis leur création. Chaque puce possède de
nombreux circuits qui permettent d’exécuter de nombreuses fonctions :
B déplacement des blocs (curseur de la souris par exemple)
B tracé de lignes
B tracé de polygones
Ainsi, les performances des cartes 2D n’évoluent plus depuis quelques temps.
Leurs performances sont tributaires du type de mémoire utilisée sur la carte (les mémoires
SGRAM ou WRAM, mémoires vidéo spécifiques à 10 ns, donnent des résultats bien meilleurs
que la mémoire EDO (60 ns))
La fréquence du RAM-DAC (RAM Digital Analogic Converter), ainsi que la quantité de mémoire vidéo ne permettent en rien d’avoir de meilleures performances, elles permettent juste
d’avoir un meilleur taux de rafraichissement (nombre d’images par seconde) et de pouvoir accéder à des résolutions plus grandes.
1.6.2
Les cartes accélératrices 3D
Le domaine de la 3D est beaucoup plus récent, donc plus porteur. On arrive à des puissances
de calculs sur PC supérieures à celles de certaines stations de travail.
Le calcul d’une scène 3D est un processus qui se décompose grossièrement en quatre étapes :
B le script : mise en place des éléments
B la geométry : création d’objets simples
B le setup : découpage en triangles 2D
B le rendering : C’est le rendu, c’est-à-dire le plaquage des textures
Ainsi, plus la carte accéleratrice 3D calcule elle-même ces étapes, plus l’affichage est rapide. Les
premières puces n’effectuaient que le rendering, laissant le processeur s’occuper du reste.
Depuis, les cartes possèdent un ”setup engine” qui prend en charge les deux dernières étapes.
A titre d’exemple, un Pentium II à 266 Mhz qui calcule les trois premières étapes peut calculer
350 000 polygones par secondes, lorsqu’il n’en calcule que deux, il atteint 750 000 polygones
par seconde.
Cela montre à quel point ces cartes déchargent le processeur.
Le type de bus est lui aussi déterminant. Alors que le bus AGP n’apporte aucune amélioration
dans le domaine de la 2D, les cartes utilisant ce bus plutôt que le bus PCI sont beaucoup plus
performantes. Cela s’explique par le fait que le bus AGP est directement relié à la mémoire
vive, ce qui lui offre une bande passante beaucoup plus grande que le bus PCI.
Ces produits de haute technologie ont maintenant besoin de la même qualité de fabrication que
les processeurs, ainsi que des gravures allant de 0.35 µm à 0.25 µ :m.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
1.6.3
37
Glossaire des fonctions accélératrices 3D et 2D
Terme
2D Graphics
Définition
Affiche une représentation d’une scène selon 2 axes de référence (x et y)
Affiche une représentation d’une scène selon 3 axes de référence (x,y, et
3D Graphics
z)
Le monde est composé d’objets opaques, translucides et transparents.
L’alpha blending est une manière d’ajouter des informations de transparence à des objets translucides. Cela est fait en effectuant un rendu
des polygones a travers des masques dont la densité est proportionnelle
à la transparence des objets. La couleur du pixel résultant est une comAlpha blending
binaison de la couleur du premier plan et de la couleur de l’arrière-plan.
L’alpha a généralement une valeur comprise entre 0 et 1 calculée de la
manière suivante :
nouveau pixel=(alpha)*(couleur du premier pixel)+(1-alpha)*(couleur du
second pixel)
C’est un canal supplémentaire pour stocker l’information de transparence
Alpha buffer
(Rouge-Vert-Bleu-Transparence).
Anti-aliasing ap- Technique permettant de faire apparaitre les pixels de façon moins crénepelé aussi anti- lée.
crénelage)
Effets atmosphé- Effets tels que le brouillard ou bien l’effet de distance, qui améliorent le
rique
rendu d’un environnement.
Bitmap
Image pixel par pixel
Permet de fluidifier le passage d’un pixel d’un endroit à un autre (lors
Bilinear filtering
d’une rotation par exemple)
C’est l’une des fonctions d’accélération les plus importantes, elle permet
de simplifier le déplacement d’un bloc de données, en prenant en compte
BitBLT
les particularités de la mémoire-vidéo. Elle est par exemple utilisée lors
du déplacement d’une fenêtre
Blending
Combinaison de deux images en les ajoutant bit-à-bit
Une fonction du bus PCI permettant de recevoir directement des inforBus Mastering
mations de la mémoire sans transiter par le processeur
Une méthode pour faire du mappage (enveloppage) avec des textures
(texture mapping). Elle prend en compte la valeur de Z pour mapper les
Correction
de polygones. Lorsqu’un objet s’éloigne de l’objectif, il apparaı̂t plus petit
perspective
en hauteur et en largeur, la correction de perspective consiste à dire que
le taux de changement dans les pixels de la texture est proportionnel à la
profondeur.
Depth Cueing
Baisse l’intensité des objets s’éloignant de l’objectif
Permet d’archiver des images de qualité 24-bit dans des tampons plus
Dithering
petits (8 ou 16 bits). Le dithering utilise deux couleurs pour en créer une
seule
Une méthode utilisant deux tampons, une pour l’affichage, l’autre pour
Double buffering le calcul du rendu, ainsi lorsque le rendu est fait les deux tampons sont
échangés.
Flat
shading
Assigne une couleur uniforme sur un polygone. L’objet ainsi rendu appaou
Constant
rait de façon facettisée.
shading
Utilise la fonction blending pour un objet avec une couleur fixe (plus il
Fog
s’éloigne de l’objectif, plus cette fonction est utilisée)
Yann MORÈRE
M.S.T. Télécom 1re Année
38
Cours de Système d’Exploitation UNIX
Les caractéristiques d’un affichage utilisant des phosphores sont nonlinéaires : un petit changement de la tension à basse tension crée un changement dans l’affichage au niveau de la brillance, ce même changement
Gamma
à plus haute tension ne donnera pas la même magnitude de brillance.
La différence entre ce qui est attendu et ce qui est mesuré est appelée
Gamma
Gamma Correc- Avant d’être affichées, les données doivent être corrigées pour compenser
tion
leGamma
Algorithme (portant le nom du français qui l’a inventé) permettant un
Gouraud
Shalissage des couleurs par interpolation. Il assigne une couleur à chaque
ding
(lissage
pixel d’un polygone en se basant sur une interpolation de ses arêtes, il
Gouraud)
simule l’apparence de surfaces plastiques ou métalliques.
Façon mathématique d régénérer des informations manquantes ou endomInterpolation
magées. Lorsqu’on agrandit une image par exemple, les pixels manquants
sont régénérés par interpolation.
C’est un tampon fait pour mémoriser une ligne vidéo
Line Buffer
Algorithme (portant le nom du français qui l’a inventé) permettant un
lissage des couleurs par interpolation. Il assigne une couleur à chaque
Lissage Gouraud
pixel d’un polygone en se basant sur une interpolation de ses arêtes, il
simule l’apparence de surfaces plastiques ou métalliques.
Algorithme (portant le nom de Phong Bui-Tong) permettant un lissage
des couleurs en calculant le taux de lumière en de nombreux points d’une
Lissage Phong
surface, et en changeant la couleur des pixels en fonction de la valeur. Il
est plus gourmand en ressources que le lissage Gouraud
C’est un mot provenant du latin ”Multum in Parvum” qui signifie ”Plusieurs en un”. Cette méthode permet d’appliquer des textures de difféMIP Mapping
rentes résolutions pour des objets d’une même image, selon leur taille
et leur distance. Cela permet entre autre de mettre des textures de plus
hautes résolutions lorsqu’on se rapporche d’un objet.
C’est le fait de réduire un espace en 3-Dimension en un espace en 2Projection
Dimension
Tranforme une image en pixels
Rasterisation
Rendu (Rende- C’est le fait de créer des images réalistiques sur un écran en utilisant des
ring)
modèles mathématiques pour le lissage, les couleurs ...
Rendering
en- Partie matérielle ou logicielle chargée de calculer les primitives 3D (Généralement des triangles)
gine
Le fait de calculer des graphiques en 3D peut-être divisé en 3 parties :
Tesselation ou la facettisation, la géométrie et le rendu. La facettisation est la partie
consistant à découper une surface en plus petites formes, en la découpant
facettisation
(souvent en triangles ou en quadrilatères)
Consiste à stocker des images constituées des pixels (texels), puis à enTexture
Mapvelopper des objets 3D de cette texture pour obtenir une représentation
ping
plus réaliste des objets
Tri-linear filte- Basé sur le principe du filtrage bilinéaire, le filtrage trilinéaire consiste à
ring
faire une moyenne de deux niveaux de filtrage bilinéaire.
Partie de la mémoire qui stocke la distance de chaque pixel à l’objectif.
Z-buffer
Lorsque les objets sont rendus à l’écran, le rendering engine doit supprimer les surfaces cachées.
C’est le fait de supprimer les faces cachées en utilisant les valeurs stockées
Z-buffering
dans le Z-buffer
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
1.6.4
39
Qu’est-ce qu’une carte réseau ?
Les cartes réseau (appelées Network Adapter Card en anglais) constituent l’interface entre
l’ordinateur et le câble du réseau. La fonction d’une carte réseau et de préparer, d’envoyer et de
contrôler les données sur le réseau. Pour préparer les données à envoyer, la carte réseau utilise
un transceiver qui transforme les données parallèles en données séries. Chaque carte dispose
d’une adresse unique, qui lui permet d’être différenciée de toutes les autres cartes du réseau.
Les cartes réseau disposent de paramètres qu’il faut configurer. Parmi eux figurent l’interruption
matérielle (IRQ), l’adresse de base du port E/S et l’adresse de base de la mémoire (DMA).
Pour garantir la compatibilité entre l’ordinateur et le réseau, la carte doit être adaptée à l’architecture du bus de données de l’ordinateur et avoir le type de connecteur approprié au câblage.
Chaque carte est conçue pour s’adapter à un certain type de câble. Certaines cartes comprennent plusieurs connecteurs d’interfaces (à paramétrer soit avec les cavaliers, soit avec les
DIP, soit de façon logicielle).
NB : Certaines topologies réseau propriétaires utilisant la paire torsadée ont recours au connecteur RJ-11. Ces topologies sont parfois appelées pré-10BaseT.
Enfin pour garantir cette compatibilité entre ordinateur et réseau, la carte doit être compatible
avec la structure interne de l’ordinateur (architecture du bus de données) et avoir un connecteur
adapté à la nature du câblage.
1.6.5
Quel est le rôle de la carte réseau ?
Une carte réseau sert d’interface physique entre l’ordinateur et le câble. Elle prépare pour
le câble réseau les données émises par l’ordinateur, les transfère vers un autre ordinateur et
contrôle le flux de données entre l’ordinateur et le câble. Elle traduit aussi les données venant
du câble et les traduit en octets afin que l’Unité Centrale de l’ordinateur les comprenne. Ainsi
une carte réseau est une carte d’extension s’insérant dans un connecteur d’extensions (slot).
1.6.6
La préparation des données
Les données se déplacent dans l’ordinateur en empruntant des chemins appelés Bus . Plusieurs chemins côte à côte font que les données se déplacent en parallèle et non en série (les
unes à la suite des autres).
B Les premiers bus fonctionnaient en 8 bits (8 bits de données transportés à la fois)
B L’ordinateur PC/AT d’IBM introduit les premiers bus 16 bits
B Aujourd’hui, la plupart des bus fonctionnent en 32 bits
Toutefois sur un câble les données circulent en série (un seul flux de bits), en se déplaçant
dans un seul sens. L’ordinateur peut envoyer OU recevoir des informations mais il ne peut
pas effectuer les deux simultanément. Ainsi, la carte réseau restructure un groupe de données
arrivant en parallèle en données circulant en série (1 bit).
Pour cela, les signaux numériques sont transformés en signaux électriques ou optiques susceptibles de voyager sur les câbles du réseau. Le dispositif chargé de cette traduction est le
Transceiver.
Yann MORÈRE
M.S.T. Télécom 1re Année
40
1.6.7
Cours de Système d’Exploitation UNIX
Le rôle d’identificateur
B La carte traduit les données et indique son adresse au reste du réseau afin de pouvoir être
distinguée des autres cartes du réseau.
B Adresses : définies par l’IEEE (Institute of Electrical and Electronics Engineer) qui attribue
des plages d’adresses à chaque fabriquant de cartes réseau.
B Elles sont inscrites sur les puces des cartes : procédure appelée Gravure de l’adresse sur la
carte . Par conséquent, chaque carte a une adresse UNIQUE sur le réseau.
1.6.8
Les autres fonctions de la carte réseau
L’ordinateur et la carte doivent communiquer afin que les données puissent passer de l’un vers
l’autre. L’ordinateur affecte ainsi une partie de sa mémoire aux cartes munies d’un Accès Direct
à la Mémoire (DMA : Direct Access Memory).
La carte indique qu’un autre ordinateur demande des données à l’ordinateur qui la contient.
Le bus de l’ordinateur transfère les données depuis la mémoire de l’ordinateur vers la carte
réseau.
Si les données circulent plus vite que la carte ne peut les traiter, elles sont placées dans la
mémoire tampon affectée à la carte (RAM) dans laquelle elles sont stockées temporairement
pendant l’émission et la réception des données.
1.6.9
Envoi et contrôle des données
Avant que la carte émettrice envoie les données, elle dialogue électroniquement avec la carte
réceptrice pour s’accorder sur les points suivants :
B Taille maximale des groupes de données à envoyer
B Volume de données à envoyer avant confirmation
B Intervalles de temps entre les transmissions partielles de données
B Délai d’attente avant envoi de la confirmation
B Quantité que chaque carte peut contenir avant débordement
B Vitesse de transmission des données
Si une carte plus récente, donc plus perfectionnée, communique avec une carte plus lente, elles
doivent trouver une vitesse de transmission commune. Certaines cartes ont des circuits leur
permettant de s’adapter au débit d’une carte plus lente.
Il y a donc acceptation et ajustement des paramètres propres à chacune des deux cartes avant
émission et réception des données.
1.6.10
Paramètres de configuration de la carte
Les cartes réseau sont munies d’options de configuration. Entre autres :
B Interruption (IRQ) : Dans la plupart des cas, ce sont les IRQ 3 et 5 qui sont attribués
aux cartes réseau. L’IRQ 5 est même conseillé (s’il est disponible !) et la plupart des cartes
l’utilisent comme paramètre par défaut.
B Adresse de base du port d’entrée/sortie (E/S) : Chaque périphérique doit utiliser une adresse
de base différente pour le port correspondant. Les numéros de port suivants (en notation
hexadécimale) sont souvent attribuables à une carte réseau, sauf s’ils sont déjà pris.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
41
B Adresse de base de la mémoire : Elle désigne un emplacement de la mémoire vive (RAM) de
l’ordinateur. La carte utilise cet emplacement comme tampon pour les données qui entrent
et qui sortent. Ce paramètre est parfois appelé adresse de début (RAM Start Address).
En général, l’adresse de base de la mémoire pour une carte réseau est D8000. Le dernier 0
est parfois supprimé pour certaine carte réseau. Il est essentiel de prendre soin de ne pas
sélectionner une adresse de base déjà utilisée par un autre périphérique. A noter toutefois
que certaines cartes réseau n’ont pas de réglage pour l’adresse de base de la mémoire car
elles n’utilisent pas les adresses RAM de la machine.
Remarque : il est possible de configurer la carte de manière logicielle. Les paramètres doivent
correspondre avec la disposition des cavaliers ou des commutateurs DIP (Dual Inline Package)
situés sur la carte réseau. Les réglages sont fournis avec la documentation de la carte. Beaucoup
de cartes récentes sont en PnP (Plug and Play). Cela dispense de configurer la carte à la main
mais peut parfois être gênant (apparition de conflits) auquel cas il est généralement agréable
de pouvoir désactiver l’option PnP et configurer la carte ”à la main”.
Yann MORÈRE
M.S.T. Télécom 1re Année
Cette page est laissée blanche intentionnellement
Chapitre 2
Introduction aux systèmes
d’exploitation
2.1
Introduction
Pour qu’un ordinateur soit capable de faire fonctionner un programme, il faut que la machine
puisse effectuer un certain nombre d’opérations préparatoires pour assurer les échanges entre
l’unité centrale, la mémoire, et certains périphériques. Or, les périphériques varient d’un ordinateur à un autre, particulièrement sur un PC. Il faut donc des pilotes (instructions servant à
piloter un périphérique) différents selon l’ordinateur.
C’est le système d’exploitation qui assure ces tâches. C’est un programme qui établit les liens
entre le matériel, l’utilisateur et les applications (traitement de texte, jeu ...). Il permet de
dissocier les programmes du matériel, ce qui simplifie grandement la création de logiciels.
D’autre part, le système d’exploitation fournit un certain nombre d’outils pour gérer la machine.
Il assure l’initialisation du système après une mise sous tension (appelée RESET). Grâce à des
routines (drivers ou gestionnaires de périphériques) il peut gérer les périphériques, en assurant
des opérations aussi simple que l’affichage des caractères à l’écran ou bien la lecture du clavier,
mais aussi le pilotage d’une imprimante ou d’un scanner...
Fig. 2.1 – Principe du Système d’exploitation
En effet, les périphériques d’entrée-sortie (par exemple les cartes d’extension) varient d’un modèle d’ordinateur à un autre, il faut donc un système qui puisse unifier l’écriture des instructions
gérant le matériel. Ainsi lorsqu’un programme désire afficher des informations à l’écran, il n’a
pas besoin d’envoyer des informations spécifiques à la carte graphique (il faudrait que chaque
programme prenne en compte la programmation de chaque carte...), il envoie les informations
au système d’exploitation, qui se charge de les transmettre au périphérique concerné...
43
44
Cours de Système d’Exploitation UNIX
La communication avec le système d’exploitation s’établit par l’intermédiaire d’un langage
de commandes et un interpréteur de commandes, cela permet à l’utilisateur de piloter les
périphériques en ignorant tout des caractéristiques du matériel qu’il utilise, de la gestion des
adresses physiques...
2.2
Systèmes multi-tâches
Les système d’exploitation multi-tâches permettent de partager le temps du processeur pour
plusieurs programmes, ainsi ceux-ci sembleront s’exécuter simultanément.
Pour réaliser ce processus, les applications sont découpées en séquence d’instructions que l’on
appelle tâches ou processus. Ces tâches seront tour à tour actives, en attente, suspendues ou
détruites, suivant la priorité qui leur est associée ou bien séquentiellement.
Un système est dit préemptif lorsqu’il possède un ordonnanceur (aussi appelé planificateur ),
qui répartit, selon des critères de priorité le temps machine entre les différentes tâches qui en
font la demande.
Le système est dit à temps partagé lorsqu’u n quota de temps est alloué à chaque processus
par l’ordonnancer. Cela est notamment le cas des systèmes multi-utilisateurs qui permettent à
plusieurs utilisateurs d’utiliser simultanément sur une même machine des applications similaires
(le système est alors dit ”système transactionnel”) ou différentes. Dans ce cas, le système
alloue à chaque utilisateur une tranche de temps.
2.3
Systèmes multi-processeurs
Ces systèmes sont nécessairement multi-tâches puisqu’on leur demande d’une part de pouvoir
exécuter simultanément plusieurs applications, mais surtout d’organiser leur exécution sur les
différents processeurs (qui peuvent être identiques ou non). Ces systèmes peuvent être soit
architecturés autour d’un processeur central qui coordonne les autres processeurs, soit avec des
processeurs indépendants qui possèdent chacun leur système d’exploitation, ce qui leur vaut de
communiquer entre eux par l’intermédiaire de protocoles.
2.4
Les types de systèmes d’exploitation
On distingue actuellement deux types de systèmes d’exploitation : les systèmes 16 bits et les
systèmes 32 bits.
Système
Codage
DOS
16 bits
16/32
Windows3.1
bits
Windows95/98/Me32 bits
WindowsNT/2000 32 bits
Unix
32 bits
VMS
32 bits
M.S.T. Télécom 1re Année
Monoutilisateur
X
Multiutilisateur
X
X
X
X
X
Monotâche
X
Multitâche
non préemptif
préemptif
préemptif
préemptif
préemptif
5 octobre 2003
Cours de Système d’Exploitation UNIX
2.5
45
Notions de fichier
Un fichier est une suite d’informations binaires, c’est-à-dire une suite de 0 et de 1. Ce fichier peut
être stocké pour garder une trace de ces informations. Un fichier texte est un fichier composé
de caractères stockés sous la forme d’octets.
Ce fichier est enregistré sous la forme ”nom du fichier.ext”.
”.ext” représente l’extension, c’est un moyen de reconnaı̂tre le type de programme avec lequel
ce fichier peut être ouvert (attention cela ne garantit pas le type de fichier : lorsque l’on change
l’extension on ne change pas le type de fichier !).
La longueur du nom et de l’extension peut varier suivant le système d’exploitation :
B 8 caractères pour le nom et 3 pour l’extension sous DOS et Windows 3.1
B 256 caractères pour le nom et l’extension sous Windows 95, 98 et NT
Ainsi lorsque vous visualisez sous DOS ou Windows 3.1 un fichier provenant de Windows 9x,
celui-ci aura un nom tronqué comportant les 6 premiers caractères du nom suivi de x oû x
représente un chiffre qui est incrémenté à chaque fois qu’un fichier porte le même nom. C’està-dire que si un fichier nommé ”fichie 1” existe déjà il nommera le suivant ”fichie 2” ...
De plus, un fichier contient un en-tête qui permet de stocker des informations supplémentaires,
comme le type de fichier et surtout la taille du fichier. Il contient aussi un caractère de fin
de fichier signalant que les informations situées au-delà de ce caractère ne font plus partie du
même fichier.
Quoi de plus idiot que de mettre dans l’en-tête du fichier la taille du fichier puisqu’on la connait
me direz-vous ?
Voici deux exemples qui vous démontreront son utilité
2.5.1
Les fichiers corrompus
Il vous est forcément déjà arrivé de télécharger un fichier sur Internet, et que Microsoft Internet
Explorer plante ou bien que le serveur qui héberge se fichier coupe la communication.
Si ce fichier est un fichier texte, il ne vous manquera que la fin du texte, par contre si celui-ci
est un fichier exécutable (un programme) son exécution pourrait très bien être dangereuse car
il manque des informations. Le système d’exploitation compare donc sa taille réelle à la taille
indiquée dans l’en-tête pour vérifier l’intégrité du fichier.
2.5.2
Infection par un virus
Si jamais votre fichier est infecté par un virus, celui-ci va ajouter des lignes de code dans le
fichier, ainsi l’information concernant la taille du fichier située dans l’en-tête ne correspondra
plus (à moins que ce petit malin de virus ne pense à modifier l’en-tête, ce qui peut arriver de
nos jours), ainsi il pourra être repéré.
2.6
Notion de répertoire
Un répertoire est un objet informatique qui contient des fichiers.
Imaginez une grande commode qui contient des tiroirs dans lesquels pourraient se trouver des
fichiers et d’autres tiroirs ... un répertoire peut donc contenir :
B des fichiers
Yann MORÈRE
M.S.T. Télécom 1re Année
46
Cours de Système d’Exploitation UNIX
B d’autres répertoires
2.7
Relations relatives
Si l’on reprend notre exemple de la commode, la plus grande entité contenant d’autres entités
est la commode : elle ne peut pas se trouver dans un tiroir !
Dans le cas de l’informatique on appelle cette entité la racine : c’est l’entité de plus bas
niveau, car elle peut contenir des fichiers ou des répertoire mais ne peut pas se trouver dans un
répertoire elle-même !
On la note ”\” dans la plupart des systèmes d’exploitation (pour y aller sous DOS on tapera
”cd \”.
Il en existe une seule par disque (ou du moins par partition ...).
Un répertoire qui en contient un autre est dit ”répertoire parent”. Lorsque d’un répertoire on
veut aller au répertoire parent, celui-ci est désigné par ”..” sur la plupart des sytèmes (on tapera
donc ”cd ..” sous DOS ou sous UNIX pour accéder à un répertoire parent).
Voyons voir la représentation d’un système de répertoires sous Windows 95 :
Fig. 2.2 – Système de répertoire de Win 95
Ici, répertoire2 est parent de répertoire20 et répertoire21. ”répertoire2” vis-àvis de ”répertoire20”
pourra être notée ”..”
La racine (d :\) vis-à-vis de ”répertoire20” pourra être notée ”../..” car deux relations de parenté
les séparent.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
2.8
47
La création du DOS
Le DOS est le système d’exploitation le plus connu, sa version la plus commercialisée est celle
de Microsoft, baptisée MS-DOS (il en existe d’autres comme DR-DOS). MS-DOS a vu le jour
en 1981 lors de son utilisation sur un IBM PC.
2.8.1
Présentation du système
Le DOS, comme tout système d’exploitation, contrôle les activités de l’ordinateur. Il gère des
opérations telles que la circulation, l’affichage, et l’entrée de données entre les divers éléments
constitutifs du système.
Le rôle du DOS est d’interpreter les commandes saisies au clavier par l’utilisateur.
Ces commandes permettent d’effectuer les tâches suivantes :
B la gestion des fichiers et des répertoires
B la mise à jour des disques
B la configuration du matériel
B l’optimisation de la mémoire
B l’exécution des programmes
Ces commandes sont tapées à l’invite, c’est-à-dire dans le cas de MS-DOS (Microsoft DOS, le
plus connu) une lettre d’unité suivi d’une barre oblique inverse (antislash), ce qui donne A :\
ou C :\ par exemple.
Fig. 2.3 – Invite MS-Dos
Pour exécuter une commande il suffit de taper la commande puis d’appuyer sur ENTREE.
2.8.2
Les fichiers sous DOS
Sur un ordinateur les informations sont stockées dans des fichiers. Lorsqu’on exécute un programme, MS-DOS traite les informations situées dans le fichier et les transmet au système.
Sous MS-DOS chaque fichier peut être aussi volumineux que possible, cependant le nom que
vous lui donnez est soumis à des restrictions, on ne peut en effet lui donner un nom d’une
longueur maximale de 8 caractères plus 3 pour l’extension.
De plus, les fichiers ne doivent contenir que les caractères suivants :
B lettres de A à Z
B chiffres de 0 à 9
B caractères spéciaux suivants : $̂ ! # % & - ( ) ’
Enfin, les noms de fichiers ne doivent pas contenir :
B de blanc (espace)
B de virgule
B de barre oblique inverse
B de point (hormis le point qui sépare le nom de l’extension)
et ils ne doivent pas non plus appartenir à la liste de noms réservés :
Yann MORÈRE
M.S.T. Télécom 1re Année
48
B
B
B
B
B
B
B
B
B
B
B
B
Cours de Système d’Exploitation UNIX
CLOCK$
CON
AUX
COM1
COM2
COM3
COM4
LPT1
LPT2
LPT3
NUL
PRN
2.8.3
L’organisation des fichiers en répertoires
Un disque dur peut contenir, suivant sa taille, plusieurs milliers de fichiers. Cependant, plus leur
nombre est élevé plus il est difficile de les gérer, il devient alors nécessaire de les stocker dans
des répertoires. Sous MS-DOS, les noms de ces répertoires sont soumis aux mêmes restrictions
de longueur que les fichiers (8 caractères pour le nom, ainsi qu’une extension de 3 caractères.
2.8.4
Commandes MS-DOS
Description
Commande
liste le contenu d’un répertoire
dir
change de répertoire
cd
répertoire parent
cd ..
crée un nouveau répertoire
mkdir
supprime un répertoire
deltree
copy, xcopy
copie de fichier
move
déplacement de fichier
supprime le fichier
del
type
affiche le contenu du fichier
type |more
affiche le contenu du fichier avec des pauses
help
aide sur la commande demandée
print
imprime le fichier demandé
attrib (-/+r, -/+a, - change les attributs d’un fichiers (- désactive, + active, r : lecture
/+s, -/+h)
seule, a : archive, s : système, h : fichier caché
format
formatte le lecteur demandé
label
donne un nom de volume à un lecteur
ver
donne le numéro de version
2.8.5
Lister les fichiers
C’est la commande dir qui permet de lister les fichiers. Cependant ce listage peut être fait selon
un très grand nombre de critères (ordre alphabétique, date ...), ces critères peuvent être choisis
par l’intermédiaire de paramètres :
B /p : affiche le résultat en marquant des pauses à chaque page
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
49
B /w : affiche le résultat sous forme de 5 colonnes
B Pour afficher les fichiers selon un critère
. /ah : affiche les fichiers cachés
. /ad : affiche uniquement les répertoires
. /ar : affiche les fichiers en lecture seule
. /aa : affiche les fichiers prêts à être archivés
. /as : affiche les fichiers système
B Pour afficher les fichiers selon un ordre trié
. /QN : trié par nom
. /QS : trié par taille croissante
. /QE : trié par extension
. /QD : trié par date
. /QG : trié par répertoire en tête
. /QA : trié par attribut
B /s : affiche les fichiers d’un répertoire et de tous ses répertoires
B /b : présentation abrégée
B /l : affiche le résultat en minuscules
B /u : affiche des informations supplémentaires
2.8.6
Utiliser des caractères génériques
Pour une commande donnée intervenant sur des fichiers, au lieu de donner un nom de fichier, on
peut utiliser des caractères génériques spécifiant les fichiers dont le nom commence par certains
caractères :
B le caractère ”*” remplace des parties de nom ou d’extension
B le caractère ”?” remplace un caractère (comme le caractère blance au scrabble)
Ainsi la commande ”dir *.com” listera tous les fichiers dont l’extension est .com.
La commande ”dir b*.*” listera tous les fichiers dont le nom commance par un b
2.8.7
Envoyer les informations envoyées à l’écran dans un fichier
Grâce à une redirection ( >> ) on peut par exemple envoyer le résultat d’un dir dans un
fichier :
La commande ”dir >> test.txt” enverra le résultat du listage dans le fichier test.txt qu’il
créera dans le répertoire courant s’il n’existe pas, ou auquel le résultat sera concaténé (ajouté
à la suite de) si le fichier existe déjà.
Yann MORÈRE
M.S.T. Télécom 1re Année
Cette page est laissée blanche intentionnellement
Chapitre 3
Caractéristiques générales du système
Unix
Unix est un système d’exploitation multitâche et multi-utilisateurs, et à ce titre, il a introduit
des concepts nouveaux, principalement en matière de gestion des processus et des fichiers.
L’objectif de cette partie est de présenter les particularités de ce système. Nous allons dans un
premier temps rappeler dans les grandes lignes l’évolution d’Unix afin de mieux comprendre
certains aspects des versions actuelles et leurs origines.
3.1
Évolution d’Unix
L’histoire du système d’exploitation Unix commence en 1969 aux Bell Labs (laboratoires de
recherche en informatique d’A.T.&T.). C’est pour répondre aux besoins des ingénieurs de la
société que Ken Thompson écrit un système interactif, qui met l’accent sur les utilitaires de
développement de logiciels, le partage de fichiers et les outils de documentation qui allait devenir
Unix. Ce nom d’Unix a été attribué par opposition au système Multics (vaste projet du M.I.T.).
La première évolution interne marquante d’Unix a été sa ré-écriture (par Ken Thompson et
Denis Ritchie) en langage C, lequel a été inventé pour la cause en 1971. En 1975, le système
Unix (v6) est distribué aux universités et aux centres de recherches. La principale université qui
va travailler sur Unix est l’université de Berkeley, qui va produire ses propres versions appelées
BSD pour Berkeley Software Distribution. En 1979, les Bell Labs sortent leur version appelée
v7, avec en particulier, l’ajout de nouveaux utilitaires et un effort en matière de portabilité.
Cette version est la première à être diffusée dans le monde industriel.
On peut dire qu’elle est à l’origine du développement du marché Unix.
Au début des années 80, une modification de la législation américaine autorise A.T.&T. à
commercialiser lui-même ses propres produits qui sont alors appelés System. C’est à cette
époque que Microsoft propose sa propre version d’Unix appelée Xenix et destinée aux microordinateurs.
A Berkeley, les efforts portent sur l’intégration des protocoles réseaux TCP/IP, la gestion de
la mémoire avec l’introduction de la pagination (alors qu’A.T.&T. reste fidèle quand à lui à
la segmentation), la modification de certains paramètres du système (taille des blocs, nombre
des signaux...) et l’ajout d’outils (l’éditeur vi, un interpréteur de commandes csh...). Cette
prolifération des systèmes Unix a engendré un certain nombre de problèmes de compatibilité
car chacun allant dans sa propre direction, il y avait alors plusieurs systèmes Unix. Plusieurs
51
52
Cours de Système d’Exploitation UNIX
facteurs vont alors jouer pour canaliser et recentrer l’offre Unix : la complexité croissante des
systèmes et l’action des utilisateurs.
En 1983, A.T.&T. sort la version System V, qui est issue de la v7 et qui sera enrichie au fur et à
mesure par de nouvelles versions (releases). Dans le même temps, Berkeley, propose sa version
4.2 BSD (avec les fonctionnalités réseau) qui va servir de base pour de nombreux constructeurs
(Sun Microsystems, Digital...) et lui permettre d’entrer dans le monde industriel.
Ces deux produits marquent la fin des systèmes Unix-like en raison de leur importance par
rapport à la version de référence, la v7. La fin des années 80 est marquée par une croissance
sans précédent du nombre de systèmes Unix dans le domaine des systèmes d’exploitation.
Tous les constructeurs proposent une solution Unix à leur catalogue (on trouve alors trois
grandes familles : les versions basées sur System V, celles issues de BSD et les versions Xenix
sur micro).
Le début des années 90 est marqué par le regroupement des constructeurs au sein de deux organisations : l’U.I. (Unix International) créée à partir de l’accord entre A.T.&T. et Sun Microsystems d’une part et l’O.S.F. d’autre part. Le premier accord a comme objectif la convergence
entre les versions System V et 4.2 BSD. La première réalisation est la version System VR4
(System V release 4) qui réalise la synthèse entre SunOS (version Unix de Sun conçue sur la
base BSD), Xenix et System V. L’O.S.F., quand à lui s’est fixé comme objectif de réaliser un
système, appelé OSF/1, construit sur un noyau Unix et intégrant les fonctionnalités apportées
par ses membres (multifenêtrages, graphismes, bases de données...) de manière à disposer d’un
environnement ouvert commun aux différentes architectures des constructeurs. La principale
réalisation à l’heure actuelle de l’O.S.F. est Motif qui définit un ensemble de normes au niveau
de la présentation sur un environnement multifenêtré.
3.2
Philosophie d’Unix
Conçus à l’origine comme un environnement de développement, Unix est aujourd’hui un système
complet intégrant un grand nombre de fonctionnalités organisées en couches logicielles. en
dehors de cette structure modulaire, Unix se caractérise également par les concepts introduits
en matière de gestion de fichiers et de gestion des processus.
3.2.1
Caractère universel d’Unix
Une des premières caractéristiques d’Unix est son écriture (à hauteur de 95%) en langage C,
permettant ainsi une portabilité sur la plupart des architectures en allant des micro-ordinateurs
jusqu’aux supercalculateurs. Mais cet atout ne suffit pas à lui seul à expliquer l’expansion
d’Unix. Sa popularité est, en fait, due à sa conception modulaire avec des interfaces bien définies
ainsi que la disponibilité d’outils simples qui coexistent entres elles. Alors que les autres systèmes
d’exploitation ressemblent à des ensembles monoblocs et relativement fermés, la conception du
système repose sur différents niveaux bien distincts : le noyau, un interpréteur de commandes
(le shell), des bibliothèques et un nombre important d’utilitaires.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
53
Fig. 3.1 – Structure d’un système Unix
3.2.1.1
Le noyau
Le noyau est la partie centrale d’Unix. Il est résident, il se charge en mémoire au démarrage. Sa
structure est modulaire, ce qui rend aisées ses manipulations en termes de portabilité et l’utilisation des services qu’il offre via les primitives (ou appels systèmes). Ce fonctionnement par
primitives permet de résoudre les problèmes d’accès concurrents aux informations du système.
En effet, les appels systèmes font entrer l’exécution en mode noyau. Dans ce mode, le processus
est assuré de garder le processeur jusqu’au retour au mode utilisateur lorsque l’appel système est
terminé. Les différents noyaux Unix ont été réécrits afin de pouvoir s’adapter aux nouvelles machines multi-processeurs et de supporter le travail en temps réel. Ils sont le plus souvent réécrits
en couches : les différentes fonctions du noyau sont implémentées dans des couches logicielles
différentes qui communiquent entre elles par messages. La tendance actuelle est également de
garder le moins de fonctions possibles dans le noyau afin de constituer un micro-noyau. Les
fonctions écartées sont rejetées dans les modules exécutés en mode utilisateur.
L’interface entre le noyau Unix et les applications est définit par une bibliothèque (libc.a pour
le langage C par exemple). Elle contient les modules permettant d’utiliser les primitives mais
aussi des fonctions plus évoluées combinant plusieurs primitives. D’autres bibliothèques sont
utilisées pour des services spécialisés (fonctions graphiques,...).
3.2.1.2
Le Shell
L’interface utilisateur sous Unix est appelée shell. Lorsqu’un utilisateur tape des commandes
Unix, ces commandes sont reçues par le shell qui les interprète avant de lancer l’exécution de
cette commande. Le shell est une couche logicielle bien séparée du noyau. Il joue un double
rôle celui d’interpréteur de commandes et celui de langage de programmation. Ce dernier rôle
semblant parfois hermétique à des néophytes. Il existe plusieurs shells dont les plus répandus
sont :
B le Bourne Shell (sh) : le shell de base sous Unix A.T.&T.,
B le C-shell (csh) : le shell Unix BSD,
B le Korn-Shell (ksh) qui est une extension du Bourne shell. Il possède toutes les commandes
de son prédécesseur, ainsi que des commandes qui facilitent le travail de l’utilisateur comme
des outils de gestion des historiques des commandes tapées...
B le Z-shell (zsh) : extension de ksh, qui offre en particulier des modules de complétions des
nom de programme, de fichiers, de variables utilisateur et système, l’envoie de message à
l’utilisateur de correction en cas d’erreur de frappe. L’utilisateur, à l’aide des commandes
qu’il a à sa disposition, peut écrire ses propres fonctions et programmes en langage shell, ce
Yann MORÈRE
M.S.T. Télécom 1re Année
54
Cours de Système d’Exploitation UNIX
sont alors des shellscripts. Une fois ceux-ci réalisés, ils peuvent être utilisés par l’utilisateur
comme n’importe quelle commande du shell lui même.
3.2.2
Le système de gestion de fichiers
3.2.2.1
Vision générale
Sous UNIX, les fichiers sont enregistrés dans une structure hiérarchisée en arbre. Ce système
de fichiers est donc composé d’une racine et de noeuds qui sont des répertoires et des feuilles
qui sont des fichiers ordinaires qui contiennent les données et les programmes.
Au niveau de l’utilisateur, les entrées-sorties sont vues de façon uniforme c’est-à-dire avec les
mêmes commandes, la même syntaxe et les mêmes attributs qu’il s’agisse d’un fichier ou d’un
périphérique. Par exemple, la redirection d’une commande sur un fichier ou sur un périphérique
utilise la même syntaxe : commande > sortie où sortie est le nom du fichier (ordinaire ou spécial)
de redirection. Mais au niveau du noyau, ce dernier effectuera l’opération de redirection soit
sur le système de fichiers, soit sur le périphérique selon le type du fichier sortie. Cette vision
uniforme des entrées-sorties est caractérisée par un descripteur commun à tous ces éléments,
qui est appelé inode. De fait, chaque fichier Unix à un inode comprenant les attributs suivants :
B un propriétaire : celui qui a créé le fichier,
B un groupe : le groupe auquel appartient le créateur au moment où il créé le fichier,
B des droits d’accès : (voir paragraphe s’y rapportant),
B des informations générales sur la taille, la date de la dernière opération effectuée sur le fichier,
le nombre de liens sur ce fichier,...
Fig. 3.2 – Système de fichier d’un système Unix
3.2.2.2
Les droits d’accès
Les autorisations d’accès sous UNIX sont de trois ordres : accès en lecture (r), en écriture (w) et
en exécution (x). A partir de ces trois options, on pourra effectuer toutes les opérations de base
sur les fichiers (création, copie, destruction,...). Ces droits vont être donnés pour trois niveaux
d’utilisateurs : pour le propriétaire, pour le groupe auquel appartient le propriétaire et pour le
reste des utilisateurs. En ce qui concerne les répertoires, l’attribut x est nécessaire pour pouvoir
se déplacer dans ce répertoire ou pour y rechercher un fichier.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
3.2.3
Les processus
3.2.3.1
Vision générale
55
Toute action, tout programme lancé est exécuté par un processus. Le processus est donc l’unité
d’exécution pour Unix. Une commande entrée par un utilisateur peut ne pas créer de processus
(commandes internes au shell de l’utilisateur), ou en créer un ou plusieurs. Lors de l’exécution
de la commande, un processus peut être en mode utilisateur (mode normal) ou en mode noyau,
mode dans lequel il entre quand il fait un appel système (par exemple pour demander plus de
place en mémoire centrale). L’ensemble de ses processus apparaissent dans une table, consultable
par tout utilisateur du système. Cette table recense l’ensemble des processus et donne des
renseignements quand à l’utilisateur qui l’a lancé, son taux d’occupation de la mémoire centrale,
son taux d’utilisation du temps CPU de la machine, son état à l’instant de l’affichage de l’image
de la table...
3.2.3.2
Terminal de contrôle d’un processus, exécution en arrière plan
Les processus lancés par un utilisateur sont liés au terminal depuis lequel ils ont été exécutés, et
à l’utilisateur qui les a créés. Le système peut ainsi repérer les processus qui recevront un signal
d’arrêt (Ctrl C par exemple). L’ensemble des processus qui partagent un terminal s’appelle
un groupe de processus. Un utilisateur peut aussi lancer un processus en arrière plan, si par
exemple, il veut garder la main sur une fenêtre de commande et pouvoir bénéficier d’un autre
programme. Ces processus acquièrent alors une certaine indépendance vis à vis du terminal
depuis lequel ils ont été lancés : ils s’exécutent alors sans intervention de l’utilisateur et sans
que celui-ci n’ait besoin d’attendre la fin de leur exécution (type de traitement en batch). On
peut ainsi lancer plusieurs tâches simultanément. Ces processus sont alors protégés contre les
annulations par clavier (d’autres mécanismes que nous verrons par la suite permettent d’arrêter
ces processus).
D’autres processus sont quand à eux lancés par le système ou par un utilisateur en fonction de
ses besoins (cas de l’impression ou du mail), ils sont alors gérés par le système et sont appelés
des daemons.
3.2.3.3
La propriété effective et réelle d’un processus
Comme nous venons de le voir un processus à un propriétaire réel, qui est l’utilisateur qui l’a
commandé. Il peut avoir aussi un propriétaire effectif, c’est à dire l’utilisateur a qui appartient
le fichier exécutable (si le set user bit a été positionné). C’est le cas par exemple de la commande
de changement de mot passe qui nécessite l’écriture dans des fichiers protégés et dans lequel
seul l’administrateur système doit avoir le droit d’écrire. Dans ce cas là, le propriétaire réel du
processus et l’utilisateur et le propriétaire effectif root.
Yann MORÈRE
M.S.T. Télécom 1re Année
Cette page est laissée blanche intentionnellement
Chapitre 4
Présentation de l’environnement du
CESIUM
Vous avez à votre disposition un certain nombre de machines. Parmi celles-ci, certaines sont
dans le local technique (les serveurs) et d’autres sont à votre disposition (les stations de travail).
4.1
Les serveurs
Ceux-ci ont plusieurs rôles : certains ont de l’espace disque pour les comptes utilisateurs (oslo en
l’occurrence pour vous), d’autres jouent le rôle de machine d’hébergement pour les répertoires
des machines diskless (Cesium), d’autres encore sont des serveurs de fichiers et/ou d’exécution
(lisboa, madrid ou Cesium par exemple). Toutes ces machines ont entre 50 et 100 Mo de mémoire
vive et un espace disque de l’ordre de 1 à 4 Go (variable selon les besoins et les périodes).
Ces serveurs sont de plusieurs types et vont vous permettre de travailler sur des environnements
hétérogènes. Nous avons donc des serveurs de type Sun (madrid, Cesium) avec différents systèmes d’exploitation : le serveur madrid est sous Solaris 2.5 (Unix System V) et Cesium sous
SunOs 4.1.3 (Unix BSD). Lisboa quand à elle est une RISC6000 et tourne sous AIX 3.5 (System
V). Il y a aussi au sein du CESIUM un certain nombre de serveurs qui servent à l‘administration
système, ceux-ci sont des Hewlett Packard (rio, oslo, tunis...) et tournent sous HP-UX 9.05 ; ils
devront être prochainement passés sous HP-UX 10.
4.2
Les stations de travail
Vous allez travailler directement sur les stations de travail qui sont à votre disposition. Parmi
celles-ci, un certain nombre sont diskless (les Suns noir/blanc), elles doivent récupérer leur
noyau Unix ainsi que toutes leurs arborescences sur les serveurs. Vous avez aussi accès à des
terminaux X (HP couleur) qui eux vous permettent d’accéder directement à un serveur ou à
une machine autorisée. Vous pourrez aussi travailler sur les PCs sous Linux. Voila, en quelques
lignes le descriptif des matériels que vous avez à votre disposition. A ceci se rajoutent des
imprimantes (HP4 n/b) et tous les autres PCs sous Windows for Workgroup ou Windows NT
qui vous serviront à réaliser vos projets et autres TDs.
57
58
Cours de Système d’Exploitation UNIX
Fig. 4.1 – Reseau de Machine
M.S.T. Télécom 1re Année
5 octobre 2003
Chapitre 5
Utilisation du Shell
5.1
5.1.1
Introduction
Qu’est ce que le Shell
Comme nous l’avons vu précédemment, le shell est le programme interface entre l’utilisateur
et le noyau Unix. Il est indépendant du noyau. A ce sujet, vous pouvez choisir le shell que
vous voulez lors de vos sessions de travail (par contre, un shell vous est toujours affecté par
défaut pour toutes vos sessions lors de la création de votre compte). Il a plusieurs rôles : il
interprète les commandes passées par l’utilisateur afin qu’elles soient traitées par le noyau ; il
a aussi la fonction de langage de programmation, il est utile pour prototyper des applications,
pour effectuer certaines tâches simples et répétitives. Le langage des scripts pouvant paraı̂tre
compliqué au premier abord pour un non initié, on préférera utiliser le langage Perl (de plus en
plus répandu et se rapprochant du langage C, il est aussi très utilisé dans l’écriture de scripts
CGI pour tout ce qui concerne les interfaces entre les programmes utilisateurs et le langage
HTML).
5.1.2
Les différents utilisateurs
Nous allons voir dans cette partie les différents niveaux d’utilisateurs sous Unix. Quel que soit le
type d’utilisateur, il y a un certain nombre de paramètres en commun. Un utilisateur quelconque
sous Unix est repéré par son nom (login) qu’il doit taper pour pouvoir entrer dans le système.
A chaque nom, correspond un numéro d’utilisateur : l’uid.
L’uid est donc le moyen pour le système de reconnaı̂tre l’utilisateur (en ce qui concerne l’attribution de la possession d’un fichier par exemple).
Afin d’authentifier l’utilisateur, un mot de passe lui est attribué lors de la création de son
compte. Ce mot de passe est secret, il ne doit pas être divulgué à autrui. De plus, en cas
de problèmes lors de l’entrée dans le système sur le mot de passe, vérifiez le type de clavier
que vous utilisez, que vous n’êtes pas en mode majuscule, et cas échéant, si vous avez oublié
votre mot de passe, allez voir votre administrateur système afin qu’il le change. Il répond à des
conditions bien précises de création. Par exemple, au CESIUM, il vous faut donner un mot de
passe de 8 caractères avec au moins 2 caractères non alpha-numériques. L’utilisateur appartient
aussi à au moins un groupe de travail et par la même a un numéro de groupe par défaut : le gid.
En fonction de projets, et au vue de la notion de droits, un utilisateur peut donc appartenir à
plusieurs groupes d’utilisateurs.
59
60
Cours de Système d’Exploitation UNIX
Lors de la création du compte, l’administrateur système fixe un répertoire de travail par défaut
(la HOME dir) dans lequel l’utilisateur sera positionné à l’entrée dans le système. En règle
générale, le nom terminal du chemin de ce répertoire représente le nom de login de l’utilisateur.
De façon générale, l’utilisateur est propriétaire de son répertoire HOME.
Par défaut aussi, et lors de la phase de création du compte, on donne à l’utilisateur un shell
qui sera exécuté lors de l’entrée dans le système.
En résumé, à un utilisateur correspond les renseignements suivants :
B un nom de login,
B un mot de passe,
B un iud,
B un ou plusieurs groupes de travail,
B un répertoire HOME,
B un shell par défaut.
Les informations que nous venons de donner ci-dessus sont enregistrées dans le fichier :
/etc/passwd (/etc/group pour tout ce qui concerne les groupes. Pour des raisons de sécurité et
de commodité, l’administrateur utilisera des outils de gestion du système type NIS ou Kerberos.
Dans ce cas là, le fichier /etc/passwd ne contient que certaines informations sur certains
utilisateurs, le reste étant placé dans les fichiers relatifs au système de gestion utilisé.
5.1.2.1
L’utilisateur de base
Il utilise les applicatifs mis à sa disposition, il customise les applications, il possède des droits
d’accès traditionnels, il doit veiller à utiliser les ressources (disques, CPU,...) avec modération
afin de ne pas surcharger le système.
5.1.2.2
Le programmeur
Il possède le même droits que l’utilisateur de base, il a en plus la possibilité de programmer
ses propres applications, il utilise donc dans ce cas, les outils de développement installés sur le
système, il a accès aux compilateurs et aux interpréteur.
5.1.2.3
L’administrateur système
Il possède les mêmes droits que le programmeur. Son rôle est plus grand : il gère le système,
il possède des droits d’accès étendus (il peut descendre dans toutes les arborescences de son
système), il crée des comptes pour tous les utilisateurs de son serveur, il veille au bon fonctionnement général du système, il installe les outils nécessaires à la communauté, il surveille et
régularise la charge du système et des ressources de la machine.
Utilisation
L’étudiant Scott Tiger arrive au Cesium et est enregistré par l’administrateur système avec les
attributs suivants :
B nom de login : tiger
B passwd : pwd4s-t ;
B groupe : students-cesium
B uid : 10000
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
61
B home-dir : /u/students/Cesium##/tiger
B e-mail : Scott.Tigerumail.univ-metz.fr
Lorsqu’il a entré tous ces attributs dans les fichiers système, l’administrateur crée son arborescence et lui installe les fichiers de base d’environnement :
B .Xdefaults (fichier de ressources pour les clients X-Window),
B .kshrc (fichier de configuration des paramètres
B .profile (fichier de démarrage lu et exécuté par le shell),
B .mh-profile (fichier de configuration du programme xmh, servant à la lecture des mails),
B Mail (répertoire qui contiendra l’ensemble des messages reçus et la définition des masques
de saisie des mails),
B lib/X11/app-defaults (arborescence dans laquelle seront définies les fichiers de configuration
concernant l’apparence des fenêtres à l’écran),
B script (répertoire contenant les scripts de base permettant de lancer l’interface X).
Une fois ce travail effectué, Scott Tiger a la possibilité d’ouvrir une session de travail sur toutes
les machines qu’il a à sa disposition dans les salles machines du Cesium. Il commencera par être
un simple utilisateur qui customisera ses fichiers de démarrage, il deviendra très rapidement
un programmeur au fur et à mesure de l’avancement des cours (Unix, C, C++,...).
Il ne sera jamais administrateur du système.
5.1.3
Exemple de session utilisateur
Après avoir été créer votre compte, vous pouvez commencer à entrer dans le système, pour
cela, entrez votre nom de login et votre mot de passe (ces derniers sont identiques sur toutes les
machines du réseau). Après authentification, votre shell de base se lance et exécute les fichiers
/etc/profile, /.profile et /.kshrc afin de fixer vos variables d’environnement (TERM, PATH,
MANPATH...). Le répertoire HOME qui vous a été affecté devient alors le répertoire courant.
Pour lancer l’interface graphique, tapez x11.
Utilisation
Par exemple pour un utilisateur yann sur la machine ulysse :
Mandrake Linux release 8.2 (Bluebird) for i586
Kernel 2.4.18-6mdk on an i686 / tty1
ulysse login: yann
Password:
Last login: Sat Sep 21 09:45:59 on :0
[yann@ulysse yann]$
Dans le cas d’une connection graphique, nous avons la figure suivante :
Yann MORÈRE
M.S.T. Télécom 1re Année
62
Cours de Système d’Exploitation UNIX
Fig. 5.1 – Connexion en mode graphique
5.2
5.2.1
Le Shell
Entrée dans le système
Lorsqu’un terminal est allumé, les processus système sont lancés et en particulier celui qui
s’occupe de gérer l’arrivée de nouveau utilisateur (le daemon du programme login). A ce
moment, vous pouvez entrer votre nom d’utilisateur et votre mot de passe afin de démarrer
votre session.
5.2.1.1
Changer son mot de passe
Vous avez fixé votre mot de passe avec l’administrateur système le jour où vous vous êtes fait
recenser sur le réseau. Si vous souhaitez changer de mot de passe, la commande permettant de
réaliser cette opération est : passwd ou yppasswd.
Utilisation
machine$ yppasswd
Changing NIS password for USER on MACHINE.
Old password : - entrez votre mot de passe courant
New password : - entrez votre nouveau mot de passe
Retype new password : - rentrez votre mot de passe
NIS entry has changed on MACHINE.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
63
Les règles concernant le mot de passe ont été citées plus haut. Attention toutefois, le système
Unix les majuscules et les minuscules ne sont pas équivalentes.
5.2.1.2
Format général des commandes
La syntaxe générale des commandes Unix est :
commande options... arguments...
Les options sont le plus souvent précédées par un tiret -. L’ordre des options est le plus
souvent indifférent et peuvent être regroupées derrière un seul tiret. Les arguments quand à eux
peuvent être absents et, dans ce cas là, ils prennent des valeurs par défaut.
Par exemple :
B ls
B ls -lia
B ls -l /net
B ls *foo*
5.2.1.3
stuces pour se déplacer sur la ligne de commandes :
Il existe sous Unix certains raccourcis clavier utiles pour se déplacer sur la ligne de commandes
ou pour rappeler une commande précédemment lancée. Voici une liste succincte de ces raccourcis :
B Ctrl-A : pour revenir en début de ligne,
B Ctrl-E : pour aller à la fin de la ligne,
B Ctrl-F : pour se déplacer vers la droite,
B Ctrl-B : pour se déplacer vers la gauche,
B Ctrl-D : pour effacer le caractère à droite du curseur,
B Backspace : pour effacer le caractère à gauche du curseur,
B Ctrl-K : pour supprimer la fin de la ligne,
B Ctrl-P : pour revenir à la commande précédente,
B Ctrl-N : pour passer à la commande suivante (dans la liste des commandes),
B Ctrl R + début de la commande : pour retrouver une commande dans la liste,
B Ctrl-S : pour interrompre la transmission des caractères entre le programme et l’écran,
B Ctrl-Q : pour libérer tous les caractères depuis le Ctrl S précédent,
B Ctrl-C : pour interrompre l’exécution d’un programme,
B Ctrl-Z : permet de suspendre un processus en avant plan, d’exécuter une commande ou de
placer le job en arrière plan (+bg) ou de le ramener en avant plan (+fg).
5.2.1.4
Le manuel en ligne
Une aide en ligne est disponible sous Unix et la plupart des commandes sont présentes dans ce
manuel. La commande man permet de consulter ce manuel. La syntaxe générale est la suivante :
man [section] nom\_de\_la\_commande
Si la page existe (si elle est trouvée dans l’une des arborescences définies dans la variable
MANPATH), le système la formate et l’affiche à l’écran. En règle générale, la réponse a beaucoup
de problèmes se trouve dans ces pages. N’hésitez donc jamais à les consulter.
Yann MORÈRE
M.S.T. Télécom 1re Année
64
Cours de Système d’Exploitation UNIX
Attention toutefois, certaines commandes peuvent apparaı̂tre plusieurs fois dans la liste des
pages de manuel. En effet, certaines fonctions sont utilisées dans plusieurs cas de figures ; par
exemple, la commande if..then..else peut être aussi bien une commande Unix, qu’une commande
C, ou C++ ou Perl... dans ce cas, il existe donc plusieurs pages se référant à cette commande
(plusieurs sections contiennent des informations sur cette fonction), il faut faire donc attention
à appeler la bonne page de manuel. Pour cela, il existe un moyen de connaı̂tre toutes les pages
de manuel se référant à un mot clé donné :
man -k mot-clé
l’utilisateur verra une ligne pour chaque entrée du manuel concernant ce mot-clé.
Utilisation
Dans le cas de la recherche par exemple portant sur la commande file (cette commande a
plusieurs utilités dans plusieurs cas sur le système) qui sous Unix détermine le type d’un fichier,
selon l’ordre des chemins dans la variable MANPATH, on obtient :
FILE(1)
FILE(1)
NAME
file - determine file type
SYNOPSIS
file [ -bciknsvzL ] [ -f namefile ] [ -m magicfiles ] file
...
file -C [ -m magicfile ]
DESCRIPTION
This manual page documents version 3.37 of the
mand.
file
com
File tests each argument in an attempt to classify it.
There are three sets of tests, performed in this order:
filesystem tests, magic number tests, and language tests.
The first test that succeeds causes the file type to be
printed.
.......
on voit donc ici que cette page ne correspond pas aux attentes de l’utilisateur. Il doit donc
consulter le manuel par mot-clé et trouver le fichier qui correspond à ses besoins :
[yann@ulysse cours_unix]$ man -k file | more
access
(1) - determine whether a file can be accessed
access
(2) - check user’s permissions for a file
acct
(5) - execution accounting file
addftinfo
(1) - add information to troff font files for use with gro
ff
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
65
addmntent [getmntent] (3) - get file system descriptor file entry
addr2line
(1) - convert addresses into file names and line numbers
anytopnm
(1) - convert an arbitrary type of image file to PBM, PGM,
or PPM
autom4te
(1) - Generate files and scripts thanks to M4
autoreconf
(1) - Update generated configuration files
basename
(1) - strip directory and suffix from filenames
BIO_append_filename [BIO_s_file] (3) - FILE bio
BIO_get_fd [BIO_s_fd] (3) - file descriptor BIO
BIO_get_fp [BIO_s_file] (3) - FILE bio
BIO_new_fd [BIO_s_fd] (3) - file descriptor BIO
BIO_new_file [BIO_s_file] (3) - FILE bio
BIO_new_fp [BIO_s_file] (3) - FILE bio
bioradtopgm
(1) - convert a Biorad confocal file into a portable graym
ap
BIO_read_filename [BIO_s_file] (3) - FILE bio
BIO_rw_filename [BIO_s_file] (3) - FILE bio
--Encore-.......
FILE(1)
FILE(1)
NAME
file - determine file type
SYNOPSIS
file [ -bciknsvzL ] [ -f namefile ] [ -m magicfiles ] file
...
file -C [ -m magicfile ]
DESCRIPTION
This manual page documents version 3.37 of the
mand.
file
com
File tests each argument in an attempt to classify it.
There are three sets of tests, performed in this order:
filesystem tests, magic number tests, and language tests.
The first test that succeeds causes the file type to be
printed.
The type printed will usually contain one of the words
text (the file contains only printing characters and a few
common control characters and is probably safe to read on
lines 1-25
Yann MORÈRE
M.S.T. Télécom 1re Année
66
5.2.1.5
Cours de Système d’Exploitation UNIX
Sortie du système
La commande exit ou Ctrl-D permettent de sortir de la session ou de quitter la fenêtre xterm
en cours d’utilisation. Si vous êtes en mode fenêtré, sortez d’abord du window manager utilisé
(par défaut mwm) et ensuite quittez votre session.
5.2.2
Syntaxe de commande
Nous allons voir dans cette partie la plupart des commandes de bases utiles pour manipuler les
fichiers et observer le système.
5.2.2.1
Fonctionnement de l’exécution d’une commande
Lorsqu’il a la main, un utilisateur peut lancer l’exécution d’une commande en tapant son nom
après le prompt. La commande est alors exécutée. Comment fonctionne cette exécution ? Il
existe une variable d’environnement : PATH qui contient l’ensemble des chemins les plus
utilisés.
Utilisation
[yann@ulysse cours_unix]$ echo $PATH
/bin:/usr/bin:/usr/bin/X11:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/home/yann/bin
[yann@ulysse cours_unix]$
Comme sous DOS, cette variable contient tous les chemins où le système peut trouver les
commandes les plus utilisées par le demandeur. Le parcours se fait de gauche à droite. Il faut
donc faire attention, au cas où un exécutable est présent sur le système sous plusieurs versions
différentes à bien positionner la hiérarchie des répertoires en fonction de vos besoins.
Il est aussi conseillé, pour des raisons de sécurité évidente de ne pas mettre dans la liste des
chemins sa HOME directory au cas où un fichier piégé y ait été placé (exemple : cheval de
troie ’ls’ ou de démarrage de session...).
Donc, seules les commandes qui peuvent être trouvées via la variable PATH sont exécutées
directement. Pour toutes les autres, il est nécessaire d’indiquer au shell le chemin absolu (ou
relatif) pour atteindre cette commande.
5.2.2.2
Commandes liées à l’arborescence de fichiers
5.2.2.2.1 Nom d’un fichier (nom absolu / nom relatif) Pour fixer le nom d’un fichier,
il n’y a pas comme sous DOS par exemple de contraintes quand à la syntaxe. Tous les caractères
à l’exception de / sont autorisés. Le / servant de délimiteur de répertoires.
Deux notions sont liées au nom du fichier : son chemin absolu et son chemin relatif.
B Le chemin absolu est composé du nom du fichier précédé par le chemin d’accès à ce fichier
depuis la racine de l’arborescence (exemple : /u/students/Cesium##/user/.profile) ;
B chemin relatif, quand à lui est une troncature de cette arborescence par rapport au répertoire
courant (exemples : /.profile, ../other user/.profile, ./.oracle). En ce qui concerne les chemins
relatifs, un certain nombre de raccourcis sont utilisés :
. . désigne le répertoire courant,
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
67
. .. désigne le répertoire parent du répertoire courant,
. ~/ est la contraction de votre HOME directory.
5.2.2.2.2 Visualisation de l’arborescence La commande ls permet d’obtenir la liste
des fichiers d’un répertoire ou d’une arborescence de répertoires. Un certain nombre d’options
permettent d’afficher plus ou moins d’informations sur ces fichiers et répertoires.
Les principales options sont les suivantes :
B -l : format détaillé (cf. partie utilisation),
B -a : liste aussi les fichiers qui commencent par . (et qui normalement n’apparaissent pas
dans la liste normale),
B -d : si l’argument est un répertoire, la commande liste seulement son nom et pas les fichiers
qu’il contient,
B -t : affiche en triant par date de dernière modification
B -R : listage récursif des sous-répertoires,
B -F : fait suivre le nom des répertoires par un /, le nom des exécutables par une * et le
nom des liens symboliques par un @...
B -g : pour afficher les informations sur le groupe...
Utilisation
[yann@ulysse yann]$ ls
background/
cours_unix/
cours_unix.tar.gz
Documents/
evolution/
fleche_selector_right.gif
fleche_selector_up.gif
GNUstep/
Image1.gif
[yann@ulysse yann]$
Image2.gif
lasc.tar.gz
latex/
lien.html
login.txt
lyx/
nedit_macros/
nedit_macros.tar.gz
newfile1.lyx
[yann@ulysse yann]$ ls -lia
total 3868
34836 drwxr-xr-x
50 yann
275809 drwxr-xr-x
4 root
33829 -rw-r--r-1 yann
33828 -rw-r--r-1 yann
33827 -rw-r--r-1 yann
33826 -rw-r--r-1 yann
700411 drwxr-xr-x
2 yann
116018 drwxrwxr-x
4 yann
34849 -rw------1 yann
34838 -rw-r--r-1 yann
34839 -rw-r--r-1 yann
34840 -rw-r--r-1 yann
422990 drwxr-xr-x
3 yann
Yann MORÈRE
yann
root
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
newfile1.lyx~
newfile1.tex
openoffice/
php/
playdivx*
public_html/
scilab.hist
so52.xpm
tableau.html
12288
4096
259
26
94
21
4096
4096
12986
24
524
124
4096
sep
mai
jun
jun
jun
jun
sep
ao^
u
sep
mai
mai
mai
ao^
u
23
24
16
16
24
24
17
13
21
24
24
24
30
tableau.html~
temp/
test.html
test.html~
tgif.xpm
tmp/
07:29
10:43
19:13
19:13
09:44
09:44
19:19
19:13
10:54
10:43
20:40
10:43
19:22
./
../
.aspell.english.prepl
.aspell.english.pws
.aspell.fr.prepl
.aspell.fr.pws
.axyftp/
background/
.bash_history
.bash_logout
.bash_profile
.bashrc
.bluefish/
M.S.T. Télécom 1re Année
68
Cours de Système d’Exploitation UNIX
278650 drwx-----294671 drwxr-xr-x
36092 -rw-r--r-34848 -rw-rw-r-68126 drwxr-xr-x
568804 drwxr-xr-x
34844 -rw-rw-r-262047 drwxr-xr-x
........
2
3
1
1
5
2
1
3
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
4096
4096
2084483
20
4096
4096
0
4096
jui
sep
sep
mai
mai
mai
mai
jui
30
23
21
24
31
24
24
1
11:10
08:09
10:50
11:49
14:24
11:49
11:48
09:17
.cddbslave/
cours_unix/
cours_unix.tar.gz
.desktop
.dia/
Documents/
.drakfw
.emacs.d/
La première information concerne le type du fichier. Cet indicateur peut prendre les valeurs
suivantes :
B - pour un fichier ordinaire,
B d pour un répertoire,
B b pour un fichier spécial de type bloc (périphériques...),
B c pour un fichier spécial de type caractère (disque, streamer...),
B l pour un lien symbolique,
B s pour une socket.
La seconde concerne les droits (utilisateur-propriétaire, groupe de travail, autres utilisateurs),
vient ensuite le nombre de liens sur le fichier (ou le répertoire), puis le propriétaire effectif, la
taille, la date de dernière modification et le nom du fichier.
5.2.2.2.3 Se déplacer dans l’arborescence La commande permettant de se déplacer
dans une arborescence est la commande :
cd [répertoire]
Cette commande fonctionne avec des chemins absolus et des chemins relatifs (il suffit que les
répertoires existent).
Seule, elle sert à se replacer dans le répertoire par défaut (la HOME directory).
Avec certains shell, la commande cd - permet de revenir au répertoire où l’utilisateur se trouvait
précédemment.
droits d’accès
utilisateurs
lecture = r
propriétaire = u
écriture = w
groupe = g
exécutable = x
autre = o
pas d’accès = tous = a
commandes
ajouter = +
enlever = initialiser = =
Tab. 5.1 – Tableau récapitulatif des droits d’accès
5.2.2.2.4 Afficher le répertoire courant La commande permettant à tout moment de
connaı̂tre le répertoire dans lequel on se trouve est :
pwd
Il est souvent intéressant de connaı̂tre à un moment donné exactement le lieu où l’on se trouve
(avant d’effectuer une suppression par exemple).
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
69
5.2.2.2.5 Type d’un fichier Il est possible sous Unix de connaı̂tre aussi le type de fichier
sur lequel on travaille. En dehors de l’extension qui peut être trompeuse, tous les fichiers ont une
en-tête permettant de déterminer leur type (répertoire, exécutable, texte ASCII, programme
C, document Postscript...). L’ensemble de ces en-têtes est défini dans le fichier /etc/magic. La
commande :
file nom_de_fichier
permet de visualiser le type du fichier en question.
Utilisation
[yann@ulysse yann]$ file playdivx
playdivx: Bourne shell script text executable
[yann@ulysse yann]$ file Image1.gif
Image1.gif: GIF image data, version 89a, 233 x 150,
[yann@ulysse images]$ file scifa2.eps
scifa2.eps: PostScript document text conforming at level 3.0 - type EPS
[yann@ulysse images]$
5.2.2.2.6 Affichage du contenu d’un fichier La commande : cat [-v] [fichier...]
sert à afficher le contenu d’un fichier si ce dernier est passé en paramètres. Sinon, c’est l’entrée
standard qui est prise par défaut (clavier ou résultat d’une autre commande). L’option -v
permet d’afficher les caractères non visibles.
Cette commande permet aussi de concaténer des fichiers :
cat fichier1 fichier2 > fichier3
cette opération permet de créer un fichier (fichier3) en concatenant les fichiers fichier1 et
fichier2. Les notions de redirection seront plus amplement abordées dans la partie langage de
commande.
Le seul inconvénient de cet outil est qu’il affiche le contenu du fichier dans sa totalité (sans
possibilité simple de contrôler le défilement par pages).
5.2.2.2.7 Affichage page à page La commande : more [fichier...] permet d’afficher
le contenu d’un fichier page à page. Le fichier par défaut est l’entrée standard (en général le
résultat de la commande située avant le |).
Utilisation
[yann@ulysse yann]$ ls -lR | more
.:
total 3516
drwxrwxr-x
4 yann
yann
drwxr-xr-x
3 yann
yann
Yann MORÈRE
4096 ao^
u 13 19:13 background/
4096 sep 23 08:30 cours_unix/
M.S.T. Télécom 1re Année
70
-rw-r--r-drwxr-xr-x
drwx------rw-r--r--rw-r--r-drwxrwxr-x
-rw-r--r--rw-r--r--rw-r--r-drwxr-xr-x
-rw-r--r--rw-rw-r-drwxr-xr-x
drwxr-xr-x
-rw-r--r--rw-rw-r--rw-rw-r--rw-rw-r-......
Cours de Système d’Exploitation UNIX
1
2
6
1
1
5
1
1
1
10
1
1
17
2
1
1
1
1
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
2084483
4096
4096
72
101
4096
1097
914
1375899
4096
477
171
4096
4096
1547
740
716
538
sep
mai
jun
sep
sep
mai
sep
sep
sep
jui
ao^
u
sep
jui
ao^
u
ao^
u
jui
jui
jui
21
24
24
17
17
24
10
10
17
29
30
21
23
30
30
7
7
7
10:50
11:49
10:19
15:41
08:30
11:49
18:45
18:45
19:18
17:11
19:21
09:54
21:58
12:45
12:45
19:13
19:13
19:13
cours_unix.tar.gz
Documents/
evolution/
fleche_selector_right.gif
fleche_selector_up.gif
GNUstep/
Image1.gif
Image2.gif
lasc.tar.gz
latex/
lien.html
login.txt
lyx/
nedit_macros/
nedit_macros.tar.gz
newfile1.lyx
newfile1.lyx~
newfile1.tex
(redirige la sortie de la commande ls -lR vers le more)
[yann@ulysse yann]$ more .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
TEXINPUTS=${HOME}/.lyx/layouts/texmf//:${HOME}/.lyx/layouts/texmf/tex//:/usr/share.texmf//:
/texmf/tex//:.
BSTINPUTS=/usr/share/texmf/bibtex/bst:/usr/share/texmf/bibtex/bst//:${HOME}/.lyx/layouts/te
/bst:.
BIBINPUTS=/usr/share/texmf/bibtex/bib:${HOME}/.lyx/layouts/texmf/bibtex/bib:.
export PATH TEXINPUTS BIBINPUTS BSTINPUTS
unset USERNAME
[yann@ulysse yann]$
(affiche page à page le fichier .bash profile)
En bas de chaque page de la commande more, un certain nombre d’action sont possibles :
B h : permet d’afficher la liste des commandes disponibles à ce niveau,
B [espace] : permet de passer à la page suivante,
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
71
B [entrée] : permet de passer à la ligne suivante,
B b : permet de revenir à la page précédente,
B i[espace] : permet d’afficher i lignes en plus,
B = : permet d’afficher le numéro de la dernière ligne affichée,
B /mot : permet de se positionner 2 lignes avant la prochaine occurrence du mot mot,
B n : continue la recherche précédente (identique à /),
B :f : permet d’afficher le nom du fichier et le numéro de dernière ligne affichée,
B . : effectue de nouveau la commande précédente,
B q ou Q : permet de sortir de more.
La notion de pipe (|) sera aussi développée plus amplement dans la partie langage de commande.
5.2.2.2.8 Copier des fichiers Lorsque l’on travaille, il est parfois pratique de recopier des
fichiers d’un répertoire vers un autre. Dans ce cas, il faut utiliser la commande :
cp [-i] fichier_source fichier_destination
Pour cela, l’utilisateur doit avoir le droit de lecture sur le fichier source, et si le fichier destination
existe, il doit avoir le droit d’écriture sur ce dernier. Dans ce cas, le contenu du fichier destination
est écrasé par celui du fichier source (l’option -i demande confirmation de l’opération) et le fichier
destination garde ses attributs propriétaire, groupe et droits d’accès.
Si le fichier destination n’existe pas et si l’utilisateur a le droit d’écriture sur le répertoire
courant, le fichier destination est créé, son propriétaire et son groupe sont celui de l’utilisateur
qui effectue l’opération. Ses autorisations sont celles du fichier source.
La commande : cp [-i] fichiers... répertoire copie les fichiers dans le répertoire.
5.2.2.2.9 Déplacer/renommer des fichiers Il est aussi nécessaire parfois de pouvoir
renommer ou déplacer des fichiers. La commande a lancer est alors :
mv fichier_source fichier_destination
ou
mv fichiers... répertoire
Elle permet de déplacer un ou plusieurs fichiers dans un répertoire avec possibilité de changer
leur nom.
Utilisation
[yann@ulysse yann]$ mv fic fic.old
(on renomme le fichier ”fic” en ”fic.old”)
[yann@ulysse yann]$ mv fic* rep
(on déplace l’ensemble des fichiers commençant par fic dans le répertoire ”rep”).
[yann@ulysse yann]$ mv fic rep/fic1
(on déplace le fichier ”fic” dans le répertoire ”rep” et on le renomme ”fic1”).
Yann MORÈRE
M.S.T. Télécom 1re Année
72
Cours de Système d’Exploitation UNIX
5.2.2.2.10 Supprimer un fichier : Pour pouvoir supprimer un fichier sous Unix, il faut
avoir l’autorisation d’écriture sur le répertoire contenant ce fichier, mais pas forcément la lecture
ou l’écriture sur le fichier lui-même (si l’utilisateur n’a pas l’autorisation d’écriture sur le fichier,
une confirmation lui est demandée). Attention : la suppression d’un fichier est une opération
sensible sous Unix. En effet, elle agit physiquement, c’est à dire qu’il n’y a pas de moyen facile
de pouvoir récupérer un fichier supprimé par erreur. Cette opération nécessite de faire appel
aux sauvegardes (type sauvegardes temporaires ou directement aux bandes).
La commande à lancer est la suivante :
rm [options] fichiers...
Si le fichier est un lien vers un autre, le lien est supprimé mais pas le fichier destination du lien.
Voici les principales options de la commande rm :
B -f : pas de demande de confirmation quand on a pas d’autorisation d’écriture sur le fichier,
B -r : détruit tout le contenu du répertoire en paramètre ainsi que le répertoire lui-même,
B -i : option par défaut à la création du compte, cette option demande confirmation pour
chaque fichier. En cas de suppression en cascade, il peut être intéressant d’enlever cette
option, attention toutefois à être sûr de l’opération et à bien remettre cette option pour les
suppressions suivantes.
Utilisation
[yann@ulysse yann]$ rm -i fichier
rm: remove fichier?
[yann@ulysse yann]$ rm fichier (si pas de droit d’écriture sur fichier)
rm: override protection 444 for fichier?
5.2.2.2.11 Changer les droits Nous avons vu précédemment que chaque fichier avait des
attributs propres et définis. Il existe un moyen pour l’utilisateur propriétaire d’un fichier de
changer les droits sur ce même fichier.
La commande à utiliser est :
chmod mode fichiers...
Le paramètre mode indique quelles sont les autorisations données, il peut être symbolique
ou absolu :
B mode symbolique : le paramètre mode prend la forme suivante :
[qui]... op permissions..., [op permissions...]
. * qui désigne celui ou ceux qui recevront ces autorisations (u pour le propriétaire,
. g pour le groupe, o pour les autres et a pour les trois précédents - c’est l’option par
défaut),
. * op sert à indiquer l’ajout ou la suppression de droits (+ pour ajouter, - pour enlever),
. * les permissions à donner sont r, w et x
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
73
B mode absolu : le paramètre mode est représenté par un nombre octal composé de 3 chiffres.
Le premier chiffre représente les autorisations du propriétaire, le second ceux du groupe et
le troisième correspond à tous les utilisateurs. Pour calculer chacun des chiffres, on ajoute
les valeurs des autorisations (4 pour lecture, 2 pour écriture, 1 pour exécution).
Utilisation
[yann@ulysse yann]$ chmod u+rwx,go+rx fichier
donne tous les droits au propriétaire, et les droits en lecture et exécution aux autres utilisateurs.
La commande précédente est équivalente à :
[yann@ulysse yann]$ chmod 755 fichier
Un autre moyen de fixer ces autorisations au moment de la création du fichier est d’utiliser le
bon masque. La commande :
umask [nnn]
donne cette valeur par défaut. Chaque fois qu’un nouveau fichier sera créé par l’utilisateur, il
aura comme droits le complément à 7 du nombre passé à umask.
Par exemple : umask 026 est équivalent à un chmod 751 sur le nouveau fichier créé.
5.2.2.2.12 Les liens symboliques Afin d’éviter de dupliquer des informations et, aussi
pour des raisons d’administrations, il est parfois utile de réaliser un lien symbolique entre
fichiers ou entre répertoires. Par exemple, lorsqu’on travaille avec des binaires qui évoluent
relativement vite et dont ont dispose de plusieurs versions, il est utile de créer ce type de fichier
(xemacs bouge relativement vite, une version tous les trimestres environ, il est utile de réaliser
un lien entre la version courante et un fichier xemacs par exemple...)
La commande à utiliser est :
ln -s fichier_source fichier_lien
A noter, les droits sur le fichier lien n’ont aucun sens et ne peuvent être modifiés, il a en fait
les attributs du fichier source.
5.2.2.2.13 Recherche de fichiers dans l’arborescence Il est utile de pouvoir retrouver
certains fichiers dans l’arborescence du système et d’effecteur certains traitements avec cette
liste de fichiers. La commande utilisée est :
find répertoires... [options...]
où répertoires... permet d’indiquer le (ou les) répertoire(s) de départ de la recherche et les
options permettent de traiter et de récupérer les données.
La commande find de nombreuses options qui permettent de rechercher des fichiers qui ont
certaines caractéristiques :
B -name modèle_nom : tous les fichiers dont le nom répond au modèle modèle_nom,
Yann MORÈRE
M.S.T. Télécom 1re Année
74
Cours de Système d’Exploitation UNIX
B
B
B
B
B
-size n : tous les fichiers dont la taille est n (en blocs de 512 octets),
-mtime n : tous les fichiers dont le nombre de jours depuis la dernière modification est n,
-atime n : tous les fichiers dont le nombre de jours depuis le dernier accès est n,
-user nom : tous les fichiers dont le propriétaire est nom,
-type t : tous les fichiers du type t (f pour un fichier ordinaire, et les autres abréviations
comme pour la commande ls -l),
B -perm nombre : tous les fichiers dont les autorisations sont de la forme nombre,
B -perm - nombre : tous les fichiers dont les autorisations sont au moins de la forme nombre...
D’autres options permettent de traiter les informations reçues :
B -print : pour afficher à l’écran le résultat de la commande,
B -exec commande \ ; : permet d’exécuter une commande sur les fichiers qui vérifient les
critères de la commande find. Ces fichiers sont passés à la commande -exec par les signes .
Attention à bien terminer la commande par \ ;
B -ok commande \ ; : effectue la même opération que ci-dessus mais demande une confirmation
de l’utilisateur avant l’exécution de la commande.
Il est possible de passer plusieurs critères de sélection des fichiers. Pour cela, il faut utiliser les
opérateurs logiques ! (négation), -o (ou) et regrouper tous ces critères dans des parenthèses.
L’opérateur et étant obtenu par juxtaposition des critères.
Utilisation
[yann@ulysse yann]$ find / -name "*info*" -print
affiche le nom de tous les fichiers de toute l’arborescence du système qui contiennent le mot
info,
[yann@ulysse yann]$ find ~ -mtime -20 -print
affiche les fichiers à partir du répertoire de l’utilisateur qui ont été modifiés dans les vingt
derniers jours,
[yann@ulysse yann]$ find /u/students ! -user X -exec ls -lia {} \;
affiche un listing détaillé de tous les fichiers qui n’appartiennent pas à l’utilisateur X dans
l’arborescence /u/students,
[yann@ulysse yann]$ find /u/students/X -perm -002 -exec ls -l {} \;
affiche un listing détaillé des fichiers de l’arborescence /u/students/X qui ont au moins l’autorisation d’écriture pour les autres,
[yann@ulysse yann]$ find . \( -name a.out -o -name core -o -name "*.o" \) -ok rm {} \;
supprime après confirmation de l’utilisateur tous les fichiers à partir du répertoire courant (et
dans tous les sous-répertoires) du type a.out, core et .o ...
5.2.2.3
Commandes liées aux répertoires
Nous venons de voir un certain nombre de commandes liées à l’arborescence de fichiers, nous
allons maintenant voir celles qui sont plus spécifiques aux répertoires.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
5.2.2.3.1
est :
75
Créer un répertoire La commande servant à créer des répertoires sous Unix
mkdir [options] répertoires...
Il suffit d’avoir le droit d’écriture dans le répertoire père. Si on veut créer une arborescence
directement, il faut utiliser l’option -p. Par exemple pour créer l’arborescence /tp_unix/td1,
taper mkdir -p tp_unix/td1.
5.2.2.3.2 Supprimer un répertoire Comme pour les fichiers, la commande rm (avec
l’option -r) permet de supprimer des répertoires. Il existe une autre commande :
rmdir répertoires...
qui elle permet de supprimer les répertoires indiqués si ceux-ci sont déjà vides.
5.2.2.3.3 Déplacer, changer le nom d’un répertoire Comme pour les fichiers, il s’agit
de la commande mv. Ceci n’est possible sous System V que si les deux répertoires ont le même
parent, et sous BSD que si les deux répertoires sont dans le même système de fichiers.
5.2.2.3.4
Copier tous les fichiers d’un répertoire La commande à utiliser est :
cp -r répertoire_source répertoire_destination
Toute l’arborescence du répertoire source est copié dans le répertoire destination. Les nouveaux
fichiers se retrouvent dans le répertoire répertoire_destination / répertoire_source.
5.2.2.4
Gestion des sorties imprimantes
Comme nous l’avons vu précédemment, vous avez la possibilité d’utiliser un certain nombre
d’imprimantes. Par défaut, vous êtes connectés l’imprimante de la salle Stroustrup ou Linus :
HP2100TN ou HP2100.
Pour son utilisation, il y a à votre disposition plusieurs commandes qui vont vous permettre de
lancer un travail d’impression, d’autres pour visualiser le contenu de la file d’attente, d’autres
encore pour enlever des travaux en attente, et enfin, nous essayerons de voir comment réagir
rapidement en cas de problèmes.
5.2.2.4.1 Imprimer un fichier : Nous savons maintenant, qu’il existe sous Unix un moyen
de connaı̂tre le type de chacun des fichiers. Il y a donc des programmes qui permettent d’imprimer des fichiers Postscript, des fichiers ascii, des fichiers .c... Nous allons voir ces commandes.
Toutes reposent sur un même concept : l’imprimante que nous avons à notre disposition est
une imprimante Postscript, il faut donc lui envoyer du code postscript. Pour cela, il existe des
outils qui permettent de traduire le fichier au format postscript.
La commande de base pour imprimer un fichier est :
lpr [options] [liste_de_fichiers]
Yann MORÈRE
M.S.T. Télécom 1re Année
76
Cours de Système d’Exploitation UNIX
Cette commande envoie le travail d’impression dans la file d’attente, le travail sera envoyé à l’imprimante par un programme daemon (lpd). Par défaut, cette commande imprime uniquement
des fichiers postscript. Si aucun fichier n’est indiqué c’est la sortie standard qui est imprimée
(cf. exemple).
Les options utiles de cette commande sont :
B -Pprinter : pour indiquer le nom de l’imprimante sur laquelle l’impression doit être effectuée,
B -h : pour supprimer la bannière d’impression (première page contenant le nom de l’utilisateur
et d’autres renseignements sur le fichier),
B #n : pour indiquer le nombre de copies à imprimer.
Cette commande va servir de base aux autres :
B a2ps nom_fichier_ascii | lpr -Pprinter permet de traduire et d’imprimer un fichier
ascii en postscript (ascii2postscript),
B c2ps nom_fichier.c | lpr -Pprinter permet de traduire et d’imprimer un fichier .c en
postscript (c2postscript),
B dvi2ps nom_fichier.dvi | lpr -Pprinter permet de traduire et d’imprimer un fichier
.dvi en fichier postscript (dvi2postscript)...
Et ainsi de suite, vous avez à votre disposition, sur les serveurs ou sur le net, un grand nombre de
traducteurs au format postscript (man2ps, gif2ps, ttf2ps...) qui fonctionneront sensiblement
de la même manière. Ces fichiers vous permettent de formater vos sorties.
N’hésitez pas à consulter les pages de man au sujet de ces programmes, il vous indiqueront la
marche à suivre pour pouvoir améliorer vos présentations.
5.2.2.4.2 Visualiser la file d’attente Maintenant que votre impression est lancée, elle est
placée dans la file d’attente. Vous avez la possibilité de consulter la liste des fichiers en attente
grâce à la commande :
lpq -Pprinter [utilisateur]
B -Pprinter : permet de sélectionner seulement les informations envoyées à printer,
B utilisateur : permet de sélectionner uniquement les travaux lancés par l’utilisateur.
Utilisation
[yann@ulysse images]$ lpq
lj4100TN is ready
no entries
[yann@ulysse images]$
5.2.2.4.3 Enlever un travail en attente Lorsque votre impression est dans la file d’attente et si vous souhaitez l’enlever de cette dernière, utilisez la commande :
lprm -Pprinter [-] [numero_job]
On ne peut supprimer les impressions d’un autre utilisateur (à moins d’être root). Lorsqu’on
supprime une requête, celle-ci est interrompue si elle a déjà commencé (une partie des données
se trouvant dans la mémoire de l’imprimante).
L’option - seule permet de supprimer toutes les requêtes que l’utilisateur a lancé.
Lorsqu’on donne un numéro de job, seul celui-ci est arrêté.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
77
5.2.2.4.4 Si il y a un problème ? Si un problème subsiste, c’est à dire si une requête
bloque la sortie des autres, supprimer cette requête de la file d’attente. A l’aide de la commande
lpc, redémarrez le daemon d’impression de l’imprimante, et laissez sortir les travaux en attente.
Reprenez la requête bloquante ultérieurement.
Utilisation
[yann@ulysse images]$ lpq
lj4100TN is ready
no entries
[yann@ulysse images]$
5.2.2.5
Commandes d’observation du système
Nous venons de voir les commandes de base permettant de travailler sur les fichiers et le répertoires. Il existe aussi certaines fonctions de base qui servent à l’observation du système :
5.2.2.5.1
Date et Heure La commande :
date [format]
permet d’afficher la date système au format précisé. Voici une liste succincte des différents
format possibles :
B %m : affichage du mois (01..12),
B %d : affichage du jour dans le mois (01..31),
B %y : affiche des deux derniers chiffres de l’année (00..99),
B %D : affichage de la date au format mm/jj/aa,
B %H : affichage de l’heure (00..23),
B %M : affichage des minutes (00..59),
B %S : affichage des secondes (00..59),
B %T : affichage de l’heure au format HH :MM :SS
B %j : affichage du numéro du jour dans l’année (001..366),
B %w : affichage du jour dans la semaine (dimanche=0),
B %a : affichage de l’abbréviation du jour (Sun..Sat),
B %h : abbréviation du mois (Jan..Dec),
B %r : affichage de l’heure au format 12h (AM/PM) ...
Utilisation
[yann@ulysse images]$ date ’+%a %d %h %y %T’
lun 23 sep 02 09:30:31
[yann@ulysse images]$ date
lun sep 23 09:30:53 CEST 2002
[yann@ulysse images]$
Yann MORÈRE
M.S.T. Télécom 1re Année
78
Cours de Système d’Exploitation UNIX
5.2.2.5.2 Identifier les utilisateurs Il est possible de savoir à tout moment qui est connecté
sur quelle machine. Il existe quelques commandes de base qui permettent d’avoir des renseignements sur son propre statut ou sur celui des autres.
La commande :
who [am i]
affiche le nom de l’utilisateur, le nom du terminal, la date et l’heure de connexion et l’écran de
contrôle de chaque utilisateur actuellement sur le système.
La commande :
w
donne les informations de who, des informations sur la charge de la machine et surtout la
dernière commande lancée par les utilisateurs.
La commande :
id
affiche les numéros et les noms de l’utilisateur et des groupes de travail auxquels il appartient.
La commande :
groups [utilisateur]
affiche la liste des groupes de travail auxquels appartient un utilisateur X. Si aucun utilisateur
n’est spécifié ceux sont les groupes auxquels appartient l’utilisateur qui a tapé la commande
qui s’affichent.
La commande :
finger [utilisateur][@machine]
permet d’avoir des informations informelles sur les utilisateurs d’une machine précisée. Si aucun
utilisateur n’est spécifié, les informations concernent tous les utilisateurs connectés. Si aucun
nom de machine n’est renseigné, les données portent sur la machine sur laquelle l’utilisateur
qui tape la commande est connecté.
La commande :
chfn
permet de modifier les informations informelles passées à la commande finger.
5.2.2.5.3 Dernières connexions au système Il est prudent de vérifier (commande aussi
très utile à l’administrateur système) que personne ne s’est connecté sur votre login en votre
absence. La commande :
last [-n] [utilisateur] [terminal]
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
79
permet d’afficher les dernières connexions au système. On peut limiter le nombre de lignes
renvoyées grâce à l’option -n (où n désigne le nombre de lignes affichées). On peut se limiter
aussi aux connexions d’un utilisateur ou aux connexions depuis un terminal.
Utilisation
[root@ulysse images]# last -2 X
wtmp begins Mon Sep 2 17:00:26 2002
[root@ulysse images]#
5.2.2.5.4 Occupation de l’espace disque Parfois, il arrive que vous receviez des messages
du système ou même de l’administrateur système vous indiquant que vous occupez trop de
place sur le disque. Il existe deux commandes qui permettent de savoir la place occupée par
une arborescence, ou de connaı̂tre la place disponible dans un système de fichiers.
La commande :
du [options] [fichiers...]
affiche le nombre de kilo-octets occupés par les fichiers (ou répertoires) passés en paramètre.
L’option -s permet de réaliser un affichage silencieux c’est à dire que seul le résultat final est
affiché (et donc pas d’affichage du taux d’occupation des fichiers intermédiaires).
La commande :
df [options] [file\_system] [fichier]
renvoie le nombre de blocs de 512 octets disponibles sur le système de fichiers spécifié. Si
aucun système de fichier n’est passé en paramètre, c’est le système de fichier du fichier (ou
du répertoire) indiqué qui sera renvoyé. Si aucun renseignement n’est spécifié, la commande df
retourne les informations sur tous les systèmes de fichiers.
Attention, les sorties de cette commande diffèrent d’un OS à un autre, validez le format de
sortie en fonction des options que vous trouverez dans le manuel.
Utilisation
[yann@ulysse images]$ du -s .
1164
.
[yann@ulysse images]$
[yann@ulysse images]$ du .
12
./.xvpics
1164
.
[yann@ulysse images]$ df .
SysFichier
1K-blocs
/dev/hda6
6000880
[yann@ulysse images]$ df
Yann MORÈRE
Utilisé la capacité disponible% Monté sur
3241756
2454296 57% /
M.S.T. Télécom 1re Année
80
Cours de Système d’Exploitation UNIX
SysFichier
1K-blocs
/dev/hda6
6000880
none
123604
[yann@ulysse images]$
Utilisé la capacité disponible% Monté sur
3241756
2454296 57% /
0
123604
0% /dev/shm
5.2.2.5.5 Charge de la machine Lorsque vous trouvez que le système n’a pas des temps
de réponses assez rapides (par rapport à d’habitude), utilisez la commande :
uptime
qui affiche l’heure et le nombre de jour depuis la mise en route du système, le nombre d’utilisateurs et la charge moyenne de la machine la dernière minute, et dans les 5 et 15 dernières
minutes.
Utilisation
[yann@ulysse images]$ uptime
9:39am up 2:11, 0 users,
[yann@ulysse images]$
load average: 0.16, 0.07, 0.01
5.2.2.5.6 Les processus Un certain nombre de commandes Unix se rapportent à la gestion
des processus. Il existe des commandes d’audit de la table (ps, pstat, top), de mise en attente
d’un processus (wait), de changement de priorité (nice, renice), d’envoi de signaux aux processus
(kill). Nous allons donc voir dans cette partie la syntaxe et l’usage de ces commandes.
5.2.2.5.6.1
La commande
ps [options]
affiche des renseignements sur les processus en cours d’exécution. Les options diffèrent suivant
l’OS utilisé. Nous verrons ici les options pour un système BSD, consultez les pages de manuel
pour un système System V.
B -a : affiche tous les processus lancés depuis un terminal quelconque,
B -x : affiche tous les processus, même ceux qui n’ont pas été lancés depuis un terminal, l’option
-l rajoute des renseignements supplémentaires (le numéro du père...),
B -e : affiche les valeurs des variables d’environnement,
B -w et -ww : formatent le nombre de colonnes d’affichage...
Si aucune option n’est spécifiée, seuls les processus lancés par l’utilisateur sont affichés.
En règle générale, un certain nombre de renseignements sont donnés :
B USER : le nom de l’utilisateur propriétaire du processus,
B PPID : le numéro du processus père (processus qui a lancé le processus courant),
B PID : le numéro du processus,
B %CPU : le pourcentage de temps machine consommé par le processus,
B %MEM : le pourcentage de temps mémoire consommé par le processus,
B SZ : la somme de la taille des données et du segment de la pile,
B RSS : la taille en mémoire réelle du processus,
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
81
B TT : le terminal depuis lequel le processus a été lancé,
B STAT : l’état du processus au moment du lancement de la commande (voir ci-après),
B WCHAN : l’évènement que le processus attend,
B START : la jour du lancement du processus,
B TIME : le temps d´exécution de la commande,
B COMMAND : le libellé de la commande lancée.
Cette liste représente les principaux renseignements donnés, si vous avez d’autres données affichées à l’écran, n’hésitez pas à consulter les pages de man.
En ce qui concerne les états (STAT) du processus, plusieurs possibilités sont affichées :
B pour la première lettre : Etat courant
. R : le processus est en cours de traitement,
. T : le processus est stoppé,
. P : le processus attend une page (typiquement récupération des données du swap vers la
mémoire réelle),
. D : le processus est en attente d’une E/S disque ou NFS,
. S : le processus dort depuis moins de 20 secondes,
. I : le processus est idle, il dort depuis plus de 20 secondes,
. Z : processus en attente d’un message du noyau (processus zombie).
B pour la deuxième lettre : Etat mémoire
. blanc : le processus est chargé en mémoire,
. W : le processus est swappé,
. > : le processus avait spécifié une taille mémoire et a dépassé cette taille.
B pour la troisième lettre : Etat priorités
. blanc : le processus tourne sans priorité spéciale,
. N : la priorité a été réduite,
. < : la priorité a été augmentée.
B pour la quatrième lettre : Etat pour les traitements en mémoire virtuelle
. blanc : attente d’un signal,
. A : nettoyage du tas (garbage collection),
. S : pour un processus traitant un programme utilisant la mémoire virtuelle pour adresser
séquentiellement des données volumineuses.
Utilisation
[yann@ulysse images]$ ps
PID TTY
TIME CMD
2429 pts/0
00:00:00 bash
2455 pts/0
00:06:31 nedit
6965 pts/0
00:00:00 ps
[yann@ulysse images]$ ps -aux
USER
PID %CPU %MEM
VSZ
root
1 0.0 0.2 1412
root
2 0.0 0.0
0
root
3 0.0 0.0
0
root
4 0.0 0.0
0
root
5 0.0 0.0
0
root
6 0.0 0.0
0
Yann MORÈRE
RSS
504
0
0
0
0
0
TTY
?
?
?
?
?
?
STAT
S
SW
SW
SWN
SW
SW
START
07:28
07:28
07:28
07:28
07:28
07:28
TIME
0:04
0:00
0:00
0:00
0:00
0:00
COMMAND
init
[keventd]
[kapmd]
[ksoftirqd_CPU0]
[kswapd]
[bdflush]
M.S.T. Télécom 1re Année
82
root
root
root
root
root
.....
5.2.2.5.6.2
Cours de Système d’Exploitation UNIX
7
8
12
65
507
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.3
0.0
0
0
0
1756
0
0
0
0
892
0
?
?
?
?
?
SW
SW<
SW
S
SW
07:28
07:28
07:28
07:28
07:28
0:00
0:00
0:00
0:00
0:00
[kupdated]
[mdrecoveryd]
[kjournald]
devfsd /dev
[khubd]
La commande
pstat [options]
permet d’avoir des renseignements sur la table des processus. Cette commande est plus utilisée
dans le cadre du travail de l’administrateur système.
5.2.2.5.6.3
La commande
top [options]
affiche et met à jour les informations sur les 15 processus les plus importants au niveau de la
CPU. Cette commande est plus une commande d’audit du système.
5.2.2.5.6.4
La commande
wait
attend jusqu’à ce qu’un processus démarré avec un & ou passé en background se termine et sort
un rapport sur les terminaisons anormales. Cette commande étant lancée depuis le terminal de
l’utilisateur, le shell exécute la commande wait sans créer de nouveau processus.
5.2.2.5.6.5
Le commandes
nice
et
renice
permettent de modifier les priorités d’un processus. Ces deux commandes ne sont et ne doivent
être (pour des raisons évidentes) utilisées que dans des cas limités. Sur certains systèmes, elles
seront réservées à l’administrateur système.
5.2.2.5.6.6
La commande
kill [-signal] pid
permet d’envoyer un signal à un processus dont pid est le numéro. Le super utilisateur peut
tuer tous les processus, un utilisateur ne peut quand à lui tuer que les processus qu’il a lancé.
Les signaux les plus utiles sont :
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
83
B 1 (ou HUP) : hangup envoyé au processus lors d’une déconnexion,
B 2 (ou INT) : interromp le processus situé au premier plan,
B 3 (ou QUIT) : interromp le processus récepteur du signal et génère un core dump (image de
la mémoire au moment de l’arrêt),
B 9 (ou KILL) : interromp le processus récepteur du signal,
B 15 (ou TERM) : termine proprement (effacement des fichiers temporaires créés) le processus récepteur,
B 17 (ou STOP) : stoppe le processus récepteur.
En règle générale, il est conseillé d’envoyer un signal TERM pour arrêter un processus, si ce
signal n’aboutit pas utiliser alors le signal KILL.
Utilisation
[yann@ulysse
F S
UID
000 S
502
000 S
502
000 S
502
000 R
502
[yann@ulysse
[yann@ulysse
F S
UID
000 S
502
000 S
502
000 R
502
[yann@ulysse
images]$ ps -l
PID PPID C PRI NI ADDR
2429 2423 0 75
0
2455 2429 4 69
0
7265 2429 2 69
0
7273 2429 0 78
0
images]$ kill -15 7265
images]$ ps -l
PID PPID C PRI NI ADDR
2429 2423 0 75
0
2455 2429 4 71
0
7275 2429 0 79
0
images]$
SZ
713
2246
2489
783
WCHAN
wait4
do_sel
do_sel
-
TTY
pts/0
pts/0
pts/0
pts/0
TIME
00:00:00
00:06:48
00:00:00
00:00:00
CMD
bash
nedit
emacs
ps
SZ
752
2246
782
WCHAN
wait4
do_sel
-
TTY
pts/0
pts/0
pts/0
TIME
00:00:00
00:06:48
00:00:00
CMD
bash
nedit
ps
Emacs a été tué.
Yann MORÈRE
M.S.T. Télécom 1re Année
Cette page est laissée blanche intentionnellement
Chapitre 6
Le Shell - Interpréteur de commandes
Nous allons étudier dans ce chapitre, tout ce qui concerne les variables d’environnement ainsi
que les concepts de redirection, puis nous essayerons de mieux comprendre les mécanismes de
base de l’interprétation des commandes par le shell.
6.1
Les variables
Nous séparerons notre étude en trois parties : la manipulation des variables définies par l’utilisateur, puis nous nous intéresserons aux variables d’environnement, pour finir par les variables
spéciales et réservées par le shell lui-même.
6.1.1
Variables simples
Nous appellerons variable simple toute variable définie par l’utilisateur pour ses propres besoins. Nous verrons dans cette partie comment fonctionnent tous les mécanismes permettant
de manipuler des variables.
6.1.1.1
Mécanismes d’affectation
On peut affecter une chaı̂ne de caractères aux variables, et par extension, toute affectation
répond à la syntaxe suivante :
variable=valeur
Attention, il n’y a pas d’espace de part et d’autre du signe =.
De plus, la commande : variable= affecte la chaı̂ne vide à variable.
6.1.1.2
Désignation de la variable
Pour désigner une variable, il suffit d’utiliser la syntaxe suivante :
$variable
Cette notation servira pour tous les types de variables que nous verrons par la suite.
Si la variable doit être suivie d’une valeur autorisée (exemple de nom de variable auquel on
ajoute séquentiellement un nombre), la notation est alors la suivante :
${variable}caractère
85
86
6.1.1.3
Cours de Système d’Exploitation UNIX
Affichage d’une variable
La commande :
echo [-n] [texte] \$variable
permet d’afficher la valeur de la variable. On peut aussi l’intégrer dans du texte. L’option -n
permet d’éviter le passage à la ligne après l’affichage.
6.1.1.4
Saisie au clavier
Il est parfois utile de laisser l’utilisateur entrer la valeur de ses variables. La commande :
read variable...
lit les valeurs sur l’entrée standard. Le premier mot est affecté la première variable et ainsi de
suite. Si il y a plus de variables que de mot saisis, le shell affecte aux dernières variables la
chaı̂ne vide.
6.1.1.5
1.1.5 Exportation des variables
D’ordinaire, une variable n’est utilisée que dans le shell-script où elle reçoit son affectation.
Si on souhaite l’utiliser pour les programmes appelés ultérieurement, on doit l’exporter. La
commande :
export variable...
recopie la valeur des variables en paramètre dans l’environnement qui sera passé aux shellscripts
ultérieurs.
6.1.1.6
Visualisation des variables disponibles
La commande :
printenv
affiche les valeurs des variables de l’environnement du processus en cours, c’est à dire celles
qu’il a reçues et celles qu’il a envoyées.
La commande :
set
affiche les valeurs des variables disponibles, c’est à dire toutes les variables même celles qui ne
seront pas transmises.
6.1.1.7
Supprimer une variable
La commande :
unset variable
supprime la variable de la liste des variables disponibles.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
6.1.1.8
87
Substitutions
Au niveau de l’affichage, il est parfois utile de pouvoir effectuer un certain nombre de substitutions :
B $paramètre : affiche la valeur courante de paramètre,
B $paramètre : affiche la valeur courante de paramètre et autorise la concaténation,
B $paramètre :-valeur : affiche la valeur courante de paramètre si elle est non nulle, sinon
affiche valeur,
B $paramètre :=valeur : affiche la valeur courante de paramètre si elle est non nulle, sinon
affiche valeur et affecte à paramètre valeur,
B $paramètre : ?valeur : affiche la valeur courante de paramètre si elle est non nulle, sinon
on écrit valeur sur la sortie standard et on sort. Si valeur est omise, alors, on écrit sur la
sortie standard le message : paramètre : parameter null or not set,
6.1.2
Variables du shell - personnalisation de l’environnement
6.1.2.1
Les principales variables
Voici les principales variables d’environnement utilisées par le shell :
B CDPATH : liste des répertoires recherchés quand cd est exécuté avec un nom relatif comme
argument,
B DISPLAY : l’écran sur lequel on travaille (par défaut :0.0),
B ENV : nom d’un fichier exécuté à chaque appel de ksh,
B GID : le numéro du groupe actuel de l’utilisateur,
B HOME : répertoire de login,
B HOST : le nom de la machine sur laquelle on se trouve,
B IFS : séparateur de mots dans les commandes (espace, tabulation ou passage à la ligne) ;
IFS est utilisé pour les commandes internes pour découper une liste de paramètres,
B LD_LIBRARY_PATH : la liste des répertoires où les programmes trouveront leurs librairies
dynamiques à l’exécution,
B LOGNAME : le nom de l’utilisateur,
B MANPATH : liste des répertoires où se trouvent les pages de manuel,
B PATH : liste des répertoire de recherche des commandes, le séparateur est :,
B PS1, PS2 : prompts initial et secondaire (habituellement $ et >),
B PWD : le répertoire courant,
B SHELL : le shell par défaut,
B TERM : nom du type de terminal utilisé,
B TERMCAP : caractéristiques du terminal (nombre de lignes, de colonnes, caractères à envoyer
pour effacer l’écran, pour positionner le curseur...),
B UID : le numéro de l’utilisateur.
6.1.2.2
Que se passe-t-il au login ?
Nous nous placerons dans le cas où le shell par défaut est un ksh. Après le login, le fichier
/etc/profile (commun à tous les utilisateurs) est exécuté. Ce fichier contiendra les variables
par défaut ainsi que les principaux paramètres du système. Ensuite, l’utilisateur passe dans son
répertoire par défaut, et le fichier .profile est exécuté, afin de fixer les variables d’environnement propres à l’utilisateur. Ces fichiers sont exécutés dans le shell de démarrage de la session,
Yann MORÈRE
M.S.T. Télécom 1re Année
88
Cours de Système d’Exploitation UNIX
les variables sont donc conservées pour la suite de la session si elles ont été exportées.
La variable ENV est utile pour la personnalisation de l’environnement : elle contient un nom de
fichier (par défaut .kshrc) qui est exécuté à chaque fois que ksh est lancé.
Le fichier .kshrc est lié à ksh alors que le fichier .profile est aussi utilisé par sh. On mettra donc
dans le fichier .kshrc toutes les définitions de variables propres à ksh.
6.1.3
Variables spéciales
Un certain nombre de variables sont utilisées dans les shellscripts afin de déterminer et de
séparer les paramètres :
B $# : donne le nombre d’arguments passés au script,
B $* : donne la liste des paramètres passés au script,
B $n : valeur du n-ième argument du script,
B $ : équivalent à $*, mais $ signifie : $1, $2,..., $n
B $$ : le numéro de processus du script,
B $ ! : le numéro de processus du dernier programme lancé en background,
B $ ? : le code de retour du dernier programme lancé.
6.2
6.2.1
Mécanismes d’interprétation du shell
Définitions
Le shell est l’interpréteur de commandes, il n’est pas inclus dans le noyau d’Unix. Quand un
utilisateur rentre dans le système, le shell par défaut qui lui a été donné, est automatiquement
lancé et toute la session se déroule en fait dans ce shell. Lorsque cet utilisateur tape une
commande, le shell la lit, l’interprète et lance son exécution. La ligne tapée peut ne comporter
qu’un seule commande mais peut aussi être beaucoup plus complexe. Le shell est comme nous
le verrons plus tard un langage de programmation.
6.2.2
Commandes et processus
La plupart des lignes de commandes entrées par un utilisateur entraı̂nent l’exécution d’un fichier
binaire du système de fichier. Le shell lance l’exécution de ces fichiers après avoir interprété le
message écrit sur la ligne. Cette exécution engendre un nouveau processus.
Certaines lignes de commandes peuvent aussi engendrer plusieurs processus (lignes contenant
des pipes par exemple). D’autres comportant des commandes internes au shell, et donc étant
exécutables sans faire appel à un fichier externe ne nécessitent pas la création d’un nouveau
processus.
6.2.3
Prompts et tourmenterais de commandes
Le shell indique qu’il est prêt à recevoir une nouvelle commande en affichant le prompt (par
défaut $). Toute commande se termine par un passage à la ligne, dans certains cas, le passage
à la ligne à une signification particulière pour la commande tapée et n’est donc pas considéré
comme un terminateur de commande. Dans ce cas, le shell affiche le deuxième prompt (par
défaut >) pour indiquer qu’il attends la suite de la commande.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
89
Il est aussi possible de taper plusieurs commandes sur la même ligne en les séparant par un
;.
6.2.4
Environnement d’une commande
Toutes les commandes lancées s’exécutent dans un environnement de travail. Cet environnement peut guider les variables dans leur fonctionnement. Par exemple, lors du lancement d’un
programme graphique, la requête d’affichage est envoyée sur l’écran défini par la variable
DISPLAY, si celle-ci n’est pas renseignée, un message d’erreur apparaı̂t sur la ligne de commandes.
Lorsqu’elle est lancée depuis un shellscript, un commande hérite de l’environnement de ce
shellscript, du masque des autorisations et des fichiers qui ont été ouverts.
6.2.5
Recherche d’une commande
Si la commande tapée correspond à une commande interne du shell, cette commande est exécutée à l’intérieur de ce shell. Sinon, si la commande correspond à une fonction (cf. partie sur
le langage de programmation) elle est elle aussi exécutée à l’intérieur du shell.
Dans tous les autres cas, la commande se réfère à un fichier de l’arborescence. Si le nom ne
comporte pas de caractère /, le shell examine la variable PATH pour rechercher le répertoire
où ce trouve cette commande. Un nouveau shell est alors créé pour exécuter cette commande.
Si la commande est un shellscript, le shell lit toutes les lignes du script et les exécutent. Si la
commande appelle un fichier binaire exécutable, le code et les données associées du processus
du deuxième shell sont remplacés par le code et les données associés à la commande.
6.2.6
Les alias
Un alias donne un synonyme pour une chaı̂ne de caractères dans une commande. On peut ainsi
redéfinir toutes les commandes en fonction de ses propres besoins. Par exemple, il est courant
d’avoir un alias sur la commande rm qui transforme celle-ci en rm -i.
La commande :
alias nom_alias=’commande’
permet de définir un alias. Si ce dernier est utile pour toutes les sessions, il est utile de les placer
dans le fichier .kshrc.
La commande :
alias
permet d’afficher tous les alias utilisés dans la session.
Pour défaire un alias, utiliser la commande :
unalias nom_alias.
Yann MORÈRE
M.S.T. Télécom 1re Année
90
Cours de Système d’Exploitation UNIX
6.2.7
Substitution de commande
Le shell interprète la commande ‘commande‘ en la remplaçant par tous ce que la commande
envoie sur la sortie standard.
À noter :
1. La commande est exécutée dans un sous-shell,
2. L’interprétation à l’intérieur des ‘ est complexe : le shell commence par enlever tous
les \ (qui inhibent les mots à interpréter) qui précèdent un $, un ‘ ou un \, ensuite, la
commande entre ‘ est interprétée comme une commande normale.
3. Lorsque la substitution de commande se trouve dans une redirection, la commande entre
‘ est concernée par cette redirection, il y a donc un ordre dans l’interprétation des
commandes.
6.2.8
Substitution de nom de fichier et autres caractères spéciaux
Il existe sous Unix des méta caractères qui sont utilisés pour la substitution des noms de fichiers :
B ? : remplace un caractère quelconque dans un nom de fichier,
B * : remplace n’importe quelle chaı̂ne de caractères (y compris la chaı̂ne vide),
B [...] : remplace l’un des caractères entre crochets (on peut donner un intervalle),
B [ !...] : remplace l’un des caractères qui n’est pas entre crochets.
D’autres notations sont utiles :
B (...) : exécute les commandes de ... dans un sous-shell,
B ... : exécute les commandes de ... dans le shell courant,
B commande1 && commande2 : exécute commande1, si le code de retour est OK alors on exécute
commande2,
B commande1 || commande2 : exécute commande1, si le code de retour est mauvais alors on
exécute commande2.
6.2.9
Mécanismes d’interprétation
Nous allons voir dans cette section comment les lignes de commande sont interprétées par le
shell avant que ce dernier ne la lance.
Le shell repère dans un premier temps les redirections et les pipes. L’interprétation des parties
correspondant aux fichiers dans les redirections est différente du reste de la ligne. Les affectations
sont aussi traitées à part. Pour les autres parties, voilà les tâches effectuées par le shell (par
ordre d’exécution) :
1. substitution des alias,
2. substitution du caractère ,
3. substitution des paramètres de position et de variables ($variables),
4. substitution des commandes (entre ‘)
5. interprétation des espaces (afin de distinguer les différents mots de la commande),
6. génération de noms (pour tout ce qui concerne les méta-caractères *, ?, ou [..]), et si aucun
fichier ne correspond au modèle donné, le modèle est laissé de côté.
Toutefois, il existe un moyen de dépersonnaliser les substitutions avec les caractères réservés
suivants :
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
91
B \ : inhibe l’interprétation spéciale du caractère suivant. Trois cas de figures sont possibles :
. si \ est entre guillemets, il est laissé, sauf si il est suivi de $, ‘, \ ou ”; dans ce cas, il est
enlevé et le caractère suivant perd sa signification spéciale,
. si \ n’est pas entre guillemets, il est enlevé et le caractère suivant perd sa signification
spéciale (s’il en avait une) ; si le caractère suivant est un passage à la ligne, les deux
caractères (\ et passage à la ligne) sont enlevés,
. si \ est entre ‘, il est laissé sauf si il est suivi de $, ‘ ou ”; dans ce cas, il est enlevé et le
caractère suivant perd sa signification spéciale.
B ’ : inhibe toute interprétation ;
B " : inhibe l’interprétation des espaces, la génération de noms, la substitution des alias et
de , mais pas la substitution des paramètres et des commandes. Une apostrophe n’est pas
interprétée entre deux guillemets, ce qui permet de mettre le caractère ’ dans une chaı̂ne.
Utilisation
[yann@ulysse mst_telecom_1]$ var=etudiant
[yann@ulysse mst_telecom_1]$ echo $var
etudiant
[yann@ulysse cours_unix]$ echo $var xyz ‘pwd‘
etudiant xyz /home/yann/cours_unix
[yann@ulysse cours_unix]$ echo \$var
$var
[yann@ulysse cours_unix]$ echo "\$var xyz ‘pwd‘ *"
$var xyz /home/yann/cours_unix *
[yann@ulysse cours_unix]$ echo ’$ represente le symbole ’ "’dollar’"
$ represente le symbole ’dollar’
[yann@ulysse cours_unix]$
6.2.10
Lancement de l’exécution d’un shellscript
On appelle shellscript un fichier qui contient des noms de commandes et des instructions internes
au shell. L’utilisateur peut lancer un shellscript commande une commande. Les commandes
contenues dans le shellscript sont alors lancées comme si l’utilisateur les tapait sur la ligne de
commande. On peut lancer l’exécution d’un shellscript de trois manières différentes :
6.2.10.1
Lancement par le nom du shellscript
Si l’utilisateur a le droit de lecture et d’exécution sur le shellscript, il peut le lancer en tapant
simplement son nom. Il se comporte alors comme n’importe quelle commande. En particulier,
il peut être utilisé par un autre shellscript. On peut construire ainsi de nouvelles commandes
adaptées à ses propres besoins.
Lors de l’appel, le shell parcours la variable PATH pour trouver le fichier, donc par prudence,
il est bon de lancer le script comme suit : ./shellscript, ceci évitera le temps de recherche du
script dans les arborescences de répertoires et surtout l’exécution d’un autre script portant le
même nom.
Yann MORÈRE
M.S.T. Télécom 1re Année
92
Cours de Système d’Exploitation UNIX
6.2.10.2
Lancement par appel explicite du shell
Si le script porte un attribut de lecture, on peut le lancer par appel explicite du shell :
/bin/ksh nom_script
Dans ce cas, un nouveau shell est lancé, celui-ci lit les commandes du script et les fait exécuter
comme si elles avaient été tapées au clavier.
6.2.10.3
Lancement par appel de la commande interne .
La dernière solution consiste à faire précéder le nom du fichier par un . :
. shellscript
Dans ce cas, il n’y a pas de création d’un nouveau processus, les modifications de l’environnement sont conservées. En fait, . est une commande interne au shell qui lit toutes les
commandes contenues dans le shellscript et les exécute comme si elles avaient été tapées au clavier. De la même façon, la variable PATH est parcourue pour déterminer l’emplacement dans
le système de fichiers du script.
6.3
Les redirections
Avant de lancer un processus, le shell lui attribue trois fichiers :
B Une entrée standard (par défaut le clavier),
B Une sortie standard (par défaut l’écran),
B Une sortie d’erreur standard (par défaut l’écran).
Ces trois directions peuvent être liés à d’autres fichiers que ceux indiqués ci-dessus grâce aux
commandes de redirection. Le shell associera donc d’autres fichiers que le clavier ou l’écran et
il lancera ensuite la commande.
6.3.1
Redirections des sorties
6.3.1.1
Redirection avec écrasement du fichier de redirection
Cette opération consiste à rediriger la sortie standard d’une commande dans un autre fichier
par la commande :
commande > fichier
Tout ce qui est envoyé vers la sortie standard est donc renvoyé vers ce fichier. La redirection est
donc écrite à la suite de la commande sur laquelle elle agit. Si le fichier existe déjà, son contenu
est écrasé, sinon il est créé.
6.3.1.2
Redirection avec ajout à la fin du fichier de redirection
L’opération fonctionne de la même façon que la précédente, la commande diffère :
commande >> fichier
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
6.3.1.3
93
Redirection du fichier d’erreur
Le fichier d’erreur peut être redirigé en ajoutant :
commande 2>fichier (ou commande 2>>fichier)
Si, par exemple, on ne veut pas que les messages d’erreur s’affichent à l’écran, la commande
est :
commande 2> /dev/null
(/dev/null est un pseudo fichier sorte de vide-poches (trou noir) où aucun message n’est
conservé).
6.3.2
Redirection des entrées
Dans le cas où on veut récupérer les données non plus du clavier mais d’un fichier, on utilise la
commande :
commande < fichier
On peut définir ainsi plusieurs redirections dans une même commande :
tr "[a-z]" "[A-Z]" < fichier1 > fichier2
écrit en majuscules dans fichier2 le contenu de fichier1.
Fig. 6.1 – Redirections des entrées
6.3.3
La notion de pipe
Les données de sortie d’une commande peuvent servir directement comme données en entrée à
une autre commande. Pour effectuer cette opération, il suffit de placer un | entre les deux
commandes :
commande1 | commande2 | ...
Chacune des commandes est exécutée dans son propre shell. Le code de retour du pipe est le
code de retour de la dernière commande exécutée.
Utilisation
Yann MORÈRE
M.S.T. Télécom 1re Année
94
Cours de Système d’Exploitation UNIX
[yann@ulysse images]$
total 1160
294750 drwxrwxrwx
294671 drwxr-xr-x
294747 -rw-r--r-294788 -rw-r--r-294748 -rw-r--r-294763 -rw-rw-rw294764 -rw-rw-rw294776 -rw-r--r-294765 -rw-rw-rw294766 -rw-rw-rw294779 -rw-r--r-294767 -rw-rw-rw294768 -rw-rw-rw294783 -rw-r--r-294761 -rw-rw-rw294762 -rw-rw-rw294755 -rw-r--r-294777 -rw-r--r-294778 -rw-r--r-294782 -rw-r--r-294781 -rw-r--r-[yann@ulysse images]$
ls -lia | more
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
yann
4096
4096
227919
178820
21390
5185
16164
23446
5308
17780
26287
5965
20022
49006
7682
37914
53248
32772
25129
3956
2444
sep
sep
sep
sep
sep
sep
sep
sep
sep
sep
sep
sep
sep
sep
sep
sep
sep
sep
sep
sep
sep
21
24
23
23
23
23
23
23
23
23
23
23
23
23
23
23
23
23
23
23
23
10:40
08:54
18:50
18:50
18:50
18:50
18:50
18:50
18:50
18:50
18:50
18:50
18:50
18:50
18:50
18:50
18:50
18:50
18:50
18:50
18:50
./
../
capture.eps
capture.jpg
fig_E_S.eps
fig_E_S.gif
fig_E_S.jpg
fig_pipe.eps
fig_pipe.gif
fig_pipe.jpg
fig_tee.eps
fig_tee.gif
fig_tee.jpg
icone.eps
icone.gif
icone.jpg
jpeg2ps.exe
login.eps
login.jpg
logo_metz.eps
logo_metz.jpg
permet d’afficher en mode page à page
[yann@ulysse images]$ ls -lia | sort | lpr
[yann@ulysse images]$
permet de trier les fichiers d’un répertoire et de les imprimer par ordre alphabétique.
Il est possible aussi de renvoyer la sortie en même temps sur la sortie standard et dans un
fichier. La commande à utiliser est :
tee fichier
Utilisation
[yann@ulysse images]$ ls -lia | tee fichier | sort
[yann@ulysse images]$
permet de conserver le résultat de ls -lia dan sun fichier et de le trier par sort.
Ce mécanisme de pipe est donc très intéressant à utiliser dans l’écriture de shellscripts.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
95
Fig. 6.2 – Mécanisme de fonctionnement de ”|”
Fig. 6.3 – Mécanisme de fonctionnement de tee
6.4
6.4.1
Lancement de processus en arrière plan
Définition
Lorsqu’on lance une commande, le shell attend la fin de l’exécution de cette dernière avant de
redonner la main à l’utilisateur.
Si on ajoute un & à la fin de la ligne de commande, le shell n’attends plus la fin de l’exécution
de cette commande, il la lance en arrière plan.
Quand on lance une commande en arrière plan dans un shell interactif (c’est à dire pas dans un
shellscript), le shell renvoie à l’écran le numéro du job pour le shell qui a lancé la commande
ainsi que le numéro du processus dans la table des processus.
Utilisation
[yann@ulysse images]$ xeyes &
[2] 3523
[yann@ulysse images]$
où [2] représente le numéro du job et 3523 le numéro du processus dans la table.
Le caractère & est un terminateur de commande, il est donc possible de taper une commande
à la suite sans passage à la ligne.
Attention :
ls > toto & lance la commande ls en arrière plan en redirigeant les noms de fichiers sur le
fichier toto, alors que ls & > toto lance la commande ls en arrière plan en affichant à l’écran
les noms de fichiers et ensuite effectue une redirection dans le fichier toto (la redirection n’a
donc aucun effet sur la commande).
Yann MORÈRE
M.S.T. Télécom 1re Année
96
6.4.2
Cours de Système d’Exploitation UNIX
Gestion des jobs
Suivant le shell (ksh, zsh mais pas sh), l’utilisateur dispose de plusieurs commandes pour choisir
le lieu d’exécution d’une commande :
B pour voir la liste des processus avec leur numéro pour le shell en cours, utiliser la commande :
jobs [-l]
B pour stopper un processus en cours, taper : Ctrl z,
B pour passer un processus en arrière plan, taper : bg [%n],
B pour ramener un processus au premier plan, taper : fg [%n].
Ceci permet de stopper provisoirement un processus pour effectuer une tâche annexe et de
revenir immédiatement au processus choisi.
M.S.T. Télécom 1re Année
5 octobre 2003
Chapitre 7
Le Shell - Langage de programmation
Nous venons de voir les principales fonctionnalités du shell lui-même puis, son aspect interpréteur de commande, nous allons voir dans ce chapitre le rôle langage de programmation du
shell.
7.1
Tests divers
La commande :
test condition \&\& alors || sinon
ou
[ condition ] \&\& alors || sinon
est utilisée dans de nombreux cas par les structures de contrôle du shell. Cette commande
renvoie 0 si la condition est vérifiée et une valeur différente de 0 sinon. Dans la deuxième
syntaxe, il faut faire attention à mettre des espaces entre les crochets et la condition.
Voici les principales conditions :
B -d fichier : vrai si fichier est un répertoire (et si il existe),
B -e fichier : vrai si le fichier existe,
B -f fichier : vrai si fichier est un fichier ordinaire (et si il existe),
B -r fichier : vrai si l’utilisateur a le droit d’accès en lecture sur fichier (s’il existe),
B -w fichier : vrai si l’utilisateur a le droit d’accès en écriture sur fichier (s’il existe),
B -x fichier : vrai si l’utilisateur a le droit d’accès en exécution sur le fichier (s’il existe),
B -c fichier : vrai si le fichier est un fichier caractère spécial (et si il existe),
B -b fichier : vrai si le fichier est un fichier bloc (et si il existe),
B -s fichier : vrai si fichier n’est pas vide,
B -L fichier : vrai si fichier est un lien symbolique,
B fichier1 -nt fichier2 : si fichier a été modifié plus récemment que fichier2,
B -n cha^
ıne : vrai si chaı̂ne n’est pas vide,
B -z cha^
ıne : vrai si chaı̂ne est vide,
B nb1 eq nb2 : vrai si les deux nombres entiers nb1 et nb2 sont égaux, on peut remplacer eq
par ne (différent), gt (supérieur), ge (supérieur ou égal), lt (inférieur), le (inférieur ou égal).
B chaine1 = chaine2 : vrai si les deux chaı̂nes sont identiques,
97
98
B
B
B
B
Cours de Système d’Exploitation UNIX
chaine1 != chaine2 : vrai si les deux chaı̂nes ne sont pas identiques,
-a : opérateur logique et,
-o : opérateur logique ou,
! : négation logique
Utilisation
[yann@ulysse images]$ test -f login.jpg && echo fichier || echo pas fichier
fichier
[yann@ulysse cours_unix]$ test \( -d images -o -f logo_metz.jpg \) -a $variable=2 && echo o
ok
[yann@ulysse cours_unix]$
7.2
Décaler la position des paramètres
Dans un shellscript, nous savons récupérer, à l’aide des variables spéciales, le contenu des paramètres passés. Il est parfois utile de pouvoir mettre ces paramètres dans un ordre voulu.
La commande :
shift [n]
permet de déclarer les paramètres de n positions. Par défaut, la valeur de n est 1, dans ce cas
là, $2 devient $1, $3 devient $2 etc...
7.3
Sortie d’un shellscript
Pour sortir d’un shellscript et renvoyer un code de retour, utiliser la commande :
exit n
le code de retour est alors n. Si le shellscript ne se termine pas par un exit, il renvoie le code
de retour de la dernière commande exécutée.
7.4
Les structures de contrôle
Nous venons de voir que toutes les commandes Unix renvoient un code qui est un nombre
entier. En général, si la commande s’est bien déroulée, elle renvoie 0, sinon elle renvoie un
nombre négatif ou positif.
Comme dans tout langage de programmation, il y a dans le shell Unix un certain nombre de
fonctions qui assurent le contrôle des données et des paramètres :
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
7.4.1
99
if..then..else..fi
La commande :
if test
then liste_de_commandes
else liste_de_commandes
fi
teste la valeur renvoyée par le test après le mot if et en fonction de ce code, lance la liste de
commande appropriée (si le code=0 alors on exécute les commandes après le mot then sinon
les commandes après le mot else).
Utilisation
Programme qui supprime interactivement selon la réponse
[yann@ulysse cours_unix]$ cat virer
echo -n "Suppression interactive ?"
read reponse
if test "$reponse" = oui
then rm -i $@
else rm $@
fi
[yann@ulysse cours_unix]$ ./virer schmu
Suppression interactive ?oui
rm: Ne peut enlever ‘schmu’: Aucun fichier ou répertoire de ce type
[yann@ulysse cours_unix]$
Il existe une variante pratique de if :
if condition
then ligne_commande
elif condition2
then ligne_commande
...
fi
fi
Yann MORÈRE
M.S.T. Télécom 1re Année
100
7.4.2
Cours de Système d’Exploitation UNIX
case..esac
Nous avons aussi besoin de structures permettant de faire des choix multiples :
case mot in
modèle 1) liste_commande;;
..
modèle n) liste_commande;;
*) liste_commande;;
esac
Le premier modèle rencontré qui répond à la valeur de mot indique la liste de commandes à
exécuter. Si mot ne correspond à aucun modèle, l’instruction se poursuit jusqu’à la condition
*) et si celle-ci n’existe pas, jusqu’au esac.
Les modèles sont de la forme :
valeur1 | valeur2 | ... | valeurn
Dans les modèles, on peut utiliser les caractères spéciaux *, ?, [] comme dans le cas de la
recherche d’un fichier.
Utilisation
Programme qui supprime interactivement selon la réponse
[yann@ulysse cours_unix]$ cat virer2
echo -n "Suppression interactive ?"
read reponse
case $reponse in
o|O|oui|OUI) rm -i $@;;
n|N|non|NON) rm $@;;
*) echo "Réponse non valide"
./virer2 $@;;
esac
[yann@ulysse cours_unix]$ ./virer2 chmu
Suppression interactive ?t
Réponse non valide
Suppression interactive ?u
Réponse non valide
Suppression interactive ?o
rm: Ne peut enlever ‘chmu’: Aucun fichier ou répertoire de ce type
[yann@ulysse cours_unix]$
7.4.3
for..do..done
Certains traitement sont répétitifs, une commande doit être lancée pour un grand nombre
de paramètres du shellscript. Ceci nécessite l’usage d’une fonction qui boucle sur tous ses
paramètres.
La commande :
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
101
for variable [in mots...]
do
liste_commandes
done
variable prend tour à tour toutes les valeurs de la liste des mots (qui suivant in). Pour chacune
de ces valeurs, la liste de commandes est exécutée. Si in mots... n’est pas présent, variable
prend toutes les valeurs du script, ce qui est équivalent à for variable in $@.
Utilisation
Programme qui recopie tous les fichiers *.c du répertoire courant dans une autre (afin d’en faire
la sauvegarde)
[yann@ulysse cours_unix]$ for i in *.c
> do
> cp \$i rep/
> done
[yann@ulysse cours_unix]$
7.4.4
while..do..done
La commande :
while liste_de_commandes1
do
liste_de_commandes2
done
exécute la liste de commandes 2 tant que le code retour de la liste de commandes 1 est 0.
Utilisation
Programme qui affiche tous les paramètres d’un script (un par ligne)
[yann@ulysse cours_unix]$ while test $1
> do
> echo $1
> shift
> done
[yann@ulysse cours_unix]$
7.4.5
until..do..done
Cette commande est semblable à la précédente à la différence près que la sortie de la boucle
s’effectue si la liste de commandes qui suit until renvoie 0.
Syntaxe de la commande :
Yann MORÈRE
M.S.T. Télécom 1re Année
102
Cours de Système d’Exploitation UNIX
until liste_de_commandes1
do
liste_de_commandes2
done
7.4.6
Instructions liées aux boucles
A l’intérieur de ces différentes structures, il est important que l’utilisateur puisse fixer lui même
et selon ses propres critères la sortie de boucles.
La commande :
continue [n]
permet de sauter à la fin de la boucle et de recommencer une nouvelle boucle.
La commande :
break [n]
provoque, quand à elle la sortie de la boucle en cours et passe à l’instruction qui suit la boucle.
Dans les deux cas, l’entier n permet d’indiquer que l’action se porte sur une boucle externe.
Par exemple, break 2 sortira de la boucle qui englobe la boucle dans laquelle cette instruction
est écrite.
7.5
Commandes built-in diverses
Un certain nombre de commandes sont contenues dans le shell lui-même. Ce sont des mots
réservés. En voici une liste succincte :
B cd : permet de changer de répertoire courant,
B eval cha^
ınes... : interprète les chaı̂nes et les exécute comme si elles avaient été tapées au
clavier. Par exemple : eval dernier paramètre=’$’$# affecte à la variable dernier paramètre
le numéro de la dernière valeur passée au shellscript,
B exit : termine le shell courant,
B exec commande : la commande est exécutée dans le shell courant ; le sortie de cette commande
est la même que celle du shell courant, on ne revient donc jamais d’un exec,
B export : exporte les variables dans l’environnement,
B read : lit la ligne sur l’entrée standard et affecte les variables données en arguments,
B readonly : les variables données sont positionnées mais non modifiables,
B set : permet de modifier les options du shell courant (voir plus loin),
B shift : décale d’un cran vers la gauche la liste des paramètres,
B trap [liste_de_commandes] n... : spécifie le comportement du shell en fonction des interruptions, la liste de commandes sera exécutée si le programme reçoit un des signaux dont
le numéro est n ; si n égal 0 alors la liste de commandes sera exécutée à la sortie du shell en
cours,
B umask : permet de changer le masque de création par défaut des autorisations sur un fichier,
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
103
B wait [n] : attends la fin d’une commande lancée de manière asynchrone, l’entier n spécifie
le numéro du processus père de celui que wait attends,
B : : cette commande ne fait rien mais évalue ses arguments, elle renvoie le code 0 ce qui
permet de créer des boucles infinies,
B . : exécute le fichier donné en argument dans le shell courant
La commande :
set [options]
permet de déterminer les caractéristiques des variables d’environnement du shell courant et de
ses descendants. Plusieurs options sont possibles, les plus utilisées sont :
B -a : exporte automatiquement toutes les variables qui sont définies ou modifiées ultérieurement,
B -e : sort immédiatement si une commande retourne un statut différent de 0,
B -f : supprime la génération des noms de fichiers,
B -h : localise et mémorise les commandes fonctions au moment de leur définition (en général,
les fonctions sont localisées au moment de leur exécution),
B -k : tous les arguments sont chargés dans l’environnement, et pas seulement celles que
précède le nom de la commande,
B -n : lit les commandes mais ne les exécute pas, il en vérifie simplement la syntaxe,
B -t : sort après exécution de la commande,
B -u : traite les variables non fixées comme des erreurs au moment de la substitution,
B -v : pour faire afficher les lignes d’un shellscript au moment où elles sont lues par le shell,
B -x : affiche chaque commande et ses arguments précédés par le signe +,
B +option : pour inhiber la commande set -option précédente.,
7.6
Calculs, traitements des chaı̂nes de caractères
Nous allons voir dans cette partie plus en détail la commande :
expr arguments...
Cette commande évalue les arguments comme une expression. Le résultat est envoyé sur la
sortie standard. Ce n’est pas une commande interne au shell.
arguments est une expression comprenant des opérateurs. Les opérateurs suivant sont classés
par ordre de priorité croissante et regroupés par groupes d’égale priorité :
B exp1 \ | exp2 : retourne exp1 si elle est non nulle et non vide, sinon retourne exp2 si exp2
est non nulle et non vide, sinon retourne 0 ;
B exp1 \ & exp2 : retourne exp1 si aucune des expression n’est vide ou nulle, 0 sinon,
B exp1 op_comp exp2 : où op comp est un opérateur de comparaison (<, <=, =, !=, >=,>) ;
retourne 0 si vrai, 1 sinon,
B exp1 + exp2 : addition,
B exp1 - exp2 : soustraction,
B exp1 \* exp2 : multiplication,
B exp1 / exp2 : division,
B exp1 \% exp2 : modulo,
B cha^
ıne : renvoie chaı̂ne sur la sortie standard si la chaı̂ne est non vide, 0 sinon,
Yann MORÈRE
M.S.T. Télécom 1re Année
104
Cours de Système d’Exploitation UNIX
B cha^
ıne : expression-régulière : renvoie le nombre de caractères de chaı̂ne qui peuvent être
désignés par l’expression régulière.
Utilisation
programme qui incrémente la valeur d’une variable de 1, affichage des nombres entiers de 1 à
10 :
yann@yoda:~/latex/enseignement/cours_unix$ more test3
a=1
while [ $a -lt 10 ];
do
echo $a;
a=‘expr $a + 1‘;
done
yann@yoda:~/latex/enseignement/cours_unix$ ./test3
1
2
3
4
5
6
7
8
9
yann@yoda:~/latex/enseignement/cours_unix$
affichage de la valeur du paramètre précédé d’un - dans un script :
yann@yoda:~/latex/enseignement/cours_unix$ expr test3 : ’-\(.*\)’
yann@yoda:~/latex/enseignement/cours_unix$
M.S.T. Télécom 1re Année
5 octobre 2003
Chapitre 8
Manipulation des données d’un fichier
8.1
Trier les lignes d’un fichier
La commande :
sort [options] [fichiers...]
trie les lignes des fichiers, la sortie se faisant sur la sortie standard.
Le tri s’effectue sur une ou plusieurs clés extraites de chaque ligne. Voici les principales options
qui vont permettre de réaliser ce tri :
B +pos1 -pos2 : permet d’indiquer le début et la fin d’un clé de tri ; celle-ci peut être composée
de plusieurs zones de tri concaténées. Le tri commence au champs pos1+1 et se termine au
champ pos2+1. S’il n’y a pas de pos2, la zone de tri va jusqu’à la fin de la ligne,
B -t séparateur : indique le caractère qui sépare les différents champs. Si un séparateur n’est
pas défini, les champs sont séparés par toute suite d’espace ou de tabulations contigus,
B -b : ignore les espaces et les tabulations de tête dans chaque champ,
B -n : effectue un tri numérique sur les champs,
B -f : ignore la différence entre majuscules et minuscules,
B -c : affiche un message si les lignes ne sont pas dans le bon ordre,
B -o fichier : sort le résultat du tri dans fichier (attention sort fich > fich détruit fich avant
de le trier, préférer cette option à toute redirection !),
B -r : inverse l’ordre de tri,
B -u : ne garde qu’une ligne par clé...
Utilisation
yann@yoda:~/latex/enseignement/cours_unix$ sort -t: +2 -3 /etc/passwd
tri le fichier /etc/passwd par numéro d’utilisateur
yann@yoda:~/latex/enseignement/cours_unix$
total 108
drwxrwxrwt
6 root
root
4096
drwxr-xr-x
9 root
root
24576
drwxr-xr-x
5 root
root
4096
105
ls -l / | sort -b +2 -3 +7
sep 25 06:29 tmp
ao^
u 29 12:08 dev
ao^
u 29 12:23 lib
106
Cours de Système d’Exploitation UNIX
drwxr-xr-x
2 root
root
4096
drwxr-xr-x
2 root
root
4096
drwx-----2 root
root
16384
lrwxrwxrwx
1 root
root
25
lrwxrwxrwx
1 root
root
25
drwxr-xr-x
2 root
root
4096
drwxr-xr-x
2 root
root
4096
drwxr-xr-x
2 root
root
4096
dr-xr-xr-x
91 root
root
0
drwxrwsr-x
5 root
staff
4096
drwxr-xr-x
13 root
root
4096
drwxr-xr-x
17 root
root
4096
drwxr-xr-x 100 root
root
8192
drwxr-xr-x
2 root
root
4096
drwxr-xr-x
11 root
root
4096
drwxr-xr-x
3 root
root
4096
-rw-r--r-1 root
root
3170
drwxr-xr-x
2 root
root
4096
yann@yoda:~/latex/enseignement/cours_unix$
ao^
u
jun
jun
jun
jun
jun
jun
jun
ao^
u
jui
jun
jun
sep
jun
jui
jun
jun
fév
29
11
11
11
11
11
11
11
29
3
11
11
23
28
29
17
11
8
12:23
12:40
13:39
13:48
13:57
14:08
14:08
14:08
14:08
14:44
15:06
15:21
15:30
15:47
16:12
18:08
19:20
2002
sbin
boot
lost+found
vmlinuz.old -> boot/vmlinuz-2.4.18vmlinuz -> boot/vmlinuz-2.4.18-bf2.
cdrom
floppy
initrd
proc
home
usr
var
etc
bin
root
opt
XF86Config.new
mnt
tri de la liste des fichiers sous la racine par propriétaire (+2 -3) et par nom de fichier
8.2
Recherche d’une chaı̂ne de caractères
La commande :
grep [option] expression-régulière [fichiers...]
affiche à l’écran les lignes des fichiers qui contiennent une chaı̂ne de caractères correspondant à
l’expression régulière donnée. Cette commande est souvent utilisée après un pipe. Les options
les plus courantes sont :
B -c : qui affiche seulement le nombre de lignes contenant la chaı̂ne,
B -i : qui ignore la différence entre minuscules et majuscules,
B -n : qui affiche les numéros de lignes.
Utilisation
yann@yoda:~/latex/enseignement/cours_unix$ ls -l | grep *.c
yann@yoda:~/latex/enseignement/cours_unix$
affiche tous les fichiers .c du répertoire courant
yann@yoda:~/latex/enseignement/cours_unix$ grep -i mot *
affiche le nom du fichier et la ligne contenant le mot
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
8.3
107
Compter les caractères, les mots, les lignes
La commande :
wc [options] [fichiers...]
permet de compter le nombre de lignes, de mots et de caractères de chaque fichier. Si des fichiers
ne sont pas spécifiés, l’entrée standard est prise par défaut.
Les options sont :
B -l : pour afficher seulement le nombre de lignes,
B -w : pour afficher seulement le nombre de mots,
B -c : pour afficher seulement le nombre de caractères.
8.4
Conversion et suppression de caractères
La commande :
tr [-d] cha^
ıne1 cha^
ıne2
transforme les caractères provenant de l’entrée standard comme suit : les caractères contenus
dans chaı̂ne1 sont remplacés par ceux correspondant dans chaı̂ne2, les autres étant conservés
tels quels. Le tout est envoyé ensuite vers la sortie standard.
L’option -d, permet de supprimer les caractères qui ne sont pas compris dans chaı̂ne1
Utilisation
yann@yoda:~/latex/enseignement/cours_unix$ tr aeiou AEIOU
bonjour
bOnjOUr
yann@yoda:~/latex/enseignement/cours_unix$ tr -d ac
abcad
bd
yann@yoda:~/latex/enseignement/cours_unix$
8.5
Comparaison du contenu de 2 fichiers
Il existe deux moyens de comparer un fichier, soit la comparaison réelle, soit la différence. Ces
commandes peuvent être utilisées dans des shellscripts, pour effectuer une réelle comparaison
en vue de modification, préférez les outils livrés avec les éditeurs emacs ou xemacs.
8.5.1
Comparaison de 2 fichiers
La commande :
cmp [-s] fichier1 fichier2
affiche le premier octet différent dans deux fichiers. L’option -s permet d’avoir un code retour
plutôt qu’un affichage. Le code est 0 si les deux fichiers sont identiques, 1 s’ils sont différents
et 2 s’il y a eu une erreur.
Yann MORÈRE
M.S.T. Télécom 1re Année
108
8.5.2
Cours de Système d’Exploitation UNIX
Différence entre 2 fichiers
La commande :
diff [-e] fichier1 fichier2
indique quelle ligne doivent être changées dans fichier1 pour qu’il soit identique à fichier2.
L’option -e affiche les différences sous une forme semblable aux commandes de l’éditeur ed.
8.6
8.6.1
Extraire le début ou la fin d’un fichier
Début du fichier
La commande :
head [-n] [fichiers...]
affiche sur la sortie standard les n premières lignes de chacun des fichiers. Par défaut, la valeur
de n est fixée à 10.
8.6.2
Fin du fichier
La commande :
tail [début] [fichier]
affiche la fin du fichier sur la sortie standard. La première ligne affichée est indiquée par début
qui peut être du type :
B +n : nième ligne du fichier,
B -n : nième ligne à partir de la fin du fichier.
8.7
Autres commandes utiles
Les commandes suivantes peuvent aussi vous être utiles :
B split : fractionnement horizontal d’un fichier,
B cut : fractionnement vertical d’un fichier,
B paste : recollement vertical de plusieurs fichiers,
B uniq : sélection/rejet de lignes consécutives en double,
B comm : sélection/rejet de lignes communes à deux fichiers,
B join : jointure (relationnelle) de 2 fichiers sur une zone commune,
B od : visualisation des octets d’un fichier,
B dd : copie d’un fichier avec conversion...
M.S.T. Télécom 1re Année
5 octobre 2003
Chapitre 9
Introduction au système X-Window
9.1
9.1.1
Introduction
Systèmes de fenêtrage
Le principe des systèmes de fenêtrage est de découper un écran physique en plusieurs zones
logiques, appelées fenêtres, chacune d’entre elles étant affectée à une application. Différentes
applications peuvent donc s’exécuter parallèlement sur une machine et s’afficher sur un même
écran, le système de fenêtrage étant chargé de gérer et maintenir la cohérence de chaque zone
logique. Le dispositif de pointage (communément la souris) sert à désigner les différentes zones,
pour par exemple, spécifier quelle est celle qui doit recevoir les caractères tapés au clavier.
Les principales avancées dans le domaine des systèmes de fenêtrage furent réalisées au centre
de recherche Xerox PARC (Palo Alto Research Center ), où furent développés les premiers
systèmes alliant écrans à points, dispositif de pointage et multi fenêtrage. Xerox commercialisa
tout d’abord les stations de travail Star en 1981, puis la société Apple commercialisa sur ce
même principe la machine Lisa en 1983 et enfin le Macintosh en 1984.
9.1.2
Le projet Athena
Ce projet démarra en 1983, au MIT (Massachusetts Institute of Technology), son but était de
fournir l’accès en libre service aux ressources informatiques du campus à tous les étudiants,
aussi simplement et naturellement qu’ils avaient accès au téléphone. Pour ce faire, il fallait
installer 4000 stations de travail Unix connectées entre elles, mais aussi imaginer et développer
les logiciels nécessaires à leur fonctionnement.
Cette entreprise sans précédent fut largement supportée et financée par les grands constructeurs
informatiques de l’époque tels que Dec, IBM, Motorola,... qui fournirent à la fois le matériel et
l’essentiel de la main d’&oe ;uvre, le projet étant dirigé par les chercheurs du MIT, dont Bob
Scheifler, qui dirigeait le MIT X Consortium. L’intérêt des constructeurs était de développer
des technologies portables sur l’ensemble des architectures à base d’Unix.
De la diversité des sponsors, le projet Athena tira l’expérience de l’hétérogénéité des environnements informatiques ; l’époque était encore aux grands systèmes propriétaires et ces notions
n’étaient encore que peu explorées. La volonté d’interconnections, de partage des ressources
et surtout l’échelle à laquelle celui-ci devait être opérationnel, sont quant à elles, à la base de
l’orientation résolument distribuée de toutes les retombées du projet.
109
110
Cours de Système d’Exploitation UNIX
Athena regroupa en fait un grand nombre de projets, liés à l’objectif initial. Parmi ceux ayant
abouti à des technologies utilisées à l’heure actuelle, citons le système d’authentification Kerberos <a href=”http ://echo-linux.alienor.fr/articles/intro-X/biblio.doc.html”>[Garfinkel 91]</a>,
le système de gestion de fichiers Andrew (Andrew File System) et bien entendu, le système de
fenêtrage X (X Window System).
”The X Window System” : X
Basé initialement sur le système W, développé à Stanford par Paul Asente et Brian Reid, X
fut tout d’abord épuré puis à nouveau étendu. Entre 1983 et 1985, les versions se succédèrent
rapidement, pour aboutir en 1985 à la première version publique : X10. En Février 1987, naquit
X11R1 (X Version 11, Release 1) et depuis, les évolutions (releases) se succèdent, tout en
gardant une totale compatibilité arrière ; alors que chaque changement de version (X10, X11)
introduisait une incompatibilité.
L’ouverture de X l’a fait adopter par l’ensemble des constructeurs actuels et toute station Unix
achetée maintenant est livrée avec le Système X Window. A l’occasion de la dernière évolution
(X11R6 sortie en mai 1994) l’ancien ”MIT X Consortium” a été dissout, ses dirigeants estimant
que leur travail était terminé et une nouvelle entité nommée ”X Consortium Inc.” a été fondée,
dont la charge est de promouvoir le système.
La prochaine version de X (nom de code Broadway) sera X11R7 qui sortira en Décembre 1996.
Ce sera la derniere version développée par ”X Consortium Inc.” qui vivra son dernier hiver. X
sera alors transféré dans le giron de l’Open Group qui prendra en charge sa maintenance.
D’un point de vue technique, X ne subira plus maintenant que du support de maintenance. Il
demeure cependant une forte activité de recherche et de développement ”autour de X” dans le
domaine des extensions telles que le son, la vidéo, l’internationalisation,...
Dans le monde Unix, X n’a plus de concurrent. Le dernier en lice, NeWS (Network Window
System), développé par Sun a été définitivement abandonné.
La plus grande confusion régnant au sujet du véritable nom de X, voici un court extrait du
manuel X :
”The X Consortium requests that the following names be used when referring to this software :
X
X Window System
X Version 11
X Window System, Version 11
X11
X Window System is a trademark of X Consortium, Inc.”
9.2
Le système X Window
Le système X Window est un système distribué : Son principal concepteur, Bob Scheifler, chercheur en systèmes d’exploitation et applications distribués, désirait pouvoir afficher plusieurs
programmes sur un seul écran afin de les mettre au point. De ce désir d’utilisateur naquit
la fonctionnalité la plus importante du système : une application peut être exécutée sur une
machine et s’afficher sur une autre machine.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
9.2.1
111
Architecture
L’architecture générale du système est représentée figure 1. Il s’agit d’une architecture de type
Client-Serveur.
Fig. 9.1 – Architecture du système X
B Le client X, est une application qui a besoin d’afficher des informations sur un écran.
B Le serveur X est un programme, exécuté sur une machine (”machine hôte”) connectée
habituellement à un écran, un clavier et une souris. Il offre des services d’affichage aux
clients qui en ont besoin.
Un client X et un serveur X, sont donc deux programmes. Ils peuvent être exécutés sur des
machines différentes et communiquent entre eux par l’intermédiaire d’un réseau, la plupart du
temps, un réseau de type Ethernet utilisant la couche de transport TCP/IP. Cette communication suit un certain nombre de conventions (que l’on pourrait assimiler à une langue) appelée
protocole de communication : le protocole X. Ainsi, tout programme sachant demander des
services graphiques en ”parlant” le protocole X peut se connecter à un serveur ”comprenant” le
même protocole que lui. Un PC utilisant MS-Windows (Microsoft Windows) ou un Macintosh
utilisant Système 7, peuvent par exemple faire tourner un serveur X qui affiche des programmes
provenant de stations Unix.
9.2.2
Client-Serveur ?
L’intérêt de l’architecture client-serveur est multiple.
B Hétérogénéité et transparence : le réseau inséré entre un client et un serveur assure une
totale indépendance des deux parties : leur seule contrainte est le respect du protocole de
communication, moyennant quoi, n’importe quel type de machine respectant le protocole
client peut s’afficher sur n’importe quel type de machine respectant le protocole serveur. Un
cas remarquable est l’utilisation de terminaux X, qui sont des machines spéciales, dont la
seule fonction est d’agir en serveur X. Il s’agit là d’une des rares industries, produisant du
matériel (hardware), directement générée par un produit logiciel (software).
B Centralisation des ressources : le serveur X est le seul programme qui accède physiquement
aux ressources de la machine (écran, clavier, souris,...). Il implémente la logique permettant
d’arbitrer le partage de ces ressources entre ses différents clients, ce qui résout les problèmes
d’accès concurrents à celles-ci.
Yann MORÈRE
M.S.T. Télécom 1re Année
112
Cours de Système d’Exploitation UNIX
Lors des débuts de X, cette architecture constituait un apport notable, notamment du point de
vue de la centralisation, mais ces choix peuvent paraı̂tre maintenant discutables.
B L’utilisation du réseau ralentit l’affichage. Il faut garder en mémoire qu’à l’époque de la
conception de X, les machines coûtaient encore très cher. Il n’était pas envisageable de
donner une station graphique (ni même un simple PC) à chaque étudiant. L’architecture
centralisée d’alors, composée de serveurs et de terminaux X, semblait donc intéressante (les
programmes tournent sur un serveur et s’affichent sur les terminaux X).
De nos jours, la tendance est inversée. Les architectures centralisées disparaissent au profit
de réseaux locaux de petites machines (mais dont la puissance est cependant bien supérieure
à celle des gros ordinateurs de 1983). Le cas le plus fréquent devient l’affichage sur une
machine unique (les clients et le serveur tournent sur la même machine) et dans ce cas, la
pénalité apportée par l’insertion du réseau est injustifiable, bien qu’incontournable. Signalons
que certains constructeurs remplacent dans ce cas la couche de transport TCP/IP par une
couche utilisant de la mémoire partagée, ce qui procure un gain de vitesse important, mais
n’élimine pas les pénalisations de codage et décodage du protocole.
B Evolution des technologies : la plupart des machines et des systèmes d’exploitation actuels
ont des mécanismes de mémoire partagée, ainsi que les mécanismes d’arbitrage associés. Il
semble maintenant possible de refaire X en tant que bibliothèque partagée utilisant ces mécanismes <a href=”http ://echo-linux.alienor.fr/articles/intro-X/biblio.doc.html”>[Kilgard
95]</a>.
9.2.3
Le serveur X
Le serveur X offre les services graphiques de base nécessaires à tout système de fenêtrage :
B gestion des fenêtres ;
B primitives de dessin ;
B arbitrage des ressources.
C’est essentiellement dans l’arbitrage que se situent les difficultés de conception : un serveur
X est susceptible d’avoir plusieurs clients. Ces clients tournent concurremment et utilisent
les mêmes ressources. Le serveur X doit donc prendre en charge la gestion, le partage et la
distribution de celles-ci.
De part la volonté de son concepteur (Bob Scheifler), le serveur X n’offre que des services de très
bas niveau. D’autres systèmes tels que MS-Windows permettent de créer d’un seul appel un
bouton ou un menu. Le serveur X, lui, ne sait qu’ouvrir et fermer des fenêtres, sans décoration,
nues. C’est l’application qui devra, dans le cas du bouton, dessiner la bordure et le label.
9.2.4
Requêtes et événements
Le protocole de communication entre un client X et un serveur X n’est pas symétrique. Un
serveur est (comme son nom l’indique) au service du (ou des) client(s). Le client quant à lui
veut tirer parti des services proposés par le serveur ; il envoie pour ce faire des requêtes au serveur
et reçoit éventuellement des réponses ou des erreurs (figure 2). Le serveur peut aussi envoyer
des événements au client, pour lui signaler des modifications ou des actions de l’utilisateur.
M.S.T. Télécom 1re Année
5 octobre 2003
Cours de Système d’Exploitation UNIX
113
Fig. 9.2 – Requêtes et Evénements
Lorsqu’il reçoit une requête, le serveur X l’exécute. Si par exemple on lui demande de dessiner
une ligne dans une fenêtre A, il va faire les vérifications d’usage sur l’existence de la fenêtre A
et tracer la ligne désirée à l’intérieur.
Pour chaque requête reçue, le serveur va soit :
B l’exécuter si toutes les vérifications se sont révélées correctes ;
B renvoyer une erreur pour signaler que la requête ne peut être exécutée.
Dans tous les cas, il ne garde aucune mémoire des requêtes qu’il reçoit, pas plus que des tracés
qu’il a effectués. Ceci implique que lorsque le contenu d’une fenêtre est effacé, que ce soit par
programme ou par une manipulation de fenêtres, le serveur X ne sait pas restaurer son contenu ;
il appartient donc au programmeur de le faire.
Parmi les requêtes qu’un client peut exprimer à un serveur X, nous trouvons principalement :
B requêtes de manipulation de fenêtres : création, destruction, déplacement, retaillage,... ;
B requêtes de dessin : lignes, rectangles, arcs de cercles, images,... ;
B requêtes d’administration : utilisées pour la gestion des ressources du serveur.
Les événements quant à eux peuvent être classés en 2 catégories :
B événements de manipulation de fenêtres : le serveur X, en réponse aux requêtes ou à des
actions externes (déplacement d’une fenêtre par l’utilisateur, par exemple), envoie des événements de notification sur la vie des fenêtres (création, destruction, etc...) ;
B événements utilisateur : lorsque l’utilisateur déplace la souris ou appuie sur une touche, le
serveur X envoie un événement pour le signaler.
Les erreurs sont traitées par le système et ne sont pas directement destinées au programmeur.
Bien évidemment, un client X n’écrit pas directement les requêtes X sur le réseau. Une interface
de programmation et sa bibliothèque associée sont fournies, permettant d’envoyer des requêtes
à un serveur X par un simple appel de fonction. C’est la bibliothèque X ou Xlib . De
plus, d’autres librairies de programmation appellées boites a outils ou toolkits fournissent des
abstractions de plus haut niveau permettant d’accélerer les développements.
Yann MORÈRE
M.S.T. Télécom 1re Année
Téléchargement