Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Objectif
FRPSUHQGUHGpFULUHO·DUFKLWHFWXUHHWOHIRQFWLRQQHPHQWGHV
V\VWqPHVG·H[SORLWDWLRQ
utiliser le SE Linux
Pré-requis
Afin de suivre ce cours sans difficulté, il serait intéressant:
G·rWUHIDPLOLHUDYHFO·XWLOLVDWLRQGHEDVHG·XQV\VWqPH
G·H[SORLWDWLRQ:LQGRZV06-'26«
GHSRVVpGHUTXHOTXHVQRWLRQVG·DOJRULWKPLTXH
SYSTÈME D'EXPLOITATION Posséder des connaissances sur l'architecture des ordinateurs
Programme Bibliographie
3 4
8QV\VWqPHLQIRUPDWLTXHTX·HVWFHTXHF·HVW"
Théorie des SE
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
'pILQLWLRQHWU{OHG·XQ6( 'pILQLWLRQHWU{OHG·XQ6(
7 8
&·HVWXQHFRXFKHORJLFLHOOHGRQWOHU{OHHVWGHJpUHUOHV
efficace
périphériques et de fournir aux programmes utilisateur Les ressources G·XQRUGLQDWHXUVRQW
le processeur,
une interface simplifiée avec le matériel.
les mémoires,
les périphériques
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
S\VWqPHG·H[SORLWDWLRQHQWDQWTXHPDFKLQH S\VWqPHG·H[SORLWDWLRQHQWDQWTXHPDFKLQH
virtuelle (1/3) virtuelle (2/3)
9 10
appel système
/·DUFKLWHFWXUHDXQLYHDXGXODQJDJHPDFKLQHHVWORXUGHj Programme utilisateur
programmer, surtout pour les entrées/sorties.
Par exemple, dans les contrôleurs de disquette des PC actuels
une opération basique de lecture exige 13 paramètres de bas RXYULUBILFKLHU´73H[SUW[Wµ!
niveau compactés dans 9 octets. Ces paramètres précisent :
/·DGUHVVHGXEORFTXLGRLWrWUHOX SystqPHG·H[SORLWDWLRQ
Pilote de disquette Pilote G·LPSULPDQWH Pilote G·pFUDQ
Nombre de secteurs par piste
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
S\VWqPHG·H[SORLWDWLRQHQWDQWTXHPDFKLQH
virtuelle (3/3)
'pILQLWLRQHWU{OHG·XQ6(
11 12
/HV\VWqPHG·H[SORLWDWLRQSUpVHQWHDXSURJUDPPHXUXQHLQWHUIDFHG·DFFqV
aux ressources GHO·RUGLQDWHXUVRXVIRUPHG·DSSHOVV\VWqPH).
/HV\VWqPHG·H[SORLWDWLRQHQWDQWTXHPDFKLQH
Grâce à cette interface le programmeur peut faire abstraction des détails virtuelle se présente comme une couche logicielle qui
de fonctionnement des ressources (comme ceux listés sur le transparent
précédent). SHUPHWO·XWLOLVDWLRQGXPDWpULHOHWFRRUGRQQHOHV
Cette interface est basée sur des objets abstraits dont les plus importants
sont les fichiers et les processus.
GLIIpUHQWVSURJUDPPHVG·DSSOLFDWLRQ
Exemple :
/HEXWHVWDXVVLGHUHQGUHO·HQVHPEOHWUDQVSDUHQWHW
Le programmeur voit un disque comme une collection de fichiers qui
peuvent être ouverts, lus, écrits et fermés. IDFLOHjXWLOLVHUYLVjYLVGHO·XWLOLVDWHXU,+0
/H6(JqUHO·DOORFDWLRQGHVHFWHXUVDX[ILFKLHUVOHFKDUJHPHQWGHV
fichiers en mémoire, la cohérence entre les fichiers en mémoire et leur
copies sur le disque, le chargement et déchargement des pages (dans
le cas de la mémoire virtuelle), etc.
Ces actions sont transparentes pour le programmeurF·HVW-à-GLUHLOQ·HVW
pas obligé de les connaître pour se servir du disque.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Tâches du s\VWqPHG·H[SORLWDWLRQ- résumé 'pILQLWLRQHWU{OHG·XQ6(
13 14
)21&7,216'·816<67(0('·(;3/2,7$7,21$%25'((6'$16
Gestion de LE COURS
fichiers Gérer les processus, leur existence simultanée, leur coexistence dans la
mémoire centrale, le temps qui leur est alloué.
Gestion de Gestion de )RXUQLUDX[SURFHVVXVOHVPR\HQVG·DFFqVjWRXWHVOHVUHVVRXUFHVHQ
la mémoire processus WHUPHGHPpPRLUHHWG·HQWUpHVVRUWLHVGRQWLOVRQWEHVRLQ&KDTXH
SURFHVVXVGRLWSRXYRLUV·LPDJLQHUTX·LOGLVSRVHGHODPDFKLQHWRXWH
entière.
Gestion Gestion des 2IIULUXQHLQWHUIDFHG·XWLOLVDWLRQODSOXVFRQYLYLDOHSRVVLEOH&HODLQFOXW
G·XWLOLVDWHXUV O·,+0ODQJDJHGHFRPPDQGHLQWHUIDFHJUDSKLTXHPDLVDXVVLOH
entrées/sorties système de fichiers, qui permet de gérer la permanence des données
entre les exécutions de programme.
2SWLPLVHUO·XWLOLVDWLRQGHVGLIIpUHQWVpOpPHQWVFRPSRVDQWOHV\VWqPH
Les programmes utilisateur peuvent accéder à ces différentes fonctionnalités à LQIRUPDWLTXHGLVTXHVPpPRLUHSpULSKpULTXHVHWFDSWHXUVGLYHUV&·HVW
OHU{OHGXVRXVV\VWqPHG·HQWUpHV-sorties.
O·DLGHGHVappels système.
Offrir une interface de programmation la plus simple et la plus
puissante possible.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
6758&785('·816<67(0( 6758&785('·816<67(0(
15
'·(;3/2,7$7,2102'(51(81,; 16
'·(;3/2,7$7,2102'(51(81,;
Caractéristiques
Le noyau (kernel) : ensemble de fonctions système assurant la
gestion de la mémoire, des E/S et des processus.
Un système de fichiers hiérarchisé.
Un/plusieurs interpréteurs de commandes (shell).
Processus asynchrones (arrière plan).
Réentrant (partage du "texte") texte=instruction.
Mécanisme de communication (synchronisation).
E/S généralisées (intégrées au SGF).
5pDOORFDWLRQUHGLUHFWLRQGHV(6HWG·XQSURFHVVXV
Nombreux utilitaires de programmation.
0pFDQLVPHGHSURWHFWLRQGHPpPRLUHHQFDVG·HUUHXUGH
programmation.
Interfaces utilisateurs graphiques
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
/H6\VWqPHGH)LFKLHUV/(6*)'·81,;
17 18
/H6\VWqPHGH)LFKLHUV/(6*)'·81,; /H6\VWqPHGH)LFKLHUV/(6*)'·81,;
19 20
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
/H6\VWqPHGH)LFKLHUV/(6*)'·81,; /H6\VWqPHGH)LFKLHUV/(6*)'·81,;
23 24
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
/H6\VWqPHGH)LFKLHUV/(6*)'·81,; /H6\VWqPHGH)LFKLHUV/(6*)'·81,;
25 26
/H6\VWqPHGH)LFKLHUV/(6*)'·81,; /H6\VWqPHGH)LFKLHUV/(6*)'·81,;
27 28
Contrôles d'accès
Contrôles d'accès
La commande chmod permet de modifier les droits sur un fichier (noter la descente
La commande ls -l permet de connaître le détail des droits sur un UpFXUVLYHG·XQHVRXVDUERUHVFHQFHDYHFO·RSWLRQ-USRXUSRXYRLUO·XWLOLVHUVXUXQILFKLHULO
faut en être le propriétaire.
fichier: le type de fichier (catalogue, fichier ordinaire ou spécial), Syntaxe: chmod <mode> <reférenceFichier>
les droits d'accès pour les différents utilisateurs, le nombre de lien Il existe deux syntaxe: la notation symbolique et la notation octale
du fichier, les noms du propriétaire et du groupe, la taille du notation octale: Les modes peuvent être absolus et sont alors obtenus par combinaison des
fichier en nombre de caractères et la date de dernière nombres octaux
modification 4000 positionne le "set-uid" bit
2000 positionne le "set-gid" bit
ls -l /etc/passwd 1000 positionne le "sticky" bit
-r--r--r-- 1 root sys 8620 Jan 21 12:41 /etc/passwd 0400 lisible par le propriétaire
ls -l /bin/passwd 0040 lisible par les membres du groupe propriétaire
0001 exécutable par les autres utilisateurs
-rwsr-sr-x 1 root sys 16686 Jul 30 12:41 /bin/passwd
«
La commande passwd (fichier/bin/passwd) a le "set-uid" bit positionné exemple
(indication s en lieu et place de x pour le bit exécution par le $ chmod 664 exemples/toto
propriétaire) et donc au travers de cette commande tout utilisateur peut $ ls -l exemples/toto
modifier le fichier /etc/passwd (en l'occurrence changer son mot de -rw-rw-r-- 1 jmr ens 84 Jan 27 19:09 exemples/toto
passe.)
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
/H6\VWqPHGH)LFKLHUV/(6*)'·81,; /H6\VWqPHGH)LFKLHUV/(6*)'·81,;
29 30
Contrôles d'accès
Contrôles d'accès
La commande chmod SHUPHWGHPRGLILHUOHVGURLWVVXUXQILFKLHUQRWHUODGHVFHQWHUpFXUVLYHG·XQHVRXVDUERUHVFHQFH
DYHFO·RSWLRQ-r). SRXUSRXYRLUO·XWLOLVHUVXUXQILFKLHULOIDXWHQrWUHOHSURSULpWDLUH Exemples:
Syntaxe: chmod <mode> <reférenceFichier> $ ls -l ../c/bks
Il existe deux syntaxe: la notation symbolique et la notation octale -rwx--x--x 1 jmr ens 9282 Nov 13 13:27 ../c/bks
notation symbolique: les modes peuvent être symboliques et ils ont alors la forme: $ chmod u+t ../c/bks
[<quit>] <permission> <operation>
$ chmod u+s ../c/bks
<quit> est une combinaison des lettres: u pour le propriétaire, g pour le groupe, o pour les autres,
a pour tous. $ ls -l ../c/bks
<permission> est: + pour autoriser, - pour interdire, = imposer certaines permissions et supprimer -rws--x--t 1 jmr ens 9282 Nov 13 13:27 ../c/bks
les autres;
<opération> est une combinaison des lettrez: r pour lire, w pour écrire, x pour exécuter, s pour le
$ chmod g+s ../c/bks
"set-uid" (bit associé à u) ou le "set-gid" (associé à g); t pour le "sticky" bit. $ ls -l ../c/bks
Exemples: -rws--s--t 1 jmr ens 9282 Nov 13 13:27 ../c/bks
$ ls -l exemples/toto $ ls -l /tmp/toto
-rw-r----- 1 jmr ens 84 Jan 27 19:09 exemples/toto -rw-r--r-- 1 jmr ens 200 Jan 27 18:51 /tmp/toto
$ chmod go+r exemples/toto
$ chmod g=w /tmp/toto
-rw-r--r-- 1 jmr ens 84 Jan 27 19:09 exemples/toto $ ls -l /tmp/toto
-rw--w-r-- 1 jmr ens 200 Jan 27 18:51 /tmp/toto
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
/H6\VWqPHGH)LFKLHUV/(6*)'·81,; /H6\VWqPHGH)LFKLHUV/(6*)'·81,;
31 32
On peut également inter-agir sur le SF par programme On peut aussi interagir avec le SF par programme au moyen d'appels systèmes
à travers des appels systèmes.
Appel système Description Appel système Description
df RSHQQRPPRGH« Ouverture en lecture, écriture, etc. s = mkdir(chemin, mode) &UpDWLRQG¶XQQRXYHDXUpSHUWRLUH
pos = lseek(df, offset, org) Déplacement du pointeur de fichier s = chdir(chemin) Changement du répertoire courant
s = fstat(df, &buf) Idem, à partir du descripteur de fichier rewinddir(dir) Retour au début du répertoire pour une nouvelle lecture
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Problème : compter le nombre de mots uniques dans une liste . Un tube = un flot de données entre deux processus obtenu par la redirection
GHODVRUWLHVWDQGDUGG·XQSURFHVVXVYHUVO·HQWUpHVWDQGDUGG·XQDXWUHSURFHVVXV
sort ±u <f1 >f2 7ULHO¶HQWUpHVWDQGDUGHQODLVVDQW
sans création de fichier intermédiaire.
#une occurrence unique de chaque ligne
wc ±l <f2 #word count : affiche sur la sortie Meilleure solution pour le problème précédent :
#standard le nombre de lignes sort ±u <f1 | wc -l
GDQVO¶HQWUpHVWDQGDUG Fichier f1
Fichier f1 Fichier f2 demain stdout
demain stdout hier
stdin 0 1 0 1
sort ±u <f1
mardi stdout stdin
Processus exécutant
wc ±l <f1
0 1
Processus exécutant
hier
stdin 0 1 stdout
demain
stdin lundi
sort ±u <f1
mardi dimanche
Processus exécutant
wc ±l <f1
demain
Processus exécutant
>f2
demain lundi dimanche
lundi mardi 5
>f2
dimanche
2 stderr 2 stderr
2 stderr 2 stderr
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Le Système de Fichiers: MISE EN Le Système de Fichiers: MISE EN
OEUVRE DU S.G.F. UNIX OEUVRE DU S.G.F. UNIX
41 42
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Le Système de Fichiers: MISE EN Le Système de Fichiers: MISE EN
OEUVRE DU S.G.F. UNIX OEUVRE DU S.G.F. UNIX
45 46
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Répertoires
Un répertoire est un fichier comme les autres.
Chaque répertoire peut contenir des fichiers ou des
répertoires.
Les répertoires sont structurés en arbre hiérarchique (plus
exactement en graphe sans cycle).
Les données contenues dans un fichier de type répertoire
VRQWXQHVXLWHG·pOpPHQWVFRQWHQDQWchacun un numéro
Gestion de processus
G·inode et le nom du fichier.
/RUVTXHXQSURFHVVXVDEHVRLQG·XQILFKLHUOHQR\DXSDUFRXUW
OHVGLIIpUHQWVUpSHUWRLUHVMXVTX·jWURXYHUOHQRPUHFKHUFKp
Celui-FLIRXUQLWDORUVXQQXPpURG·inode, qui est chargé en
mémoire et utilisé dans la suite du processus.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
3URFHVVXV SURJUDPPHHQFRXUVG·H[écution
LES PROCESSUS
49 50
Un processus HVWXQSURJUDPPHHQFRXUVG·H[pFXWLRQ (QYLURQQHPHQWG·XQSURFHVVXV
Si un programme peut être caractérisé par la suite de ses instructions, un
SURFHVVXVYDrWUHFDUDFWpULVpSDUFHWWHPrPHVXLWHG·LQVWUXFWLRQ
auxquelles il convient de rajouter un ensemble de données qui vont
varier au cours du temps. Ainsi, à un instant WGRQQpLOV·DMRXWHjFHV (VSDFHG·DGUHVVDJH Registres Etat Divers caractéristiques
Pointeurs sur segments de (élu,
instructions exécutables la valeur des différents registres du processeur (qui PC Process ID (PID)
ODSOXSDUWGXWHPSVYDFDUDFWpULVHUO·LQVWUXFWLRQVXLYDQWHH[pFXWDEOHOD code, de données et de pile prêt, Group ID (GID)
valeur du compteur ordinal (qui détermina la position atteinte dans FFFF bloqué)
pile SP Parent process ID (PPID)
O·H[pFXWLRQGXSURJUDPPHOHVYDOHXUVGHVGLIIpUHQWHVYDULDEOHVGDQVOD Priorité
mémoire. Drapeaux Date de lancement
Un même programme peut être lancé plusieurs fois par le même .
données . Temps UC utilisé
utilisateur ou par des utilisateurs différents. . Répertoire courant
/HUpVXOWDWGHFKDFXQGHFHVODQFHPHQWVOHWHPSVG·H[pFXWLRQOHFRQWHQX code Fichiers ouverts
GHODPpPRLUHORUVGHO·H[pFXWLRQSDUIRLVPrPHODTXDQWLWpGHPpPRLUH 0000
«
occupée par les données seront pratiquement toujours différents. C'est
PrPHFHTXLIDLWIRQGDPHQWDOHPHQWODSXLVVDQFHGHO·LQIRUPDWLTXHSDU Tous les processus sont recensés dans une table de processus, où une entrée
opposition aux automatismes. Il y aura bien un programme et plusieurs décrit un processus.
processus.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
2. Ordonnancement avec priorité : chaque processus a sa priorité et on lance le 1. Tourniquet avec priorité : les processus attendent dans plusieurs files selon
processus prêt dont la priorité est la plus élevée. La priorité du processus en OHXUVSULRULWpV/DILOHGHODSOXVJUDQGHSULRULWpHVWVHUYLHG·DERUG$
cours diminue au fur et mesure de son temps pris dans le processeur. Lorsque O·LQWpULHXUG·XQHILOHO·RUGRQQDQFHPHQWVHIDLWVHORQODPpWKRGHGHWRXUQLTXHW
FHWWHSULRULWpEDLVVHHQGHVVRXVGHFHOOHG·XQDXWUHSURFHVVXVHQDWWHQWHOH Processus prêts
Têtes de files
processus courant cède sa place dans le processeur. (Priorité la plus élevée)
Priorité 4
Priorité 3
Priorité 2
Priorité 1 (Priorité la plus basse)
2. /HSOXVFRXUWG·DERUG SRXUPLQLPLVHUOHWHPSVPR\HQG·H[pFXWLRQ
8 4 4 4 4 4 4 8
A B C D B C D A
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Temps moyen = (8+12+16+20)/4 = 14 Temps moyen = (4+8+12+20)/4 = 11
(WDWVG·XQSURFHVVXV (WDWVG·XQSURFHVVXVFDVG
81,;
61 62
ETATS
Plus précisément, dans le système UNIX, les différents états d'un processus
peuvent être caractérisés comme suit :
Elu (running) = en cours
Le processus est prêt en mémoire. Il ne s'exécute pas, mais il est
G·H[pFXWLRQ TRANSITIONS
chargé en mémoire et est prêt à s'exécuter dès que le noyau l'élira
Prêt (ready, runnable) = Elu 1 = le processus se comme processus actif.
2 bloque en attente
suspendu
Le processus s'exécute en « mode noyau », c'est à dire qu'il fait appel
temporairement pour G·pYpQHPHQW à une fonction du noyau du système (read, write, fork, exec, .) .
3
SHUPHWWUHO·H[pFXWLRQ 1 2 O·RUGRQQDQFHXU
Le processus s'exécute en « mode utilisateur », c'est à dire qu'il réalise
G·XQDXWUHSURFHVVXV
Prêt choisit un autre des calculs d'une fonction de bibliothèque (+, -, strcpy, .) .
processus
Le processus est « préempté », c'est à dire que le noyau a effectué un
Bloqué (blocked) = changement de contexte pour élire (« donner la main à ») un autre
attendant un événement 3 O·RUGRQQDQFHXU processus.
extérieur, e.g. appui Bloqué 4 choisit ce processus
Le processus est « zombie ». Il a provoqué un appel à une instruction
G·XQHWRXFKHDXFODYLHU 4 O·pYpQHPHQW de terminaison (exit), et n'aura donc plus besoin du CPU, mais son père
pour pouvoir continuer attendu survient n'a pas encore pris connaissance de ses codes de retour et de ses
statistiques d'exécution. Cet état est typique des processus UNIX. Il est
normalement très transitoire. C.est un état terminal.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
(WDWVG·XQSURFHVVXVFDVG
81,; (WDWVG·XQSURFHVVXVFDVG
81,;
63 64
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Communication inter-processus
65 66
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
5 6 7 8 9 <qb m queue>
Fich.c TP17.c CV.doc Test.ps tête queue
//I1b
Processus B : <charger fichier qb 9 5 6 7 8 9
tête queue après
Fich.c TP17.c CV.doc Test.ps
<qb m queue> //I1 F_b dans [queue]> //I2b
qc 9 I1c
<charger fichier 5 6 7 8 9 <queuem qb+1> //I3b
après I2
tête queue
F_b dans [qb]> //I2 Fich.c TP17.c CV.doc Test.ps F_b
Processus C : qb 9 5 6 7 8 9
<queuem qb+1> //I3 après
tête queue Fich.c TP17.c CV.doc Test.ps F_b
<qc m queue> //I1c qc 9 I2b
5 6 7 8 9 <charger fichier tête queue
après I3
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Principes de la memoire virtuelle Principes de la mémoire virtuelle
73 74
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Principes de la mémoire virtuelle Principes de la mémoire virtuelle
77 78
Quelques points de théorie
La notion de backing store
Quelques points de théorie
Il est bien important de comprendre que pour tout système de gestion de la mémoire suffisamment
évolué, les notion de swap et de cache disque sont fusionnées. Les deux consistent a utiliser la
La MMU
mémoire comme un cache pour le disque : Pour les solutions que nous allons voir par la suite (segmentation et
dans le premier cas, on peut libérer de la mémoire en l'écrivant sur le disque,
dans le second cas, on peut utiliser la mémoire disponible pour éviter des accès disques par la suite. pagination), il est nécessaire d'obtenir de l'aide du matériel. En
Il existe bien sûr quelques différences, par exemple, une modification sur un chier doit être écrite effet, effectuer des traitements logiciels sur chaque accès mémoire
sur le disque tôt ou tard pour éviter une perte de données en cas de redémarrage ou coupure de
courant, tandis qu'une zone de données d'un programme n'a jamais besoin d'être écrite. Mais sur le serait bien trop coûteux en temps, et difficile a réaliser (puisque le
fond, les deux peuvent en effet être gérés de manière unifiée. logiciel a besoin lui-même d'accéder a la mémoire).
Tout ceci se réduit a la notion de backing store. La mémoire n'est cache pour le disque dur. Chaque
zone mémoire, dépendant de son utilisation (bibliothèque partagée, exécutable, données, cache Il existe donc une entité matérielle spéciale nommée Memory
disque) est associée a un backing store qui est la zone du disque qui permet de la stocker si
nécessaire. Management Unit ou MMU en abrégé, qui se situe théoriquement
Il peut arriver qu'une zone mémoire soit plus grande que son backing store (par exemple une entre le CPU et la mémoire.
machine équipée de 2Go de mémoire mais dont le swap a été limite a 1Go), le système doit être
capable de gérer ces cas, mais ils ne modifient pas le modèle théorique. Cette unité effectue une traduction entre l'adresse virtuelle
Enfin il est a noter que l'utilisation d'une partition brute comme backing store est souvent bien plus
efficace que l'utilisation d'un chier (avec tous les soucis de fragmentation, . . .associes). Mais bien
demandee par la CPU et l'adresse physique comprise par le
sûr, ce n'est souvent pas possible (en pratique, seul le swap est sur une partition externe). matériel.
En pratique, la MMU est quasiment toujours intégrée au CPU et
accède directement aux registres du CPU, par exemple.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
La segmentation
La pagination
Principes de la pagination
Principes de la segmentation La pagination vise a régler les principaux problèmes de la segmentation.
Segmentation simple Son principe est de diviser la mémoire en zones de taille fixe (de 2Ko a
16Ko en général, 4Ko étant le plus fréquent), appelées page.
La segmentation simple, comme celle utilisée dans le mode réel des La mémoire physique elle est découpée en cadres de pages (page frames en
processeurs x86, consiste a spécifier, pour tout accès mémoire, un anglais), de la même taille.
registre de segment. Ce registre contient une valeur qui détermine a Pour chaque page, une table indique son cadre de page correspondant, ainsi
partir d'ou l'adresse mémoire est spécifiée. que des informations sur son état.
En quelque sorte, une page est un segment de taille fixe et réduite. Mais la
Par exemple, si on indique un segment commençant a l'adresse différence principale est que les pages sont transparentes pour le
physique 0x1000, et qu'on demande l'adresse 0x42, on utilisera en programme, qui lui-même voit sa mémoire de manière continue.
réalité l'adresse 0x1042. L'adresse spécifiée en complément du Le matériel et le système d'exploitation gèrent cette pagination de manière
segment est souvent appelée offset. transparente.
Le registre de segment à utiliser est parfois déterminé Par exemple, avec des pages de 4096 octets, l'adresse mémoire 4196
correspond a 100 octets a l'intérieur de la page numéro 1 (en informatique,
automatiquement, en effet, le x86 possède un registre spécifique a la numérotation commence toujours a 0, ou presque). Si la table de
la pile et un autre spécifique au code (la ou sont chargées les correspondance indique qu'elle se trouve dans le cadre numéro 2, l'adresse
instructions). physique sera donc 8192 (début du cadre numéro 2) + 100, soit 8292.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Scripts Shell
81 82
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Les commandes exécutées par le shell peuvent
Les interpréteurs de commandes sous UNIX
provenir soit: 6RXV81,;O·LQWHUSUpWHXUGHFRPPDQGHQ·HVWSDVXQLTXH
du terminal (mode interactif), O·XWLOLVDWHXUjVDFRQYHQDQFHSHXWFKRLVLUSDUPLSOXVLHXUV
VRLWG·XQILFKLHUPRGHEDWFK2QSHXWHQHIIHWFUpHU (Bourne-shell ou sh : en standard, le plus ancien historiquement,
des fichiers de commandes ce qui permet en quelque Korn-shell (ksh : conçu comme une extension du Bourne-shell),
sorte aux utilisateurs de fabriquer leurs propres C-shell (csh : dont la syntaxe est proche de celle du langage C),
commandes. Ces commandes possèdent les mêmes Bourne Again Shell (bash : le plus répandu sous Linux),
prérogatives que les commandes définies dans les ...
répertoires /bin et /usr/bin. De cette manière, il est Les programmes conçus pour sh peuvent, à quelques détails
possible à un utilisateur de se façonner un près, être interprétés par les autres shells.
environnement sur mesure.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Scripts Shell Scripts Shell
85 86
&RPPHQWODQFHUO·H[pFXWLRQG·XQSURJUDPPHschell
&RPPHQWODQFHUO·H[pFXWLRQG·XQSURJUDPPHschell
Un programme shell (batch) est contenu dans un fichier. Ces deux dernières manières de procéder ont pour
inconvénient de créer un nouveau processus descendant du
Pour le lancer, on peut utiliser trois méthodes :
processus SHELL courant G·RODFRPPDQGHHVWODQFpHHWTXL
rendre le fichier exécutable par chmod +x fich. Puis il ne dans certain cas peut être gênant.
UHVWHSOXVTX·jWDSHUfich [paramètres] FKDTXHIRLVTX·RQ
généralement, on aimerait que le fichier de commande soit
veut le lancer. Le shell constatera que ce fichier contient des
commandes et les interprétera. interprété dans le même processus que celui du shell pour
sh [-options] fich [paramètres]
FHODRQUHGLULJHPRPHQWDQpPHQWO·HQWUpHVWDQGDUGGXshell
Cette commande permet de forcer l'exécution du fichier ded
interactif courant au moyen de la commande
commandes en créant un nouveau processus shell (prenant ses . <reference fichier commande>
données dans le fichier de commandes)
ainsi la commande $ . com1 exécute le script com1.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Le shell interprète des instructions séparées par des séparateurs. Les
Dans une phrase, les séparateurs sont le blanc et la
instructions étant de sortes très différentes, nous utiliserons le
vocabulaire suivant : tabulation, leur nombre étant quelconque.
une commande est une instruction analogue à un appel de sous-
programme dont le code est exécutable par la machine.
Les mots du langage sont constitués avec les caractères
Par exemple cp et rm, sont des commandes. lettres, chiffres et souligné. Ils commencent par une
une commande interne est une instruction analogue à un appel de sous-
programme interne au shell. Son action est réalisée par le shell lui- lettre ou un souligné. On peut utiliser des caractères
même. spéciaux à condition de les invalider.
Par exemple exit est une commande interne au shell.
une instruction est une commande interne qui est une structure de
Les mots désignent les variables, les symboles du
contrôle if, while, for, sont des instructions du shell.
langage et les noms des fichiers. On pourra placer des
une phrase, ou une ligne de commande, est une composition
syntaxiquement correcte de commandes, commandes internes et FRPPHQWDLUHVjFRQGLWLRQGHOHVIDLUHSUpFpGHUG·XQ
instructions que sait interpréter le shell.
Les séparateurs de phrases sont le retour chariot (rc) et le ;
dièse (#) et de les terminer par un (rc).
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Scripts Shell: caractères génériques Scripts Shell: caractères génériques
89 90
Les caractères génériques portent aussi le nom de caractères jokers.
Lorsque le shell LQWHUSUqWHOHVFDUDFWqUHVJpQpULTXHVLOQHOHVUHPSODFHSDVV·LOQH
,OVVHUYHQWjUHPSODFHUXQFDUDFWqUHTXHOFRQTXHRXQ·LPSRUWHTXHOOH trouve aucun nom de fichier à mettre en correspondance. Par exemple:
FKDvQHPrPHYLGHFRPPHOHVMRNHUVUHPSODFHQWQ·LPSRUWHTXHOOH rm * supprime tous les fichiers du répertoire courant ainsi que tous les sous-répertoires
vides.
carte). ls -l t*.c liste tous les fichiers du répertoire courant commençant par t et se terminant par
Lorsque le shell rencontre un mot comportant un caractère joker, il .c.
tente de remplacer ce caractère par toutes les solutions possibles. ls -l *.? liste tous les fichiers du répertoire courant se terminant par . VXLYLG·XQVHXO
caractère.
On obtient ainsi plusieurs combinaisons contenant le mot. Ces
cp [a-e]*.* .. copie tous les fichiers du répertoire courant commençant par une des cinq
caractères sont le SRLQWG·LQWHUURJDWLRQ, O·pWRLOH et les crochets. SUHPLqUHVOHWWUHVGHO·DOSKDEHWHWFRQWHQDQWDXPRLQVXQSRLQWGDQVOHXUQRPPrPHHQ
? remplace un caractère quelconque sauf le retour cariot (rc). dernière position. La copie se fait dans le répertoire père.
* UHPSODFHQ·LPSRUWHTXHOOHFKDvQHGHFDUDFWqUHVPrPHYLGHQH La commande ls -l ??? vous donnera les contenus de tous les répertoires écrits avec
seulement 3 lettres.
comportant pas de (rc).
La commande ls -l ??e* liste le contenu des répertoires commençant par 2 lettres
[ ] remplace un caractère: TXHOFRQTXHVVXLYLHVG·XQHHWGHQ·LPSRUWHTXRL\FRPSULVXQEODQF
parmi ceux énumérés entre les crochets ou La commande ls -l [A-Z,a-e]* liste le contenu des répertoires commençant par une lettre
un caractère parmi ceux qui ne sont pas énumérés si la liste commence par un majuscule ou par une minuscule comprise entre a et e. On aurait aussi pu écrire : ls -l [A-
e]* .
SRLQWG·H[FODPDWLRQ
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Le caractère de continuation \ placé en fin de ligne
Les variables sont désignées par des mots : elles ne
LQGLTXHTXHODSKUDVHHQFRXUVQ·HVWSDVWHUPLQpHHW se déclarent pas.
TX·HOOHVHSRXUVXLWVXUODOLJQHVXLYDQWH/Hrc) est
ainsi transformé en espace.
,OQ·H[LVWHDXFXQHQRWLRQGHW\SH
Les caractères spéciaux ont une signification dans le
Par convention, les variables sont écrites en lettres
ODQJDJHjPRLQVTX·LOVQHVRLHQWLQYDOLGpV majuscules.
Un caractère spécial devient un caractère normal
/HVSDUDPqWUHVGpVLJQHQWO·HQVHPEOHGHVFKDvQHVGH
V·LOHVWSUpFpGpGXFDUDFWqUH\ RXV·LOHVWVLWXpGDQV FDUDFWqUHVTXHO·RQpFULWjODVXLWHGXQRPG·XQ
un parenthésage particulier. fichier shell lors de son exécution.
Les caractères spéciaux sont: _!·¶^`\
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Scripts Shell: Variables Utilisateurs Scripts Shell
93 94
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Scripts Shell: Expansion des variables Scripts Shell: Expansion des variables
97 98
/DVXEVWLWXWLRQGHYDOHXUG·XQHYDULDEOHRXG·XQ
Exemples
1) ESSAI=${VAR:-mot} 9$5Q·pWDQWSDVLQLWLDOLVpH(66$,HVWLQLWLDOLVpSDUPRW
SDUDPqWUHSHUPHWG·pYDOXHUFRQGLWLRQQHOOHPHQWOD pTXLYDOHQWj(66$, PRW9$5Q·H[LVWHSDV
valeur de la variable ou du paramètre. Ce mécanisme VAR=init
sert à donner des "valeurs par défaut" à des variables ESSAI=${VAR:-mot} VAR étant initialisée par init, ESSAI est initialisé par $VAR
(équivalent à ESSAI=$VAR).
dont on ne sait pas si elles sont initialisées. Ainsi : 2) ESSAI=${VAR:=mot} 9$5Q·pWDQWSDVLQLWLDOLVpH9$5HVWLQLWLDOLVpHSDUPRWHW
ESSAI devient équivalent à $VAR (équivalent à VAR=mot, ESSAI=$VAR, donc
${VAR:-mot} délivre $VAR si la variable VAR est initialisée, ESSAI=mot)
sinon initialise avec mot. VAR=init
${VAR:=mot} assigne mot à VAR VLODYDULDEOHQ·HVWSDV ESSAI=${VAR:=mot} VAR étant initialisée par init, ESSAI devient équivalent à
$VAR (équivalent à ESSAI=$VAR)
initialisée, puis évalue $VAR. 3) ESSAI=${VAR:?mot} 9$5Q·pWDQWSDVLQLWLDOLVpHDIILFKH9$5HWPRWSXLV
${VAR:?mot} délivre $VAR si la variable est initialisée, sinon arrête le processus shell en cours.
affiche le nom de la variable suivi de :, puis mot, et termine VAR=init
ESSAI=${VAR:?mot} VAR étant initialisée par init, ESSAI devient équivalent à
le processus shell en cours. $VAR (équivalent à ESSAI=$VAR) et le processus shell se continue.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Scripts Shell: expressions, lecture et Scripts Shell: expressions, lecture et
101
affichage 102
affichage
/HFDOFXOG·H[SUHVVLRQVXUGHVYDULDEOHVHVW
Les comparaisons arithmétiques :
supporté par le shell sous certaines contraintes. $ A=3 lt (<), gt (>), le (<=), ge (>=), eq (==), ne ( !=).
$ B=2
7RXWG·DERUGOHVRSpUDWHXUVDULWKPpWLTXHVVRQWHQ $ Echo 1+3
Les comparaisons de chaînes sont facilement compréhensibles,
nombre réduit : +-*/ et % (le reste). $ 1+3 simplement il faut veiller à ne pas confondre avec des comparaisons
Ensuite, les calculs sont réalisés en nombre entiers $ echo $[1+3] arithmétiques :
seulement. $4 s1=s2 , s1>s2, s1<s2, -n s1 (« s1 nest pas vide »), -z s1 (« s1 est vide »).
Enfin, il faut utiliser le [ ] SRXUUpDOLVHUO·pYDOXDWLRQ $ echo $[A+B]
Les comparaisons sur les fichiers :
Par exemple : $5 -r f (« f existe et a le droit de lecture r »),
$ echo $[A/B] -w f (« f existe et a le droit w »),
$1
$ echo $[A/B]|bc ²l
-x f (« f existe et a le droit x »),
$ 1.5 -f f (« f existe et est un fichier ordinaire »),
-d r (« le répertoire r existe »),
La dernière ligne montre comment utiliser la commande calculateur bc pour se sortir de
O·LPSDVVHGHVQRPEUHVHQWLHUV -u f (« f existe et a le bit set UID »),
-VI©IH[LVWHHWQ·HVWSDVGHORQJXHXUQXOOHª
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Les lectures et les écritures sont réalisées par des commandes
Les mots-clés sont :
internes du shell. if then else fi case esac for while
until do done select
La commande interne read permet dinitialiser des variables en mode NUM=0
conversationnel et admet comme paramètre une ou plusieurs variables
Boucle for
for PARAM in $*
séparées par un séparateur de mots. for indice in liste
do
Elle initialise la première avec la première chaîne tapée, le séparateur au do
clavier étant aussi le blanc (ou le TAB). NUM=`expr $NUM + 1`
liste_de_commandes echo "paramètre $NUM = $PARAM"
Elle initialise la deuxième avec la deuxième chaîne, ... et elle initialise la done
dernière avec toutes les chaînes de fin de ligne. done
La liste_de_commandes est for USER in `cat liste`
#!/bin/bash exécutée pour chaque valeur de
echo Please, enter your firstname and lastname do
O·LQGLFHXQHYDULDEOHQRQ elm $USER ²s " fichier message " < message
read FN LN déclarée) prise dans la suite de
echo "Hi! $LN, $FN !" mots indiquée dans liste après le done
La commande echo permet dafficher la valeur dune variable et est in .
souvent une commande interne. Nous en avons déjà vu de nombreux
usages.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Scripts Shell: boucles et conditionnelles Scripts Shell: boucles et conditionnelles
105 106
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Sélection if
Sélection if
if liste_de_commandes_1
On peut imbriquer les structures if comme dans le cas suivant :
then if...
liste_de_commandes_2 then...
else if...
else then...
liste_de_commandes_3 else...
fi fi
On teste le code de retour de la dernière commande de fi
liste_de_commandes_1 ;
On peut aussi écrire else if : elif (dans ce cas, un seul fi terminal)
V·LOHVWpJDOjliste_de_commandes_2 est exécutée
La structure if suivante :
VLQRQF·HVWliste_de_commandes_3 TXLO·HVW if commande_1
then
/·H[LVWHQFHGHelse liste_de_commandes_3 Q·HVWSDVREOLJDWRLUH commande_2
Le code de retour de la structure est 0 si liste_de_commandes_2 est fi
H[pFXWpHVLQRQF·HVWFHOXLGHODGHUQLqUHFRPPDQGHGH
SHXWV·pFULUHcommande_1 && commande_2
liste_de_commandes_3.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Scripts Shell: boucles et conditionnelles Scripts Shell: boucles et conditionnelles
109 110
Sélection case
Sélection if: Exemple : case expression in
,QGLTXHUVLOHVILFKLHUVG·XQUpSHUWRLUHVRQWGHVILFKLHUVRUGLQDLUHVRXVSpFLDX[RX cas_1)
liste_de_commandes_1 ;;
des sous-répertoires.
cas_2)
for FICH in * liste_de_commandes_2 ;;
do . ..
if [ -d $FICH ] # $FICH est-il un répertoire ? cas_n)
then liste_de_commandes_n ;;
esac
echo "répertoire : $FICH"
else
/·LQWHUSUpWHXUGHFRPPDQGHVFKHUFKHXQHpTXLYDOHQFHHQWUHODFKDvQHexpression
et un des cas_i HQVXLYDQWO·RUGUHGHOHXUGpILQLWLRQ6LXQHpTXLYDOHQFHHVWWURXYpH
echo "fichier : $FICH"
alors la liste_de_commandes associée est exécutée et la structure est terminée.
fi
Comme le caractère * UHSUpVHQWHWRXWHFKDvQHGHFDUDFWqUHVRQO·XWLOLVHFRPPH
done cas par défaut. Si aucun cas ne convient, la structure case ne fait rien.
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Scripts Shell: les commandes Scripts Shell: les commandes
113 114
test expr
[ expr ] test
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Scripts Shell: les commandes Scripts Shell: les commandes
117 118
PARENTHESAGES
SOUS-PROGRAMMES
Les parenthésages servent à regrouper des séquences de mots ou à isoler des mots.
Procédure
Ils sont multiples et ont des significations spécifiques: Un texte écrit en shell et stocké dans un fichier constitue une procédure shell.
{...} regroupement de commandes, parenthésage ordinaire ; délimite aussi la portée de Dans le texte, les paramètres formels ont pour noms 1, 2...9 et leurs valeurs sont désignées par
O·RSpUDWHXUGHSULVHGHYDOHXU$. $1,..., $9.
(...) entoure une liste de commandes qui sont exécutées par un nouveau processus UNIX. /·DFWLYDWLRQGHODSURFpGXUHSHXWVHIDLUHHQH[pFXWDQWODFRPPDQGHsh suivie du nom du fichier
·· (quotes) parenthésage GDQVOHTXHODXFXQFDUDFWqUHVDXI·Q·DGHVLJQLILFDWLRQVSpFLDOH DYHFFHUWDLQHVRSWLRQVVLO·RQYHXWRXHQUHQGDQWOHILFKLHUH[pFXWDEOHFHTXLIDEULTXHXQH
nouvelle commande appelée sous-programme shell.
"..." (guillemets) parenthésage GDQVOHTXHODXFXQFDUDFWqUHVDXI¶HWQ·DGHVLJQLILFDWLRQ
spéciale.
Fonction
¶¶ (accents graves) exécution de la phrase placée entre les accents graves; délivre la sortie Une fonction est un sous-programme local à un processus shell.
standard des commandes situées dans ce parenthésage/HVFDUDFWqUHVVSpFLDX[jO·LQWpULHXUGX (OOHQ·HVWSDVH[pFXWpHSDUXQQRXYHDXSURFHVVXVshell HWQ·HVWSDVVWRFNpHVHXOHGDQVXQILFKLHU
parenthésage QHVRQWLQWHUSUpWpVTX·jO·H[pFXWLRQGHODSKUDVH
(OOHVHGpFODUHXQSHXFRPPHHQ&GDQVOHSURJUDPPHTXLO·XWLOLVH
Le rôle des parenthésages par · et " HVWG·pYLWHUXQHXWLOLVDWLRQIDVWLGLHXVHGX nom()
caractère \ quand il faut banaliser plusieurs caractères spéciaux dans une {
commande. Bien entendu, on ne peut pas banaliser le caractère quote dans un corps de la fonction
parenthésage quote, ni le caractère guillemet dans un parenthésage guillemet. }
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice
Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice Support : Système d'exploitation (Linux) //Par: Dr TCHOUPE T. Maurice