Systèmes
d'exploitation
Systems de fichiers
Ken Thompson
• Américain
• UC Berkeley
• Auteur du langage Go
• Auteur du système
UNIX
2
Contenu
• Partition
• Fichier
• Directeur
• Fichiers Speciaux
3
Bibliographie pour aujourd'hui
• Modern Operating Systems
– Chapitre 6
• 6.1
• 6.2
• Operating Systems Concepts
– Chapitre 11
4
La Mémoire RAM
• tableau d'octets
• petit taille
• volatile
5
Le Disk
• persistent
• grand taille
• tableau de blocs
6
System de fichiers
• transforme le tableau de blocs en fichiers et
dossiers
• structures de données utilisées par le système
d'exploitation
7
Operations avec le disc dur
8
disc
partitionnement
formater monter sauvegarde
fsck usage
PARTITION
9
Partitionnement
• Le processus de partitionnement d'une
partition
• Outiles
– fdisk/gdisk
– GParted, Partition Magic
10
Partition
• Une zone continue sur le disc dur
• Contiens un system de fichiers
11
Types des partitions
• MBR - Master Boot Record)
– partitions primaires (maxim 4)
– partitions étendues – peut remplacer l'une des
partitions primaires
– partitions logiques – sont dans la partition étendue
• GPT - GUID Partition Table)
– sans limite de partitions
– chaque partition du disque a un identifiant GUID
unique généré de manière aléatoire
– chaque partition du globe aura son propre identifiant
12
MBR
13
GPT
14
SYSTEM DE FICHIERS
15
System de fichiers
Applications
• Directeurs et
fichiers
Système
d'Explotation
• Structures de
données
16
Exemples de systems de fichiers
• ext3
• ReiserFS
• HFS
• NTFS
• FAT32
• ISO9660
• UDF
17
L’appel de system
Utilisateur
Application
Meta-
Information
System de
Fichier
Pilot
Disc
18
System de fichiers – mots
Applications
• Nom de fichier
• Attributs
• Descripteur de fichier
• Fichier
• Curseur
Système d'Explotation
• bloc
• superbloc
• inode
• dentry
• allocation
• bitmap
• VFS
19
Monter le système de fichiers
• Lors du démarrage de SE, le système de fichiers
racine est chargé à partir du disque.
• Plus tard, d'autres systèmes de fichiers peuvent
être montés (mount)
• Monter un nouveau système de fichiers
– Ajout de système de fichiers à un point spécifique de
la hiérarchie de montage actuelle
• Windows: C:, D: etc
• Unix: il n'y a qu'un seul répertoire racine
20
UNIX
21
mount("/dev/hda5", "/mnt/hda5", "ntfs", ...)
SetVolumeMountPoint("C:mycd", "D:");
Monter le système de fichiers
22
FICHIER
23
Fichier
• le unité de base du système de fichiers
• en SE, il y a deux abstractions de base
– fichier - abstraction pour l’information / les données
– processus – abstraction pour des actions
• POSIX
– toutes les choses sont de fichiers
• clavier, mémoire, disc …
24
Types de fichiers
• fichiers simple – regular files
• directeurs – directories
• lien (symbolique) – hard/soft links
• dispositifs de type caractère – char devices
• dispositifs de type bloc – block devices
• pipes/FIFOS
• sockets UNIX
• Comment trouvez-vous le type d'un fichier sous
UNIX?
25
Fichiers Simple
• binaire, text
• extension
• structure
– enregistrement
– array des octets
• attributs
– droits
– taille
– propriétaire
– horodatage
26
Structure de fichier
27
a) array des octets b) enregistrement c) arbre
Fichier binaire
28
a) fichier executable b) archive
Operations avec les fichiers
• création
• ouverture
• lecture
• écriture
• positionnement dans le fichier
• tronquer
• fermeture
• suppression
29
Creation
• shell
touch /path/to/file
toute commande qui écrit dans un fichier le crée
• ISO/ANSI C
FILE *f = fopen ("/path/to/file", "rw");
• POSIX
int fd = open ("/path/to/file", O_CREAT | O_EXCL, 0644);
• Windows
HANDLE fileHandle = CreateFile ("/path/to/file", ...,
CREATE_NEW);
30
Ouverture
• ISO/ANSI C
FILE *f = fopen("/path/to/file", "rt");
• POSIX
int fd = open("/path/to/file", O_RDONLY);
• Windows
HANDLE f = CreateFile("/path/to/file", ...,
OPEN_EXISTING);
31
Fichier Ouvert
• identification
– Windows: poignée
– POSIX: descripteur
– pourquoi pas un nom?
• position
– Windows: pointeur de fichier
– Linux: curseur de fichier
• droits d'ouverture
• compteur d'utilisation (file-open count)
32
Descripteur de fichier
• plus de descripteur peut correspondre aux même fichier
• chaque processus a une table de descripteurs de fichiers
• POSIX
– un entier identifiant une instance de fichier ouvert dans un
processus
– descripteurs spéciaux
• 0 (stdin), 1 (stdout), 2 (stderr)
• ISC C
– File
• Windows
– HANDLE
33
Table de descripteur de fichier
34
Lecture
• stocker des informations dans un tampon
• avance du curseur de fichier
• ISO C
// reads size * times bytes
n_items = fread(buffer, size, items, f);
• Unix
// reads maximum size bytes
// use only within a loop
n_read = read(fd, buffer, size);
• Windows
ReadFile(fHandle, buffer, bytesToRead,
&bytesRead, NULL);
35
Ecriture
• écrire des informations à partir d'un tampon
• avance du curseur de fichier
• ISO C
// writes size * times bytes
n_items = fwrite(buffer, size, items, f);
• Unix
// writes maximum size bytes
// use only within a loop
n_write = write(fd, buffer, size);
• Windows
WriteFile(fHandle, buffer, bytesToWrite,
&bytesWritten, NULL);
36
espace utilisateur
Espace noyau
matériel disc
buffer kernel buffer kernel
buffer user buffer user
libc (sans tampon)
read/ReadFile
sys_read/NtReadFile sys_write/NtWriteFile
write/WriteFile
Flux de lecture et ecriture
37
Curseur de fichier
• changements à lire et à écrire
• initialisation à l'ouverture
• mouvement de curseur de fichier
• ISO C
fseek(f, offset, SEEK_SET);
• Unix
lseek(fd, offset, SEEK_SET);
• Windows
SetFilePointer(fHandle, distanceToMove,
NULL, FILE_BEGIN);
38
Types des données
• Utilisateur
– Nom de fichier
• Application
– Descripteur de fichier
• Système d’Explotation
– table de descripteur
– structure de données pour le fichier ouverte
– structure de données pour le fichier sur de disc
39
Espace
utilisateur
Espace noyau
Fichier sur le discinstance de fichier ouvert
struct file
Pointeur
fichier
utilisateur
droits
inode
struct
inode
droits
taille
bloc
pointeurs
uid
gid
Fichier ouverte
descripteur
Types des donnees
40
Duplication de descripteur
• dupliquer un descripteur dans un autre descripteur
• les deux descripteurs fonctionnent sur le même fichier
• POSIX
newfd = dup(oldfd);
dup2(oldfd, newfd);
• Windows
DuplicateHandle(...);
SetStdHandle(...);
41
Espace
utilisateur
Espace noyau
Fichier sur le discinstance de fichier ouvert
struct file
Pointeur
fichier
utilisateur
droits
inode
struct
inode
droits
taille
bloc
pointeurs
uid
gid
Fichier ouverte
descripteur
Types des données
dup()
descripteur
42
Espace
utilisateur
Espace noyau
Fichier sur le discinstance de fichier ouvert
struct file
Pointeur
fichier
utilisateur
droits
inode
struct
inode
droits
taille
bloc
pointeurs
uid
gid
Fichier ouverte
descripteur
Types des données
descripteur
descripteur
open() struct file
Pointeur
fichier
utilisateur
droits
inode
43
Tronquer
• supprimer le contenu du fichier
• le curseur de fichier est mis à size
• un fichier peut être ouvert et tronqué
// size is 0
open("/path/to/file", O_RDWR | O_TRUNC);
• un fichier peut être ouvert et tronqué
truncate("/path/to/file", size);
• un fichier peut être tronqué après ouverture
ftruncate(fd, size);
SetEndOfFile(hFile); // Windows
44
Fermer
• l'entrée de la table de descripteur est supprimée
• ISO C
fclose (f);
• POSIX
close(fd);
• Windows
CloseHandle(fHandle);
45
Exemple - Lire un fichier
int main () {
int f = open ("data.bin", O_RDONLY);
if (f >= 0) {
// ...
for (part = 0; part < PARTS; part++) {
bytes = read (f, temp_buffer, BUFFER_SIZE);
if (bytes > 0)c{
// ...
}
}
close (f);
}
else
{
perror ("open");
abort ();
}
return 0;
}
46
Accès simultané au un fichier
• Lectures multiples
– chacun lit le fichier indépendamment (chacun a
un curseur différent)
• Une lecture, Une écriture
– ce n'est pas exactement ce que le premier va lire
• Plusieurs écritures
– l'ordre dans lequel les données seront écrites est
inconnu
47
Accès simultané au un descripteur
• le noyau maintient une structure de données
unique pour les deux descripteurs
– un seul curseur de fichier
• les opérations sont sérialisées en utilisant
cette structure
– les résultats des opérations sont cohérents
– juste parce que nous ne connaissons pas l'ordre
dans lequel ils ont été exécutés
48
Supprimer
• supprimer le fichier du système de fichiers
• shell
rm file.txt
• ISO/C
remove("file.txt");
• POSIX
unlink("file.txt");
• Windows
DeleteFile("file.txt");
49
Redirection
• shell
echo “message” > file_out.txt
grep “word” < file_in.txt
• POSIX
fd = open ("file_out");
close (1);
dup2 (fd, 1);
close (fd);
50
NULL
stdout stdout
file.txt
stdout
file.txt
stdoutNULL
file.txt
stdout
NULL
file.txt
open(“file.txt”) close(1); dup2(fd, 1) close(fd)
Redirection
51
Redirection
52
X
.txt
PERMISSION POUR UN FICHIER
53
UNIX
• 3 types des entités
– Utilisateur (user)
– Group (Group)
– Autres (Others)
• 3 types des premisions
– Lire (Read)
– Ecrire (Write)
– Executer (Execute)
54
UNIX
• Permisions = chaine de 9 caracteres
– 3 pour l’utilisateur
– 3 pour le group
– 3 pore les autres
55
UNIX
56
UNIX
• Sur bits:
– r w - r- - r - - corresponde a 110100100
– r w x r- x - - - corresponde a 111101000
– r w - rw- - - - corresponde a 110110000
• Octal:
– r w - r- - r - - corresponde a 644
– r w x r- x - - - corresponde a 750
– r w - rw- - - - corresponde a 660
57
Gestion de permissions
• UNIX:
– Entités: User, Group, Others
– Types: Read, Write, Execute
// mode in octal
chmod("/path/to/file", 0644);
• Windows: Listes d’acces
– ACL: access control lists
– Types: lecture, écriture, listage, croisement, création de sous-fichiers,
etc.
– Permissions seulement sur NTFS, pas sur FAT32
SetNamedSecurityInfo(...);
58
DIRECTEURS
59
Directeurs
• fichiers spéciaux
• contient une liste de fichiers et de répertoires
• entrées spéciales
– . -> directeur courent
– .. -> directeur parent
60
Chemin du fichier
• chaînage des entrées dans le système de
fichiers
• tout système de fichiers a un répertoire racine
(/ sous Unix)
• séparateur de chemin
– Windows: 
– UNIX: /
• chemin absolu
• chemin relatif
61
Exemple
62
Operations avec les directeurs
• création (mkdir)
• création d’un entrée (touch, mkdir, ln, mknod)
• suppression d’un entrée (rm, rmdir, unlink)
• suppression (rmdir)
• lister le contenu (ls)
• entrée dans un directeur (cd)
• renommer une entrée (mv)
63
Operations avec les directeurs
UNIX
// make directory
int mkdir(const char *path, mode_t mode);
// change directory
int chdir(const char *path);
// remove directory
int rmdir(const char *path);
64
Operations avec les directeurs
UNIX
// open directory
DIR * opendir(const char *filename);
// read a directiory entry
struct dirent * readdir(DIR *dirp);
// rewind directory
void rewinddir(DIR *dirp);
// close directory
int closedir(DIR *dirp);
65
Exemple – listez un directeur
int main ()
{
DIR *dir;
struct dirent *entry;
dir = opendir("/");
if (dir != NULL)
{
do
{
entry = readdir(dir);
if (entry != NULL) printf ("%sn", entry->d_name);
} while (entry != NULL);
closedir (dir);
}
else
{
perror("opendir");
abort ();
}
return 0;
}
66
Operations avec les directeurs
Windows
• HANDLE
• CreateDirectory
• RemoveDirectory
• SetCurrentDirectory
• FindFirstFile
• FindNextFile
• FindClose
67
FICHIERS SPECIAUX
68
Fichiers Speciaux
• liens (links) (ln, link)
• dispositifs de type caractère (mknod, mknod)
• dispositifs de type bloc (mknod, mknod)
• FIFO (mknod/mkfifo, mknod/mkfifo)
• sockets UNIX (N/A, socket/mknod)
69
Liens
• Pointeur vers un fichier existent
• Types
– symbolique (soft link, similaire avec le shortcut)
– hard (le même fichier, nom diffèrent)
$ ls -l /usr/bin/cc
lrwxrwxrwx 1 root root 20 Oct 6 2005 /usr/bin/cc -> /etc/alternatives/cc
lrwxrwxrwx 1 root root 12 Apr 22 2007 /etc/alternatives/cc -> /usr/bin/gcc
70
Fichier dispositif
• Type caractère
– Access séquentiel
– Dispositifs serial
• Keyboard, mouse etc
$ ls -l /dev/ttyS0
crw-rw---- 1 root dialout 4, 64 Feb 26 2005 /dev/ttyS0
• Type bloc
– Access aléatoire
– Lire en bloc
• Disc, usb, …
$ ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 Feb 26 2005 /dev/sda
71
Socket UNIX et FIFO
• Les sockets Unix
– communication inter-processus - communication locale
– Ils ont une entrée associée au système de fichiers
# ls -l /var/run/cups/cups.sock
srwxrwxrwx 1 root root 0 2008-03-03 11:10 /var/run/cups/cups.sock
• FIFO
– pipe avec nom
– un processus écrit, un autre processus lit
$ ls -l mypipe
prw-r--r-- 1 razvan razvan 0 2008-03-03 21:14 mypipe
72
E/S Standard vs E/S bas niveau
• E/S Standard– fopen, fread, fwrite, fclose
– E/S Tamponne
– problème de double tampon
– accès de haut niveau pour travailler avec des chaînes
• E/S bas niveau– open/CreateFile, read/ReadFile
– encapsulation d'appels système
– la plus grande flexibilité
– ne sont pas portable
73
Systems de fichiers virtuelles
• les systèmes de fichiers virtuels n'ont pas de support
physique
– procfs monté en /proc
– devfs monté en/dev
– ou sont les données?
• entrées de fichier spécialisées (fichiers sans support
physique - généralement des périphériques char)
– /dev/null
– /dev/zero
– /dev/urandom
74
Mot clés
• Partition
• Montage
• System de fichiers
• Fichier
• Directeur
• Lien
• Dispositif caractère
• Dispositif bloc
• Socket UNIX
• FIFO
• Permissions
• Chemin de fichier
• Absolue
• Relatif
• MBR
• GPT
• E/S Standard
• E/S Bas Niveau
75
Questions
76

SdE 3 - Systemes de fichiers

  • 1.
  • 2.
    Ken Thompson • Américain •UC Berkeley • Auteur du langage Go • Auteur du système UNIX 2
  • 3.
    Contenu • Partition • Fichier •Directeur • Fichiers Speciaux 3
  • 4.
    Bibliographie pour aujourd'hui •Modern Operating Systems – Chapitre 6 • 6.1 • 6.2 • Operating Systems Concepts – Chapitre 11 4
  • 5.
    La Mémoire RAM •tableau d'octets • petit taille • volatile 5
  • 6.
    Le Disk • persistent •grand taille • tableau de blocs 6
  • 7.
    System de fichiers •transforme le tableau de blocs en fichiers et dossiers • structures de données utilisées par le système d'exploitation 7
  • 8.
    Operations avec ledisc dur 8 disc partitionnement formater monter sauvegarde fsck usage
  • 9.
  • 10.
    Partitionnement • Le processusde partitionnement d'une partition • Outiles – fdisk/gdisk – GParted, Partition Magic 10
  • 11.
    Partition • Une zonecontinue sur le disc dur • Contiens un system de fichiers 11
  • 12.
    Types des partitions •MBR - Master Boot Record) – partitions primaires (maxim 4) – partitions étendues – peut remplacer l'une des partitions primaires – partitions logiques – sont dans la partition étendue • GPT - GUID Partition Table) – sans limite de partitions – chaque partition du disque a un identifiant GUID unique généré de manière aléatoire – chaque partition du globe aura son propre identifiant 12
  • 13.
  • 14.
  • 15.
  • 16.
    System de fichiers Applications •Directeurs et fichiers Système d'Explotation • Structures de données 16
  • 17.
    Exemples de systemsde fichiers • ext3 • ReiserFS • HFS • NTFS • FAT32 • ISO9660 • UDF 17
  • 18.
  • 19.
    System de fichiers– mots Applications • Nom de fichier • Attributs • Descripteur de fichier • Fichier • Curseur Système d'Explotation • bloc • superbloc • inode • dentry • allocation • bitmap • VFS 19
  • 20.
    Monter le systèmede fichiers • Lors du démarrage de SE, le système de fichiers racine est chargé à partir du disque. • Plus tard, d'autres systèmes de fichiers peuvent être montés (mount) • Monter un nouveau système de fichiers – Ajout de système de fichiers à un point spécifique de la hiérarchie de montage actuelle • Windows: C:, D: etc • Unix: il n'y a qu'un seul répertoire racine 20
  • 21.
  • 22.
    mount("/dev/hda5", "/mnt/hda5", "ntfs",...) SetVolumeMountPoint("C:mycd", "D:"); Monter le système de fichiers 22
  • 23.
  • 24.
    Fichier • le unitéde base du système de fichiers • en SE, il y a deux abstractions de base – fichier - abstraction pour l’information / les données – processus – abstraction pour des actions • POSIX – toutes les choses sont de fichiers • clavier, mémoire, disc … 24
  • 25.
    Types de fichiers •fichiers simple – regular files • directeurs – directories • lien (symbolique) – hard/soft links • dispositifs de type caractère – char devices • dispositifs de type bloc – block devices • pipes/FIFOS • sockets UNIX • Comment trouvez-vous le type d'un fichier sous UNIX? 25
  • 26.
    Fichiers Simple • binaire,text • extension • structure – enregistrement – array des octets • attributs – droits – taille – propriétaire – horodatage 26
  • 27.
    Structure de fichier 27 a)array des octets b) enregistrement c) arbre
  • 28.
    Fichier binaire 28 a) fichierexecutable b) archive
  • 29.
    Operations avec lesfichiers • création • ouverture • lecture • écriture • positionnement dans le fichier • tronquer • fermeture • suppression 29
  • 30.
    Creation • shell touch /path/to/file toutecommande qui écrit dans un fichier le crée • ISO/ANSI C FILE *f = fopen ("/path/to/file", "rw"); • POSIX int fd = open ("/path/to/file", O_CREAT | O_EXCL, 0644); • Windows HANDLE fileHandle = CreateFile ("/path/to/file", ..., CREATE_NEW); 30
  • 31.
    Ouverture • ISO/ANSI C FILE*f = fopen("/path/to/file", "rt"); • POSIX int fd = open("/path/to/file", O_RDONLY); • Windows HANDLE f = CreateFile("/path/to/file", ..., OPEN_EXISTING); 31
  • 32.
    Fichier Ouvert • identification –Windows: poignée – POSIX: descripteur – pourquoi pas un nom? • position – Windows: pointeur de fichier – Linux: curseur de fichier • droits d'ouverture • compteur d'utilisation (file-open count) 32
  • 33.
    Descripteur de fichier •plus de descripteur peut correspondre aux même fichier • chaque processus a une table de descripteurs de fichiers • POSIX – un entier identifiant une instance de fichier ouvert dans un processus – descripteurs spéciaux • 0 (stdin), 1 (stdout), 2 (stderr) • ISC C – File • Windows – HANDLE 33
  • 34.
    Table de descripteurde fichier 34
  • 35.
    Lecture • stocker desinformations dans un tampon • avance du curseur de fichier • ISO C // reads size * times bytes n_items = fread(buffer, size, items, f); • Unix // reads maximum size bytes // use only within a loop n_read = read(fd, buffer, size); • Windows ReadFile(fHandle, buffer, bytesToRead, &bytesRead, NULL); 35
  • 36.
    Ecriture • écrire desinformations à partir d'un tampon • avance du curseur de fichier • ISO C // writes size * times bytes n_items = fwrite(buffer, size, items, f); • Unix // writes maximum size bytes // use only within a loop n_write = write(fd, buffer, size); • Windows WriteFile(fHandle, buffer, bytesToWrite, &bytesWritten, NULL); 36
  • 37.
    espace utilisateur Espace noyau matérieldisc buffer kernel buffer kernel buffer user buffer user libc (sans tampon) read/ReadFile sys_read/NtReadFile sys_write/NtWriteFile write/WriteFile Flux de lecture et ecriture 37
  • 38.
    Curseur de fichier •changements à lire et à écrire • initialisation à l'ouverture • mouvement de curseur de fichier • ISO C fseek(f, offset, SEEK_SET); • Unix lseek(fd, offset, SEEK_SET); • Windows SetFilePointer(fHandle, distanceToMove, NULL, FILE_BEGIN); 38
  • 39.
    Types des données •Utilisateur – Nom de fichier • Application – Descripteur de fichier • Système d’Explotation – table de descripteur – structure de données pour le fichier ouverte – structure de données pour le fichier sur de disc 39
  • 40.
    Espace utilisateur Espace noyau Fichier surle discinstance de fichier ouvert struct file Pointeur fichier utilisateur droits inode struct inode droits taille bloc pointeurs uid gid Fichier ouverte descripteur Types des donnees 40
  • 41.
    Duplication de descripteur •dupliquer un descripteur dans un autre descripteur • les deux descripteurs fonctionnent sur le même fichier • POSIX newfd = dup(oldfd); dup2(oldfd, newfd); • Windows DuplicateHandle(...); SetStdHandle(...); 41
  • 42.
    Espace utilisateur Espace noyau Fichier surle discinstance de fichier ouvert struct file Pointeur fichier utilisateur droits inode struct inode droits taille bloc pointeurs uid gid Fichier ouverte descripteur Types des données dup() descripteur 42
  • 43.
    Espace utilisateur Espace noyau Fichier surle discinstance de fichier ouvert struct file Pointeur fichier utilisateur droits inode struct inode droits taille bloc pointeurs uid gid Fichier ouverte descripteur Types des données descripteur descripteur open() struct file Pointeur fichier utilisateur droits inode 43
  • 44.
    Tronquer • supprimer lecontenu du fichier • le curseur de fichier est mis à size • un fichier peut être ouvert et tronqué // size is 0 open("/path/to/file", O_RDWR | O_TRUNC); • un fichier peut être ouvert et tronqué truncate("/path/to/file", size); • un fichier peut être tronqué après ouverture ftruncate(fd, size); SetEndOfFile(hFile); // Windows 44
  • 45.
    Fermer • l'entrée dela table de descripteur est supprimée • ISO C fclose (f); • POSIX close(fd); • Windows CloseHandle(fHandle); 45
  • 46.
    Exemple - Lireun fichier int main () { int f = open ("data.bin", O_RDONLY); if (f >= 0) { // ... for (part = 0; part < PARTS; part++) { bytes = read (f, temp_buffer, BUFFER_SIZE); if (bytes > 0)c{ // ... } } close (f); } else { perror ("open"); abort (); } return 0; } 46
  • 47.
    Accès simultané auun fichier • Lectures multiples – chacun lit le fichier indépendamment (chacun a un curseur différent) • Une lecture, Une écriture – ce n'est pas exactement ce que le premier va lire • Plusieurs écritures – l'ordre dans lequel les données seront écrites est inconnu 47
  • 48.
    Accès simultané auun descripteur • le noyau maintient une structure de données unique pour les deux descripteurs – un seul curseur de fichier • les opérations sont sérialisées en utilisant cette structure – les résultats des opérations sont cohérents – juste parce que nous ne connaissons pas l'ordre dans lequel ils ont été exécutés 48
  • 49.
    Supprimer • supprimer lefichier du système de fichiers • shell rm file.txt • ISO/C remove("file.txt"); • POSIX unlink("file.txt"); • Windows DeleteFile("file.txt"); 49
  • 50.
    Redirection • shell echo “message”> file_out.txt grep “word” < file_in.txt • POSIX fd = open ("file_out"); close (1); dup2 (fd, 1); close (fd); 50
  • 51.
  • 52.
  • 53.
  • 54.
    UNIX • 3 typesdes entités – Utilisateur (user) – Group (Group) – Autres (Others) • 3 types des premisions – Lire (Read) – Ecrire (Write) – Executer (Execute) 54
  • 55.
    UNIX • Permisions =chaine de 9 caracteres – 3 pour l’utilisateur – 3 pour le group – 3 pore les autres 55
  • 56.
  • 57.
    UNIX • Sur bits: –r w - r- - r - - corresponde a 110100100 – r w x r- x - - - corresponde a 111101000 – r w - rw- - - - corresponde a 110110000 • Octal: – r w - r- - r - - corresponde a 644 – r w x r- x - - - corresponde a 750 – r w - rw- - - - corresponde a 660 57
  • 58.
    Gestion de permissions •UNIX: – Entités: User, Group, Others – Types: Read, Write, Execute // mode in octal chmod("/path/to/file", 0644); • Windows: Listes d’acces – ACL: access control lists – Types: lecture, écriture, listage, croisement, création de sous-fichiers, etc. – Permissions seulement sur NTFS, pas sur FAT32 SetNamedSecurityInfo(...); 58
  • 59.
  • 60.
    Directeurs • fichiers spéciaux •contient une liste de fichiers et de répertoires • entrées spéciales – . -> directeur courent – .. -> directeur parent 60
  • 61.
    Chemin du fichier •chaînage des entrées dans le système de fichiers • tout système de fichiers a un répertoire racine (/ sous Unix) • séparateur de chemin – Windows: – UNIX: / • chemin absolu • chemin relatif 61
  • 62.
  • 63.
    Operations avec lesdirecteurs • création (mkdir) • création d’un entrée (touch, mkdir, ln, mknod) • suppression d’un entrée (rm, rmdir, unlink) • suppression (rmdir) • lister le contenu (ls) • entrée dans un directeur (cd) • renommer une entrée (mv) 63
  • 64.
    Operations avec lesdirecteurs UNIX // make directory int mkdir(const char *path, mode_t mode); // change directory int chdir(const char *path); // remove directory int rmdir(const char *path); 64
  • 65.
    Operations avec lesdirecteurs UNIX // open directory DIR * opendir(const char *filename); // read a directiory entry struct dirent * readdir(DIR *dirp); // rewind directory void rewinddir(DIR *dirp); // close directory int closedir(DIR *dirp); 65
  • 66.
    Exemple – listezun directeur int main () { DIR *dir; struct dirent *entry; dir = opendir("/"); if (dir != NULL) { do { entry = readdir(dir); if (entry != NULL) printf ("%sn", entry->d_name); } while (entry != NULL); closedir (dir); } else { perror("opendir"); abort (); } return 0; } 66
  • 67.
    Operations avec lesdirecteurs Windows • HANDLE • CreateDirectory • RemoveDirectory • SetCurrentDirectory • FindFirstFile • FindNextFile • FindClose 67
  • 68.
  • 69.
    Fichiers Speciaux • liens(links) (ln, link) • dispositifs de type caractère (mknod, mknod) • dispositifs de type bloc (mknod, mknod) • FIFO (mknod/mkfifo, mknod/mkfifo) • sockets UNIX (N/A, socket/mknod) 69
  • 70.
    Liens • Pointeur versun fichier existent • Types – symbolique (soft link, similaire avec le shortcut) – hard (le même fichier, nom diffèrent) $ ls -l /usr/bin/cc lrwxrwxrwx 1 root root 20 Oct 6 2005 /usr/bin/cc -> /etc/alternatives/cc lrwxrwxrwx 1 root root 12 Apr 22 2007 /etc/alternatives/cc -> /usr/bin/gcc 70
  • 71.
    Fichier dispositif • Typecaractère – Access séquentiel – Dispositifs serial • Keyboard, mouse etc $ ls -l /dev/ttyS0 crw-rw---- 1 root dialout 4, 64 Feb 26 2005 /dev/ttyS0 • Type bloc – Access aléatoire – Lire en bloc • Disc, usb, … $ ls -l /dev/sda brw-rw---- 1 root disk 8, 0 Feb 26 2005 /dev/sda 71
  • 72.
    Socket UNIX etFIFO • Les sockets Unix – communication inter-processus - communication locale – Ils ont une entrée associée au système de fichiers # ls -l /var/run/cups/cups.sock srwxrwxrwx 1 root root 0 2008-03-03 11:10 /var/run/cups/cups.sock • FIFO – pipe avec nom – un processus écrit, un autre processus lit $ ls -l mypipe prw-r--r-- 1 razvan razvan 0 2008-03-03 21:14 mypipe 72
  • 73.
    E/S Standard vsE/S bas niveau • E/S Standard– fopen, fread, fwrite, fclose – E/S Tamponne – problème de double tampon – accès de haut niveau pour travailler avec des chaînes • E/S bas niveau– open/CreateFile, read/ReadFile – encapsulation d'appels système – la plus grande flexibilité – ne sont pas portable 73
  • 74.
    Systems de fichiersvirtuelles • les systèmes de fichiers virtuels n'ont pas de support physique – procfs monté en /proc – devfs monté en/dev – ou sont les données? • entrées de fichier spécialisées (fichiers sans support physique - généralement des périphériques char) – /dev/null – /dev/zero – /dev/urandom 74
  • 75.
    Mot clés • Partition •Montage • System de fichiers • Fichier • Directeur • Lien • Dispositif caractère • Dispositif bloc • Socket UNIX • FIFO • Permissions • Chemin de fichier • Absolue • Relatif • MBR • GPT • E/S Standard • E/S Bas Niveau 75
  • 76.

Notes de l'éditeur

  • #18 * sisteme de fisiere tranzactionale vs. sisteme non-tranzactionale (trade-off consistenta vs. viteza) * sisteme de fisiere distribuite * sisteme de fisiere de retea (NFS) * ce tip de SF se foloseste pt. swap si de ce?
  • #38 * ce alte tehnici in afara de buffering se mai folosesc pentru optimizarea vitezei? (ex: read-ahead)
  • #41 [8] - inode - http://elf.cs.pub.ro/so2/wiki/laboratoare/lab09
  • #43 [8] - inode - http://elf.cs.pub.ro/so2/wiki/laboratoare/lab09
  • #44 [8] - inode - http://elf.cs.pub.ro/so2/wiki/laboratoare/lab09
  • #74 [9] - Wrapper functions - http://en.wikipedia.org/wiki/Wrapper_function