Académique Documents
Professionnel Documents
Culture Documents
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
Introduction
Objectifs
Objectifs de ce module
2012-2013
L'environnement de programmation
Introduciton
SOMMAIRE
0. Architecture et Blocs fonctionnels
I. Prsentation gnrale des systmes
dexploitation
Dfinition et objectifs dun systme dexploitation
Evolution des systmes dexploitation
Fonctions dun systme dexploitation
Structure dun systme dexploitation
Caractristiques des Systmes dexploitation modernes
TP: LE SHELL
dUNIX
Scripts,
outils: grep, sed
awk,
Le Systme de fichiers
Le shell
Les filtres grep,sed, awk, find, sort
TP: Compiler
avec gcc
make, gdb,
gestion des
erreurs,
Bibliothques
Environnement dexcution
Interaction avec lenvironnement dexcution
Gestion des erreurs
Ecrire et utiliser des Bibliothques
L'environnement de programmation
2012-2013
TD: Etude de
Cas,
La Structure de
Windows
TD:FAT, NTFS
Introduciton
Bibliographie
Livres pdagogiques
Systmes d'exploitation -- Concepts et algorithmes.
Joffroy Beauquier et Batrice Brard. Ediscience international, Paris, 1993.
Systmes d'Exploitation, Andrew Tanenbaum. Pearson Education, 2003.
Principes des systmes d'exploitation des ordinateurs, S. Krakowiak , Dunod 1987
Architecture des systmes d'exploitation, M. GRIFFITHS, ..., M. VASSAYADE,
Herms, 1988.
Systmes d'exploitation, concepts et algorithmes, J. BEAUQUIER, B.BERNARD, MC
Graw-Hill, 1990.
Livres documentant un systme particulier
La programmation sous Unix, 3e d., J.M. Rifflet, McGraw-Hill, 1993
The Unix Programming Environment- B.W. Kernighan, R. Pike, Prentice-Hall
Conception du systme UNIX, Maurice J. Bach. Dunod, 1997.
Conception et implmentation du systme 4.4BSD.
Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, et John S. Quarterman.
International Thomson Publishing France, 1997.
Le systme UNIX- S.R. Bourne
InterEditions, 1985
Inside Windows NT, Helen Custer, Microsoft Press, 1992
2012-2013
L'environnement de programmation
ARCHITECTURE ET BLOCS
FONCTIONNELS
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
Blocs fonctionnels
Blocs fonctionnels
La comprhension de certaines fonctions dun systme
dexploitation ncessite un minimum de connaissance
du matriel hardware .
ARCHITECTURE: dcoupage de la machine en sousensembles, et interrelations entre ces sous-ensembles
Choix darchitecture: compromis entre performances et cots
(efficacit et facilit de construction)
Principaux blocs :
Processeur
Mmoire
Bus
E/S
2012-2013
M
E/S
L'environnement de programmation
Blocs fonctionnels
LE PROCESSEUR (CPU)
Dirige les activits de lordinateur.
A chaque cycle dhorloge, chaque unit du
processeur va ouvrir ou fermer certains ports pour
dplacer, lire, crire, comparer, additionner.
Les ordres sont donns par lunit de contrle.
2012-2013
L'environnement de programmation
Blocs fonctionnels
La Mmoire
Stocke les informations temporairement.
Ensemble de cases de rangement ou position, chacune delles pouvant
contenir les informations et tant repr par une adresse.
Adresse: permet de mettre ou extraire la reprsentation dinformation.
Bit : une position comprend un nombre fixe dlments (0 et 1)
Mot : un nombre dtermin de bits occupant des postions contiges;
selon modle (16, 24, 32 bits,..).
Unit dadressage: plus petite quantit de mmoire qui spare deux
adresses conscutives.
Espace dadressage: ensemble de toutes les adresses que lunit
commande est capable de gnrer
donne par la largeur des adresses (nombre de bits dans une adresse).
L'environnement de programmation
Blocs fonctionnels
La Hirarchie de mmoire
Gre par :
-Le compilateur
- Un dispositif cbl
- Le systme
dexploitation
- La cration de fichiers
(SGF)
2012-2013
L'environnement de programmation
Blocs fonctionnels
Le Bus
Les instructions sont transportes par des lignes parallles
groupes quon appelle bus.
Aspect physique:
Fils lectriques reliant les diffrents lments dun ordinateur.
Ces lments sont relis au bus par un connecteur : fond de
panier .
Aspect Logique:
Multiplexage: les donnes et les adresses peuvent tre multiplexs sur
les mmes lignes dun bus.
Espace dadressage: Largeur des adresses que le bus peut manipuler
Cycle du bus: dfinit par le vitesse de lhorloge, un mouvement de
donnes se produit chaque top de lhorloge.
Transaction: un change de donnes entre deux lments connects
au bus.
Dbit: nombre de mots de donnes quil est capable de transporter par
seconde.
2012-2013
L'environnement de programmation
10
Blocs fonctionnels
L'environnement de programmation
11
Quelques architectures
E/S
2012-2013
E/S
L'environnement de programmation
Quelques architectures
2012-2013
L'environnement de programmation
13
Quelques architectures
2012-2013
L'environnement de programmation
14
Quelques architectures
Architecture de Harvard
Augmenter le flux des informations qui circulent dans la
machine: M.I. et M.D.
Multiplier par deux la vitesse du processeur sans
changer la vitesse des mmoires.
P
MI
BD
BI
CPU
cache
donnes
MD
cache
instructions
gestion de la
mmoire
bus
externe
pr-recherche
contrle du
bus
Le microprocesseur 68030
2012-2013
L'environnement de programmation
15
Quelques architectures
Machines microcodes
Doter un processeur dune mmoire spciale dite
mmoire de microcode destine contenir des
micro-instructions.
Une instruction lmentaire est constitue dun
micro-programme : squence de microinstructions
Rduire les cots de ralisation des processeurs
MM
2012-2013
BIN
L'environnement de programmation
M
16
Les Interruptions
Les Interruptions
Comment lU.C. va prendre en compte les vnements extrieurs.
Les interruptions externes
dues aux priphriques ou des vnements extrieurs au systme informatique
(temps rel).
FAIRE TOUJOURS
signaler au CPU quil est prt ;
recevoir un ordre du CPU ;
excuter lordre ;
la fin de lexcution, boucler
FAIT
Pour signaler lunit centrale quils sont prts, les priphriques connects vont
utiliser le mcanisme dinterruption.
Un dpassement de capacit
La violation daccs mmoire
Lexcution dune instruction dont la partie fonction nest pas conforme
Lutilisation dune instruction privilgie en dehors du mode systme.
L'environnement de programmation
17
Les Interruptions
Provoque:
la mise en sommeil du programme
La prise de contrle de lunit centrale par le S.E.
Le S.E. excute un service particulier demand par le programme.
changer de mode dexcution et passer en mode superviseur.
L'environnement de programmation
18
2012-2013
L'environnement de programmation
Unix/Linux
19
Gnralits
Introduction
Sans logiciels, un ordinateur nest quun morceau de mtal
inutile.
Grce ces logiciels, il peut jouer son rle d'outils universels .
Problmes
L'criture des programmes doivent prendre en compte tous
les composants d'un ordinateur,
un travail extrmement difficile.
2012-2013
L'environnement de programmation
20
Gnralits
Introduction
Utilisateurs
Logiciel
dApplicat Logiciel de
base
ion
Programmes
Applications
Atelier de
Dveloppement
Base
Navigateu
de
r
donne
Programmeur
s
Outils
Editeur Compilateu
s
rs
Mmoire
Editeurs
de liens
Chargeur
Gestion
Processeur
Fichiers
Metteur
au point
Programmeur
Systme
Priphrique
s
Matriel
2012-2013
Interprte
ur de
command
es
Communicatio
n
Gnralits
L'environnement de programmation
22
Gnralits
utilisateurs
machine virtuelle
systme d'explitation
ressources
matriel
2012-2013
L'environnement de programmation
23
2012-2013
L'environnement de programmation
24
La gestion de la mmoire
La gestion des processus
La gestion des priphriques dE/S
La gestion des fichiers
La gestion de la communication
Environnement de travail
2012-2013
L'environnement de programmation
25
La gestion de la mmoire
Fonctions:
connatre les parties libres et occupes de la mmoire,
allouer de la mmoire aux processus qui en besoin,
rcuprer la mmoire utilis par un processus
traite le va-et-vient entre le disque et la M.C.
Services offerts:
rpartition de la mmoire disponible entre les diffrents
processus actifs et lensemble des utilisateurs prsents
localisation maintien des donnes pour chaque
processus,
maintien de lintgrit de certains espaces rservs,
gestion de la pagination de la mmoire, utilisation de
mmoire virtuelle.
2012-2013
L'environnement de programmation
26
La gestion de la mmoire
2012-2013
L'environnement de programmation
27
La gestion de la mmoire:contigue
Allocation contigue en zone variable
La mmoire est dcoupe en partitions de taille variable , c'est--dire
adaptables la taille des programmes.
La mmoire est forme d'un ensemble de zones libres et de zones
occupes (partitions alloues).
Une zone libre est caractrise par son adresse dimplantation (adr) et sa
taille (taille).
Allouer un programme P de taille Taille(P) :
trouver une zone libre telle que Taille (Zone Libre) >= Taille (P)
L'environnement de programmation
28
2012-2013
PAGINATION
L'environnement de programmation
29
L'environnement de programmation
30
La mmoire virtuelle
2012-2013
L'environnement de programmation
31
L'environnement de programmation
32
prt
fin E/S
bloqu
demande
E/S
lu
Election:
allocation
du
processeur
En
excution
bloqu
prt
fin
tranche
de temps
slection
n
demande E/S
lu
dfaut de
page
L'environnement de programmation
33
2012-2013
L'environnement de programmation
34
Fonctions
Cacher la complexit des dispositifs dE/S
Ignorer les diffrences qui existent entre les
mmes types dunits proposes par plusieurs
constructeurs
Services offerts
Fonctions lis leur emploi: paramtrage ou
configuration logicielle de ces priphriques
Fonctions lis leur utilisation: ralisation des
fonctions d'accs et de contrle des ces
priphriques.
2012-2013
L'environnement de programmation
35
Services Offerts
fonctions lis l'existence des fichiers: cration,
duplication dition, impression, dplacement
fonctions lies lutilisation des fichiers et leur partage
2012-2013
L'environnement de programmation
36
permettre l'accs :
dautres machines virtuelles, (locales,
distantes ou mobiles) ,
des supports externes, via des E/S
des objets, des composants partageables,
des services,
des fichiers (locaux, distants ou mobiles)
des groupes de diffusion ou de coopration.
2012-2013
L'environnement de programmation
37
Environnement de travail
le but de toute architecture est de prsenter lutilisateur un
environnement o il puisse travailler confortablement.
L'utilisateur a deux faons pour accder aux services offerts
par le systme :
crit des programmes qui font des appels au noyau (API)
utilise l'interface-utilisateur (shell ou interprteur de commandes)
L'environnement de programmation
38
procdure
de services
procdur
e
utilitaires
2012-2013
L'environnement de programmation
39
2012-2013
40
L'environnement de programmation
41
Avantages:
- Chaque VM peut excuter un SE tout comme sur le
matriel! Plus dun SE par machine!
- En sparant la machine tendue de la multiprogrammation
chaque fonction est plus facile entretenir
L'environnement de programmation
42
Le modle client-serveur
Un des problmes majeurs avec les SE?
Ils sont gigantesques!
L'environnement de programmation
43
Le modle client-serveur
L'environnement de programmation
44
Multi-processus
Multi-coeur, partage mmoire (multiprocesseur)
Architecture micro-noyaux (micro-kernel)
Gestion de ladressage
Communication interprocess
Ordonnancement
Systme distribu
2012-2013
L'environnement de programmation
45
Drivs de NeXTSTEP
Apple
Drivs de BeOS
Cisco Systems
DOS
IBM
Microsoft Windows
POSIX / UNIX
Linux (liste)
Autres drivs
Drivs de AmigaOS
Dimportance historique
Autres systmes
Systme dexploitation mobile
2012-2013
MorphOS AROS
CP/M CTSS GCOS Genera ITS Multics Plan 9 QDOS RSTS TENEX
TOPS-20 TOS VMS
eyeOS FreeDOS Inferno MenuetOS ReactOS UNICOS VxWorks
Android Bada BlackBerry OS iOS OpenMoko Palm OS HP webOS Symbian
OS Windows CE Windows Mobile
L'environnement de programmation
46
LENVIRONNEMENT
UNIX/LINUX
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
47
SOMMAIRE
2012-2013
L'environnement de programmation
48
Historique
1969
Version exprimentale sur PDP-7
1971
Version 1
1972
Version 2
1973
UNIX en C- Bell Labs
1974
PWB
1974
Version 5
1975
Version 6
1977
BSD 2.0
Berkley
1979
Version 7
1980
1981
System III
BSD 4.1
1981
SunOs
SUN
1983
System V AT&T
1985
System V R2.0
1987
MACH
1986
BSD 4.3
1986
System V R3.0
1987/ 88
SYSTEM V R3.2
1991
OSF/1
2012-2013
1974
HERT temps rel
1980
XENIX
Microsoft
1981
XENIX 2.0
Micro/SCO
1985
XENIX 5.1
1986
AIX 1.0
IBM
1989
SCO UNIX
System V/386
1990
AIX 3.1
1990
SYSTEM V R4.0
L'environnement de programmation
49
Historique
2012-2013
L'environnement de programmation
50
Historique
Le phnomne de standardisation
L'environnement de programmation
51
Caractristiques essentielles
Caractristiques essentielles
2 sortes d'utilisateurs:
l'administrateur du systme: a tous les droits; responsable du
systme (root);
les autres usagers : enregistrs par le root, rassembls en
groupes.
2012-2013
L'environnement de programmation
52
LENVIRONNEMENT
UNIX/LINUX
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
53
Caractristiques essentielles
Le Shell
L'environnement de programmation
54
Caractristiques essentielles
Processus
entit dynamique qui nait, qui vit en toute
indpendance ou en communiquant avec
d'autres processus , qui son tour peut
crer des processus, et enfin qui meurt.
Un processus est caractris par
numro(PID);
un pre (PPID);
un propritaire (UID);
un groupe propritaire (GID),
2012-2013
L'environnement de programmation
55
Caractristiques essentielles
Fichiers standards
sortie standard
1
P1
2
erreur standard
entre standard
0
Processus Thorique
P2
cran
2
clavier 0
Un processus fils du shell initial
clavier 0
P3
1
2
fs
cran
2012-2013
1
fi
P4
fs
fe
L'environnement de programmation
56
Caractristiques essentielles
Fichiers standards
L'environnement de programmation
57
Caractristiques essentielles
Composition de processus
L'environnement de programmation
2
58
Le Systme de fichiers
Notion de fichier
Fichier
2012-2013
L'environnement de programmation
59
Le Systme de fichiers
Notion de fichier
2012-2013
L'environnement de programmation
60
Le Systme de fichiers
Notion de fichier
..
.
0
2
25
36
usr
bin
25
2012-2013
..
.
2
25
local 100
bin 150
36
..
.
rm
ln
L'environnement de programmation
2
36
50
52
61
Le Systme de fichiers
Notion de fichier
Rpertoire
/ (racine)
bin
dev
user1
courier
doc1
jeux
doc2 doc
etc
bin
usr
tmp
unix progc
prog1.c
lib
pog2.c
usr2
docu
jeux
tmp
lib
progc
2012-2013
L'environnement de programmation
62
Le Systme de fichiers
Notion de fichier
Les permissions
L'environnement de programmation
63
Le Systme de fichiers
Notion de fichier
Les permissions
$ ls -ld
drwxrwxr-x 1 root 5115 Aug 30 10 10:40 etc/passwd
L'environnement de programmation
64
Le shell
introduction
Introduction
L'environnement de programmation
65
LENVIRONNEMENT
UNIX/LINUX
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
66
Le shell
Notions de base
Caractres gnriques
L'environnement de programmation
67
Le shell
Notions de base
Notions de base
Sparateurs
;
sparateurs de phrases
<tab> espace sparateurs d'entits lexicales (mot)
Mots
dsignent les variables, les symboles du langage (mots-cl) et les noms de fichiers.
Un commentaire est prfix par un #.
Caractres gnriques
?
remplace un caractre quelconque, sauf le ;
*
remplace n'importe quelle chane, mme vide, de caractres ne comportant pas
[...] remplace un caractre parmi ... , ou un caractre parmi ceux qui ne sont pas numrs entre
[...] , si le premier est un point d'exclamation.
$ ls
t1.p
t2b.p
t3.p tf.p tn.p tx.p
t1a.p t2.p t4.p tn tx
$ echo Mes versions de TP sont t?.p
Mes Versions de TP sont t1.p t2.p t3.p tf.p tn.p tx.p
$ echo les bonnes versions t[!0-9].p
les bonnes versions tf.p tn.p tx.p
$ echo Dans t1?.p les tableaux sont de la forme t\[nx] avec nx=12 \*P
Dans t1a.p t&b.p les tableaux sont de la forme t[nx] avec nx=12*P
Caractres spciaux
&|<>$()'"`{}\
caractre spcial devient
un caractre normal s'il est prcd du caractre \ ou s'il
L'environnement de programmation
2012-2013
68
Le shell
Notions de base
Parenthsages
(...)
excute les commandes ... par un shell fils;
'...' prend littralement ... ; aucun caractre spcial n'interprt ;
"..."
prend littralement ... aprs interprtation de $, '...', et \
`...`
excute les commandes dans ... ; le rsultat (sortie standard) remplace `...`
$ echo '***'
***
# idem \*\*\*
$ echo "Voici l'exemple"
Voici l'exemple
$ echo la variable 'as$V3' contient $HOME/as\$
la variable as$v3 contient /users/fc/tp1/as$
le shell remplace $HOME par /users/fc/tp1/as, v3 par vide
$ echo "la variable as$V3 contient $HOME/as\$"
la variable as contient /users/fc/tp1/as$
$ echo 'la variable as$V3 contient $HOME/as\$'
la variable as$v3 contient $HOME/as$
$ (date ; who)>f1 <f2
wed sep 28 09:11:09
vous
tty2 sep 28 08:30
mhs
tty4 sep 28 09:30
2012-2013
L'environnement de programmation
69
Le shell
Variables
dsignes par des mots; elles ne se dclarent pas, et leurs type (numrique ou
chane) dpend de leur interprtation par les commandes.
Initialisation variable=valeur
valeur: valeur numrique, une chane de caractres, le rsultat d'un commande, une
liste de commandes ...
$ N=1
# N est une variable entire
$ ACTIF=`who` # ACTIF est une chane, rsultat en sortie par l'excution de who
$ USAGE="echo Syntaxe: $0 f1 F2; cat $help"
USAGE est une liste de commandes
La prise de valeur d'une variable ou d'un paramtre est ralise par l'oprateur $ prfixant le nom de la
variable ou du paramtre.
Les accolades {} peuvent tre ncessaire autour du nom,
$ REP=${REP}miage
# Concatner "miage" sans espace la valeur de REP
2012-2013
L'environnement de programmation
70
Le shell
{variable:-mot} substitue la variable si elle est dfinie , sinon le mot (non valu)
$ t=${x:-60}
{variable:=mot} idem avec de plus affectation de la variable si elle n'est pas dfinie
$ a='bonjour'
$ echo ${a:='au revoir'}
bonjour
$ echo ${b:='salut'}
# b aura la valeur 'salut'
salut
2012-2013
L'environnement de programmation
71
Le shell
2012-2013
0
nom de la commande;
1
premier paramtre effectif;
2... deuxime paramtre effectif, ainsi de suite;
"$*" quivalent "$1 $2 ..."
"$@" quivalent "$1" "$2" ...
L'environnement de programmation
72
Le shell
Porte et environnement
ion des variables
2012-2013
L'environnement de programmation
73
Le shell
Variables prdfinies
2012-2013
L'environnement de programmation
74
Le shell
Lecture et affichage
read, echo
ion des variables
2012-2013
L'environnement de programmation
75
Le shell
Expressions
expr
ion des variables
expression...
{--help,--version}
Incrmentation de N
N=`expr $N + 1` # autres oprateurs : - * / %(mod)
2012-2013
L'environnement de programmation
76
Le shell
Expressions
test
ion des variables
2012-2013
77
Le shell
Expressions
test (suite)
ion des variables
2012-2013
L'environnement de programmation
78
Le shell
Les Commandes
Commande simple:
retourne code zro si excution sans erreur ou une valeur non nul une
signification propre la commande qui l'a retourne.
Structure de contrle
2012-2013
L'environnement de programmation
79
Le shell
Les Commandes
La boucle pour...
2012-2013
for i in $*
L'environnement de programmation
80
Le shell
Les Commandes
La boucle tantque...
L'environnement de programmation
81
Le shell
Les Commandes
La slection si
if <liste de commnades 1>
then <liste de commandes 2>
else <liste de commandes 3>
fi
c1&&c2
c1||c2
2012-2013
scrit:
scrit:
L'environnement de programmation
82
Le shell
Les Commandes
La slection si
if ...
then
else if ...
then
....
fi
fi
ou
encore
2012-2013
L'environnement de programmation
83
Le shell
Les Commandes
case <chane> in
<motif> ) <liste de commandes>;;
<motif> ) <liste de commandes>;;
esac
2012-2013
$choix in
sh choix1;;
sh choix2;;
echo "Pas encore au point";;
L'environnement de programmation
84
Le shell
Les Commandes
Commandes Internes
2012-2013
L'environnement de programmation
85
Le shell
Les Commandes
2012-2013
L'environnement de programmation
86
Le shell
Les Commandes
2012-2013
L'environnement de programmation
87
Le shell
2012-2013
L'environnement de programmation
88
Le shell
2012-2013
L'environnement de programmation
89
Le shell
Sous-programme
L'environnement de programmation
90
Le shell
Sous-programme
2012-2013
L'environnement de programmation
91
LENVIRONNEMENT
UNIX/LINUX
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
92
Les Filtres
La famille grep
grep, egrep et fgrep lisent ligne par ligne et affichent les lignes de
fichiers donns en paramtre et qui contiennent un motif donn.
grep [option] <motif> [<fichier> ... ]
motif est une expression rgulire dans laquelle certains caractres ont
une signification particulire.
Sauf option contraire, chaque ligne ayant cette proprit est crite sur la
sortie standard.
Le code de retour est 0 si un motif a t trouv, 1 sinon, et 2 s'il y a eu des
erreurs
2012-2013
L'environnement de programmation
93
Les Filtres
La famille grep
Options
$
$
$
$
$
$
Op
2012-2013
L'environnement de programmation
94
Les Filtres
La famille grep
2012-2013
L'environnement de programmation
95
Les Filtres
La famille grep
Exemples
$
$
$
$
2012-2013
L'environnement de programmation
96
Les Filtres
2012-2013
L'environnement de programmation
97
Les Filtres
expression
-name <fic> recherche le fichier fic
-user <nom> recherche un fichier appartenat l'utilisateur nom;
-atime <n>
recherche un fichier utilis dans les n derniers jours;
-mtime <n> recherche un fichier modifi dans les n derniers jours;
-newer <fic> recherche un fichier modifi plus rcemment que fic;
-type <x> recherche un fichier de type <x> avec :
b pour fichier spcial bloc,
c pour fichier spcial caractre,
d pour fichier rpertoire,
f pour fichier ordinaire,
p pour tube nomm (System III/V);
2012-2013
L'environnement de programmation
98
Les Filtres
expression
2012-2013
L'environnement de programmation
99
Les Filtres
Exemple
E find{} /usr/ens
\;
2135 /usr/ens/mhs/exam.p
2149 /usr/ens/mhs/scarable.f
2149 /usr/ens/rim/exp.p
2149 /usr/ens/rim/examen.p
find $HOME -newer .datesauv -print
affiche les fichiers de l'arborescence dfinie par le rpertoire
personnel de l'usage modifis aprs le fichier .datesauv
2012-2013
L'environnement de programmation
100
Les Filtres
Tri et fusion
Tri
sort [options] [cl [option]]* [<fichier1> ]*
trie les lignes et crit les rsultats sur la sortie standard (sauf -o).
options
-c (check) vrifie si le fichier est dj tri;
-u (unique) conserve un seul exemplaires des lignes identiques;
-o <fichier> (output) envoie la sortie sur fichier
-d (dictionary) ordre lexicographique (lettres, les chiffres, blancs);
-f traduit les majuscules en minuscules;
-n cl numrique (signe ventuellement);
-i les caractres dont le code ASCII 040-0176;
-r tri en ordre invers;
-b ignorer les blancs en dbut de champ;
-t<x> le dlimiteur de champ dans les lignes est le caractre x.
2012-2013
L'environnement de programmation
101
Les Filtres
Tri et fusion
Notion de cl
N cl de la forme +debut - fin.
debut premier champ servant faire la cl (numrotation partir de zro)
fin n du premier champ qui n'appartient pas la cl.
sort +1 -2 f trie f sur une cl format par le
deuxime champ de chaque ligne
Une cl peut tre prciser des portions de champs.
debut et fin sont de la forme m.n (ventuellement l'une des options b d f i n ou
r) o:
m nombre de champs sauter depuis le dbut de ligne
n nombre de caractres sauter en dbut de champ .
2012-2013
L'environnement de programmation
102
Les Filtres
Tri et fusion
Exemples
$ ls | sort
trie les noms de fichiers en ordre
alphanumrique
$ ls -s | sort -nr trie par ordre de taille dcroissante
$ ls -l | sort +4nr -5n
trie par taille dcroissant;
aprs avoir sauter les 3 premiers champs
$ who | sort +4n -5n trie les plus anciennes connexions
$ sort +2.3 -5.0 f trie f sur une cl qui commence au
troisime champ (4me caractre), et qui se termine la
fin du cinquime champ.
Soit f.t un fichier d'tudiants qui la format suivant:
nom, prnom, jj/mm/aa, codeBac, codeDiplme
$ sort -t, +4bf -5bf +0f -1f f.t >diplome.t
tri sur diplme, puis alphabtiquement, sortie sur
diplome.t
$ sort -t, +2.6b -2.8b +2.3b -2.5b +2.0b -2.2b f.t >age.t
tri par ge, la date tant la date de naissance, sortie
sur age.t.
2012-2013
L'environnement de programmation
103
Les Filtres
Tri et fusion
4.3.2 Fusion
sort -m [options] [cl [option]]+ [<fichier1> ]+
Les fichiers doivent pralablement tre tris sur les cls de fusion.
2012-2013
L'environnement de programmation
104
Les Filtres
2012-2013
L'environnement de programmation
105
Les Filtres
Mode de fonctionnement
tampon
requtes
auxiliaire
fichier diter
2012-2013
fichier rsultat
L'environnement de programmation
106
Les Filtres
2012-2013
L'environnement de programmation
107
Les Filtres
2012-2013
L'environnement de programmation
108
Les Filtres
Exemples
$
$
$
$
$
$
$
$
$
>
2012-2013
sed 's/UNIX/UNIX(TM)/g' f1 f2
'10,/{# .*}/s/ */ /g' f >>f
who | sed 's/ .* / /'
sed '/fin/ q'
sed '/^***/d'
sed 's/$/\n'
sed '1,/^$/d
sed -n '/^$/,/^fin/p
sed -n '/exp/w fichier1
/exp/!w fichier2
L'environnement de programmation
109
Les Filtres
Exemples
Remplacer <LF> par le sparateur :, sauf s'il est suivi par !.
# debut de la boucle
: debut
# ajout de la suivante dans le tampon
N
# remplacer la fin de ligne par : s'il n'y a pas de !
s/ \n \([^!]\) / :\1 /
# si la substitution a russi , recommencer
t debut
# sinon , afficher la ligne d'adresse complte
P
# et dtruire le ! qui reste dans le tampon
d
2012-2013
L'environnement de programmation
110
Les Filtres
outil non interactif pour traiter des textes, les transformer , les diter , faire des
calculs
manipule les fichiers ligne par ligne et adresse les champs l'intrieur des lignes
chaque ligne est soumise awk (<fprog>, <prog>) ;
awk [-F<car>] {[-f <fprog>| <prog>]} [param] [<fichier>]*
Syntaxe d'un programme slection { actions }
slection
expressions, BEGIN, END
$ awk '/<expression rgulire>/ {print}' <fichier>
$ awk ' {print}' <fichier> ...
-idem
-idem egrep
cat
L'environnement de programmation
111
Les Filtres
Les variables
Les variables utilisateurs
2012-2013
L'environnement de programmation
112
Les Filtres
Les slections
- combinaison quelconque au moyen des oprateurs:
- expression rgulire de la forme
! || && (et)
2012-2013
L'environnement de programmation
113
Les Filtres
= += -= *= /= %= oprateurs d'affectation
|| oprateur boolens OU; exp1 || exp2
exp2 n'est pas value que si exp1 est vraie
&& oprateur boolens ET; exp1 && exp2 est vraie si les deux le sont
!
ngation
> >= < <= == != ~ !~ oprateurs relationnels ~ et !~ sont des oprateurs de
correspondance.
<espace> oprateur de concatnation de chanes
+ - plus, moins;
*/%
multiplication, division, reste;
++ -incrmentation, dcrmentation (prfix ou postfix);
2012-2013
L'environnement de programmation
114
Les Filtres
Les fonctions
cos(expr)
cosinus de expr;
exp(expr)
exponentielle de expr;
getline() lit la ligne suivante; 0 si fin de fichier, 1 sinon;
index(s1, s2)
position de la chane s1 dans la chane s2;
int(expr)
partie entire de expr;
length(s)
longueur de la chane s; $0 par dfaut.;
log(expr)
logarithme naturel de expr;
sin(expr)
sinus de expr;
split(s, a, c) dcoupe s en a[1],a[2], ..., a[n] suivant le dlimiteur c (ou FS);
sprintf(fmt,...)
formate ... en accord avec la spcification fmt;
substr(s, m, n) sous-chane de s; dbut au caractre m, longueur maximale n.
2012-2013
L'environnement de programmation
115
Les Filtres
Les instructions
apparaissent dans les actions et se terminent soit par un ; <fin de ligne> #
- Instructions d'impression
print [<expression>, <expression> ...]
printf (<format>, [<expression>, <expression> ...])
- Instruction conditionnelle
if (<expression>)
<instruction>
else
<instruction>
- Instructions itratives
while (<expression>)
<instruction>
for (<var>; <expr>; <expr>)
<instruction>
for (<var> in <tableau>)
<instruction>
2012-2013
L'environnement de programmation
116
Les Filtres
Les tableaux sont des variables qui associent des indexes avec des valeurs.
Les indexes peuvent tre soit des nombres, soit des chanes de caractres :
# imprime son entre l'envers
2012-2013
L'environnement de programmation
117
Les Filtres
2012-2013
L'environnement de programmation
118
PROGRAMMER SOUS
GNU/LINUX
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
119
Programme Interprt
Programme interprt
Programme Compil
Compilation unique
Edite
ur
Programm
e Source
2012-2013
Interprte
ur
Rsultat
Donnes
Compilate
ur
Compilation spare
chane de
production
traditionnelle
Programm
e Source
Programm
e objet
relogeable
Program
me
Source 1
Compilate
urProgram
me
objet1
Editeur
Program
me
Source 2
Programm
e
Excutabl
e
relogeable
Compilate
ur
Program
me
objet2
M.
C.
Program
me
Source 3
Compilate
urProgram
me
objet3
Editeur
de liens
Champs des
Program
outils de
production
me
L'environnement de programmation
Excutabl
Chargeu
r
Bibliothq
Bibliothqu
Bibliothq
ue
ue e
120
Chargeu
r
Mmoir
e
Central
Outils de production
Compilateur
Traduit les modules sources crits en langage de haut
niveau (C, Ada, ) en modules objets qui contiennent
du langage machine mais dans lesquels les calculs
dadresses ne sont pas rsolus.
Editeur de liens (linker) :
rassemble les modules traduits sparment par les
traducteurs, les relie et produit un module chargeable
(ou relogeable - relocatable -).
Chargeur (loader) :
Le rle du chargeur est donc d'aller chercher sur un
disque les fichiers excutables (le programme) et les
donnes pour les implanter en mmoire.
2012-2013
L'environnement de programmation
121
Compilateur vs Interprteur
What time is it ?
Compilateur
What time is it ?
Interprteur
Il est 9h35.
Fvrier 2008
Module TLC
122
L'environnement de programmation
123
Exemple
Fichier source C main.c
#include <stdio.h>
#include <stdlib.h>
#include "reciprocal.hpp"
int main (int argc, char **argv) {
int i;
i = atoi (argv[1]);
printf ("L'inverse de %d est %g\n", i, reciprocal (i));
return 0;
}
#ifdef
extern
#endif
extern
#ifdef
}
#endif
2012-2013
%%__%%cplusplus
"C" {
double reciprocal (int i);
%%__%%cplusplus
L'environnement de programmation
124
% gcc -c main.c
Le fichier objet rsultant est appel main.o.
Le compilateur C++ s'appelle g++. (similaire gcc);
% g++ -c reciprocal.cpp
L'environnement de programmation
125
L'environnement de programmation
126
PROGRAMMER SOUS
GNU/LINUX
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
127
GNU Make
Vous pouvez fournir toutes ces informations make en les plaant dans
un fichier nomm Makefile.
reciprocal: main.o reciprocal.o
g++ $(CFLAGS) -o reciprocal main.o reciprocal.o
main.o: main.c reciprocal.hpp
gcc $(CFLAGS) -c main.c
reciprocal.o: reciprocal.cpp reciprocal.hpp
g++ $(CFLAGS) -c reciprocal.cpp
clean:
rm -f *.o reciprocal
% make
gcc -c main.c
g++ -c reciprocal.cpp
g++ -o reciprocal main.o reciprocal.o
2012-2013
L'environnement de programmation
128
Le configurateur MAKE
Le configurateur MAKE
lit une spcification de dpendances ou mode
d'emploi de fabrication, et l'interprte pour crer
une nouvelle version complte.
Il vrifie les dates de dernire modification, pour
raliser le minimum de compilation.
Exemple:
$ calculer <entree >sortie
Le mode d'emploi dont a besoin make pour
fabriquer sortie (makefile) :
sortie : calculer entree
calculer <entree >sortie
2012-2013
L'environnement de programmation
129
Le configurateur MAKE
make examine si les dpendances de l'entre sont jour; sinon, fait excuter par
des processus UNIX les commandes de fabrication en les soumettant une par une
l'interprteur shell.
Le mode d'emploi est constitu partir de six modles de lignes:
Lignes de commentaires
dbutent par un # et se termine <NL>
Dfinitions d'entre
nomment les entres et dfinissent les dpendances:
Cible
:
liste de dpendances
Exemple:
prog: def.c
sp.o prog.c
Rgles de fabrication
<tab>
<commande>
Exemple: gcc -o prog prog.o def.o sp.o
2012-2013
L'environnement de programmation
130
Le configurateur MAKE
L'appel de make
L'environnement de programmation
131
Le configurateur MAKE
L'environnement de programmation
132
Le configurateur MAKE
Macros prdfinies
$@
$*
$?
$<
.c.o :
gcc c $*.c
.c.o :
gcc c $<
$$@
n'a de sens que sur la ligne de dfinition de dpendances. Il se rfre
l'objet courant ($@) dfini dans l'entre.
Exemple de makefile
PASPROG = demo ex1 essai ex2
# obtention des excutables PASCAL
$(PASPROG) : $$@.p
pc -c $@ $*.p
# entre pour dtruire les xecutables
vider del :
rm -f $(PASPROG)
# entre pour recommencer tout: dtruire et refaire les excutables
re : vider $(PASPROG)
2012-2013
L'environnement de programmation
133
PROGRAMMER SOUS
GNU/LINUX
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
134
Introduction
CFLAGS=-g
-c main.c
-c reciprocal.cpp
-o reciprocal main.o reciprocal.o
L'environnement de programmation
135
Lancer GDB
% gdb reciprocal
(gdb)
lancer votre programme au sein du dbogueur.
(gdb) run
Starting program: reciprocal
Program received signal SIGSEGV, Segmentation fault.
%%__%%strtol_internal (nptr=0x0, endptr=0x0, base=10, group=0)
at strtol.c:287
287
strtol.c: No such file or directory.
(gdb)
Vous pouvez observer la pile en utilisant la commande where:
(gdb) where
#0 %%__%%strtol_internal (nptr=0x0, endptr=0x0, base=10, group=0)
at strtol.c:287
#1 0x40096fb6 in atoi (nptr=0x0) at ../stdlib/stdlib.h:251
#2 0x804863e in main (argc=1, argv=0xbffff5e4) at main.c:8
main a appel la fonction atoi avec un pointeur NULL ce qui est la source de l'erreur.
2012-2013
L'environnement de programmation
136
L'environnement de programmation
137
L'environnement de programmation
138
PROGRAMMER SOUS
GNU/LINUX
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
139
Documentation
Pages de Manuel
Les pages de manuel sont divises en sections numrotes; pour les
programmeurs, les plus importantes sont celles-ci:
(1) Commandes utilisateur
(2) Appels systme
(3) Fonctions de la bibliothque standard
(8) Commandes systme/d'administration
% man sleep
L'environnement de programmation
140
Documentation
Info
Info contient des informations plus dtailles pour beaucoup
de composants fondamentaux du systme GNU/Linux et
quelques autres programmes.
Les pages Info sont des documents hypertextes, similaires
aux pages Web.
Pour lancer le navigateur texte Info, tapez simplement info
l'invite de commande. Parmi les documents Info les plus
utiles, on trouve:
gcc Le compilateur gcc
libc La bibliothque C GNU, avec beaucoup d'appels systme
gdb Le dbogueur GNU
emacs L'diteur de texte Emacs
info Le systme Info lui-mme
2012-2013
L'environnement de programmation
141
PROGRAMMER SOUS
GNU/LINUX
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
142
Environnement dexcution
La Liste d'Arguments
Interaction Avec l'Environnement d'Excution
2012-2013
L'environnement de programmation
143
Environnement dexcution
#include <stdio.h>
int main (int argc, char* argv[])
{
printf ("Le nom de ce programme est '%s'.\n", argv[0]);
printf ("Ce programme a t invoqu avec %d arguments.\n",
argc - 1);
/* A-t-on spcifi des arguments sur la ligne de commande ? */
if (argc > 1) {
/* Oui, les afficher. */
int i;
printf ("Les arguments sont :\n");
for (i = 1; i < argc; ++i)
printf (" %s\n", argv[i]);
}
return 0;
}
2012-2013
L'environnement de programmation
144
Environnement dexcution
L'environnement de programmation
145
Environnement dexcution
Utiliser getopt_long
Forme courte
Forme longue
Fonction
-h
--help
-o nom fichier
-v
--verbose
La premire est une chane contenant les options courtes valables, chacune sur une
lettre. Une option qui requiert un argument est suivie par deux-points.
ho:v indique que les options valides sont -h, -o et -v, la seconde devant tre suivie d'un
argument.
Pour indiquer les options longues disponibles, vous devez construire un tableau d'lments
struct option. Chaque lment correspond une option longue et dispose de quatre
champs :
2012-2013
Environnement dexcution
Exemple
const char* const short_options = "ho:v";
const struct option long_options[] = {
{ "help",
0, NULL, 'h' },
{ "output", 1, NULL, 'o' },
{ "verbose", 0, NULL, 'v' },
{ NULL,
0, NULL, 0
}
};
.
next_option = getopt_long (argc, argv,
short_options,
long_options, NULL);
2012-2013
L'environnement de programmation
147
Environnement dexcution
Environnement dexcution
#include <stdio.h>
/* La variable ENVIRON contient l'environnement. */
extern char** environ;
int main ()
{
char **var;
for (var = environ; *var != NULL; ++var)
printf ("%s\n", *var);
return 0;
}
2012-2013
L'environnement de programmation
149
PROGRAMMER SOUS
GNU/LINUX
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
150
Exemples:
#define
EPERM
#define
ENOENT
#define
ESRCH
#define
EINSR
#define
EIO
2012-2013
1
2
3
4
5
/*
/*
/*
/*
/*
Not owner */
No such file or directory */
No such process */
Interrupted System call */
I/O error */
L'environnement de programmation
151
#include <stdio.h>
#include <sys/file.h>
#include <errno.h>
main()
{
int fd;
/* Open a nonexistent file to cause an error */
fd = open(nonexist.txt, O_RDONLY);
if ( fd==-1 ) {/* fd == -1 , an error occurred */
printf( errno = %d \n, errno );
perror(main);
}
fd=open( /, O_WRONLY ); /* Force a different error */
if ( fd== -1 ) {
printf(errno=%d\n, errno);
perror(main);
}
/* Execute a successful system call */
fd = open(nonexist.txt, O_RDONLY | O_CREAE, 0644 );
printf(errno=%d\n, errno); /* Display after successful
perror(main);
errno=0; /* Manually reset error variable */
perror(main);
}
2012-2013
L'environnement de programmation
152
call */
2012-2013
L'environnement de programmation
153
assert
dtecter des conditions inattendues
assert(condition)
L'environnement de programmation
154
PROGRAMMER SOUS
GNU/LINUX
Maher SELLAMI
2012-2013
L'environnement de programmation
Unix/Linux
155
Une archive (ou bibliothque statique) est une collection de fichiers objets
stocke dans un seul fichier objet (fichier lib sous Window)
2012-2013
L'environnement de programmation
156
2012-2013
L'environnement de programmation
157
L'environnement de programmation
158
Introduction
Organisation logique
Organisation physique
Structuration du disque dur
Ralisation des fonctions daccs lmentaires
Scurit et Protection
Exemple: Le SGF dUNIX
4
O
2012-2013
Maher SELLAMI
L'environnement de programmation
Unix/Linux
159
Introduction
Fichier
un objet qui contient un ensemble dinformation pour
conservation et utilisation dans un systme informatique
possde un nom qui permet de le dsigner
Fonctions daccs principales: lire, crire, ventuellement
excuter
SGF
Conservation des fichiers en mmoire secondaire
Implantation des fonctions daccs aux fichiers (ouvrir,
fermer, lire, crire, )
Assure scurit et protection: intgrit des informations et
respect des droits daccs
Gre laccs aux supports physiques
2012-2013
L'environnement de programmation
160
Introduction
rpertoire={ descripteurs}
Nom externe
Organisation physique
Lie aux supports physiques
Dtermin par considration
de
conomie de places
Efficacit daccs
TABLES DIMPLANATION Physiques
Nom interne
L'environnement de programmation
161
Introduction
Exemple
Programme :
Pour les lves
Lire (nom_lve);
Lire (note_examen);
crire (table);
fait
Sauvegarder
(mon_fichier)
toto
12
dupont
20
cesar
09
cloptre
15
instructions
Toto
12
Dupont
20
Csar
09
Cloptre
15
Organisation physique
Structure selon
Allocation
Programme
donne
100100010000
fichier_notes_nfa004
2012-2013
L'environnement de programmation
NFA003
162
Introduction
Fonctions daccs
logique
Liaison des
noms
Interprtation
Interprtation
nom externes
nom locaux
Noms
internes
Adresses
logiques
Adresses
physiques
2012-2013
Allocation
de
mmoire
secondaire
Interfaces
internes au SGF
Ralisation
E/S
physiques
L'environnement de programmation
Interface de
lutilisateur
163
Introduction
Fonctio
ns
daccs
Cette tape
peut tre
court-circuite (unix,windows, )
deux cas de figure :
Le S.E. connat la structure logique des fichiers (Macintosh, IBM,)
+ les possibilits sont plus importantes,
- le S.E. est plus complexe.
Le S.E. considre les fichiers comme des flots doctets (MS-DOS,
Unix,)
+ le systme est plus simple,
pas dassurance sur la nature des fichiers
2012-2013
L'environnement de programmation
164
Introduction
Organisation logique
Organisation physique
Structuration du disque dur
Ralisation des fonctions daccs lmentaires
Scurit et Protection
Exemple: Le SGF dUNIX
4
O
2012-2013
Maher SELLAMI
L'environnement de programmation
Unix/Linux
165
fichier = { enregistremements }
Les fonctions daccs sont spcifiques de lorganisation logique
A chaque enregistrement correspond une adresse logique
enregistrement = {champs ou attributs}
Champs possde un nom et un type
LOrganisation logique dpent des contraintes auxquelles doivent
satisfaire les enregistrements
Ordre sur les articles
Restriction sur les valeurs des champs
Relations entre les attributs des enregistrements
2012-2013
L'environnement de programmation
166
2012-2013
L'environnement de programmation
167
20
09
15
L'environnement de programmation
168
Dupont
20
Csar
09
2012-2013
Cloptre
l'enregistrement 1,
15
puis l'enregistrement 2
Ajout
Fin de fichier
L'environnement de programmation
169
enrg_note = record
nom_eleve : string;
note : integer;
end;
Enregistrement
Begin
assign(mon_fichier,fichier_notes_nfa004'); Mise en correspondance
reset ( mon_fichier ); (* ouvrir le fichier *)
while not eof ( nom_fichier ) do
(* parcourir les lments du fichier accs squentiel*)
begin
get ( mon fichier );
end;
(* accs relatif : aller llment 6 *)
seek (mon_fichier,6) ;
get (mon_fichier) ;
(* fermeture automatique en fin de programme *)
End.
2012-2013
L'environnement de programmation
170
10
Enregistrement
{
....
}
....
/* accs relatif : aller llment 6 */
fseek(mon_fichier, sizeof(struct note)*6L,0);
....
/* fermeture automatique en fin de programme *)/
}
2012-2013
L'environnement de programmation
171
10
L'environnement de programmation
172
2 classes de mthodes :
Adressage dispers (hash code)
Fichiers indexs
2012-2013
L'environnement de programmation
173
L'environnement de programmation
174
L'environnement de programmation
175
2012-2013
L'environnement de programmation
176
200
B436
500
R211
200
R322
100
X007
750
Adresses
logiques
Pointeur auteurs
Pointeur diteurs
100
JACQUES
500
PAUL
100
200
500
ARTHAU
D
200
DUNOD
500
PUG
750
2012-2013
750
R211
JACQUE
PUG
<>
900
177
Introduction
Organisation logique
Organisation physique
Structuration du disque dur
Ralisation des fonctions daccs lmentaires
Scurit et Protection
Exemple: Le SGF dUNIX
4
O
2012-2013
Maher SELLAMI
L'environnement de programmation
Unix/Linux
178
Problme
2012-2013
L'environnement de programmation
179
11
plateau
2012-2013
L'environnement de programmation
180
Alimentation
12
sect sect
Bloc 1
2012-2013
sect
sect
Bloc 2
Bloc 3
L'environnement de programmation
Bloc 4
181
13
Implantation physique
Programme :
Pour les lves
Lire (nom_lve);
Lire (note_examen);
crire (table);
fait
Sauvegarder
(mon_fichier)
2012-2013
totot
12
dupont
20
cesar
09
cloptre
15
Programme
Dupont
20
Csar Cloptre
09
15
Programme
donne
Fichier physique
Ensemble de
00110
blocs physiques
Fichier_notes_nfa
004
L'environnement de programmation
182
14
Implantation physique
Un fichier physique est constitu dun
ensemble de blocs physique.
Il existe plusieurs mthodes dallocation des
blocs physiques :
allocation contigu (squentielle simple)
allocation par zones
2012-2013
L'environnement de programmation
183
Allocation contigu
Un fichier occupe un ensemble de blocs contigus sur le
disque
Bien adapt au mthodes d'accs squentielles
et directes
Difficults :
-Fragmentation de la mmoire
-extension du fichier
L'environnement de programmation
184
16
Allocation contigu
cration d'un nouveau fichier : il faut allouer un nombre de blocs
suffisants dpendant de la taille du fichier
prvoir cette taille
trouver un trou suffisant (First Fit, BestFit)
Fichier 4 : 6 blocs
Fichier 3 : 4 blocs
L'environnement de programmation
185
17
Allocation contigu
fragmentation de la mmoire: ramasse miette
Compactage
Fichier 4 : 6 blocs
2012-2013
L'environnement de programmation
186
18
Allocation contigu
Etendre le fichier 1 avec un bloc de donnes
Dplacer les
fichiers
COUTEUX !
2012-2013
L'environnement de programmation
187
19
ZS
ZS
Zone
Primaire
( 3 blocs)
Zone
Secondaire
(2 blocs)
2012-2013
L'environnement de programmation
ZS
I
I
I
20
fichier 1
fichier 2
donnes
2012-2013
L'environnement de programmation
189
21
N bloc
NULL
Libre
3
fichier 1
Libre
NULL
Libre
11
12
13
fichier 2
14
15
Fin de fichier
7
Libre
N de Bloc suivant
Allou pour le
fichier
15
Libre
3
16
Libre
17
13
FAT
2012-2013
L'environnement de programmation
190
22
Allocation indexe
Les adresses des blocs physiques constituant un fichier sont
ranges dans une table appele index, elle-mme contenue dans
un ou plusieurs blocs disque
512 / 4 = 128 entres
fichier 2
fichier 1
bloc d'index
2012-2013
23
Accs direct
Accs direct
Accs direct
1 indirection
10
11
12
2 indirections
3 indirections
Table d'allocation
13 entres
En mmoire centrale
2012-2013
Sur disque
L'environnement de programmation
192
24
Accs direct
Accs direct
10 blocs de donnes
9
10
11
12
Accs direct
1 indirection
INDIRECT_1
2 indirections
3 indirections
INDIRECT_2_1
Table d'allocation
13 entres
INDIRECT_2
En mmoire centrale
Sur disque
4 blocs de donnes
2012-2013
L'environnement de programmation
193
29
L'environnement de programmation
194
30
01010101110101010111
2012-2013
L'environnement de programmation
195
31
Parcours de la liste
couteux
Difficile de trouver un
groupe de blocs libres
Variante par comptage
2012-2013
L'environnement de programmation
196
32
3
1
1
2012-2013
L'environnement de programmation
197
33
La FAT intgre
directement la
gestion de cet
espace.
NULL
Libre
3
fichier 1
Libre
NULL
Libre
7
11
13
fichier 2
14
15
16
17
12
Fin de fichier
N de Bloc suivant
Allou pour le
fichier
Libre
15
Libre
3
Libre
13
FAT
2012-2013
L'environnement de programmation
198
34
Introduction
Organisation logique
Organisation physique
Structuration du disque dur
Ralisation des fonctions daccs lmentaires
Scurit et Protection
Exemple: Le SGF dUNIX
4
O
2012-2013
Maher SELLAMI
L'environnement de programmation
Unix/Linux
199
2012-2013
L'environnement de programmation
200
45
Formatage physique
Le formatage physique ou de bas niveau permet de
diviser la surface du disque en lments basiques.
Il prpare le disque accueillir des
donnes
Adresse (HCS, head cylinder sector)
cylindre
plateau
L'environnement de programmation
201
46
sgf1
sgf2
sgf3
disque
partition
2012-2013
partition
L'environnement de programmation
partition
202
47
Partitionnement
Une partition est une partie d'un disque dur destine accueillir un
SGF. Elle est identifie par un nom appel nom de volume . Elle
est constitue dun ensemble de cylindres contigs.
Un disque peut accueillir 4 partitions diffrentes. Une seule est active
la fois.
Programme de
dmarrage (446 o)
Table des
partitions
Partition 1 FAT 16
Partition 2 Linux
Partition 3 FAT 32
Partition 4 NTFS
2012-2013
L'environnement de programmation
48
Blocs disques
Descripteur des
fichiers
1er secteur
contient lamorage du
SE
Taille du SGF
et description de la
blocs libres chains
partition
Descripteurs de fichiers
(inodes) libres
No
m
droits
Taille
inode
2012-2013
L'environnement de programmation
204
49
Secteur
d'amorage
2012-2013
FAT
Rpertoire
Copie de
la FAT
1
2
3
4
5
6
7
NULL
L
NULL
L
L
L
1
11
12
13
14
15
16
17
7
L
15
L
3
L
13
20
locs de donnes
racine
Fichier 1
L'environnement de programmation
ext
205
taille
50
Partitions
2012-2013
L'environnement de programmation
206
51
Dmarrage de lordinateur
1. Lutilisateur appuie sur le bouton dalimentation
de lunit centrale
2. Une fois le courant stabilis, le processeur dmarre et
excute le code du BIOS stock dans la ROM une
adresse prdfinie
3. Le BIOS excute une squence de vrification des
composants (mmoire, vido, priphriques de base)
(POST : Power-OnSelf Test)
4. Le BIOS accde au CMOS pour lire la configuration
matrielle de la machine (date, heure, priphrique de
masse contenant le systme dexploitation).
Programme de
dmarrage (446 o)
bootstrap
2012-2013
Table des
partitions
207
52
Introduction
Organisation logique
Organisation physique
Structuration du disque dur
Ralisation des fonctions daccs lmentaires
Scurit et Protection
Exemple: Le SGF dUNIX
4
O
2012-2013
Maher SELLAMI
L'environnement de programmation
Unix/Linux
208
Interprteur de commandes
Appels
systme
open (fichier)
chdir( /home)
open chdir
commandes
> cd /home
Interface dappel
(bibliothque systme)
_open
_chdir
SE : ensemble
de fonctions
2012-2013
Jolle Delacroix
L'environnement de programmation
209
62
Les commandes
Quelques commandes du SGF:
- liste du rpertoire
(ls, dir)
- changement de rpertoire
(cd)
- cration rpertoire
(mkdir)
- suppression rpertoire (rmdir)
- suppression fichier
(rm, del)
- modification d'attributs d'un fichier
(chmod)
- changement de nom de fichier
(mv, ren)
2012-2013
Jolle Delacroix
L'environnement de programmation
210
63
2012-2013
Jolle Delacroix
L'environnement de programmation
211
66
Ouverture de fichier
Ouverture fichier
MC
Fich
descripteur
L'environnement de programmation
212
67
Lecture de fichier
MC
Lecture
fichier
enrg
cache
Fich
enrg
descripteur
bloc disque
2012-2013
Jolle Delacroix
L'environnement de programmation
213
68
Lecture 1
Lecture 2
Taille_enrg_octets
2012-2013
Jolle Delacroix
Taille_enrg_octets
Open
offset = 0
Read (fich, enrg, taille_enrg_octets)
offset = offset + taille_enrg_octets
L'environnement de programmation
214
69
Lecture
fichier : Unix
Lecture
fichier
: Unix READ (fich, enrg, taille_enrg_octets)
Une opration de lecture spcifie combien d'octets doivent tre lus
(taille_enrg_octets).
La lecture s'effectue depuis la position courante de l'offset et dlivre les
taille_enrg_octets octets suivants.
Il faut dterminer quel bloc les octets lire appartiennent, et lire ce bloc
Bloc 0,1,2
Bloc 3
Fich
offset
Open
offset = 0
Taille_enrg_octets
Read (fich enrg, taille_enrg_octets)
offset = offset + taille_enrg_octets
inode
2012-2013
Jolle Delacroix
L'environnement de programmation
215
70
Ecriture fichier
Ecriture fichier
L'environnement de programmation
216
78
La fermeture provoque:
transfert les lments du descripteur vers le
rpertoire sur le disque
Libration de la mmoire occupe par les
tampons
2012-2013
L'environnement de programmation
217
79
Introduction
Organisation logique
Organisation physique
Structuration du disque dur
Ralisation des fonctions daccs lmentaires
Scurit et Protection
Exemple: Le SGF dUNIX
4
O
2012-2013
Maher SELLAMI
L'environnement de programmation
Unix/Linux
218
PROTECTION
liste daccs (droits d'accs)
2012-2013
L'environnement de programmation
219
83
Annie
rx
Annie
r
2012-2013
Nicolas
r
Martine
rx
Nicolas Martine
rwx
rwx
L'environnement de programmation
Charles
rx
Charles
rwx
220
Louis fichA
rwx
Louis fichB
r
84
fichA
Louis
rwx
Charles
rx
G3
r
fichB
Louis
G3
r
G2
G1
rx
G2
fichB
G1
rwx
rwx
G3 : Annie, Louis
G2 : Martine, Charles
G1 : Nicolas
2012-2013
L'environnement de programmation
221
fichA
rwx
85
> ls -l
drwxr-xr-x 2 delacroi 4096 Oct 22 1998 repertoire
-rw-r--r-- 1 delacroi 6401 Jan 8 1997 eleve.c
-rwxr-xr-x 1 delacroi 24576 Dec 15 1998 essai
-rw-r--r-1 delacroi 67 Dec 15 1998 essai.c
> chmod a+w essai.c
> ls -l essai.c
-rw-rw-rw- 1 delacroi
2012-2013
222
86
FAT
Copie de
la FAT
Rpertoire
racine
Blocs de donnes
primaire secondaire
Maintien de la cohrence entre les deux exemplaires
2012-2013
L'environnement de programmation
223
87
donnes 100010001000
C
R
C
secteur
1100
1000100010001100
L'environnement de programmation
224
88
Utilisation de la redondance :
Les donnes sont dupliques sur plusieurs supports physique
2012-2013
L'environnement de programmation
225
89
2012-2013
L'environnement de programmation
226
90
Restauration
dernire sauvegarde complte
Complte par les sauvegardes incrmentales
J-1
2012-2013
L'environnement de programmation
227
Trash jour J
91
Lecture/criture
RAID Niveau 1
RAID Niveau 4
Bloc de contrle = f (B1,B2,B3)
Bloc de contrle = f (B4,B5, B6)
B2
B1
B1 B1 B1
B2B2B2
B1
B2 B3 BC
B5B4B6 BC
L'environnement de programmation
228
92
Introduction
Organisation logique
Organisation physique
Structuration du disque dur
Ralisation des fonctions daccs lmentaires
Scurit et Protection
Exemple: Le SGF dUNIX
4
O
2012-2013
Maher SELLAMI
L'environnement de programmation
Unix/Linux
229
Rappel
L'environnement de programmation
230
2012-2013
L'environnement de programmation
231
2012-2013
L'environnement de programmation
232
L'environnement de programmation
233
L'environnement de programmation
234
D'autres bits peuvent tres combins (OU) avec les bits prcdents:
O_NDELAY ouverture non bloquante (tubes ,fichiers spciaux);
O_APPEND criture uniquement en fin de fichier
O_CREAT cration de fichier s'il n'existe pas(fournir droits)
O_TRUNC effacer le contenu du fichier s'il existe.
O_EXCL avec O_CREAT, provoque un echec si il existe
L'environnement de programmation
235
Fermeture de fichiers.
int close(int fd)
close rompt le lien entre un fichier et un nom local, rendant celui-ci libre
A sortie du programme (exit) ferme tous les fichiers ouverts.
Suppression de fichiers
int unlink(const char *pathname)
unlink dtruit un fichier dans lr systme de fichier.
2012-2013
L'environnement de programmation
236
L'environnement de programmation
237
238
Les rpertoires
nom de
fichier
Une entre du rpertoire est dcrit par une structure
n d'inode
struct dirent
{
long d_ino; /* inode number */
off_t d_off;
/* offset to this dirent */
unsigned short d_reclen; /* length of this d_name */
char d_name [NAME_MAX+1]; /* file name */
}
Accs au rpertoire
struct dirent *readdir (DIR *dir)
readdir() renvoie l'entre suivante du flux rpertoire, NULL a la fin du rpertoire
DIR *opendir (const char *name);
opendir() ouvre un flux rpertoire correspondant au rpertoire name, et renvoie un pointeur
sur ce flux. Le flux est positionn sur la premire entre du rpertoire
2012-2013
L'environnement de programmation
239
#include <assert.h>
#include <dirent.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main (int argc, char* argv[])
{
char* dir_path;
DIR* dir;
struct dirent* entry;
char entry_path[PATH_MAX + 1];
size_t path_len;
if (argc >= 2)
/* rpertoire spcifi sur la ligne de commande s'il y a lieu. */
dir_path = argv[1];
else /* Sinon, utilise le rpertoire courant. */
dir_path = ".";
strncpy (entry_path, dir_path, sizeof (entry_path)); /* Copie le chemin du rpertoire dans entry_path. */
path_len = strlen (dir_path);
if (entry_path[path_len - 1] != '/') {
/* Si le rpertoire ne se termine pas par un slash, l'ajoute. */
entry_path[path_len] = '/';
entry_path[path_len + 1] = '\0';
++path_len;
}
dir = opendir (dir_path);
/* Dmarre l'affichage du contenu du rpertoire. */
while ((entry = readdir (dir)) != NULL) {
/* Boucle sur les entres du rpertoire. */
const char* type;
/* chemin complet=rpertoire+nom de l'entre. */
strncpy(entry_path+path_len,entry->d_name,sizeof(entry_path)-path_len);
printf ("%s\n",entry_path);
}
closedir (dir);
return 0;
}
2012-2013
L'environnement de programmation
240
les inodes
L'environnement de programmation
241
les inodes
Accs au descripteur
int stat(const char *file_name, struct stat
*buf);
rcupre le statut du fichier point par file_name et remplit le
buffer buf
int fstat(int filedes, struct stat *buf)
identique stat, sauf que le fichier ouvert est point par le
descripteur filedes
int lstat(const char *file_name, struct stat
*buf);
identique stat, sauf qu'il donne le statut d'un lien lui-mme
et non pas du fichier point par ce lien
2012-2013
L'environnement de programmation
242