pour-poly.ppt [Mode de compatibilité] -...

73
1 Programmation système & 3 ème année Licence MIAGE Réseaux Philippe Lahire Université de Nice Sophia-Antipolis Septembre 2013 Ce cours fait de nombreux emprunts à celui de R. Rousseau Ce cours fait de nombreux emprunts à celui de R. Rousseau Version septembre 2013 N°4 Organisation des enseignements cours Semaine/date TP 1 Introduction + Entrées-Sorties 37/12.09 Prévision Prévision 2 Introduction + Entrées-Sorties 37/12.09 3 Systèmes de Fichiers 38/19.09 TP N°1 : E/S (1h30) 4 Systèmes de Fichiers (prog) 39/26.09 TP N°1 : E/S (1h30) 5 Systèmes de Fichiers (prog) 40/03.10 TP N°2 : Syst. Fich. (1h30) 6 Processus 41/10.10 TP N°2 : Syst. Fich. (1h30) 7 Processus (prog) 42/17.10 TP N°2 : Syst. Fich. (1h30) 8 Tubes 45/07.11 TP N°3 : Processus Fork (1h30) 9 Tubes 47/21.11 TP N°4 : Processus Fork (1h30) 10 Signaux 48/28.11 TP N°4 : Processus exec (1h30) 11 Signaux 49/05.12 TP N°5 : Tubes (1h30) 12 Révision/Rattrapage 51/19.12 TP N°6 : Signaux(1h30) 2/09.01 TP N°6 : Signaux(1h30) 2/09.01 TP Révision/ Rattrapage Contrôle Terminal ??

Transcript of pour-poly.ppt [Mode de compatibilité] -...

Page 1: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

11

Programmation système &

3ème année Licence MIAGE

Réseaux

Philippe LahireUniversité de Nice Sophia-Antipolis

Septembre 2013

Ce cours fait de nombreux emprunts à celui de R. RousseauCe cours fait de nombreux emprunts à celui de R. Rousseau

Version septembre 2013 N°4

Organisation des enseignements

cours Semaine/date TP

1 Introduction + Entrées-Sorties 37/12.09

PrévisionPrévision

2 Introduction + Entrées-Sorties 37/12.09

3 Systèmes de Fichiers 38/19.09 TP N°1 : E/S (1h30)

4 Systèmes de Fichiers (prog) 39/26.09 TP N°1 : E/S (1h30)

5 Systèmes de Fichiers (prog) 40/03.10 TP N°2 : Syst. Fich. (1h30)

6 Processus 41/10.10 TP N°2 : Syst. Fich. (1h30)

7 Processus (prog) 42/17.10 TP N°2 : Syst. Fich. (1h30)

8 Tubes 45/07.11 TP N°3 : Processus Fork (1h30)

9 Tubes 47/21.11 TP N°4 : Processus Fork (1h30)

10 Signaux 48/28.11 TP N°4 : Processus exec (1h30)

11 Signaux 49/05.12 TP N°5 : Tubes (1h30)

12 Révision/Rattrapage 51/19.12 TP N°6 : Signaux(1h30)

2/09.01 TP N°6 : Signaux(1h30)

2/09.01 TP Révision/ Rattrapage

Contrôle Terminal ??

Page 2: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

22

Version septembre 2013 N°6

Tentative de bibliographie

1. S. Harbison & G. Steele Jr. C, a reference manual (1st ed. 1984) Prentice Hall, 2nd edition, 1987, 404 p.

2. B. Kernighan & D. Ritchie “The C Programming Language (1st ed. 1978)”,CC g g g g g ( ) ,

Prentice Hall, 2nd ed., 1988. Traduction française Masson, 1990.3. A. Tannenbaum “ Systèmes d’exploitation : systèmes centralisés,

systèmes distribués” MacGraw Hill, 1990. Traduction française (2e ed) Dunod, 1999

4. A. Siberschatz & P. Galvin “ Operating Systems Concepts ”, 5e ed, Addison-Wesley, 1998.

5. J. Beauquier & B. Berard “Systèmes d’exploitation : concepts et algorithmes ” MacGraw Hill, 1990.

6. W. Stevens “Advanced Programming in the Unix environment” Addison Wesley 1992 744 p

Conc

epts

Conc

epts

ixix Wesley, 1992, 744 p.7. M.J. Bach “Conception du système Unix”, Prentice Hall, 1986. Traduction

française Masson, 1991.8. J.M. Rifflet “La programmation sous Unix”, Ediscience intern., 3ème éd.,

1993, 630 p.9. U. Vahalia “Unix Internals : the new Frontiers” Prentice Hall, 199610. A.D. Solomon “Le guide officiel sur l’architecture et le noyau Windows

NT” 2nd ed., Microsoft Press, 1998.11. Site microsoft

Uni

Uni

Win

dow

sW

indo

ws

Version septembre 2013 N°10

Historique des systèmes UNIX (wikipedia)

Page 3: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

33

Version septembre 2013 N°11

Historique des systèmes Windows (wikipedia)

Version septembre 2013 N°12

Vers une normalisation: POSIX

PPortable OOpen SSystem IInterface eXXchange

Norme IEEE & Description:1003.0: Guide et présentation 1003.1: Bibliothèque de fonctions1003.2: Shell et utilitaires1003.3: Méthode de tests et conformité1003.4: Extension temps réel1003.5: Form. appels systèmes en ADA1003 6: Sécurité1003.6: Sécurité1003.7: Administration système1003.8: Accès commun aux fichiers1003.9: Interface sous Fortran 771003.10: Interface supercalculateurs

Normes: ISO 9945-1 ( P1003.1)Posix 1, 1b, 1c: 1998, 1993, 1995

Page 4: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

44

Version septembre 2013 N°13

Unix propriétaires ou Linux…

Linus Torvald (FIN-91 sur i386)Philosophiep

Un noyau et des outils de base Indépendant de tout constructeur

Libre et Basé sur des contributions bénévoles (GPL)Organisation en projets ambitieux (FSF, SourceForge)Un grand nombre d'utilisateurs motivésUn “excellent produit”: stable et code original “libre de droits”

Porté un grand nombre d'architectures : SPARC, INTEL, ALPHA, MAC, …

Quelques projets: ApacheGnomeGNU

Version septembre 2013 N°15

Survol de l'architecture (1)

UTILISATEURInterface Utilisateur

SYSTEME D’EXPLOITATION UNIX

BIBLIOTHEQUE STANDARDfopen, fclose, fread, fwrite,…

PROGRAMMES UTILITAIRES STANDARDShell, éditeur, compilateur, …

Interface Bibliothèques

Interface Appels Systèmes

Interface Utilisateur

MATERIEL: UC, mémoire, disques, terminaux, etc…

SYSTEME D’EXPLOITATION UNIXGestion des processus, de la mémoire, des E/S,…

Autre système en couche : logiciels réseaux suivant norme - OSI

Page 5: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

55

Version septembre 2013 N°18

Noyau du système

BibliothèquesProgramme Utilisateur

Interface des appels systèmes

Sous-systèmes de contrôle de fichiers

Sous-systèmes de contrôle des processus

Communication interprocessus

Ordonnanceur

Gestion mémoire

Cache Buffer

PARTIE MATERIELLE

Cache Buffer

BlocCaractèreContrôleurs de périphériques

Contrôle de la partie matérielle

Version septembre 2013 N°20

Principales caractéristiques

Langage de haut niveauLe noyau : plus d'1 million de lignes de Cy p g

Expressivité et simplicité de l'interfaceConstruction de programmes: des primitives élémentairesUn système de fichiers « hiérarchique »Un format cohérent de fichier (octet)Accès aux périphériquesccès au pé p é quesMulti-utilisateurs et multitâches …Indépendance avec l'architecture matérielle

54 % du codeMémoire virtuelle (versions actuelles)

Page 6: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

66

Version septembre 2013 N°22

Notion d’interprète de commandes

Shell : Interface textuelle vers le système

FonctionnalitésFonctionnalités

Message d'invitation (prompt)

Attend la saisie d'une commande

Commandes internes

Commandes externes (charg. + exec. programmes)

Historique des commandes précédentesHistorique des commandes précédentes

Redirections et tubes

Structures de contrôles (boucles, tests, fonctions, ...)

Mécanisme d'alias, variables d'environnement

Gestion de processus

Version septembre 2013 N°23

Différents shells unix possibles

Bourne shellBourne shell (historiquement, le 1er)

Toujours utilisé par les scripts internes du systèmeToujours utilisé par les scripts internes du système

CC--shellshell (csh, tcsh)

syntaxe différente

Évolutions du Bourne shellÉvolutions du Bourne shell

ksh (Korn shell)

bash (Bourne Again shell): le shell du projet GNU

Où indiquer le shell par défaut ?

bash (Bourne Again shell): le shell du projet GNU

zsh: Évolution prétendument "ultime" du bourne shell

Améliorations : historique, complétion, ...

Possibilité de (demander à) changer le shell par défaut

lancé automatiquement au début de session

Page 7: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

77

Version septembre 2013 N°24

Quelques éléments d’administration

/etc/passwd/etc/passwdnom_du_compte : mot_de_passe : numero_utilisateur : numero_de_groupe : nom_du_compte : mot_de_passe : numero_utilisateur : numero_de_groupe :

commentaire : répertoire : programme de demarragecommentaire : répertoire : programme de demarrage

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/bash

daemon:x:2:2:daemon:/sbin:/bin/bash

news:x:9:13:News system:/etc/news:/bin/bash

user1:x:500:100:Mr User 1......:/home/user1:/bin/bash

commentaire : répertoire : programme_de_demarragecommentaire : répertoire : programme_de_demarrage

/etc/group/etc/groupnom_de_groupe : champ_special : numero_de_groupe : membre1, membre2nom_de_groupe : champ_special : numero_de_groupe : membre1, membre2

root:x:0:rootbin:x:1:root,bin,daemondaemon:x:2:users:x:100:

Version septembre 2013 N°29

Caractéres spéciaux du shell

Certains caractères ont une signification spéciale pour le shell

* : 0 ou plusieurs caractères quelconques

Pas en CPas en C

p q q

t*o : nom de fichier qui débute par t et finit par o

? : 1 (et un seul) caractère quelconque

t?t? : désigne toto ou titi ou ttta, ...

\ : enlève la signification spéciale du caractère qui suit

t\*to : désigne t*to

Certaines constructions ont une signification spéciale

[a-z] : un caractère entre a et z (a ou b ou c ... ou z)

[aefgij] : un caractère (et un seul) parmi a,e,f,g,i,j

t[oau]t[oau] : toto, ou totu, ou tata, ou tato, ...

{mot1,mot2} : soit mot1, soit mot2

Page 8: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

88

Version septembre 2013 N°35

Notions de base: Le manuel

Principales sections (environ 20 Mo)taille dépendante des paquetages - nyx : (≈20 Mo de “.gz”)man1: Commandes utilisateurs à partir shell (≈1800)man2: Primitives du noyau (≈250)man3: Routines C (≈1400)man4: Fichiers spéciaux: les pilotes des périphériques (disque dur, clavier/écran, graveur, lecteur de dvd, zip, mémoires usb...) (≈90)man5: Formats de fichiers et protocoles (≈200)man7: Format des systèmes de fichiers, jeux de caractères, macros, nroff... (≈80)man8: Commandes d’administration – à partir shell (≈450)man9: routines du noyau non standards (≈90)

Attention : Un ordre d'évaluation Base whatis: recherche de commandesapropos: recherche de mots clés

Version septembre 2013 N°36

Anatomie d’une page de manuel (1)

Section

Brè ve de scr ip t ion

Syn taxes possibles

Descr ipt ion détaillée de la comman de

Pr om p t d u « PAGE R »

De scr ip t ion d é t a illé e d e sop t ion s (or d r e a lp h a b .)

'q ' : q u it' b ' : r e tou r 1 p .< s p c > : d é fil 1 p .< e n t e r > : d é fil 1 l./xy : r e c h e r c h e r « xy »

Page 9: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

99

Version septembre 2013 N°37

Anatomie d’une page de manuel (2)

A i éAutr es pages in téressan tessu r un su jet voisin

N u l n ' e s t p a r fa it . . .

Par fois am bigu ës ou con fu sesVer sion angla ise (défau t ) :unset LANG LC_ALLpu is m an à n ouveau...

Version septembre 2013 N°39

Principe général d'utilisation/* Fichier Z2.h */

Z1.oR1 (int i)Zlib.a

main (){

}........R1 (23)

/* Fichier Y.c */

#include "Z2.h"

Z2.o

Z3.o

........R1 (int i) {......}.......

PREPROCESSEUR

/* MAN !!!!! */

man r1

}

a.out

Y.o

EDITION DE LIEN

COMPILATION

Page 10: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

1010

Version septembre 2013 N°40

Exception vs compte-renduPresque toutes fonctions/appels systèmes

Traitement standard des erreurs (1)

entierpointeur…Presque toutes fonctions/appels systèmes

Utilisation de errnoerrno :Syntaxe : extern int errno ;n◦ dernière erreur détectée par un appel système

• normale : positive ou nulle, non void ,• anormale : négative ou void

n dernière erreur détectée par un appel systèmepas remise à zéro à chaque appel. intro(2)intro(2) : liste des différents codes

Méthodologie : test compte-rendu + errnoerrno

Version septembre 2013 N°41

Fonctions associées#include <string.h>

Traitement standard des erreurs (2)

#include string.hchar* strerror (int errnum)retourne message « en clair » associé à errnumerrnum

#include <stdio.h>void perror (const char* message)affiche message message associé à errno errno (stderrstderr)affiche « message » + message associé à errno errno (stderrstderr)

Méthodologie :utiliser en s’appuyant sur « man » (Errors / Erreurs)ou traitement ad hoc (ex: gestion paramètres de « main »)

Page 11: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

1111

Version septembre 2013 N°42

Exemple#include <string.h>

Traitement standard des erreurs (3)

g#include <stdio.h>int main (int argc, char* argv[]) {FILE* fichier;if (argc != xxx) {

fprintf(stderr, « nombre paramètres incorrect »);exit(exit(11))

ici > 1

exit(exit(11))}

if ( (fichier = fopen(argv[1], « rw »)) == NULL) {fprintf(stderr,«Erreur %i:%s \n », errno, strerror(errno));exit(exit(22); }); }

} }

Version septembre 2013 N°43

Traitement des erreurs de W. Stevens (1)

+ returnreturn

format message d’erreur avec nb %% + nb arguments

+ exit(1)exit(1)

+ abortabort

Affiche aussi le message associé à errnoerrno

Macros : en majuscule et sans paramètrePas de message passé en paramètre mais :Affichage: Nom du fichier + numéro de ligne

Page 12: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

1212

Version septembre 2013 N°44

Exemple#include <stevens.h> Pas par défaut dans linux

Traitement des erreurs de W. Stevens (2)

#include <stevens.h>#include <stdio.h>int traiter_fichier (char* f) {FILE* fichier; char tab[30];if ( (fichier = fopen(f, « rw »)) == NULL)

ERR_EXITERR_EXIT;

Pas par défaut dans linux

;…if (fclose(fichier)) != 0)

ERR_RETURNERR_RETURN;} }

Version septembre 2013 N°47

Mise au point / Survol

bash gcc emacs

int open (….) { } int read (….) { }

TablesTables :

FILE* fopen (….) { } Bien sur on se sert aussi du « shell »pour lancer un

programme

Système exploitation

TablesTables :•Fich. Ouvert•Volumes•Blocs•….

Consulte / met à jour« appelle » / exécute

processus

Page 13: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

1313

Version septembre 2013 N°48

Principes généraux (1)

Sous UNIX: tout est fichierPériphérique réseau mémoire

Exemples : • « hardware » (/dev) • Accès au réseau (sockets)

T b i t t (FIFO)Périphérique, réseau, mémoire...Fichier = une suite d’octetsOrganisation : Hiérarchie de

Système de fichiers (partitions…)répertoiresFichiers « normaux » (en anglais Regular)

• Tubes persistants (FIFO) • Tables du noyau (TDF)

Montage : • local • distant

( g g )Liens entre fichiers (symboliques et physiques)Fichiers virtuels (/proc)Fichiers spéciaux (périphériques,FIFO,…)

Version septembre 2013 N°49

Principes généraux (2)

Méthodes d’accèsSéquentiel (read)q ( )Direct - unité: l’octet – (lseek)

Protectionpropriétaire, groupe d’utilisateurs, les autresPas de journal (log) mais possibilité de verrous

Généralité + simplicitéImplantation de SGBD : bonne aptitudeImplantation de SGBD : bonne aptitudefichiers à trou, accès direct, octets…mécanismes additionnels non intégrés: évolution (gestion des versions), typage des

données, système transactionnel (SGBD),

Page 14: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

1414

Version septembre 2013 N°50

Principes généraux (3)

Deux points de vuesUtilisateur (commandes, applications,…)( pp )Programmeur (C et appels systèmes)

Utilisateuréchanges entre un processus et des entités :

disque, machine distante, autre processus, terminal...

Programmeur Fichier au sens large

Echanges avec n’importe quelle entité par des flots d’octets consécutifsAccès direct possible sur des disques locaux ou distants (curseur lecture/écriture)

Version septembre 2013 N°51

Principes généraux (4)

Une suite d’octetsDisqueDisque

Curseur

TamponDescripteur de fichier :

Prédéfini (fich Stand )

MémoireMémoire Programme

F.D.F.D.

• Prédéfini (fich. Stand.)• A associer (open)

Simple numéroSimple numéro

Page 15: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

1515

Version septembre 2013 N°52

Principes généraux (5)

Association (open…)Dans le programmeDans le programme Appel du programmeAppel du programme

( p )nom externe / Desc. Fichier

chemin relatifchemin absolu

Pas de caractère génériquePas de caractère générique

Utilisation (read, write…)chemin relatifchemin absolu

Desc. Fichier: numéro de voieobtenu par associationprédéfini :

0 : voie standard d’entrée1 : voie standard de sortie2 : voie standard d’erreur

On n’utilise jamais On n’utilise jamais directement directement

Le clavier ou l’écranLe clavier ou l’écran

Version septembre 2013 N°53

Un modèle d’E/S adaptable aux langages

Impact:• Performance

Un modèle d’entrée sortie de bas niveauxLangage CJava…

• Utilisation…

Page 16: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

1616

Version septembre 2013 N°54

Modèle langage C vs Modèle UNIX

Appels systèmes (1)open, lseek, write, stat...Mécanismes de base

Streams et routines C (2)isastream, fopen, fseek, fread, fwrite, fgets, feof, ...Notion de stream

Remarques et ConclusionMode noyau et Préemptiony p

struct FILE vs numéro d'entrée dans la TDFlect./écr. d'enregistrement vs d'octet(2) utilise (1)signatures de (2) indépendantes du système, mais l'implémentation dépend elle, du système ...

qu'en concluez vous ?

Version septembre 2013 N°55

Qu'est-ce qu'un processus

DéfinitionsInstruction = indécomposable et indivisibleInstruction indécomposable et indivisibleProcesseur = ...Processus = exécution d'un programme

(instructions + données)Approche intuitive

UNIX = système "temps partagé“Plusieurs processus en même tempsUn seul processus actifAttente des autres (dans/hors mémoire)

Page 17: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

1717

Version septembre 2013 N°56

Tables pour gérer les fichiers P

1 01

Position :État : N° inode :

Tables partagéesTables partagéesPrivéPrivéP2 0

Proc

essu

s 12345

Nombre :…

Position :État :Nombre :

Nb. copies :Inode Infos ……

N° inode :Nb. copies :Inode Infos …

Tables Descripteurs Fichiers

Position :Ét t

Table fichiersEspace utilisateur Table inodes

Proc

essu

s P 0

12345

N° inode :Nb. copies :Inode Infos …

État :Nombre :…

Position :État :Nombre :

Version septembre 2013 N°57

Modèle UNIX - Synthèse

Trois points de vues Le processus

Rôles :Gestion des voies d’échangep

L’usageLe « fichier »

Deux abstractions (par point de vue)Processus : Usage et nature du fichierUsage : raison de l’utilisation par le processus

et la nature du fichier

gGestion du curseur…Gestion des protections…

« Fichier »: raison de l’utilisation et usage du fichier

Permettre le partageD’un même usage par un/plusieurs processusD’un même fichier par un/plusieurs processusD’une même fichier par un/plusieurs usages

Page 18: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

1818

Version septembre 2013 N°58

Ouverture/Création d’un fichier: openopen

Descripteur de fichier

Lors de la création: f(perm,umask)

Mode d’ouverture

Nom fichier

fichier

Mise à jour des tables internes (processus + noyau)Oflags/perm : 9/15 macros dans les fichiers .h

Un petit ensemble de combinaisons validesLes incohérences ne sont pas détectés

Version septembre 2013 N°59

Ouverture/Création: openopen (oflags)

O_CREAT:O_CREAT: création, si le fichier n’existe pasO EXCL:O EXCL: combiné avec O CREATO CREAT, création si le fichier n’existe

Valeurs possibles

__ __ ,pas, erreur sinonO_RDONLY:O_RDONLY: ouverture en lecture seule. O_WRONLY:O_WRONLY: ouverture en écriture seule (création ou ajout) O_RDWR:O_RDWR: ouverture en lecture et écriture (mise à jour n’importe où) O TRUNC:O TRUNC: libération du contenu du fichier, s’il existe + curseur __ ,placé en début de fichierO_APPEND:O_APPEND: contenu du fichier non touché + curseur placé en EOFO_SYNC:O_SYNC: attend la fin d’écriture sur le média après chaque write (pas de cache)O_NONBLOCK:O_NONBLOCK: E/S non bloquantes.

Page 19: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

1919

Version septembre 2013 N°60

Ouverture/Création: openopen (oflags)

Règles et choix incohérents

O_CREATO_CREAT si la création est permise ⇒ ¬ O_RDONLYO_RDONLY

O_EXCLO_EXCL si le fichier ne doit pas déjà exister ⇒ O_WRONLYO_WRONLY +

Choisir l’un des 3 types exclusifs d’action : O_RDONLYO_RDONLY, O_WRONLYO_WRONLY, O_RDWRO_RDWR

+

O_CREATO_CREAT

O_TRUNCO_TRUNC ou O_APPENDO_APPEND pour placer le curseur au début (resp. à la

fin) du fichier (doit donc déjà exister ⇒ ¬ O_EXCLO_EXCL)

O_SYNCO_SYNC si les écritures doivent être immédiates ⇒ ¬ O_RDONLYO_RDONLY.

Version septembre 2013 N°61

Ouverture/Création: openopen (oflags)

open (nomFichier, O_RDONLY)open (nomFichier, O_RDONLY)

Curseur au début du pour lire

Exemples

open (nomFichier, O_WRONLY | O_CREATopen (nomFichier, O_WRONLY | O_CREAT | O_TRUNCO_TRUNC, …)

[Création + effacement] si nécessaire + curseur au début pour écrire

open (nomFichier, O_WRONLY | O_APPENDopen (nomFichier, O_WRONLY | O_APPEND, …)

Curseur en fin pour écrire

open (nomFichier, O_WRONLY | O_CREATopen (nomFichier, O_WRONLY | O_CREAT | O_APPENDO_APPEND, …)Création si nécessaire + curseur en fin pour écrire

open (nomFichier, O_WRONLY | O_CREATopen (nomFichier, O_WRONLY | O_CREAT | O_EXCLO_EXCL, …)

Création si n’existe pas (erreur sinon) + curseur au début pour écrire

open (nomFichier, O_RDWRopen (nomFichier, O_RDWR)

Doit exister + curseur au début pour lire ou écrire n’importe où

Page 20: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

2020

Version septembre 2013 N°62

Ouverture/Création: openopen (perm)Règle

Les permissions associées à un fichier lors de sa créationsont fixées par la conjonction de deux points de vue :

Point de vue :du programmeur, qui propose des permissions logiques

de l’utilisateur, propriétaire des fichiers créés, qui

sont fixées par la conjonction de deux points de vue :

Ex: Compilateur: exécution / Editeur: lecture et écriture…

peut interdire certaines permissions

umaskumask : pas de lecture/écriture pour les autres

Permission appliquée = perm & ~umaskumask

Masque interdictions

Version septembre 2013 N°63

Ouverture/Création: openopen (perm)Valeurs possibles

Pour donner des droits

Le propriétaire

Le Groupe propriétairee G oupe p op éta e

Les autres

Page 21: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

2121

Version septembre 2013 N°64

open (« f », O_WRONLYO_WRONLY | O_CREAT, O_CREAT, ))

Ouverture/Création: openopen (perm)Exemple

1 1 01 0 0 0 0 0))

0 0 00 1 0 0 1 0022Group = ¬¬write

umaskumask

1 1 01 0 0 0 0 00 0 10 1 1 0 0 0

|

0 0 00 0 0 1 1 1 |

1 1 11 1 1 1 1 1

1 1 11 0 1 1 0 1&

~

1 1 11 0 1 1 0 1755

pOther = ¬¬write =

Version septembre 2013 N°65

Création d'un fichier

Equivalencesopenopen (path, O WRONLY | O CREAT)openopen (path, O_WRONLY | O_CREAT)creatcreat (path, mode)mknodmknod : Fichier spéciaux (FIFO, ...)

Deux Phases: création et ouverture Voir Communication inter-processus

Paramètres oflag = 010000 | 001000 (O_RDONLY,...)

Commande(s) associée(s): emacs, gcc, cp, ...Structure(s) interne(s): tables, super-bloc

Page 22: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

2222

Version septembre 2013 N°66

Création d'un fichier: mécanisme interneEtapes

Localisation inode parent (I.PI.P),Localisation inode parent (I.PI.P),Recherche nom fichier...

Si le nom n’existe pas alors:Verrouillage I.P.I.P., liste des inodes libresAllocation inode: inode-mémoire = get (inode-disque) Modification I.P.I.P.: Informations fichier

Sinon (le nom existe) :Désallocation blocs: contenu fichierNon-Modification I.P.I.P.

Importance des verrous et du mode noyauImportance des verrous et du mode noyau

Version septembre 2013 N°67

Processus 1#include <sys/types.h>

Ouverture/Création d'un fichier (1)

y yp#include <sys/stat.h>#include <fcntl.h>int main () { int rfd, wfd, rwfd;

if ((rfd = openopen("/etc/bashrc",O_RDONLY)) < 0)erreur;

Attention !

erreur;if ((rwfd = openopen("/etc/bashrc", O_RDWR)) < 0)

erreur; if ((wfd = openopen("/.bashrc",O_WRONLY | O_CREAT)) < 0)

erreur; }

Action: ouverture: rfd, rwfd - création/ouverture: wfd

Page 23: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

2323

Version septembre 2013 N°68

Ouverture/Création d'un fichier (2)

Processus 2#include <sys/fcntl.h>#include <sys/stat h>#include <sys/stat.h> #include <sys/types.h> int main () {

int rfd, wfd;if ((wfd = openopen("/etc/bashrc",O_WRONLY)) < 0)

erreur;if ((rfd = openopen("/.bash_profile",O_RDONLY)) < 0)

erreur;}Deux processus indépendantsDes tables partagées et privées

Action: ouverture: rfd - ouverture: wfd

Version septembre 2013 N°69

Ouverture d'un fichier: Vision interne

P1 01

Position :État :Nombre :

O_RDONLYO_RDONLY

11/etc/bashrc/etc/bashrc

N° inode :Nb. copies :I d I f

112233

Attention : partage possible dup/fork

P2 0

Proc

essu

s 12345

Position :État :Nombre :

O_RDWRO_RDWR

11…

Position :État :Nombre :

O_WRONLYO_WRONLY

11

Inode Infos …

N° inode :Nb. copies :Inode Infos …

11/.bashrc/.bashrc

Table fichiersEspace utilisateur Table inodes

Proc

essu

s P2 0

12345

11

Position :État :Nombre : 11

O_RDONLYO_RDONLY

Position :État :Nombre :

O_WRONLYO_WRONLY

11

N° inode :Nb. copies :Inode Infos …

/.bash_profile/.bash_profile

11

Page 24: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

2424

Version septembre 2013 N°70

Fermeture d’un fichier: closeclose

Descripteur de fichier

Mise à jour des tables internes (processus + noyau)

fichier

fd est une entrée dans la TDF :openopen, forkfork, voie standard…

Fermeture par le noyau des fichiers à la terminaison d’un processus (exitexit(?))

Version septembre 2013 N°71

Fermeture d'un fichier

Processus 2#include <unistd.h> int main ()int main () {

int rfd, wfd;/* Ouverture et utilisation */ ... closeclose (rfd); /* exit: fermeture implicite */ closeclose (wfd); /* exit: fermeture implicite */ }

T bl fi hi /i dTables fichiers/inodesDécrémentations compteursDésallocations élémentsLibération complète si le compteur atteint 0

Commande(s) associée(s): exit, éditeur…Structure(s) interne(s): tables, buffers

Page 25: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

2525

Version septembre 2013 N°72

Fermeture d'un fichier: Vision interne

P1 01

Position :État :Nombre :

O_RDONLYO_RDONLY

11/etc/bashrc/etc/bashrc

N° inode :Nb. copies :I d I f

112233

P2 0

Proc

essu

s 12345

Position :État :Nombre :

O_RDWRO_RDWR

11…

Position :État :Nombre :

O_WRONLYO_WRONLY

11

Inode Infos …

N° inode :Nb. copies :Inode Infos …

11/.bashrc/.bashrc

Table fichiersEspace utilisateur Table inodes

Proc

essu

s P2 0

12345

11

Position :État :Nombre : 11

O_RDONLYO_RDONLYN° inode :Nb. copies :Inode Infos …

/.bash_profile/.bash_profile

11

…Position :État :Nombre :

O_WRONLYO_WRONLY

11nullnull

Version septembre 2013 N°73

Lecture d’un fichier: readread

Descripteur fichier

Nombre octets lus

Mise à jour des tables internes (noyau)fd é d l TDF l

Lieu de stockage données lues

Nombre octets à lire

fd est une entrée dans la TDF ouverte en lecture :openopen, forkfork, voie standard…

Allocation de bufferbuffer impérativeNb octets lus ≤ Nb octets à lire (EOF, périphérique,…)Début = position du curseur Après = position + nb oct.lus

Page 26: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

2626

Version septembre 2013 N°74

Lecture d'un fichier

Processus 1#include <sys/types.h> #include <unistd h>#include <unistd.h> int main () {

int rfd, nb; char tabp[30]; char tabg[1024];/* Ouverture rfd */ ... nb = readread (rfd, tabp, 30); nb = readread (rfd, tabg, 1024);nb = readread (rfd tabp 20);nb = readread (rfd, tabp, 20);

}Lecture à travers une même entrée

Commande(s) associée(s): cat, more, emacs, ...Structure(s) interne(s): tables, blocs, buffers

Version septembre 2013 N°75

Lecture d'un fichier: Commentaires

Verrouillage/partageDurée d'un readreadDurée d un readreadVerrouillage explicite possible

Schéma lecteur/écrivain possiblePlusieurs descripteurs possibles

Lecture réelleAttention: Lecture bloc par blocBloc dans le "buffer cache" ou sur le disque?Lecture anticipée

Page 27: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

2727

Version septembre 2013 N°76

Lecture d'un fichier

Processus 1#include <sys/types.h> #include <unistd h> #include <unistd.h> int main () {

int rfd1, rfd2, nb;char tab1[30], tab2[30];/* Ouverture rfd1, rfd2 */ ... nb = readread (rfd1, tab1, 30); nb readread (rfd2 tab2 30);nb = readread (rfd2, tab2, 30);

}Lecture à travers plusieurs entrées – attention

Ici: 2 descripteurs indépendanceforkfork: "2" descripteurs dépendance

Version septembre 2013 N°77

Lecture d’un fichier (2)

Page 28: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

2828

Version septembre 2013 N°78

Ecriture dans un fichier: writewrite

Descripteur fichier

Nombre octets écrits

Mise à jour des tables internes (noyau)fd est une entrée dans la TDF ouverte en écriture :

Données à écrire

Nombre octets à écrire

fd est une entrée dans la TDF ouverte en écriture :openopen, forkfork, voie standard…

Nb octets écrits ≤ Nb octets à écrire EOF, périphérique (imprimante, réseau…), signal, média/quota plein

Début = position du curseur Après = position + nb octets écrits

Version septembre 2013 N°79

Ecriture dans un fichier

Processus 1#include <sys/types.h> #include <unistd h> #include <unistd.h> int main () {

int wfd, nb;char tab[30];/* Ouverture wfd */ /* Remplissage de tab */ ... nb = writewrite (wfd tab 30); nb = writewrite (wfd, tab, 30); /* Remplissage à partir de tab */ ... nb = writewrite (wfd, tab, 30);

}Commande(s) associée(s): cat, emacs, …Structure(s) interne(s): Tables, blocs, buffer

Page 29: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

2929

Version septembre 2013 N°80

Ecriture dans un fichier (2)

Version septembre 2013 N°81

Ecriture d'un fichier: commentaires

Verrouillage/partageDurée d'un writewriteDurée d un writewriteVerrouillage explicite possible

Schéma lecteur/écrivain possiblePlusieurs descripteurs possibles

Ecriture réelleAllocation de blocs par nécessité (indirect, données)Ecriture partielle Lecture du blocEcriture différée des blocs: "buffer cache"

Page 30: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

3030

Version septembre 2013 N°82

Positionnement dans un fichier: lseeklseek

Descripteur fichier

position

Mise à jour des tables internes (noyau)fd est une entrée dans la TDF ouverte en écriture :

Référentiel

déplacementEntier 64 bits

fd est une entrée dans la TDF ouverte en écriture :openopen, forkfork, voie standard…

Retour = position par rapport au début du fichierRéférentiel = SEEK_SET, SEEK_CUR, SEEK_END déplacement positif/négatif avant (resp. après) le début (resp. fin)

Version septembre 2013 N°83

Positionnement : commentaires

Référentiel :SEEK SET : par rapport au débutSEEK_SET : par rapport au débutSEEK_CUR: par rapport au curseurSEEK_END :par rapport à la fin

Comment connaitre la position courante?

O i i è l fiOn peut se positionner après la finToute écriture crée des trousLa lecture de trous rend des octets nuls

Une position négative est souvent une erreur

Page 31: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

3131

Version septembre 2013 N°84

Positionnement dans un fichier

#include <sys/types.h>#include <unistd.h>int main () { int main () {

int fd, pos;char tab[30];/* Ouverture fd */ ... pos = lseeklseek (fd, 1000, SEEK_CUR); // voir aussi SEEK_SETpos = lseeklseek (fd, -50, SEEK_END);

}readread/writewrite ⇒ accès séquentiellseeklseek ⇒ accès directPas d'accès disque

Commande(s) associée(s): éditeur…Structure(s) interne(s): tables des fichiers

Version septembre 2013 N°85

Duplication d’entrée: dup2dup2

Descripteur fichier à dupliquer

Mise à jour des tables internes (processus et noyau)fd1 é d l TDF

à dupliquer

Descripteur fichier où copier

fd1 est une entrée dans la TDFfd2 est une entrée libre (ou qui sera fermée)le contenu de fd1 est recopié dans fd2 + MAJ de compteurs de référencesdupdup réalise la copie dans la première entrée libre

Page 32: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

3232

Version septembre 2013 N°86

Duplication d’entrée: dupdup

Descripteur fichier à dupliquerà dupliquer

Démarche1. Sauvegarde de fd2 (dup)2. Recopie de fd1 dans fd23. Restauration (dup2 + close)

Idem à dup2dup2La copie se fait dans la 1ère entrée libre flle contenu de fd1 est recopié dans fl + MAJ de compteurs de référencesIl est nécessaire de connaître l’état de la TDFIl est nécessaire de connaître l’état de la TDF

( p )

Version septembre 2013 N°87

dup: mécanismes de base (1)

P1 01

Position :État :Nombre :

O_RDONLYO_RDONLY

11/etc/bashrc/etc/bashrc

N° inode :Nb. copies :I d I f

22

Proc

essu

s 12345

Position :État :Nombre :

O_RDWRO_RDWR

11

Inode Infos …

22

Table fichiersEspace utilisateur Table inodes

Page 33: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

3333

Version septembre 2013 N°88

dup: mécanismes de base (2)

Fonctionnement généralD li i d d i d fi hiDuplication du descripteur de fichierTable des fichiers (ouverture): incrémentation des référencesTable des fichiers (fermeture): décrémentation des référencesTable des inodes: pas de modificationD è ê b ffDeux accès au même buffer

Utilisationdupdup et dup2dup2 (routine)Implémentation du shell: redirections E/S

Liens avec les structures internes: voir open

Version septembre 2013 N°89

dup: exemple simple

#include <sys/types.h>#include <unistd.h>#i l d f tl h#include <fcntl.h>int main () {

int fd, nfd;char tab1[512], tab2[512];fd = openopen ("/etc/bashrc", O_RDONLY); /* ex: fd = 3 */ ... fd dd (fd) /* fd 6 */nfd = dupdup (fd); /* ex: nfd = 6 */

readread (fd, tab1, 512);readread (nfd, tab2, 512);closeclose (fd);readread (nfd, tab2, 512);...

}

Page 34: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

3434

Version septembre 2013 N°90

dup2: exemple simple

#include <sys/types.h>#include <unistd.h>#include <fcntl h>#include <fcntl.h>int main () {

int fd, nfd;char tab1[512], tab2[512];fd = openopen ("/etc/bashrc", O_RDONLY);/* ex: fd = 3 */

nfd = dup2dup2 (fd, 4); /* nfd = 4 *//* si non libre: "4" est fermé avant *// si non libre: 4 est fermé avant /

readread (fd, tab1, 512);readread (nfd, tab2, 512);closeclose (fd);readread (nfd, tab2, 512);...

}

Version septembre 2013 N°91

dup: exemple de la redirection en shell

#include <sys/types.h>#include <unistd.h>#i l d f tl h#include <fcntl.h>int main () {

int pid, fd, nfd; ... if ( (pid = forkfork ()) < 0) erreur;if (pid == 0) { /* Traitement fils */

if (/* redirection */) {fd openopen (fichier ) /* création */fd = openopen (fichier, ...); /* création ... */closeclose (stdout); nfd = dupdup (fd); /* nfd = stdout */closeclose (fd); exec de la commande}

... } ... }

Page 35: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

3535

Version septembre 2013 N°92

A propos de fcntlfcntl

Descripteur fichier

C d fd

Commande :f lf l (fd1 F DUPFD 0) dd (fd1) i 0 lib

Commande sur fd

Arguments de la commande

fcntlfcntl (fd1, F_DUPFD, 0) ⇔ dupdup (fd1) si 0 est libreF_GETFL : attributs positionnés lors de openopenF_SETFL : nouveaux attributs - dans arg. Seuls O_APPEND, O_NONBLOCK et O_ASYNC… Gestion de verrous, Signaux (interruptions IO), PID processus concerné... relatifs au fichier

Version septembre 2013 N°93

A propos de ioctlioctl

Descripteur fichier

C d fd

Commande :

Commande sur fd

Arguments de la commande

Commande :Opérations sur un périphériqueOpérations sur un périphériquePas une commande POSIXGrand nombre de commande qui dépendent du matériel…Grand nombre de commande qui dépendent du matériel…

Page 36: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

3636

Version septembre 2013 N°94

Opérations atomiques ou pas ?

Attention :Programmation mono ou multi processusProgrammation mono ou multi processusOn peut être interrompu entre deux instructions

Version septembre 2013 N°97

Structures d’un système de fichiers

P1 0

1Position :État : N° inode :

Tables partagéesTables partagéesPrivéPrivé

P2 0

Proc

essu

s 12345

Nombre :…

Position :État :Nombre :

Nb. copies :Inode Infos ……

N° inode :Nb. copies :Inode Infos …

Tables Descripteurs Fichiers

Position :Ét t

Table fichiersEspace utilisateur Table inodes

Proc

essu

s P 0

12345

N° inode :Nb. copies :Inode Infos …

État :Nombre :…

Position :État :Nombre :

Page 37: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

3737

Version septembre 2013 N°98

Les périphériques

Quelques informations pour commencer

Périphériques = fichiers spéciauxFichiers b et c

Périphériques “caractères”terminal, réseaux

Périphériques “blocs”Disques, bandes, Cd-rom

Interface commune: appels systèmes

Version septembre 2013 N°100

Propriétés d’un système de fichiers

Technologie différentes (disques, CD-ROM, CLE USB…)Montage local ou distant (NFS)

Propriétés globales spécifiquesProtections, exportation…

Montage/démontage dynamiquemount, umount (commande ou appel système)

Une hiérarchie de nomsFichiers norma répertoires spécia liens t besFichiers normaux, répertoires, spéciaux, liens, tubes…

Partitionnement des sous-hiérarchiesAllocation du média associé (blocs libre…)Deux niveaux d’organisation:

Logique (suite de blocs, unité d’allocation 1k?)Physique (secteurs, pistes, cylindres)

Page 38: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

3838

Version septembre 2013 N°101

Arborescenceet volumes

/dev/rz0g

/dev/rz0a

sharedusr

/

Root filesystem

+ partition de swap/dev/rz2a

/dev/rz0gySwap…

+ partition de swap

/dev/rz1aoracle

etud

/dev/rz2g

Syst. Fic. virtuel

Version septembre 2013 N°102

Création/utilisation Système de fichiers

Création

EXT2Fiable, matureCréation

mkfsmkfs (Syst. Fichiers)Taille des blocksNombre d’inodes…

Utilisationmountmount/umountumount

,Support pour fsckfsckPré allocationLiens symboliques rapides

Redémarrage après crash lentEXT3

Compatible avec EXT2EXT2mountmount/umountumountType Système de fichier

Mêmes structures de données≈ EXT2EXT2 + Journalisation

Ecriture dans un journalEcriture dans le syst. fichiers

Page 39: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

3939

Version septembre 2013 N°103

Montage et démontage

Commande mount / umountMontages locaux / distantsMontages locaux / distantsVisualisation: dfexemple: mount -t ext2 -o nodev,nosuid,noexec /dev/sda3 /usr

AutomatisationFichiers: /etc/fstab/etc/init.d/* …

Version septembre 2013 N°105

Le super-bloc

Gestion des blocsNombre blocs libres

Super-bloc … … 1 b

Gr. Blocs 0

…Descr. De gr. n b… 1 bBitm. blocs

« Liste » blocs libresBitmap blocs libre/occ.

Gestion des inodesNombre total inodes Compteur inodes libres« Liste » inodes libres

1 bBitm. blocsBitm. inodes 1 b…

n bTab. inodes …

Blocs Fichiers

Blocs libres

n bTab. blocs

…« Liste » inodes libres Bitmap inode libre/occupé

Gestion globaleTaille système fichiersIndicateur de modificationDuplication dans les groupes

Gr. Blocs n

Page 40: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

4040

Version septembre 2013 N°106

Maintien de la cohérence FSCK 1/2

Qui ?: L'administrateur

Pourquoi ?: Synchronisation (sync)Blocs: cache buffer disqueInode: Copie en mémoire disqueSuper-bloc: Copie en mémoire disque

Quand ?:Quand ?:Réparation: Crash, Coupure alimentationPrévention: Au reboot

Réparation: Attention aux pertes de données !!

Version septembre 2013 N°107

Maintien de la cohérence FSCK 2/2

Objectifs:Objectifs: Vérifications, réparationsBlocs:

Appartenances à plusieurs inodes Non référencés

Inodes: Tailles fichier/répertoire incohérentesNombres de liens incorrectsMauvais formatsNon référencés

Super-bloc:Plus de blocs que possibleMauvais format de la liste des blocs libresTotal des blocs/inodes libres incohérentsBlocs libres manquants

Page 41: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

4141

Version septembre 2013 N°108

Montage/démontage et structures internes

N° inode :Nb. copies :Inode Infos …

SuperBloc :Inode cible :

…mount

t e t2

N° inode :Nb. copies :Inode Infos ……

N° inode :Nb. copies :

Inode cible :Inode à monter :Syst. Fichier :

SuperBloc :Inode cible :Inode à monter :

/dev/sda3

/

-t ext2

mount

Table inodesTable volumes

pInode Infos …

N° inode :Nb. copies :Inode Infos …

Syst. Fichier :

… copie mémoire

/dev/sda7

/usr

-t ext2

Version septembre 2013 N°109

Principales arborescences 1/2

Répertoire Description

/bin Binaires

/dev Périphériques

/etc Fichiers de configuration

/lib Bibliothèques de base

/tmp Fichiers temporaires

/mnt Montages nfs

/var Fichiers de log, mail, impression, …/var Fichiers de log, mail, impression, …

/home Répertoires utilisateurs

Page 42: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

4242

Version septembre 2013 N°110

Principales arborescences 2/2

Répertoire Description

/usr/X11R6 Noyau X Window

/usr/bin Binaires autres paquetages

/usr/include En-têtes

/usr/lib Bibliothèques autres paquetages

/usr/man Manuels en ligne

/usr/src Source noyau, …

/usr/local Installation locales au site /usr/local Installation locales au site

/usr/share Fichiers paquetages de l'instal.

/usr/sbin Binaires administration

Version septembre 2013 N°111

Filesystem Hierarchy Standard (2004)

BinBin : Essential command binaries

Root filesystem Root filesystem (extrait)(extrait)BinBin : Essential command binariesBootBoot : Static files of the boot loaderdevdev : Device filesetcetc : Host-specific system configurationliblib : Essential shared libraries and kernel modulesmediamedia : Mount point for removeable mediamntmnt : Mount point for mounting a filesystem temporarilyoptopt : Add on application software packagesoptopt : Add-on application software packagessbinsbin : Essential system binariessrvsrv : Data for services provided by this systemtmptmp : Temporary filesusrusr : Secondary hierarchyvarvar : Variable data

Uniformisation des distributionsUniformisation des distributions

Page 43: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

4343

Version septembre 2013 N°112

Organisation logique: la réalité

Une forêt de liensUn nom = un lienUn nom un lienLiens:

Entre père et filsEntre frères

Mise en oeuvreCommandes associées: ln et unlinkLiens: dur et symboliquesPar rapport aux inodes:

lien en dur [N:1] un inodelien symbolique [1:1] un inode

Version septembre 2013 N°113

Organisation logique: la réalité

/

usrLien en dur

etud

shared

home

d2

etud1oracle

.profile

Gprofileetud2

Même partition

Un seul fichier

Lien symbolique

≈Raccourcietud2

etud1.profile

Lien en durLien symbolique

Pas de vérification

Page 44: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

4444

Version septembre 2013 N°114

Protections: groupes / utilisateurs

Principaux élémentsGrain: le fichierOpérations:

lecture, écriture, exécution/traversée

Objet: utilisateur, groupe, autresNe pas confondre:

Groupe de l'utilisateur et groupe d'un fichierGroupe de l utilisateur et groupe d un fichierFichier /etc/groupCommande newgrp (processus)Commande chgrp (fichier)Liens symbolique / physique

Version septembre 2013 N°115

Protections: de fichier/répertoire

Les fichiersr: permission de lire le fichier u g ow: permission d’écrire le fichier, i.e. ajouter, supprimer ou modifier les données qu’il contientx: permission d’exécuter le fichier

Les répertoiresr: permission de lire, donc de lister le répertoire

mais pas forcément d’en lire les fichiers…w: permission d’écrire dans le répertoire et donc de supprimer l fi hi ’il iles fichiers qu’il contientx: permission de traverser le répertoire. Sans cette permission, toute opération est interdite. Cette interdiction est héritée par tous les fichiers et répertoires qu’il contient

“Un fichier est protégé contre une modification par ses propres permissions, et contre la suppression par les permissions du répertoire qui le contient.“

Page 45: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

4545

Version septembre 2013 N°116

Protections:exemple

rwxrwxrwx REP-1

rwxrwxrwx

rwxrwxrwxrwxrwxrwx REP-2 REP-3

FIC-1

PL,PROF PL,PROF

PL,PROF

rwxrwxrwx

rwxr-xr--

FIC-1

rwxrwxrwx

REP-5

REP-4

LIEN-1

rwxr----- PL,PROF

PL,PROF

PL,PROF

PL,PROF

REP-1/REP-2/REP-4/REP-6

REP-1/REP-3/REP-5/LIEN-1

REP-1/REP-2/REP-4/REP-6

LIEN-1 =

rwxrwxrwx

REP-6

FIC-2

r-xr-xr-xPL,PROF

PL,PROF

Utilisateurs: RC, PROF / JPP, ETUD1

Commandes: ls, cd, touch

REP 1/REP 2/REP 4/REP 6

Les droits qui comptent(voir chmod)

Version septembre 2013 N°119

Structure générale d'un fichier

Qualités requises:Evolution de la taille des fichiersEvolution de la taille des fichiersAccès efficaceNombre de fichiers ?Accès multi-processusAccès multi-utilisateurs

Une structure interneUne structure interneDes appels systèmes appropriésDes appels systèmes appropriés

Page 46: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

4646

Version septembre 2013 N°120

Structure générale d'une inode 1/2

Copie disqueCopie disque:PropriétairepGroupe propriétaireType fichierDroits d'accèsDates (accès, modification, inode)Nombres de liensAdresses disque (blocs)Taille fichierRéférence ACL au fichier et répertoire

inode = anglais (i-noeud)

Version septembre 2013 N°121

Copie mémoire = Copie disque + …Verrouillé ?

Structure générale d'une inode 2/2

Verrouillé ?Processus en attenteCopie et image disque différentesPériphérique logiqueNuméro inodePointeurs inodes (une par liste)

liste des inodes libresliste des inodes (adressage calculé)

Nombre copies actives

Copie disque du super bloc

Page 47: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

4747

Version septembre 2013 N°122

Inode de fichier/répertoire

5007105di i

5007105

é t i

UIDGID

T fi hiordinairerwxr-xr--

19/10/200510/10/200512/10/2005

5

653450 1 … 10

répertoirerwxr-xr--

19/10/200510/10/200512/10/2005

3

3450 1 … 10

Type fichierProtectionsDate lecture

Date modificationDate inode

Nombre liensContenu

Taille

cont

enu aaaaaaaaaaa

bbbbbcccccc

ddddddddddd

cont

enu N° Nom Un format

ls, cd, …

Version septembre 2013 N°123

Arborescence et inodes

2010 .8010 ..1003 D1

2010

1003 .201000

3

Infos inode

Infos inode

2010 ..1067 D25790 F1

10

1067 .1003 ..10

67

aaaaaaaaaaacccccccbbbbbbbbbbbbbbbb57

90

Infos inodeInfos inode

Page 48: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

4848

Version septembre 2013 N°124

Organisation physique0

1

2

Blocs de donnees

Taille max (blocs) =

.

...

.

3

45

6

7

8

9

simple

10 +256 +

2562 +2563

Taille max (blocs) = 10 + 256 + 2562 + 2563

ls –il

.

....

.

.........

.

...

.

.

....

double

triple

Version septembre 2013 N°125

Organisation physique: Comprendre les choix

Choix d'organisationsBlocs contiguësTable des blocsCompactage, nettoyageTaille de blocsAccès indirectRépertoire / fichier p

ConséquencesFragmentationEfficacité (espace / temps)Limite des fichiers

Page 49: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

4949

Version septembre 2013 N°126

Nom attributst_mode

Description Mot = bits de protection

Information sur fichiers: norme POSIX

st_ino st_dev st_nlinkst_uidst_gidst_size

i

pIdentif. Fich.: num. i-node Périphérique du fichier Nombre de liens Ident. utilisateur Ident. groupeTaille en octets D d è l st_atime

st_mtime st_ctime

Date dern. accès lecture Date dern. accès écriture Date dern. modification

Version septembre 2013 N°127

Accès aux fichiers: norme POSIX

Routinefd = creatcreat (nom,mode)

Descriptioncréation nouveau fichier

fd = openopen (fichier,mode) e = closeclose (fd) n = readread (fd,buff,nb) n = writewrite (fd,buff,nb) p = lseeklseek (fd,dep,deb) e = statstat (nom,&buff) fd kdikdi ( d )

ouverture fichier lecture/ecriturefermeture fichier ouvert lecture fichier --> tampon écriture tampon --> fichier déplacement dans fichier récupération info. fichiers

é i é i fd = mkdirmkdir (nom,mode) e = rmdirrmdir (nom) e = linklink (nom1,nom2)e = unlinkunlink (nom) e = chdirchdir (nom_rep) e = chmodchmod (nom,mode)

création répertoire suppression répertoirecréation nouvelle Entréesuppression Entréechangement répertoire de Travailmodification protection de fichier

Page 50: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

5050

Version septembre 2013 N°128

Contenu inode: statstat, fstatfstat, lstatlstat

Descripteur fichier

Nom fichier

Informationsinode

lstat: informations sur le lien symbolique luilstat: informations sur le lien symbolique lui--mêmemêmefstat: accès direct par le descripteur ce fichierlstat accès par le nom de fichierlstat accès par le nom de fichierMise à jour des tables internes (noyau)

Version septembre 2013 N°129

Informations sur un fichier

#include <sys/types.h>#include <sys/stat.h>#include <unistd h>#include <unistd.h>int main () {

int fd, e;struct stat buf;... e = statstat ("/etc/passwd",&buf);/* autre possibilité */fd ("/ t / d" )fd = openopen ("/etc/passwd", ...);e = fstatfstat (fd, &buf);printf ("Nombre liens: %d", buf.st_nlink);

}Macros POSIX: S_ISREGS_ISREG(m), S_ISDIRS_ISDIR(m), I_SRWXUI_SRWXU

Commande(s) associée(s): lsStructure(s) interne(s): inode

Page 51: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

5151

Version septembre 2013 N°130

statstat, fstatfstat, lstat lstat (compléments)

Protections + type de fichiers

Numéro dans /etc/passwd/etc/passwd

Numéro dans /etc/group/etc/group

pp

Taille en octets

Dates : modification Inode, accès et modifications du

contenucontenu

N° inode sur disque

Nombre liens en dur

+ st_dev et r_dev : majeur/mineur+ st_blksize et st_blocks

! !

Version septembre 2013 N°131

Obtenir le type d’un fichier

struct stat

st_modest_mode

.

.

.

Extraire le type

<sys/stat.h>

.

Page 52: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

5252

Version septembre 2013 N°132

Obtenir les droits d’un fichier

if(st->st_mode & S_IRUSR) …

struct stat

st_modest_mode

.

.

.

if(st->st_mode & S_IWUSR) …

if(st->st_mode & S_IXUSR) …

if(st->st_mode & S_IXGRP) ……

Macros sur les protections : voir openopen

<sys/stat.h>

.if(st->st_mode & S_IXOTH) …

Version septembre 2013 N°133

Obtenir le nom de login / groupe

lahire:x:1543:34:Philippe Lahire:/home/lahire:bin/bash

t t d* t id ( id t id)

struct stat

st_uidst_uid

.

.=

struct passwd* getpwuid (uid_t uid)

st gidst gid

prof:x:34:Professeurs:lahire …

st_gidst_gid

struct group* getgrgid (gid_t gid)

Voir getpwent (3)getpwent (3)

= /etc/passwd

/etc/group

+/etc/shadow

Page 53: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

5353

Version septembre 2013 N°134

Synthèse getpwent(3)

Adresse de la structure si résultat OKNULL si uid ou gid n’existe pasChamps « passwd »,« passwd_gr » : adminstrateur

Version septembre 2013 N°135

Information sur les périphériques

struct stat.

macros

st_dev: du S.F. qui contient le fichier

#include <sys/types.h>#include <sys/types.h>int minor (dev_t d)int minor (dev_t d)int major (dev_t d)int major (dev_t d)

st_devst_dev

.

.

st_rdevst_rdev

_ qst_rdev: du fichier spécial (si /dev/…)Majeur = classe de l’appareilMineur = numéro d’instance de la classe création par mknod(8) ou /dev/MAKEDEV

Page 54: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

5454

Version septembre 2013 N°136

Manipuler des dates (1)

struct stat. fonctions Retour: NULLNULL si ¬OK

Dates GMT : nb sec. depuis 01/01/1970 à 12 PM

#include <time.h>#include <time.h>struct tm* localtime (const time_t t)struct tm* localtime (const time_t t)struct tm* gmtime (const time_t t)struct tm* gmtime (const time_t t)st_mtimest_mtime

.

st_ctimest_ctime

st_atimest_atime

pst_atimest_atime ((read), st_mtimest_mtime (write) st_ctimest_ctime ((creat, chmod, chown…)localtimelocaltime : fuseau (config. Syst.) + heure été/hivergmtimegmtime : temps GMT universel

Version septembre 2013 N°137

Manipuler des dates (2)

timetime

Passer d’un Format à un autrePasser d’un Format à un autre

mktimemktime

asctime, asctime, asctime_rasctime_r

ctime,ctime,ctime_rctime_r

Page 55: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

5555

Version septembre 2013 N°138

Manipuler des dates (3)

en secondes

À

fourni par « l’utilisateur »

À partir d’un struct tmtm

ctime_r + asctime_r: résultat = pointeur sur «ctime_r + asctime_r: résultat = pointeur sur « buf »»Transformation de la date (seconde ou struct tm) en chaîne de caractèresLe résultat est internationaliséLe résultat est internationalisé

Version septembre 2013 N°139

Manipuler des dates (4)

Si ¬NULL: modification

d l d tde la « date »

Date au format

Heure du système

« struct tm »

Date au format « time_t »

date(1) = printf(« %s\n », ctime(time())ctime(time()))

Page 56: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

5656

Version septembre 2013 N°140

Manipuler des dates (5)

Buffer + taille pour la sortie

Heure à formater

Voirstrftime (3)

Exemple de format

Version septembre 2013 N°141

Internationalisation (1)

Agir sur les variables d’environnement :LC TIME : conventions utilisées pour les datesLC_TIME : conventions utilisées pour les datesLC_MONETARY, LC_COLLATE, LC_TYPE, LC_NUMERIC, LANGSigne monétaire, jeu de caractères, ordre alphabétique…

LC_ALL: S’applique à tous

enen (anglais)dede (allemand) ……

Page 57: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

5757

Version septembre 2013 N°142

Internationalisation (2)

Paramétrer un programme pour l’internationalisation :#include <locale.h>setlocale (LC_ALL, « »);setlocale (LC_ALL, « fr_FR »);…

Laisser la libertéLaisser la libertéImposerImposer

time_t

struct tm

char …[MAX]

Version septembre 2013 N°143

Manipuler les dates d’un fichier (1)

Nom du fichier

Nouvelles « dates »

t ti

La date associée à l’inode est mise à jourtimes = NULL ⇒ date couranteil faut avoir les droits en écriture sur le fichier

st_atimest_mtime

Page 58: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

5858

Version septembre 2013 N°144

Manipuler les dates d’un fichier (2)

#include <sys/types.h>#include <utime.h> i t i () int main () {

int fd, e;struct utimbuf tbuf;... tbuf.actime = ... tbuf.modtime = ... e = utimeutime ("/etc/passwd", &tbuf);( p , f);

}

Commande(s) associée(s): ls, touchStructure(s) interne(s): inode

Version septembre 2013 N°145

Gérer le propriétaire d'un fichier(1)

d f h

Kernel: CAP_CHOWN

Nom du fichier

Propriétaire& groupe

Descripteur de fichier

chown ≈ fchownlchown lchown (lien symbolique) chown chown (fichier référencé)MAJ de st_ctime st_ctime (c’est normal?)

fichier

Il y a aussi chgrpchgrp

Page 59: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

5959

Version septembre 2013 N°146

Gérer le propriétaire d'un fichier (2)

#include <sys/types.h>#include <unistd.h>int main () int main () {

int fd, e;... e = chownchown ("/etc/passwd", 1014, 50);/* autre possibilité */fd = openopen ("/etc/passwd", ...);e = fchownfchown (fd, 1014, 50);

}}

Commande(s) associée(s): chownStructure(s) interne(s): inode

Version septembre 2013 N°147

Créer un lien (en dur)

Nom initial

Sorte d’alias…Incrémentation du nombre de liens en dur

Nom du lien

Incrémentation du nombre de liens en durAppartenance au même Système de FichiersPas de liens en l’air (gestion par le système)Efficacité: pas de fichier intermédiaireMais: retrouver les noms « à la main »…

Page 60: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

6060

Version septembre 2013 N°148

Créer un lien symbolique

Nom initial

Nom du lien

nombre de liens en dur sur newpathnewpath: 12 inodes : celle du lien et celle du fichier ⇒ Efficacité vs lisibilité

Liens en l’air possiblesLien à travers les systèmes de fichiers

Version septembre 2013 N°149

Supprimer un lien

d f hNom du fichier

Effacement d’un lien en durEffacement du fichier si c’est le dernierIl faut avoir les droits…Il faut avoir les droits…

Page 61: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

6161

Version septembre 2013 N°150

Création/suppression d'un lien

#include <unistd.h>int main () int main () {

int e;... e = linklink ("/etc/passwd", "/tmp/passwd");e = symlinksymlink ("/etc/passwd", "/tmp/passwd");e = symlinksymlink ("/etc", "/tmp/etc");

Le fichier lien symbolique

e = unlinkunlink ("/tmp/passwd"); e = unlinkunlink ("/tmp/etc");

}Commande associée(s): ln, unlink, rmStructure(s) interne(s): inode

Version septembre 2013 N°151

Rappel sur les droits d’accès (open)

Pour donner des droits

Le propriétaire

Le Groupe propriétairee G oupe p op éta e

Les autres

Page 62: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

6262

Version septembre 2013 N°152

Vérifier l’accès à un fichier

Nom du fichier

modemode = droit de …

fichier

Droits demandés

R_OKR_OK: lectureW_OKW_OK: écritureX_OKX_OK: exécution ou traverséeF_OKF_OK: existence

Version septembre 2013 N°153

Gérer les protections d’un fichier (1)

Nom du fichierfichier

droits

DescripteurDe fichier

modemode = combinaison des 3 permissions pour les 3 catégories et de 3 indicateurs⇒⇒ S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IROTHS_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IROTH⇒⇒ S_ISUID | S_IRGRP | S_IROTHS_ISUID | S_IRGRP | S_IROTH

Indicateurs…

Page 63: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

6363

Version septembre 2013 N°154

Gérer les protections d’un fichier (2)Fichiernormal

(*)

Répertoire

(*)

3 indicateurs : interprétation ≠ (fichier normal / répertoire)(*) gestion de verrou si ¬exécutable (voir cours)

Version septembre 2013 N°155

Gérer les protections d'un fichier (3)

#include <sys/types.h>#include <sys/stat.h>int main () {

int fd, e;... e = chmodchmod ("/etc/passwd", S_IRWXU);/* autre possibilité */fd = openopen ("/etc/passwd", ...);pp ( p , );e = fchmodfchmod (fd, S_IRWXU);

}

Commande(s) associée(s): chmodStructure(s) interne(s): inode

Page 64: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

6464

Version septembre 2013 N°156

Manipuler le masque de protection

Nouveau masque

Utilisation des 9 macros Utilisation des 9 macros 3 permissions pour les 3 catégories

modemode idem chmodchmodmodemode = idem chmodchmodS_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IROTHS_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IROTH

Mais : marque une interdictionSe combine avec ce qui est donné par open: ETS’applique au futur fichiers créés

Version septembre 2013 N°157

Protections de fichier et processus (1)

Processus PP

RUIDEUIDSUID

RGIDEGIDSGID

real user-id

effectiveuser-id

real group-id

effectivegroup-id

saved set saved setsaved setuser-id

sa ed setgroup-id

Page 65: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

6565

Version septembre 2013 N°158

Protections de fichier et processus (2)

Processus PP=Sauf si

login + group(s)=sauf si

RUIDEUIDSUID

RGIDEGIDSGID

set-user-id sauf si set-group-id

ownerowner

Restaurer aprèsRestaurer après«« set/drop privilegeset/drop privilege »»

Fichier de PP

ou

ownerownergroupgroup

OU: utilisation de :setuid, setgid (posix)setreuid, setregid…Avoir les privilèges

Différents effets : cours sur les processus

Contrainte (si EUID != 0):new = RUID/SUID

Version septembre 2013 N°159

Appels systèmes et liens symboliques

S’applique surS’applique sur…

Le fichier lien symbolique :Le fichier lien symbolique :lchown, chown, lstat, readlink, unlinkremove, rename

Le fichier luiLe fichier lui--même :même :chmod, creat, chown, link, mkdir, open, stat access, chdir, exec, mkfifo, opendir, pathconf, truncate, rename

Page 66: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

6666

Version septembre 2013 N°160

Créer/Supprimer un répertoire (1)

Nom du répertoire

droits

S_ISGIDS_ISGID : droits du gr. Du répertoire = droits de ses fichiersS_ISVTXS_ISVTX : création de fichiers ¬renommer & ¬supprimerS_IX… S_IX… : X est pour « traverser »rmdirrmdir: le répertoire doit être vidermdirrmdir : fonctionne comme unlinkunlink

Version septembre 2013 N°161

Créer/supprimer un répertoire (2)

#include <sys/types.h> #include <sys/stat.h> i t i () int main () {

int e;... e = mkdirmkdir ("/tmp/myrep", S_IWUSR);e = rmdirrmdir ("/tmp/myrep");

}

Commande(s) associée(s): mkdir, rmdir, rmStructure(s) interne(s): inode

Page 67: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

6767

Version septembre 2013 N°162

Ouvrir un répertoire

Nom du répertoirerépertoire

DIRDIR : un peu comme FILE (section 3)Curseur placé sur la 1ère entréeCombien d’entrée minimum?

Version septembre 2013 N°163

Parcourir un répertoire

«descripteur»

N° inodeNom fichier

Seul endroit où est stocké un nom de fichierAvance le curseur

Et le chemin ?

Page 68: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

6868

Version septembre 2013 N°164

Réinitialiser/Fermer un répertoire

«descripteur»

(*)

(**)

(*) Position sur la 1ère entrée (affecte table noyau)(**) Affecte la TDF et les tables du noyau(**) rend les ressources aux système

(**)

Version septembre 2013 N°165

Réinitialiser/Fermer un répertoire

«descripteur»

(*)

(**)

(*) Position sur la 1ère entrée (affecte table noyau)(**) Affecte la TDF et les tables du noyau(**) rend les ressources aux système

(**)

Page 69: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

6969

Version septembre 2013 N°166

Accès au contenu d'un répertoire

#include <sys/types.h>#include <dirent.h>i t i () {int main () {

DIR* dir;struct dirent * entry;dir = opendiropendir ("/var"); entry = readdirreaddir (dir);printf ("%s - %d", entry->d_name, entry->d_ino);closedirclosedir(dir);

}}seekdirseekdir, telldirtelldir, ...

Commande(s) associée(s): ls, mv, …Structure(s) interne(s): tables des fichiers

Version septembre 2013 N°167

Manipuler le répertoire courant (1)

Nom de fichier

«descripteur»

fichier

Affecte le contenu d’un processusAllocation de bufbuf + taille allouée

Chemin absolu

Page 70: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

7070

Version septembre 2013 N°168

Manipuler le répertoire courant (2)

#include <unistd.h>int main () { {

int fd, e;... e = chdirchdir ("/etc");/* autre possibilité */fd = openopen ("/etc", ...);e = fchdirfchdir (fd);

}}Table des fichiers: Changement nombre de références

Commande(s) associée(s): cdStructure(s) interne(s): Tables des fichiers, processus

Version septembre 2013 N°169

Renommer / Déplacer un fichier

Fichier de départ

newpathnewpath dans le même système de fichiersAutres liens en du non affectés

Fichier d’arrivée

Autres liens en du non affectésSi cible existe elle est écraséeNombreuses restrictionsChemin correct, cible: répertoire non vide,…

Commande mvmv

Page 71: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

7171

Version septembre 2013 N°170

Synchronisation Disque/buffer

Descripteur de fichier

syncsync: synchronise les buffers (écriture) et disques fsyncfsync: idem mais pour un fichierDifférer l’écriture ⇒ accélérer les échangesToutes les xx sec. + arrêt de la machine

Version septembre 2013 N°171

Synchronisation Disque/buffer

#include <unistd.h>int main () (){

int fd, e;... /* Ouverture fichier en écriture */ fd = openopen ("/etc/passwd", ...);...

ff (fd)e = fsyncfsync (fd);syncsync () /* S. F. */

}Commande associée(s): syncStructure(s) interne(s): Tables, buffer, inode

Page 72: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

7272

Version septembre 2013 N°181

Système de fichier /proc (1)

Processus en cours

Autres informations : mémoire, noyau, paramètres systèmes, …

Version septembre 2013 N°182

Système de fichier /proc (2)

Systèmes de fichierssupportés

Information sur la mémoire

Page 73: pour-poly.ppt [Mode de compatibilité] - deptinfo.unice.frdeptinfo.unice.fr/~lahire/enseignement/SYSL3/miage/annee-2013-2014/... · élémentaires Un système de fichiers « hiérarchique

7373

Version septembre 2013 N°183

Système de fichier /proc (3)

Information sur la table des volumes montés

Version septembre 2013 N°184

Système de fichier /proc (4)

Répertoire courantRépertoire courantExécutableExécutable

Répertoire RacineRépertoire Racine

Propriétaire, PIDPropriétaire, PID

Variables environnementVariables environnement