0% ont trouvé ce document utile (0 vote)
53 vues3 pages

Types de fichiers et SGF sous Linux

Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
53 vues3 pages

Types de fichiers et SGF sous Linux

Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Systèmes d’exploitation I 2022/2023

TP 05 - Le SGF -

1 Les différents types de fichiers


Sous Linux on distingue différents types de fichiers

ˆ Les répertoires;

ˆ Les fichiers ordinaires;

ˆ Les tubes nommés;

ˆ Les fichiers spéciaux.

2 Structure générale d’un SGF


Chaque système de fichiers Linux se compose d’un super bloc reservé au système, d’une table
d’inodes et du reste du volume logique contenant les fichiers et les répertoires.

+--------------------+---------------------------+-------------------------+
| Reservé au système | Table des inodes | Fichiers et répertoires |
+--------------------+---------------------------+-------------------------+

3 Inode
Un inode contient les caractéristiques d’un fichier ou d’un répertoire. Il est mémorisé sur disque
sur 64 ou 128 caractères (octets) selon les systèmes et caractérise un fichier. On trouve dans
l’inode:

ˆ les éléments binaires codant les droits d’accès et le type de fichier;

ˆ le numéro du propriétaire et du groupe du fichier;

ˆ la taille en octets du fichier;

ˆ l’heure et la date du dernier accès en lecture et en écriture au fichier;

ˆ etc.

4 Les appels système SGF


4.1 Définition
Un appel système (une primitive) consiste à faire exécuter une partie du code du noyau du
système d’exploitation. C’est un service offert par le noyau et le seul moyen de communiquer
avec lui.

1 •• H. BOUDJELABA
Systèmes d’exploitation I 2022/2023

Un appel système se décompose

ˆ Une interruption du processus faisant l’appel système;

ˆ La sauvegarde du contexte du processus;

ˆ L’exécution de l’appel système;

ˆ La restauration du contexte.

4.2 Consultation de l’inode


Les caractéristiques des fichiers sont enregistrées dans un inode sur disque. L’appel système
stat permet d’obtenir certaines informations de l’inode. Les résultats sont communiqués dans
une structure de type struct stat décrite dans le fichier d’en-tete <sys/stat.h>. Sa syntaxe est
la suivante:

int stat(const char* file_name, struct stat* buf);

stat permet d’obtenir les informations à partir du nom de fichier.

Le contenu de la structure stat est donné ci-dessous.

struct stat {
dev_t st_dev; /* ID du périphérique contenant le fichier */
ino_t st_ino; /* Numéro inoeud */
mode_t st_mode; /* Protection */
nlink_t st_nlink; /* Nb liens matériels */
uid_t st_uid; /* UID propriétaire */
gid_t st_gid; /* GID propriétaire */
dev_t st_rdev; /* ID périphérique (si fichier spécial) */
off_t st_size; /* Taille totale en octets */
blksize_t st_blksize; /* Taille de bloc pour E/S */
blkcnt_t st_blocks; /* Nombre de blocs alloués */
time_t st_atime; /* Heure dernier accès */
time_t st_mtime; /* Heure dernière modification */
time_t st_ctime; /* Heure dernier changement état */
};

4.3 Listage du contenu d’un répertoire


opendir ouvre le répertoire passé en paramètre et fournit un pointeur sur une structure de type
DIR identifiant le répertoire.

DIR* opendir(const char* name);

readdir lit l’entrée suivante du répertoire pointé par dir et fournit un pinteur du type struct
dirent sur la structure contenant l’entrée lue.

struct dirent* readdir(DIR* dir);

2 •• H. BOUDJELABA
Systèmes d’exploitation I 2022/2023

struct dirent {
long d_ino; /* numéro d’inode */
unsigned short d_off;
unsigned short d_reclen;
char d_name[256]; /* nom du fichier */
};

closedir(DIR* dir) désalloue la structure pointée par dir et allouer lors du opendir

int closedir(DIR* dir);

3 •• H. BOUDJELABA

Vous aimerez peut-être aussi