Académique Documents
Professionnel Documents
Culture Documents
Système de Système de
gestion des fichiers gestion des processus
système d’E/S
cache
caractères blocs
contrôleurs
Interface matériels
C. Crochepeyre Cnam UNIX: SGF 3
• Les périphériques
Certains de ces systèmes sont issus ou supportés sur d’autres systèmes d’exploitation
boot bin dev etc home mnt proc root sbin tmp usr var
Point de montage
cdrom floppy include local
/ bin
Appels système
VFS
• Fichier
– ensemble de données: fichier de données
• répertoire (d)
• réguliers ou ordinaires : programmes, données.... (-)
• liens symboliques (l)
– Communication: fichiers d’échange
• tube nommé (p)
• socket (s)
– ressource périphérique: fichier matériel
• bloc (b)
• caractères (c)
• Identification : un nom
– bloc
• unité d’échange: 1024... octets
– blocs du système
• boot: 1er bloc ou autres blocs sur disque
• super-bloc: état du système de fichiers
– n° premiers blocs libres
– liste des i-nœuds libres
• table des i-nœuds configurée à l’installation
• blocs des données
– i-nœud (i-node) est un descripteur conservant les informations du
fichier sur disque
bloc
d’amorçage Bloc groupe 0 Bloc groupe 1 Bloc groupe n
Le super bloc est dupliqué dans chaque groupe lors du contrôle de cohérence
• Bitmap
– Vecteurs de bits pour gérer
• La liste des i-nœuds libres
• La liste des blocs libres
• 0/ libre 1/ occupé
racine
dir_3
toto.c
nom du fichier
n° i-nœud
– Un répertoire contient:
• n° i-nœud
• longueur de l’entrée du répertoire
• longueur du nom du fichier (max 255)
• type du fichier
• nom du fichier
• Définition
– i-nœud (i-node) est un descripteur conservant les informations du
fichier sur disque
– i-nœud = nœud d’index
– structure de taille fixe (ex 64 octets/i-nœud)
– table des i-nœuds configurée à l’installation
n°1 blocs défectueux
n°2 racine pour le système de fichiers
– gestion des i-nœuds
• sur disque
• en mémoire
un i-nœud
dupont • propriétaire
etudiants • groupe
ordinaire • type du fichier
rwxr--r-x • droits d’accès
23 nov 1999 14:25 • date dernier accès
22 nov 1999 12:54 • date fichier modifié
23 nov 1999 14:15 • date i-nœud modifié
5412 octets • taille
table d’adresses des blocs de données • adresses données
d
blocs de données
entrée 0
n°250
-
• Descripteurs particuliers
– entrée standard (clavier): n° 0
– sortie standard (écran): n°1
– sortie erreur (fichier erreurs): n°2
– une table des fichiers pour tous les processus est gérée par le noyau
– créée à partir de la table des i-nœuds disque
– description des propriétés du fichier et éléments pour l’accès
– un appel fichier = une entrée dans la table
• avec opération demandée (r,w,r/w)
– structure d’une entrée dans /usr/sys/include/sys/file.h
– chaque élément de la table pointe l’i-nœud du fichier dans table des i-
nœuds en mémoire
Fic_A
Fic_A R
Fic_A
proc_2
Fic_A R/W
Fic_A
T fichiers ouverts
Processus 1
Objets fichier
Objet i-node
F3 Objet dentry
T fichiers ouverts
Processus 2
F3
ta ble blocs
1 0 n° de blocs
indire ction 1
indire ction 2
indire ction 3
• super bloc
– nb de blocs libres
– une liste
• de 50 n° de blocs libres (cache)
• un pointeur vers d’autres listes de blocs libres
• utilitaire mkfs: création S.F.
– chaînage des blocs libres
• algorithme alloc()
– allocation d’un bloc à un fichier à partir de la liste
• si liste pleine: n° bloc pris dans la liste
• si liste épuisée: liste suivante remplace liste super bloc
pointeur
82 72 27 103 18 46 68 261
bloc 14
super bloc 11
14 21 105 52 25 10 107 77
bloc n°11
• super bloc
– recherche d’un bloc libre
• algorithme free()
– libération des blocs d’un fichier
– attachement à la liste des blocs libres du super bloc
• si liste non pleine: maj dans cette liste
• si liste pleine: liste pleine écrite dans ce bloc libéré et un
pointeur dans la liste sur ce nouveau bloc libre
super bloc 11
14 21 105 52 25 10 107 77
bloc n°11
/users/étudiants/informatique/gaston/fichier.exe
i-nœud xxxxx
nb lien = 1
données
i-nœud 17
nb lien = 2
17 . 10 ..
i-nœud 17
17 usr 23 prog.exe
nb lien = 3
17 . 10 .. 42 bin
i-nœud 17
nb lien = 2
4 . 17 ..
2
i-nœud 42
11 fichier
i-nœud n°11
infos 527
11 fichierBis données
527
nombre de liens = 2
répertoire
11 fichier
i-nœud n°11
infos 527
11 fichierBis données
527
11 fichier
i-nœud n°11
infos 527
527 données
• Même mécanisme
• Commandes: mkdir et rmdir
• Un fichier répertoire a au moins deux liens
nombre de liens = 1
527
données
i-nœud n°24
24 fichier_lien
l infos
527
nombre de liens = 1
C. Crochepeyre Cnam UNIX: SGF 71
• Copie
– copier un fichier
• copie physique
• nouvel i-nœud
• nouveau nom
% cp fichier1 fichier2
#include <unistd.h>
int rename(const char *ref_src, const char *ref_dest)
#include <unistd.h>
int access (char *ref, int acces)
Commande: ls -la
#include <sys/stat.h>
int mknod(const char *ref, mode_t mode, dev_t ressource)
• Changer de groupe
Commande: chgrp nv_grp fichier
• Changer de propriétaire
#include <unistd.h>
int chown(const char *ref, uid_t id_util, gid_t id_grp)
Commande: chown nv_prop fichier
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *ref, int mode_ouv, [mode_t mode] )
ou
int creat (const char *path, mode_t mode );
• Fermeture de fichier
#include <unistd.h>
int close( int desc )
#include <unistd.h>
ssize_t read( int desc, void *ptr_buf, size_t nb_octets )
• Ecriture de fichier
#include <unistd.h>
ssize_t write( int desc, void *ptr_buf, size_t nb_octets )
• Système d’exploitation
– A. Tanenbaum - Ed Dunod 1999
DUP()
descripteurs du processus A
1) on crée un tube:
0 STDIN
STDOUT - deux descripteurs: 3 et 4 qui pointent sur la table des
1 fichiers: ici tube
2 STDERR
2) on ferme le descripteur 1
3 tube input
- l’entrée 1 est libre
4 tube output
3) on duplique le descripteur 4 avec retour = dup (4)
5
6 - le descripteur 4 est recopié dans le descripteur 1 (dup
prend la pemière entrée libre)
- valeur de retour: le nouveau descripteur ici le 1
4) on ferme les descripteurs 3 et 4 qui ne servent plus
5) tout envoi vers le descripteur 1 concernera le tube