La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

SYSTÈME D’EXPLOITATION I

Présentations similaires


Présentation au sujet: "SYSTÈME D’EXPLOITATION I"— Transcription de la présentation:

1 SYSTÈME D’EXPLOITATION I
SIF-1015

2 Contenu du cours 8 Systèmes de fichiers Concepts et opérations de base
Concepts et opérations avancées Implémentation LECTURES: Chapitres 10 et 11 (OSC) Chapitres 3 et 7 (Mitchell) Chapitre 6 (Card)

3 Concepts et opérations de base
Les fichiers sous LINUX (ou UNIX) sont organisés sous forme d’un arbre. Le sommet de l’arbre, le répertoire racine (/) et chacun des nœuds est un répertoire pouvant contenir des sous-répertoires ou des fichiers (feuilles) Chaque répertoire contient un catalogue de noms, chaque entrée de ce catalogue décrivant un fichier ou un répertoire. Deux entrées particulières existent dans chaque répertoire: . représente le répertoire lui-même et .. le répertoire père Chaque fichier ou répertoire est représenté par un nom absolu. Ce nom correspond aux répertoires (chacun séparé par un /) à parcourir depuis la racine pour atteindre l’objet. Exemple: /usr/bin/cc (fichier cc) Les fichiers peuvent aussi être exprimés de façon relative

4 Concepts et opérations de base
Organisation hiérarchique des fichiers

5 Concepts et opérations de base
Organisation hiérarchique des fichiers

6 Concepts et opérations de base
Organisation hiérarchique des fichiers

7 Concepts et opérations de base
Types de fichiers: Chaque fichier dans l’arborescence est aussi représenté par son type, qui est utilisé par le système pour déterminer l’utilisation qui en sera faite Répertoire: catalogue de noms de fichiers Fichier normal: fichier contenant des données appartenant aux utilisateurs (fichiers texte, source, exécutable) Lien symbolique: pointeur sur un autre fichier Fichier spécial: fichier associé à un pilote de périphérique intégré dans le noyau. Un accès à un fichier spécial correspond en fait à un accès au périphérique physique qui lui est associé Tube nommé: canal de communication pouvant être utilisé par plusieurs processus pour échanger des données

8 Concepts et opérations de base
Types de fichiers

9 Concepts et opérations de base
Attributs de fichiers: Chaque fichier est associé à plusieurs attributs: Sa taille en octets L’identificateur de l’utilisateur ayant créé le fichier L’identificateur du groupe d’utilisateurs propriétaires du fichier Le nombre de liens Ses droits d’accès (Read, Write, eXecute) Exprimé par un triplet Permissions de l’utilisateur Permissions du groupe propriétaire Permissions des autres utilisateur Les dates d’accès et de modification Dernier accès (atime) Dernière modification du contenu (mtime) Dernière modification du fichier (ctime)

10 Concepts et opérations de base
Attributs de fichiers (Windows XP)

11 Concepts et opérations de base
Attributs de fichiers (LINUX)

12 Concepts et opérations de base
Droits d’accès Répertoire: Droit de lecture permet de lister son contenu, le droit d’écriture permet de créer et supprimer des entrées dans ce répertoire, le droit d’exécution indique que l’on peut traverser le répertoire Quand un processus qui accède à un fichier, LINUX compare alors les droits requis par l’opération et les permissions associées au fichier

13 Concepts et opérations de base
Descripteurs d’I/O fichier Un descripteur d’I/O est alloué par LINUX pour chaque fichier ouvert (open()) sur lequel s’effectue des opérations de lecture ou d ’écriture et est désalloué lors de la fermeture du fichier (close()) Le processus qui agit sur un fichier doit fournir son descripteur à chaque opération de d’I/O (read() et write()) Ces descripteurs sont des entiers qui représentent un index (une entrée) dans une table de descripteurs. Chaque descripteur est composé d’informations de contrôle correspondant aux fichiers ouverts, que le noyau utilise pour gérer les I/O sur les fichiers Descripteur d’I/O 0 représente l’entrée standard associée au clavier Descripteur d’I/O 1 représente la sortie standard associée à l ’écran Descripteur d’I/O 2 représente la sortie d’erreur associée à l ’écran

14 Concepts et opérations de base
Appels système (I/O sur fichiers) Sauvegarde des données modifiées: lors d’une écriture dans un fichier, les données sont d’abord écrites dans des tampons mémoire par le buffer cache, puis sauvegardées régulièrement sur disque par le processus update. Si le fichier est ouvert avec l’option O_SYNC, les modifications sont écrites immédiatement sur le disque La sauvegarde dans des tampons mémoire est avantageuse: Les processus écrivant dans des fichiers ne sont pas suspendus, le noyau se charge d’écrire les données sur disque de manière asynchrone Lorsque plusieurs processus accèdent aux mêmes fichiers, seule la première lecture est effectuée sur le disque, les lectures suivantes des mêmes données s’effectuent par un transfert de données entre les tampons mémoire du buffer cache et les espaces d’adressage des différents processus L’écriture asynchrone est problématique dans les cas de panne (perte de données entre l’appel à write() et l’écriture réelle)

15 Concepts et opérations avancées
i-nodes Les utilisateurs représentent les fichiers par des noms, absolus ou relatifs. LINUX utilise des identificateurs internes. Chaque fichier est référencé de façon unique par deux nombres: Le numéro de périphérique qui référence un périphérique et par le fait même le système de fichiers qu’il contient Le numéro de fichier qui référence de manière unique un fichier présent dans le système de fichiers Chaque système de fichiers UNIX conserve une table de descripteurs de fichiers sur disque. Ces descripteurs appelés i-node contiennent les informations (attributs des fichiers, adresses des blocs de données sur disque) de contrôle utilisées pour gérer les fichiers Le numéro de fichier unique est utilisé par le noyau comme index dans la table de i-nodes permettant de le convertir en descripteur de fichier Lorsqu’un processus effectue un appel système en lui fournissant un nom de fichier, le noyau convertit ce nom en descripteur de fichier. Pour ce faire, LINUX explore chacun des répertoires contenu dans le nom de fichier (pathname) et compare chaque entrée de répertoire (nom de fichier, numéro d’i-node) avec le nom simple de l’élément suivant

16 Concepts et opérations avancées
i-nodes Format d’un répertoire

17 Concepts et opérations avancées
i-nodes Si le nom spécifié est /usr/src/linux/fs/dcache.c, le noyau effectue les opérations suivantes: i-node racine / est chargé, recherche de l’entrée usr i-node /usr est chargé, recherche de l’entrée src i-node /usr/src est chargé, recherche de l’entrée linux i-node /usr/src/linux est chargé, recherche de l’entrée fs i-node /usr/src/linux/fs est chargé, recherche de l’entrée dcache.c, ce qui fournit le numéro d’i-node désiré Descripteurs d’I/O Les descripteurs d’I/O retournés par la primitive open(), sont utilisés par les appels système d’I/O sur fichiers Le noyau conserve des tables de descripteurs de fichiers ouverts

18 Concepts et opérations avancées
Descripteurs d’I/O LINUX gère plusieurs tables en mémoire: Le descripteur de chaque processus (structure task_struct) pointe sur une table des fichiers ouverts par le processus Chaque élément de la table de fichiers ouverts pointe sur un élément d’une table contenant la description de tous les fichiers ouverts dans le système Chaque descripteur de fichier ouvert possède un pointeur sur un élément de la table des i-nodes correspondant aux fichiers en cours d’utilisation Lorsqu’un processus utilise open() pour ouvrir un fichier: Le noyau convertit le nom de fichier en un couple (numéro de périphérique, numéro d’i-node) Il charge ensuite, l’i-node en mémoire s’il n’est pas déjà présent dans la table des i-nodes Un descripteur dans la table de fichiers ouverts est ensuite alloué, est initialisé et le fait pointer sur l’élément de la table des i-nodes déjà alloué Le noyau alloue un descripteur dans la table des fichiers ouverts par le processus, qui pointe sur le descripteur de fichier ouvert

19 Concepts et opérations avancées
Descripteurs d’I/O Lorsqu’un processus effectue une opération d’I/O en fournissant au noyau un numéro de descripteur d’I/O: LINUX utilise ce numéro comme indice dans la table des fichiers ouverts par le processus Un pointeur permet d’avoir accès à la table de fichiers ouverts Un autre pointeur à partir de la table des fichiers ouverts pointe sur la table des i-nodes L’informations contenues dans le i-node permet au noyau d’accéder au fichier sur disque

20 Concepts et opérations avancées
Tables des descripteurs d’I/O

21 Concepts et opérations avancées
Partage de descripteurs Lorsqu’un processus se duplique (fork()), le fils hérite de la table de fichiers du père Les deux processus peuvent alors effectuer des I/O sur les fichiers qui ont été ouverts par le processus père Dans l’exemple PartageDesc.c, un processus père ouvre un fichier (avec d1 comme descripteur d’I/O) et ouvre un processus fils qui ouvre un autre fichier (avec d2 comme descripteur d’I/O). Les deux processus peuvent avoir accès au fichier référencé par d1

22

23

24 Représentation des fichiers dans le noyau
Avant un fork: i-node table entries file A file A parent’s per process descriptor table file pos ... refcnt = 1 st_mode ... st_size file B file B file pos ... refcnt = 1 st_mode ... st_size

25 Représentation des fichiers dans le noyau
Après le fork (le processus enfant hérite de la table de fichiers ouverts: parent’s per process descriptor table i-node table entries file A file A file pos ... refcnt = 2 st_mode ... st_size file B file B child’s per process descriptor table file pos ... refcnt = 2 st_mode ... st_size

26 Représentation des fichiers dans le noyau
Opérations I/0 (open() et read()):

27 Représentation des fichiers dans le noyau
Opérations I/0 (open() et read()):

28 Implémentation Le Virtual File System (VFS)
LINUX supporte plusieurs types de systèmes de fichiers: Ext2fs (Ext3fs …): système de fichiers natifs Minix, MS/DOS: systèmes de fichiers permettant l’accès aux données d’autres systèmes d’exploitation proc: système de fichiers virtuels rendant accessible certaines informations gérées par le noyau (gestion des processus) Pour permettre aux processus d’avoir un accès uniforme aux fichiers, quelque soit le type de système de fichiers qui les contient, le noyau offre une couche logicielle assurant l’interfaçage entre les appels système concernant les fichiers et le code de gestion des fichiers

29 Implémentation Le Virtual File System (VFS)

30 Implémentation Le Virtual File System (VFS) Buffer cache

31 Implémentation Buffer cache (Description)
Le buffer cache gère les tampons mémoire qui servent de réservoir de données entre l’usager et les périphériques de masse La gestion du buffer cache interagit aussi avec la gestion de la mémoire puisque les tampons mémoires sont placés dans des pages mémoires et l’état des pages mémoires doit être souvent consulté ou modifié Le buffer cache utilise les champs count (nombre de références à une page), flags (état d’une page) et buffers (adresse du premier descripteur de tampon contenue dans une page) de la structure page

32 Implémentation Buffer cache (Description) Fonctions de gestion
Gestion des listes où sont enregistrées les tampons mémoires Réalisation des I/O Création des tampons mémoire dans les pages mémoire Les I/O sur les pages mémoire Opérations de déverrouillage et de désallocation de tampons (fin d’une I/O) Modifier la taille du buffer cache: Le buffer cache commence ses opérations vide, sans tampon mémoire, de nouvelles pages lui sont allouées lorsque des tampons mémoire sont requis Gestion des périphériques: Des fonctions permettent d’agir sur les tampons mémoire associés à un périphérique

33 Implémentation Systèmes de fichiers supportés (ext2fs => ext3fs => ext4fs)

34 Implémentation Systèmes de fichiers supportés (Ext2)
Les ensembles de blocs décomposés eux-mêmes: Un bloc de bitmap (table de bits) pour les i-node: Pour chaque i-node de l’ensemble est associé un bit (1: i-node alloué, 0: i-node disponible) Une table de i-node: Contient une partie de la table des i-node du système de fichiers Blocs de données: Contient les données contenues dans les fichiers et les répertoires

35 Implémentation Systèmes de fichiers supportés (Ext2)
Ensembles de blocs

36 Implémentation Ext2 (structure d’un i-node)

37 Implémentation (UNIX)
Inodes d’UNIX (index node) La structure d’un système de fichiers UNIX Secteur du logiciel de chargement (Boot Block) Super Block contient des informations sur le système de fichier qui sont copiées dans la RAM au boot Dimension maximale Nombre de Inode Nombre de blocs de données Pointeur sur la liste des Inode libres Chaque fichier et répertoire est représenté par une structure inode de 64 octets, contenant des informations de contrôle d’accès et 10 pointeurs directs à des blocs de données Pour des fichiers plus gros, deux pointeurs indirects peuvent pointer chacun sur 10 blocs d’inode donnant ainsi accès à 100 blocs de données

38 Implémentation (UNIX)
st_ino est le champ le plus important puisqu’il permet l’accès au premier bloc de données associé à un fichier Inodes d’UNIX (index node) Structure d’un Inode /* * file info returned by the stat function */ struct stat { dev_t st_dev; /* device */ ino_t st_ino; /* inode */ mode_t st_mode; /* protection and file type */ nlink_t st_nlink; /* number of hard links */ uid_t st_uid; /* user ID of owner */ gid_t st_gid; /* group ID of owner */ dev_t st_rdev; /* device type (if inode device) */ off_t st_size; /* total size, in bytes */ unsigned long st_blksize; /* blocksize for filesystem I/O */ unsigned long st_blocks; /* number of blocks allocated */ time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last change */ };

39 Implémentation (UNIX)
Inodes d’UNIX (Utilisation de stat()) /* statcheck.c - Querying and manipulating a file’s meta data */ #include "csapp.h" int main (int argc, char **argv) { struct stat stat; char *type, *readok; Stat(argv[1], &stat); if (S_ISREG(stat.st_mode)) /* file type*/ type = "regular"; else if (S_ISDIR(stat.st_mode)) type = "directory"; else type = "other"; if ((stat.st_mode & S_IRUSR)) /* OK to read?*/ readok = "yes"; readok = "no"; printf("type: %s, read: %s\n", type, readok); exit(0); } bass> ./statcheck statcheck.c type: regular, read: yes bass> chmod 000 statcheck.c type: regular, read: no

40 Implémentation (UNIX)
Inodes d’UNIX (index node) Un système de fichiers est organisé logiquement en fichiers et en répertoires. Un répertoire est un fichier de type particulier dont chaque entrée contient plusieurs champs: Le numéro d’i-node correspondant au fichier La taille de cette entrée en octets Le nombre de caractères du nom de fichier Le nom du fichier Les inodes de fichier contiennent des pointeurs sur des blocs de données Les inodes de répertoire contiennent des pointeurs sur des blocs contenant des listes de numéro d’inode/nom de fichier

41 Implémentation (UNIX)
Inodes d’UNIX (index node) Forme générale d’un inode

42 Implémentation (UNIX)
Inodes d’UNIX (index node) Forme générale d’un inode

43 Implémentation (FAT, NTFS, UNIX)
Inodes d’UNIX (index node) Pointeurs d’inode sur des blocs de données

44 Implémentation (UNIX)
Inodes d’UNIX (index node) Pointeurs d’inode sur des blocs de données et des répertoires

45 Implémentation (UNIX)
Inodes d’UNIX (index node) Pointeurs d’inode sur des blocs de données et des répertoires


Télécharger ppt "SYSTÈME D’EXPLOITATION I"

Présentations similaires


Annonces Google