19
Fichiers et systèmes de fichiers 1.1 Fichiers et Systèmes de fichiers

Fichiers et Systèmes de fichiers

  • Upload
    nellie

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

Fichiers et Systèmes de fichiers. interface de programmation système. ouverture et fermeture : #include #include #include int fd = open("nom symbolique", options, mode); option = O_RDONLY, O_WRONLY ou O_RDWR O_CREAT, O_EXCL O_TRUNC, O_APPEND - PowerPoint PPT Presentation

Citation preview

Page 1: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.1

Fichiers et Systèmes de fichiers

Page 2: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.2

interface de programmation système

• ouverture et fermeture :

#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>

int fd = open("nom symbolique", options, mode);option =

O_RDONLY, O_WRONLY ou O_RDWRO_CREAT, O_EXCLO_TRUNC, O_APPEND

mode = droit d'accès au fichier si création int close (fd);

Page 3: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.3

interface de programmation système

• lecture et écriture :cr = read(fd, adresse, taille); cr = write(fd, adresse, taille);

fd = descripteur du fichier rendu par open adresse = adresse de la zone mémoire où écrire les données taille = nombre de caractères à lire cr = nombre de caractères réellement lus par le système

• positionnement du pointeur de fichierlseek(fd , offset, whence);SEEK_SET La tête est placée à offset octets depuis le début du fichier.SEEK_CUR La tête de lecture/écriture est avancée de offset octets.SEEK_END La tête est placée à la fin du fichier plus offset octets.

• destruction d'un fichierunlink("nom symbolique");

• reduction de la taille d'un fichierftruncate(fd, longueur); truncate("nom", longueur);

Page 4: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.4

interface de programmation LIBC

• Interface bufferisée, permettant d'éviter des appels système à chaque opération

#include <stdio.h>

FILE * fopen("nom fichier", mode)ouvre un fichier

fclose (FILE *) ferme le fichier

fread/fwrite(void *ptr, size_t size, size_t nmemb, FILE * fd); lit/écrit dans le fichier

int getc(FILE *) lit un caractère dans le tampon.

int putc(char c, FILE *) écrit un caractère dans le tampon.

int fscanf(char *, lit un ensemble de variables suivant un format.

int fprintf(char *, écrit un ensemble de variables suivant un format.

int fseek(FILE *, long, int) effectue un déplacement dans le fichier.

fflush(FILE *) vide le tampon dans le système.

Page 5: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.5

aspects système

• Le système gére les processus actifs par l'intermédiaire de structures de données– task_struct sous LINUX– U + PROC sur UNIX system V

• l'ouverture d'un fichier correspond à l'allocation d'une structure FILE, qui sera reférencée par un pointeur stocké dans la structure U

• cette structure FILE contient le pointeur de position

• sur appel à fork, les structures U + PROC (task_struct) sont dupliquées, mais pas la structure FILE

– les processus père et fils partagent les fichiers ouverts AVANT le fork(),– mais ils accèdent indépendement aux fichiers ouverts après.

Page 6: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.6

stockage permanent : les disques

• 1 disque = 1 ensemble de blocs (secteurs) numérotés de 0 à n, et accessibles en lecture/écriture de façon indivisible :

– 1 lecture ou écriture disque opère sur 1 à s secteurs entiers– la taille d'un secteur est typiquement 512 octets (1024 dans certains cas)

Page 7: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.7

les objets d'un système de fichiers

• fichiers– contenant des données, des programmes, des librairies de fonctions…

• répertoires– entité logique utilisée pour grouper des références vers des fichiers et/ou

répertoires– les répertoires permettent d'organiser les fichiers sous forme arborescente– la racine de cet arbre est un répertoire désigné par le caractère /

/

R1 R2

F1 F2 F3 F4 R3

• cette structure est appelée système de fichiers

Page 8: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.8

Structure FAT

• FAT = File Allocation Table

• le disque est divisé en 2 zones :– la table d'allocation, en début de disque– la zone des blocs de données (clusters sous Windows)– La table d'allocation contient autant d'entrées qu'il y a de cluster

• 1 répertoire = n bloc de données contenant des entrées structurées en :– le nom symbolique de l'objet (fichier ou répertoire) et son type,– les informations sur l'objet (taille en octets, dates, droits d'accès…)– le numéro du premier bloc de donnée (sur disque) de cet objet

• pour accéder aux données d'un fichier :– le numéro du premier bloc se trouve dans le répertoire (ex : 100)– le numéro du bloc suivant se trouve dans l'entrée 100 de la FAT (ex : 110)– le numéro du bloc suivant se trouve dans l'entrée 110 de la FAT….

Page 9: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.9

Structure INODE

• Chaque objet d'un système de fichier UNIX correspond une structure de donnée "inode" stockée sur disque

• un inode est repéré par un numéro unique (dans le système de fichier)

• l'inode contient toutes les informations qui décrivent l'objet :– type de l'objet : Répertoire, Fichier, ...– propriétaire, groupe,– droits d'accès– dates de création et dernière modification– taille de l'objet en octet– nombre de liens sur l'objet– ...

Page 10: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.10

Structure inode

Page 11: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.11

Exemple : structures sysv LINUX/* SystemV/Coherent inode data on disk */struct sysv_inode {

u16 i_mode;u16 i_nlink;u16 i_uid;u16 i_gid;u32 i_size;u8 i_data[3*(10+1+1+1)];u8 i_gen;u32 i_atime; /* time of last access */u32 i_mtime; /* time of last modification */u32 i_ctime; /* time of creation */

};

/* SystemV/Coherent directory entry on disk */#define SYSV_NAMELEN 14 /* max size of name in struct sysv_dir_entry */struct sysv_dir_entry {

sysv_ino_t inode;char name[SYSV_NAMELEN]; /* up to 14 characters, the rest are zeroes */

};

Page 12: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.12

lister les numéros d’inode

alpha12.couveep$ ls -iltotal 5896 2090 -rwxr-xr-x 1 couveep frec 657 Jan 10 2000 Approve 2072 -rwxr--r-- 1 couveep frec 36 Jun 26 1996 colog 2073 -rwxr-xr-x 1 couveep frec 501 Feb 05 1997 escale 2074 -rw-r--r-- 1 couveep frec 2967138 Nov 21 1997 gsv22w32.exe 2071 -rwxr--r-- 1 couveep frec 85 Mar 05 1998 infoServer 2078 -rwxr-xr-x 1 couveep frec 95 Mar 17 1998 lanoffice 2077 -rwxr-xr-x 1 couveep frec 423 Feb 10 1998 wnc2checkb 2075 -rwxr-xr-x 1 couveep frec 646 Feb 10 1998 wnc2doc 2076 -rwxr-xr-x 1 couveep frec 1070 Feb 10 1998 wnc2waitb 2079 -rwxr-xr-x 1 couveep frec 9164 Mar 27 12:55 xd 2070 -rwxr--r-- 1 couveep frec 73 Apr 17 1997 xemacs

Page 13: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.13

Fichier de type répertoire

alpha12.couveep$ xd .00000000: 08152E00 00000000 00000000 00000000 ................00000010: 00022E2E 00000000 00000000 00000000 ................00000020: 08167865 6D616373 00000000 00000000 ..xemacs........00000030: 0817696E 666F5365 72766572 00000000 ..infoServer....00000040: 0818636F 6C6F6700 00000000 00000000 ..colog.........00000050: 08196573 63616C65 00000000 00000000 ..escale........00000060: 081A6773 76323277 33322E65 78650000 ..gsv22w32.exe..00000070: 081B776E 6332646F 63000000 00000000 ..wnc2doc.......00000080: 081C776E 63327761 69746200 00000000 ..wnc2waitb.....00000090: 081D776E 63326368 65636B62 00000000 ..wnc2checkb....000000A0: 081E6C61 6E6F6666 69636500 00000000 ..lanoffice.....000000B0: 081F7864 00000000 00000000 00000000 ..xd............000000C0: 082A4170 70726F76 65000000 00000000 .*Approve.......

Page 14: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.14

Lien sur un fichieralpha12.couveep$ ln xd hexadump alpha12.couveep$ ls -iltotal 5920 2090 -rwxr-xr-x 1 couveep frec 657 Jan 10 2000 Approve 2072 -rwxr--r-- 1 couveep frec 36 Jun 26 1996 colog 2073 -rwxr-xr-x 1 couveep frec 501 Feb 05 1997 escale 2074 -rw-r--r-- 1 couveep frec 2967138 Nov 21 1997 gsv22w32.exe 2079 -rwxr-xr-x 2 couveep frec 9164 Mar 27 12:55 hexadump 2071 -rwxr--r-- 1 couveep frec 85 Mar 05 1998 infoServer 2078 -rwxr-xr-x 1 couveep frec 95 Mar 17 1998 lanoffice 2077 -rwxr-xr-x 1 couveep frec 423 Feb 10 1998 wnc2checkb 2075 -rwxr-xr-x 1 couveep frec 646 Feb 10 1998 wnc2doc 2076 -rwxr-xr-x 1 couveep frec 1070 Feb 10 1998 wnc2waitb 2079 -rwxr-xr-x 2 couveep frec 9164 Mar 27 12:55 xd 2070 -rwxr--r-- 1 couveep frec 73 Apr 17 1997 xemacs

Page 15: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.15

Contenu du répertoire

alpha12.couveep$ xd -c .00000000: 08 15 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 ................00000010: 00 02 2E 2E 00 00 00 00 00 00 00 00 00 00 00 00 ................00000020: 08 16 78 65 6D 61 63 73 00 00 00 00 00 00 00 00 ..xemacs........00000030: 08 17 69 6E 66 6F 53 65 72 76 65 72 00 00 00 00 ..infoServer....00000040: 08 18 63 6F 6C 6F 67 00 00 00 00 00 00 00 00 00 ..colog.........00000050: 08 19 65 73 63 61 6C 65 00 00 00 00 00 00 00 00 ..escale........00000060: 08 1A 67 73 76 32 32 77 33 32 2E 65 78 65 00 00 ..gsv22w32.exe..00000070: 08 1B 77 6E 63 32 64 6F 63 00 00 00 00 00 00 00 ..wnc2doc.......00000080: 08 1C 77 6E 63 32 77 61 69 74 62 00 00 00 00 00 ..wnc2waitb.....00000090: 08 1D 77 6E 63 32 63 68 65 63 6B 62 00 00 00 00 ..wnc2checkb....000000A0: 08 1E 6C 61 6E 6F 66 66 69 63 65 00 00 00 00 00 ..lanoffice.....000000B0: 08 1F 78 64 00 00 00 00 00 00 00 00 00 00 00 00 ..xd............000000C0: 08 2A 41 70 70 72 6F 76 65 00 00 00 00 00 00 00 .*Approve.......000000D0: 08 1F 68 65 78 61 64 75 6D 70 00 00 00 00 00 00 ..hexadump......

Page 16: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.16

Création d’un système de fichiersalpha12.couveep$ man mkfs

mkfs Command

Purpose

Makes a file system.

Syntax

mkfs [ -b Boot ] [ -l Label ] [ -i i-Nodes ] [ -o Options ] [ -p Prototype ] [-s Size ] [ -v VolumeLabel ] [ -V VfsName ] Device

Description

The mkfs command makes a new file system on a specified device. The mkfs command initializes the volume label, file system label, and startup block.

dev Device name

-v vol Volume ID

-s size File system size

-b boot Program to be installed in the startup block

-V vfs Definition of the virtual file system

-b Boot Names the program to be installed in block 0 of the new file system.

-i i-Nodes Specifies the initial number of i-nodes on the file system.

-l Label Specifies the file system label for the new file system.

-o Options Specifies a comma-separated list of virtual file system implementation-specific options.

Page 17: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.17

Sous Windows

Page 18: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.18

Le même sous UNIX...

>mount -v cdrfs /dev/cd0 /cdrom>cd /cdrom>ls -iltotal 41983655296 -r-xr-xr-x 1 root system 170 Oct 2 1996 autorun.inf57344 -r-xr-xr-x 1 root system 39936 Oct 1 1996 autozoo.exe53248 -r-xr-xr-x 1 root system 417 Oct 28 1996 autozoo.inf10758144 -r-xr-xr-x 1 root system 40258 Dec 11 1994 he.bmp10799104 -r-xr-xr-x 1 root system 60576 Nov 12 1996 install.exe10860544 -r-xr-xr-x 1 root system 3810 Oct 28 1996 install.inf10864640 -r-xr-xr-x 1 root system 132406 Oct 17 1996 puttzoo.bmp10997760 -r-xr-xr-x 1 root system 34816 Oct 16 1996 puttzoo.exe11032576 -r-xr-xr-x 1 root system 42070 Nov 18 1996 puttzoo.he011075584 -r-xr-xr-x 1 root system 98120877 Nov 18 1996 puttzoo.he1109197312 -r-xr-xr-x 1 root system 49893769 Nov 18 1996 puttzoo.he2159092736 -r-xr-xr-x 1 root system 36864 Jun 13 1995 puttzoo.he3159129600 -r-xr-xr-x 1 root system 65940986 Nov 6 1996 puttzoo.he4225071104 -r-xr-xr-x 1 root system 304160 Nov 18 1996 puttzoo.hlp225376256 -r-xr-xr-x 1 root system 413 Oct 28 1996 puttzoo.inf225378304 -r-xr-xr-x 1 root system 286720 Nov 12 1996 puttzoo.w32225665024 -r-xr-xr-x 1 root system 1285 Nov 7 1996 sndcards.inf98304 dr-xr-xr-x 2 root system 2048 Nov 19 1996 system1263224832 -r-xr-xr-x 1 root system 0 Oct 17 1996 testit.bpt

Page 19: Fichiers et Systèmes de fichiers

Fichiers et systèmes de fichiers 1.19

Le lien symbolique

alpha12.couveep$ ln -s /tmp/toto tataalpha12.couveep$ ls -iltotal 5896 2090 -rwxr-xr-x 1 couveep frec 657 Jan 10 2000 Approve 2072 -rwxr--r-- 1 couveep frec 36 Jun 26 1996 colog 2073 -rwxr-xr-x 1 couveep frec 501 Feb 05 1997 escale 2074 -rw-r--r-- 1 couveep frec 2967138 Nov 21 1997 gsv22w32.exe 2071 -rwxr--r-- 1 couveep frec 85 Mar 05 1998 infoServer 2078 -rwxr-xr-x 1 couveep frec 95 Mar 17 1998 lanoffice 2091 lrwxrwxrwx 1 couveep frec 9 Mar 27 14:12 tata -> /tmp/toto 2077 -rwxr-xr-x 1 couveep frec 423 Feb 10 1998 wnc2checkb 2075 -rwxr-xr-x 1 couveep frec 646 Feb 10 1998 wnc2doc 2076 -rwxr-xr-x 1 couveep frec 1070 Feb 10 1998 wnc2waitb 2079 -rwxr-xr-x 1 couveep frec 9164 Mar 27 12:55 xd 2070 -rwxr--r-- 1 couveep frec 73 Apr 17 1997 xemacsalpha12.couveep$ ls -il /tmp/toto 62 -rw-r--r-- 1 couveep frec 5 Mar 27 14:12 /tmp/totoalpha12.couveep$ xd -b tata00000000: 74 6F 74 6F 0A titi.