noyau d'un système d'exploitation inf2610 chapitre … · 2014-01-06 2 noyau d'un...

38
2014-01-06 1 Département de génie informatique et génie logiciel Noyau d'un système d'exploitation INF2610 Chapitre 10 : Gestion des périphériques d’E/S & Systèmes de fichiers Hiver 2014 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 2 Chapitre 10 - Gestion des périphériques d’E/S Introduction Structure en couches du logiciel d’E/S Interface utilisateur Interface matériel Interface périphérique / système d’exploitation Qui fait quoi ? - Les E/S programmées - Les E/S pilotées par les interruptions - Les E/S avec DMA - E/S synchrones ou asynchrones Disques Horloges

Upload: phungduong

Post on 16-Sep-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

1

Département de génie informatique et génie logiciel

Noyau d'un système d'exploitation INF2610 Chapitre 10 : Gestion des périphériques d’E/S &

Systèmes de fichiers

Hiver 2014

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 2

Chapitre 10 - Gestion des périphériques d’E/S

•  Introduction

•  Structure en couches du logiciel d’E/S

•  Interface utilisateur

•  Interface matériel

•  Interface périphérique / système d’exploitation

•  Qui fait quoi ?

-  Les E/S programmées -  Les E/S pilotées par les interruptions -  Les E/S avec DMA -  E/S synchrones ou asynchrones

•  Disques

•  Horloges

Page 2: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

2

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 3

•  Chaque ordinateur dispose de périphériques d’E/S tels que les terminaux, des disques, les imprimantes, les équipements de communication, etc.

•  Les périphériques d’E/S permettent le stockage de données et les échanges d’information avec le monde extérieur.

•  Ils ont des caractéristiques différentes.

•  On distingue plusieurs catégories :

-  Périphériques par blocs (disques, stockent des informations dans des blocs de taille fixe).

-  Périphériques par caractères ou alphanumériques (acceptent ou fournissent un flot de caractères).

-  Périphériques réseaux

Introduction

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 4

•  Le système d’exploitation (SE) gère, contrôle et coordonne tous les composants de l’ordinateur (CPU, mémoire, bus, périphériques d’E/S).

•  Ces composants sont connectés par un (ou plusieurs) bus et communiquent entre eux via ce(s) bus.

Introduction (2)

Pentium

Page 3: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

3

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 5

Introduction (3)

•  Le gestionnaire de périphériques d’E/S gère et contrôle tous les périphériques d’E/S.

!!!!

•  Objectifs d’un gestionnaire de périphériques d’E/S :

1.  Offrir une interface complète, uniforme et simple d’emploi qui abstrait la complexité de fonctionnement des différents périphériques.

2.  Faciliter les références aux périphériques (désignation universelle qui passe à l’échelle).

3.  Être performant (maximiser les taux d’utilisation de tous les composants de l’ordinateur, optimiser les coûts des opérations d’E/S, …).

4.  Détecter et gérer les erreurs d’E/S (isoler l’impact des erreurs, recouvrir les erreurs, uniformiser les codes d’erreur, …).

5.  Permettre le partage des périphériques tout en assurant leur consistance et protection.

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 6

Introduction (4)

!!!!

•  Chaque périphérique a son propre pilote (un pilote par type de périphérique) qui dialogue avec lui.

•  Trois façons d’intégrer un pilote à un SE :

1.  Ajouter le code au noyau, refaire l’édition de liens et redémarrer le système (UNIX).

2.  Placer une nouvelle entrée dans un fichier spécial indiquant que le système a besoin de ce pilote et redémarrer le système (Windows)

3.  Intégrer le pilote à la volée sans nécessiter le redémarrage (ceux de USB).

Page 4: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

4

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 7

•  Le logiciel des E/S structuré en couches (ex. 4 couches) : 1.  Le traitement des interruptions de fins des E/S. 2.  Les pilotes de périphériques qui traitent les requêtes de plus haut niveau qui

émanent du logiciel (indépendant du matériel). 3.  Le logiciel du système d’exploitation indépendant des périphériques qui effectue les

fonctions communes à tous les périphériques tout en fournissant une interface uniforme au logiciel des utilisateurs.

4.  Le logiciel accessible au niveau de l’utilisateur (les appels système : mknod, open, read, write, aio_read, aio_write, etc.).

Structure en couches du logiciel d’E/S

Chaque périphérique est identifié par un numéro majeur (qui set à localiser son pilote) et un numéro mineur (qui indique l’unité à lire ou dans laquelle écrire (ex. une partition)).

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 8

•  Les systèmes comme UNIX /Linux et Windows considèrent les périphériques d’E/S comme des fichiers spéciaux (objets) et intègrent la gestion des périphériques dans le système de fichiers.

•  A chaque périphérique d’E/S est affecté un chemin d’accès, le plus souvent à partir du répertoire

/dev.

•  Ces fichiers spéciaux sont accessibles de la même façon que les autres fichiers (read, write..).

Exemple 1 : /dev/lp /dev/tty

/dev/net echo ABCDEF > /dev/tty è L’interface utilisateur des périphériques est la même que celle des fichiers ordinaires.

Interface utilisateur

Page 5: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

5

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 9

Interface matériel : Composants d’un périphérique

•  Chaque périphérique d’E/S est généralement constitué de :

-  un composant mécanique (le périphérique lui-même) et

-  un composant électronique appelé contrôleur de périphérique ou adaptateur (ex. carte avec circuit imprimé).

•  La carte du contrôleur est généralement équipée d’un connecteur sur lequel est branché un câble connecté au périphérique. Le contrôleur peut gérer plusieurs périphériques identiques.

•  Le contrôleur a la charge de commander physiquement le périphérique, en réaction aux commandes envoyées par le SE (pilote de périphérique – device driver). Le fabriquant de contrôleur fournit un pilote pour chaque SE supporté.

•  Chaque contrôleur possède un petit nombre de registres utilisables pour communiquer avec lui. En écrivant dans ces registres, le SE (via le pilote du périphérique) active le contrôleur pour réaliser une tâche. En lisant, ces registres, le SE peut connaître l’état du périphérique (prêt, occupé, erreur, etc.).

•  En plus des registres de contrôle, de nombreux périphériques sont équipés d’un tampon de données que le SE peut lire et écrire.

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 10

Interface matériel : Composants d’un périphérique (2) Exemple 2 : •  Un contrôleur disque minimal comprendrait des registres pour renseigner : l’adresse

disque, l’adresse mémoire, le numéro de secteur, le type d’opération (lecture ou écriture) et son état.

•  Si un contrôleur disque reçoit une commande pour lire le secteur 11206 du disque 2, il doit alors : -  convertir ce numéro linéaire de secteur en un triplet cylindre/secteur/tête selon la

géométrie du disque, -  déterminer sur quel cylindre se trouve le bras du disque pour lui indiquer de se

déplacer pour se positionner sur le bon cylindre, -  positionner la tête de lecture sur le bon secteur….

Page 6: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

6

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 11

Interface système d’exploitation (SE) : Comment communiquer avec le SE ?

Trois solutions possibles :

1.  Pas de mappage en mémoire :

•  Chaque registre de contrôle du périphérique se voit assigner un numéro de port d’E/S unique, correspondant à une adresse qui n’est pas dans l’espace d’adressage du SE.

•  L’ensemble de ces registres constitue l’espace des ports d’E/S.

•  Des instructions d’E/S spéciales sont utilisées pour lire/écrire dans un registre, comme :

IN REG PORT // CPU récupère, dans son registre REG, le contenu du registre de contrôle PORT

OUT PORT REG. // CPU copie le contenu de son registre REG dans le registre de contrôle PORT

•  La majorité des ordinateurs récents utilisent cette méthode (économise la mémoire mais nécessite des instructions particulières à coder notamment en assembleur).

•  Le test en boucle de l’état d’un périphérique (lecture et test d’un registre de contrôle) : LOOP : TEST PORT_4

BEQ READY

BRANCH LOOP

READY :

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 12

2. Mappage en mémoire :

•  Les registres de contrôle et les tampons de données du périphérique sont mappées dans l’espace mémoire du noyau.

•  Chaque registre de contrôle se voit attribuer une adresse mémoire unique (en général au sommet de l’espace d’adressage) à E/S mappées en mémoire.

•  On a pas besoin d’instructions spécifiques pour lire et écrire dans les registres de contrôle mais on a une consommation d’espace d’adressage.

3. Hybride :

•  Les tampons de données sont mappées en mémoire mais pas les registres de contrôle.

•  Pentium exploite cette architecture (dans IBM PC et compatibles, les adresses de 640 KO à 1 MO sont réservées aux tampons des données des périphériques).

• 

Interface système d’exploitation (SE) : Comment communiquer avec le SE ? (2)

Page 7: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

7

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 13

Comment faire la distinction entre les instructions IN R0 4 et MOV R0 4 ?

•  Lorsque le processeur veut lire un mot à partir de la mémoire ou d’un port d’E/S, il place l’adresse nécessaire sur les lignes d’adressage du bus, puis revendique un signal Read sur la ligne de contrôle du bus suivi d’un signal qui précise s’il s’agit d’une adresse mémoire ou dans l’espace d’E/S.

•  S’il s’agit d’une adresse mémoire, la mémoire répond à la requête. Sinon, c’est le périphérique qui traite la requête.

•  Par contre, pour les E/S mappées en mémoire, chaque module mémoire et chaque périphérique d’E/S comparent les lignes d’adresses à la plage d’adresses qu’ils desservent. La requête est traitée par le composant concerné par cette adresse.

Interface système d’exploitation (SE) : Comment communiquer avec le SE ? (3)

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 14

Mappage vs. non mappage en mémoire

•  On a pas besoin d'instructions supplémentaires pour accéder aux ports d’E/S.

•  SE peut permettre aux usagers d’accéder au périphérique (au besoin).

•  La zone d'adresse réservée aux ports d’E/S ne doit pas être interceptée par la mémoire cache.

LOOP : TEST PORT_4 BEQ READY BRANCH LOOP READY :

•  Si l’ordinateur ne possède qu’un bus, la consultation de chaque adresse par tous est simple. Sinon, une solution serait de disposer de filtres d’adresses.

•  De plus en plus, on retrouve des instructions dédiées et un circuit de gestion des E/S (IOMMU) afin de contrôler les accès aux ports d’E/S (conversion d’adresses virtuelles en adresses physiques).

è Dans tous les cas (E/S mappées ou non), la CPU doit échanger des données (blocs ou flots de caractères) avec les périphériques. Comment procéder (qui fait quoi) ?

Interface système f’exploitation (SE) : Comment communiquer avec le SE ? (4)

Page 8: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

8

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 15

Qui fait quoi ? Les E/S programmées

•  La CPU s’occupe de toute l’opération d’E/S (attente active) :

1. Faire un appel système que le noyau traduit en un appel à une procédure du pilote approprié.

2. Le pilote se charge de démarrer l’E/S quand le périphérique est prêt (transfert octet par octet ou bloc par bloc).

3. Quand celle-ci se termine, le pilote range le cas échéant les informations là où elles sont attendues puis termine en rendant le contrôle à l’appelant.

•  Exemple 3 : E/S mappées en mémoire

•  Les E/S programmées sont simples mais accaparent la CPU.

•  Elles pourraient être intéressantes si les attentes actives sont courtes ou la CPU n’a rien d’autre à faire.

Imprimante (100c/s) => CPU en attente active pendant 10 ms

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 16

Qui fait quoi ? Les E/S pilotées par les interruptions

Il n’y a pas d’attente active. Le périphérique génère une interruption, quand il termine une opération d’E/S : -  On commence par faire un appel

système que le noyau traduit en un appel à une procédure du pilote approprié.

-  Le pilote se charge de démarrer l’E/S quand le périphérique est prêt (octet par octet ou bloc par bloc).

-  Le pilote appelle ensuite l’ordonnanceur (pour bloquer l’appelant et chercher autre chose à faire).

-  Quand le contrôleur détecte la fin de transfert d’un octet, un bloc d’octets ou une erreur, il génère une interruption de fin d’E/S.

-  Quand la CPU décide de prendre en charge l’interruption, elle réalise le traitement associé à l’interruption puis rend le contrôle au programme qui était en cours (si pas de préemption).

Page 9: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

9

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 17

•  Exemple 4 : E/S mappées en mémoire

Qui fait quoi ? Les E/S pilotées par les interruptions (2)

Routine de traitement de l’interruption

Une interruption par caractère à imprimer

•  La mise en mémoire tampon permet de réduire le nombre d’interruptions et les activations de processus pour de courtes périodes (bloquer / débloquer un processus à chaque lecture / écriture d’un caractère entrainant beaucoup de changements de contexte).

•  L’utilisation de tampons circulaires (modèle producteur / consommateur) pour chaque sens de transfert est très répandue.

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 18

Interruptions (contrôleur d’interruptions) : • Lorsqu’un périphérique d’E/S a terminé une requête d’E/S, il déclenche une interruption en émettant un signal sur la ligne de bus auquel il a été assigné.

• Le signal est détecté par la puce du contrôleur d’interruption qui décide de la suite à donner. Si aucune autre interruption n’est en attente, le contrôleur d’interruption la traite immédiatement.

• Sinon, le signal est ignoré pour l’instant. Dans ce cas, le périphérique continue à émettre un signal sur le bus jusqu’à ce qu’il soit servi.

• Pour gérer l’interruption, le contrôleur place le numéro du périphérique sur les lignes d’adressage et émet un signal qui interrompt le processeur. Le numéro qui se trouve sur les lignes d’adressage est utilisé comme index dans le vecteur d’interruption.

• À la réception du signal, le processeur arrête la tâche en cours et commence le traitement de l’interruption.

Qui fait quoi ? Les E/S pilotées par les interruptions (3)

Page 10: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

10

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 19

•  De manière succincte, la routine de traitement de l’interruption consiste à :

1.  Sauvegarder le contexte courant (dans une pile).

2.  Configurer un contexte et une plie pour la routine de service de traitement de l’interruption.

3.  Acquitter l’interruption auprès du contrôleur d’interruptions (ou autoriser à nouveaux les interruptions s’il n’y a pas de contrôleur d’interruptions).

4.  Copier les registres de l’emplacement où ils ont été sauvegardés vers la table des processus.

5.  Exécuter la procédure de service de l’interruption. Cela extraira les informations des registres du contrôleur du périphérique qui a provoqué l’interruption.

6.  Choisir le prochain processus à exécuter, si l’interruption a débloqué un processus.

7.  Charger le contexte d’exécution du processus choisi (la CPU exécute le processus choisi).

Qui fait quoi ? Les E/S pilotées par les interruptions (4)

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 20

•  On dispose d’un composant (puce spéciale) DMA qui contrôle le flux de bits entre la mémoire et un contrôleur de périphérique quelconque sans nécessiter l’intervention de la CPU.

•  La CPU initialise la puce DMA en lui donnant le nombre d’octets à transférer, le périphérique, l’adresse mémoire concernée et le sens du transfert.

•  Quand la puce a terminé le transfert, elle provoque une interruption.

Qui fait quoi ? Les E/S avec DMA

Deux modes de fonctionnement : mode avec un seul mot à la fois (vol de cycle) ou mode bloc (mode rafale)

•  DMA permet de réduire le nombre d’interruptions.

•  CPU beaucoup plus rapide que DMA

Page 11: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

11

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 21 !

!

Qui fait quoi ? Les E/S avec DMA (2)

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 22

E/S synchrones ou asynchrones

Deux types d’E/S :

!!

!!!!

Page 12: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

12

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 23

Exemples de code

•  Logitech Bus Mouse (logibm.c) http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/drivers/input/mouse/logibm.c •  souris USB (usbmouse.c) http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/drivers/hid/usbhid/usbmouse.c?v=2.6.25

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 24

•  Tous les disques sont composés de cylindres qui contiennent autant de pistes qu’il y a de têtes placées verticalement.

•  Les pistes se divisent en secteurs, le nombre de secteurs est compris entre 8 et 32.

•  Tous les secteurs contiennent le même nombre d’octets.

•  Chaque disque a un pilote qui reconnaît et exécute les demandes de lecture/écriture.

•  Chaque demande de lecture/écriture nécessite d’abord de positionner le bras pour ramener la tête de lecture sur le secteur concerné.

Disques

!

Page 13: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

13

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 25

•  S’il y a plusieurs demandes de lecture/écriture, une première solution consiste à traiter les requêtes dans l’ordre d’arrivée (PAPS). Cependant, pour traiter un maximum de demandes en un temps plus court, il serait plus intéressant de minimiser les déplacements du bras.

•  De nombreux pilotes utilisent une table indexée par les numéros des cylindres, où chaque

entrée pointe sur le premier élément d’une liste chaînée des différentes requêtes qui concernent un cylindre.

•  A la fin d’une requête, le pilote doit choisir la prochaine requête à traiter par exemple celle qui concerne le cylindre le plus proche de la position actuelle du bras (plus court déplacement d’abord Shortest Seek First SSF) .

•  Cet algorithme présente un inconvénient. Si de nouvelles requêtes arrivent continuellement concernant des cylindres proches de la position actuelle, le traitement des requêtes qui concernent les cylindres éloignés risquerait d’être retardé indéfiniment.

•  Une autre solution consiste à choisir un sens de parcours (montant ou descendant) puis à servir toutes les requêtes dans cette direction en commençant par les plus proches, jusqu’à épuisement. On inverse alors le sens de parcours et on recommence (l’algorithme de l’ascenseur SCAN). Le déplacement maximum du bras est égal à deux fois le nombre de cylindres.

Disques (2)

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 26

Disques (3) PAPS, SSF, SCAN et C-SCAN (Circular-SCAN)

!!

!!!

!! !

!!

Exemples 5 :

Page 14: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

14

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 27

Horloges

Deux types d’horloges : •  Horloges qui déclenchent une interruption à chaque cycle du

signal électrique sinusoïdal à 50 ou 60 Hz (rares).

•  Horloges programmables qui décrémentent un compteur à chaque impulsion (1 impulsion toutes les 2 ns pour un cristal à 500 MHz) et déclenchent une interruption lorsque le compteur arrive à 0. Ces interruptions périodiques son appelées tops d’horloge (clock ticks).

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 28

Horloges (2)

•  Trois manières possibles de maintenir le temps :

•  Simulation de plusieurs horloges avec une seule horloge :

•  On dispose en général d’une seconde horloge programmable pour gérer des temporisateurs des applications de niveau utilisateur.

Page 15: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

15

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 29 Chapitre 11.29

Chapitre 10 - Systèmes de fichiers

•  Qu’est-ce qu’un système de fichiers ?

•  Stockage des fichiers

•  L’antémémoire

•  La cohérence du système de fichiers •  Partage de fichiers

-  Liens physiques et liens symboliques -  Verrouillage de fichier

•  La protection

•  Systèmes de fichiers UNIX (FFS), Linux Ext2, MS-DOS (FAT) et NTFS

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 30

Qu’est ce qu’un système de fichiers ?

•  Un système de fichiers est la partie du système d’exploitation qui se charge de gérer le stockage et la manipulation de fichiers (sur une unité de stockage : partition, disque, CD, disquette).

•  Avant qu’un système de fichiers puisse créer et gérer des fichiers sur une unité de stockage, son unité doit être formatée selon les spécificités du système de fichiers.

•  Le formatage inspecte les secteurs, efface les données et crée le répertoire racine du système de fichiers.

•  Il crée également un superbloc pour stocker les informations nécessaires à assurer l’intégrité du système de fichiers.

Page 16: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

16

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 31 Chapitre 11.31

Qu’est ce qu’un système de fichiers ? (2) Qu’est ce qu’un fichier ?

•  Un fichier désigne un ensemble de données manipulées comme une seule unité ou individuellement :

-  create, open, close, unlink,

copy, rename, list….

-  read, write…

•  Il a un ensemble d’attributs qui peuvent être regroupés en deux catégories :

-  Les attributs qui servent à contrôler les accès (code de protection, mot de passe, propriétaire …).

-  Les attributs qui définissent le type et l’état courant du fichier (indicateur du type ASCII/binaire, taille courante, location, date de création, date de la dernière modification, …).

•  Pour le système d’exploitation, un fichier est une suite d’octets.

•  Par contre, les utilisateurs peuvent donner des significations différentes au contenu d’un fichier (suites d’octets, suite d’enregistrements, arbre…)

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 32

Qu’est ce qu’un système de fichiers ? (3) Répertoires de fichiers

•  L’organisation des fichiers est hiérarchique dans des répertoires (un graphe acyclique).

Chemin d’accès : •  Racine : “/” Linux, “C:\“ Windows •  Séparateur de répertoire : “/” Linux, “\” Windows •  Répertoire courant: “.”

•  Répertoire parent : “..” •  Chemin absolu: /jim/mail •  Chemin relatif au répertoire /jim:

–  ./mail –  ../avi/mail

Page 17: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

17

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 33 Chapitre 11.33

Qu’est ce qu’un système de fichiers ? (4) Montage de systèmes de fichiers

•  Le montage permet de regrouper dans une même structure hiérarchique plusieurs systèmes de fichiers.

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 34 Chapitre 11.34

Stockage des fichiers

•  Chaque fichier (ordinaire ou répertoire) d’un système de fichiers est stocké sur l’unité de stockage du système de fichiers.

•  Ses données sont dans des blocs de taille fixe (512, 1024, ou 2048 octets, …).

•  À chaque fichier est alloué un nombre de blocs. Le bloc est l’unité d’allocation => fragmentation interne

•  La lecture ou l’écriture d’un élément d’un fichier impliquera le transfert vers la mémoire du bloc entier qui contient cet élément.

•  Le système de fichiers conserve, dans un ou plusieurs blocs spécifiques (superblocs), un certain nombre d’informations telles que le nombre de ses blocs, leur taille, la liste des blocs libres….

•  Pour pouvoir récupérer l’état des blocs (libre ou alloué), les systèmes de fichiers maintiennent :

-  une liste chaînée des blocs libres ou

-  une table de bits contenant un bit pour chaque bloc (0 pour libre).

•  Les blocs d’un même fichier sont contiguës ou non contiguës

Page 18: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

18

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 35

Stockage des fichiers (2) Allocation contiguë

(a) Allocation d’espace disque pour 7 fichiers

(b) Suppression des fichiers D et F

⇒  Fragmentation externe

⇒  Facile à implémenter

⇒  Bonne performance de lecture

•  CD-ROM utilise l’allocation contiguë (car on connait la taille des fichiers à l’avance.

•  DVD sont stocker des fichiers consécutifs de 1 GO car pour les DVD la norme limite la taille d’un fichier à 1 GO.

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 36

Stockage des fichiers (3) Allocation non-contiguë : Chaînage des blocs / table d’index

Pas pratique pour un accès direct à un bloc

⇒  Élimime la fragmentation externe ⇒  Temps d’accès à bloc important (accès à tous les blocs qui le précèdent) Table d’index (File Allocation Table (FAT), Windows) •  Table trop grande (ex. Un disque de 200 GO avec des blocs de 1 KB, cette

table nécessite 600 MO). •  La taille de la table croit linéairement avec la taille du disque.

Page 19: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

19

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 37

Stockage des fichiers (4) Allocation non-contiguë : Tables d’index des i-noeuds

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 38

Stockage des fichiers (5) Taille des blocs

Quelle taille choisir ? (1KO, 4KO à 64 KO) •  Petite taille à augmente le nombre de blocs à impact important sur le temps d’accès •  Grande taille à réduit le nombre de blocs à impact sur le taux d’occupation

•  Tous les fichiers sont de 4 KO •  Taux de remplissage du disque en fonction de la taille des blocs (1KO, 2KO, 4KO,. , 1MO)

-  Pour des blocs de taille 1, 2 ou 4 KO, les fichiers vont resp. occuper 4, 2, 1 blocs. -  Pour des blocs de 8KO, 1 bloc est alloué à chaque fichier (il occupera 50%).

•  Vitesse de transfert en fonction de la taille des blocs (le temps de lecture d’un bloc en ms est : 5+ 4,165 + (k/1000000)x 8.33).

Page 20: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

20

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 39

Stockage des fichiers (6) Gestion des blocs libres

•  Vector bit (1 bit par bloc , n blocs)

•  Liste chaînée

… 0 1 2 n-1

bit[i] =

0 ⇒ bloc[i] est libre

1 ⇒ bloc[i] est alloué

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 40

Performances peuvent être améliorées par :

•  Des Représentations adéquates des répertoires et des fichiers,

•  Des Algorithmes efficaces de gestion d’espace libres et des répertoires.

•  Un cache disque (antémémoire) pour les blocs fréquents.

•  Des lectures anticipées ou placement des blocs d’un même fichier l’un à la suite de l’autre.

Stockage des fichiers (7) Performance d’un système de fichiers

Page 21: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

21

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 41 Chapitre 11.41

L’antémémoire

•  Les processus ne peuvent pas manipuler directement les données du disque. Ils doivent être déplacés en mémoire centrale.

•  De nombreux systèmes de fichiers cherchent à réduire le nombre d’accès au disque car le temps d’accès moyen au disque est égal à quelques dizaines de millisecondes.

•  La technique la plus courante pour réduire les accès au disque, consiste à utiliser une antémémoire (buffer cache ou block cache).

•  L’antémémoire est un espace de la mémoire centrale réservé aux transferts de blocs de données du disque.

•  A chaque demande d’accès à un élément d’un fichier, on examine d’abord si le bloc désiré (celui qui contient l’élément du fichier) se trouve dans l’antémémoire.

•  Si c’est le cas, la demande est satisfaite sans avoir à accéder au disque.

•  Sinon, pour satisfaire la demande, le bloc désiré doit être d’abord chargé à partir du disque dans l’antémémoire.

•  S’il faut charger un bloc et que l’antémémoire est pleine, il faut retirer un des blocs de l’antémémoire pour le remplacer par celui demandé. Le bloc retiré doit être recopié sur le disque s’il a été modifié depuis son chargement.

•  Pour choisir le bloc à retirer, il est possible d’utiliser un des algorithmes de remplacement de pages (FIFO, LRU, etc.).

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 42 Chapitre 11.42

L’antémémoire (2) Problème

•  Si des blocs placés dans l’antémémoire ont été modifiés et une panne survient avant de les copier sur disque, le système de fichiers passe dans un état incohérent.

•  Pour minimiser les risques d’incohérence, le système Unix, recopie les blocs contenant les i-nœuds et les répertoires immédiatement après leur modification.

•  Les blocs de données ordinaires sont recopiés s’ils doivent être retirés de l’antémémoire ou automatiquement par un démon toutes les 30 secondes. On peut également déclencher ce démon par l’appel système sync().

•  Dans MS-DOS, les blocs de l’antémémoire sont recopiés sur disque à chaque modification.

•  L’antéménoire n’est pas la seule façon d’améliorer les performances d’un système de fichiers. Une autre technique consiste à réduire le temps de recherche du bloc dans le disque (voir la séance suivante).

Page 22: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

22

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 43

Partage de fichiers Liens physiques et liens symboliques

•  Un lien est une entrée d’un répertoire qui référence un fichier (ordinaire ou répertoire) qui se trouve dans un autre répertoire.

•  Les liens facilitent la navigation dans le système de fichiers et le partage de fichiers.

•  Deux types de liens :

-  Liens physiques

-  Liens symboliques :

Liens physiques :

•  La référence est dans ce cas un numéro d’i-nœud. Plusieurs chemins d’accès sont donc associés à un même fichier physique.

•  Ce type de lien est possible uniquement si les chemins d’accès font références uniquement à des répertoires gérés par un même système de fichiers.

•  L’appel système qui permet de créer un lien physique :

int link(char* oldpath, char* newpath)

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 44

Partage de fichiers (2) Liens physiques et liens symboliques

•  Par exemple, l’appel système link(ʺ″origrefʺ″, ʺ″../autrerefʺ″) opère comme suit :

-  Il recherche dans le répertoire courant l’entrée du fichier ʺ″origrefʺ″ puis récupère son numéro du i-nœud. Il incrémente le nombre de références à l’i-nœud (link count).

-  Il ajoute dans le répertoire père du répertoire courant une entrée :

-  (ʺ″autrerefʺ″, numéro d’i-nœud du fichier ʺ″origrefʺ″).

•  La commande shell équivalente à link est : ln oldpath newpath

•  Les deux chemins désignent le même fichier (newpath et oldpath référencent le même fichier).

•  Une fois les liens établis, le fichier pourra être désigné par l’un des deux noms (chemins d’accès).

Page 23: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

23

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 45

Partage de fichiers (3) Liens physiques et liens symboliques

jupiter% cat origref

exemple de fichier avec plusieurs références

jupiter% ln origref ../autreref

jupiter% ls -l origref ../autreref

-rw------- 2 bouchene professeur 45 nov 15 11:06 origref

-rw------- 2 bouchene professeur 45 nov 15 11:06 autreref

jupiter% cat ../autreref

exemple de fichier avec plusieurs références

jupiter% rm origref

rm : supprimer origref (yes/no) ? y

jupiter% ls -l origref ../autreref

origref: Ce fichier ou ce répertoire n'existe pas

-rw------- 1 bouchene professeur 45 nov 15 11:06 autreref

jupiter% cat ../autreref

exemple de fichier avec plusieurs références

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 46

Partage de fichiers (4) Liens physiques et liens symboliques

Problèmes :

•  Les liens physiques peuvent devenir invalides après une opération de défragmentation ou tout autre entraînant la modification des i-nœuds.

•  Il y a risque de traiter plusieurs fois un même fichier physique.

clés LMine

758 120

120

.

. . . . .

.

. . Répertoire i-noeud 2

Répertoire i-noeud 342

Marc Jean

Mine

Répertoire i-noeud 256

Page 24: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

24

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 47

Partage de fichiers (5) Liens physiques et liens symboliques

•  L’appel système unlink permet de supprimer un lien physique à un fichier : int unlink(char * path)

•  Il supprime la référence path à un fichier. Si le fichier n’a plus de référence, il est supprimé du disque.

Par exemple, unlink (ʺ″origrefʺ″) opère comme suit :

•  Il localise, dans le répertoire courant, l’entrée telle que le nom de fichier est ʺ″origrefʺ″.

•  Il récupère le numéro de l’i-nœud puis supprime cette entrée du répertoire.

•  Il décrémente le nombre de références au i-nœud.

•  Si le nombre de références devient égal à 0, le fichier est supprimé du disque (blocs des données et i-nœud).

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 48

Partage de fichiers (6) Liens physiques et liens symboliques

Liens symboliques :

•  La référence est dans ce cas un chemin d’accès (un pointeur indirect).

•  Les liens symboliques permettent de créer des liens vers des fichiers qui ne sont pas forcément gérés par le même système de fichiers.

•  La destruction d’un lien symbolique vers un fichier n’affecte pas le fichier.

•  La commande shell d’UNIX qui crée des liens symboliques est ln avec l’option s pour symbolique. L’appel système est symlink

Par exemple,

•  la commande «ln –s /usr/include/stdio.h stdio.h» crée une nouvelle entrée dans le répertoire courant pour un nouveau fichier dont le nom est stdio.h.

•  Le contenu de ce nouveau fichier est le chemin d’accès «/usr/include/stdio.h ». Le type du fichier créé est link (l).

Page 25: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

25

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 49

Partage de fichiers (7) Liens physiques et liens symboliques

fich1 467

fich2 843

: : fich1_physique 467

fich1_symbolique ./fich1

Lien physique vers fich1

Lien symbolique vers fich1

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 50

Partage de fichiers (8) Liens physiques et liens symboliques

Problèmes :

•  Les liens symboliques vers un fichier deviennent invalides après suppression ou déplacement du fichier.

•  Il y a risque de traiter plusieurs fois un même fichier physique.

./fich1 fich1_symbolique

467 fich1_physique

: :

843 fich2 467 fich1

Lien physique vers fich1

Page 26: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

26

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 51 Chapitre 10.51

Partage de fichiers (9) Liens physiques et liens symboliques

jupiter% ln /usr/include/stdio.h stdio.h

ln : stdio.h : se trouve dans un système de fichiers différent

jupiter% ln –s /usr/include/stdio.h stdio.h

jupiter% ls –l stdio.h

lrwxrwxrwx 1 inf3600 cours 20 nov 21 09 : 15 stdio.h -> /usr/include/stdio.h

jupiter% cat stdio.h

//cette commande affiche le contenu du fichier /usr/include/stdio.h

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 52

Partage de fichiers (10) Verrouillage de fichier

•  Les processus qui désirent effectuer des accès exclusifs à un fichier peuvent verrouiller, en une seule opération atomique, aussi bien un octet qu’un fichier entier.

•  Deux sortes de verrouillage sont disponibles : partagé et exclusif.

•  Si une portion d’un fichier est verrouillée par un verrou partagé, une seconde tentative d’y superposer un verrou partagé est autorisée, mais toute tentative d’y poser un verrou exclusif sera rejetée tant que le verrou n’est pas relâché.

•  Si une partie de fichier contient un verrou exclusif, toute tentative d’en verrouiller une quelconque portion sera rejetée tant que le verrou n’est pas relâché.

•  Lorsqu’un processus demande la pose d’un verrou, il doit spécifier s’il veut être mis en attente (bloqué) dans le cas où le verrou ne peut être posé.

•  S’il choisit d’être bloqué, lorsque le verrou existant sera levé, le processus sera débloqué et son verrou pourra être posé.

•  S’il ne veut pas être bloqué, l’appel système se termine immédiatement, avec un code qui indique si le verrouillage a pu être ou non effectué.

Page 27: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

27

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 53

Partage de fichiers (11) Verrouillage de fichier : Exemple

•  4 processus concurrents A, B, C et D partagent un même fichier. Les processus font dans les l’ordre les demandes de verrouillage suivantes :

- Le processus A demande la pose d’un verrou partagé sur les octets 4 à 7 du fichier.

- Le processus B demande de mettre un verrou partagé sur les octets 6 à 9.

- Le processus C demande la pose d’un verrou partagé sur les octets 2 à 11.

- Enfin, le processus D demande un verrouillage exclusif de l’octet 9 avec une requête bloquante en cas d’échec.

Verrou partagé de A Verrou partagé de B

Verrou partagé de C

1 2 3 4 5 6 12 11 10 9 8 7 0

Le processus D est bloqué jusqu’à ce que l’octet 9 devienne libre ( jusqu’à ce que B et C libèrent leurs verrous).

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 54

Partage de fichiers (12) Verrouillage de fichier : Appels système

•  Le système UNIX offre plusieurs appels système pour poser ou libérer des verrous sur des parties d’un fichier (fcntl, lockf etc).

•  L’appel système lockf est l’un des plus simples :

int lockf(int fd, int function, int size) ;

-  Il permet d’effectuer l’action indiquée par « function » sur la partie de taille size (nombre d’octets), pointée par le pointeur de fichier.

-  fd est le descripteur du fichier. Le mode d’ouverture doit être O_WRONLY ou O_RDWR.

-  lockf retourne 0 en cas de succès et –1 en cas d’échec.

-  function indique l’action à faire :

Ø  F_ULOCK libère le verrou posé sur la partie spécifiée par le pointeur de fichier et size (nombre d’octets).

Ø  F_LOCK pose un verrou (bloquante). Le processus n’est pas mis en attente si le système détecte un interblocage.

Ø  F_TLOCK pose un verrou (non bloquante). Si la partie à verrouiller n’est pas libre, l’appel système lockf retourne –1.

Ø  F_TEST teste si la partie spécifiée est verrouillée. Si la partie n’est pas libre (verrouillée), l’appel système lockf retourne –1.

Page 28: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

28

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 55 Chapitre 10.55

Partage de fichiers (13) Verrouillage de fichier : Exemple 1

// programme partage.c

#include <unistd.h>

int main ( )

{ int i, fd=1;

if(fork())

{ for(i=0; i<5; i++)

{ write(fd,"pere ecris \n",13); sleep(1); }

} else {

for(i=0; i<4; i++)

{ write(fd,"fils ecrit \n",12); sleep(1); }

}

return 0;

}

jupiter% gcc partage.c -o partage jupiter% partage pere ecrit fils ecrit fils ecrit pere ecrit fils ecrit pere ecrit fils ecrit pere ecrit pere ecrit jupiter%

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 56

Partage de fichiers (14) Verrouillage de fichier : Exemple 2

#include <unistd.h>

#include <fcntl.h>

#include <sys/wait.h>

int main ( )

{ int i, fd=1;

if(fork()) //il s’agit du père

{ lseek(fd,0,0);

if( lockf(fd, F_LOCK,1) <0)

{ write(fd,"pere lockf failed",18); return(-1); }

for (i=0; i<5; i++)

{ write(fd,"pere ecrit \n",13); sleep(1); }

write(fd,"père va libérer le verrou\n",26);

lseek(fd,0,0); lockf(fd,F_ULOCK,0);

wait(NULL);

}

else // il s’agit du fils { lseek(fd,0,0); // verrouillé l’octet 0 if( lockf(fd, F_LOCK,1) <0) { write(fd,"fils lockf failed\n",18);

return (-1); } for (i=0; i<4; i++) { write(fd,"fils ecrit \n",12);

sleep(1); } write(fd,"fils va libérer le verrou\n",26); lseek(fd,0,0); lockf(fd,F_ULOCK,0); } close(fd); return 0; }

Page 29: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

29

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 57

Partage de fichiers (15) Verrouillage de fichier : Exemple 2 (suite)

jupiter% lockf fils ecrit fils ecrit fils ecrit fils ecrit fils va libérer le verrou pere ecrit pere ecrit pere ecrit pere ecrit pere ecrit père va libérer le verrou

jupiter% lockf pere ecrit pere ecrit pere ecrit pere ecrit pere ecrit père va libérer le verrou fils ecrit fils ecrit fils ecrit fils ecrit fils va libérer le verrou

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 58 Chapitre 10.58

La cohérence du système de fichiers

Systèmes de fichiers journalisés

•  Un système de fichiers journalisé (NTFS de Windows et Linux ext3) enregistre dans un journal un événement qui contient la liste des actions à réaliser. Cet événement est effacé lorsque les actions associées sont réalisées.

•  Si le système se plante, le système de fichiers peut lire le journal pour vérifier si des actions sont en cours. Si c’est le cas, ces actions sont exécutées (valables pour les actions idempotentes ou transaction atomique).

•  À la suite d’un arrêt forcé, la vérification de la cohérence peut aussi se faire à deux niveaux : blocs ou fichiers.

Au niveau des blocs :

•  Au niveau des blocs, le vérificateur construit deux tables.

•  La première indique pour chaque bloc occupé, le nombre de fois où le bloc est référencé dans les i-nœuds des fichiers.

•  La seconde indique pour chaque bloc libre le nombre de fois où il figure dans la liste des blocs libres (ou la table de bits des blocs libres).

•  Si le système de fichiers est cohérent, chaque bloc a un 1 soit dans la première table, soit dans la seconde.

Page 30: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

30

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 59 Chapitre 10.59

La cohérence du système de fichiers (2) Au niveau des blocs

•  Si un bloc n’apparaît ni dans la première table, ni dans la deuxième, le bloc est dit manquant. Le vérificateur ajoute les blocs manquants à la liste des blocs libres.

•  Si le bloc apparaît deux fois dans la liste des blocs libres, le vérificateur reconstruit la liste des blocs libres.

•  Le pire qui puisse arriver est qu’un bloc appartienne à deux fichiers (ou plus). Si on détruit l’un des deux fichiers, le bloc sera placé dans la liste des blocs libres (il sera alors à la fois libre et utilisé). Si on détruit les deux fichiers, le bloc figurera deux fois dans la liste des blocs libres.

•  Dans ce cas, la meilleure solution consiste à allouer un bloc libre, à y copier le bloc commun et à remplacer le bloc commun dans l’un des deux fichiers par le nouveau.

•  La dernière possibilité d’incohérence dans les deux tables est qu’un bloc soit, à la fois, utilisé et libre. La solution dans ce cas consiste à retirer le bloc de la liste des blocs libres.

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 60 Chapitre 10.60

La cohérence du système de fichiers (3) Au niveau des blocs

Page 31: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

31

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 61 Chapitre 10.61

La cohérence du système de fichiers (4) Au niveau des fichiers

•  Le vérificateur vérifie la cohérence du point de vue des liens. Chaque numéro de nœud d’index (i-nœud) doit apparaître autant de fois dans la structure arborescente qu’il possède de liens.

•  Il commence au catalogue racine et parcourt récursivement toute l’arborescence pour déterminer pour chaque numéro d’i-nœud le nombre de références.

•  Il compare ensuite le nombre de références obtenu pour chaque numéro d’i-nœud avec celui contenu dans l’i-nœud correspondant.

•  Si les deux nombres sont différents, le système est dans un état incohérent. La solution consiste à corriger dans l’i-nœud, la valeur du nombre de références.

•  Dans la plupart des systèmes Unix, le programme fsck effectue cette tâche à chaque démarrage, si nécessaire (man fsck pour plus de détails).

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 62 Chapitre 10.62

La protection

•  Les systèmes de fichiers contiennent parfois des informations très importantes. Ils doivent donc protéger ces informations contre les accès non autorisés et les pertes (assurer la fiabilité).

•  Les causes des pertes sont les catastrophes naturelles, les erreurs matérielles ou logicielles, les erreurs humaines.

•  La plupart de ces problèmes peuvent être résolus par sauvegardes régulières ou par redondance (réseau redondant de disques (RAID Redundant Array of Independent Disks).

•  Le problème des intrus est beaucoup plus complexe. Pour assurer la protection contre les intrus plusieurs mécanismes ont été mis en œuvre, par exemple :

-  identification de l’utilisateur (mots de passe ou identification physique…)

-  code de protection des objets

-  Cryptage et décryptage des données….

•  Le propriétaire/créateur d’un fichier peut spécifier les permissions d’accès au fichier : Read, Write, Execute …

Page 32: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

32

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 63

Système de fichiers FAT ( MS-DOS, clés USB)

•  La FAT permet de localiser les blocs de chaque fichier du système de fichiers.

•  Elle comporte une entrée pour chaque bloc de l’unité de stockage.

•  Le numéro du premier bloc d’un fichier est un attribut du fichier.

•  Structure d’un répertoire (cas de MS-DOS)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 …

X X EOF 13 2 9 8 L 4 12 3 E EOF EOF L …

Boot Deux copies de la FAT

Répertoire Racine

Données et Répertoires

Disque

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 64

Système de fichiers FAT (2)

Page 33: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

33

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 65

Système de fichiers d’UNIX (FFS)

Mode

Link count

UID

GID

File size

Times

Address of the first block

Address of the second block

… Address of the 10 block

Pointeur indirect simple

Pointeur indirect double

Pointeur indirect triple

Table d’index

Structure d’un i-noeud Structure d’un répertoire

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 66

Système de fichiers d’UNIX (FFS) (2)

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 66

Système de fichiers d’UNIX (FFS) (2)

Page 34: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

34

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 67

Système de fichiers d’UNIX (FFS) (3)

•  Les i-nœuds de tous les fichiers d’un même système de fichiers sont regroupés dans une même table -> la table des i-nœuds.

•  Chaque i-nœud est identifié par un numéro -> sa position dans la table.

•  Pour faciliter l’accès aux fichiers, le système maintient en mémoire une table contenant tous les fichiers ouverts -> la table des fichiers ouverts.

•  Chaque entrée de la table contient notamment :

Mode d’ouverture, Pointeur de fichier, Numéro d’i-nœud,…

•  L’opération d’ouverture ou de création de fichier retourne un descripteur de fichier qui contient un pointeur vers la table des fichiers ouverts.

•  Les descripteurs d’un même processus sont rassemblés dans une table -> la table des descripteurs de fichier du processus). Lorsqu’un processus est créé par un fork, la table des descripteurs du père est dupliquée.

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 68

Système de fichiers d’UNIX (FFS) (4)

Relation entre la table des descripteurs de fichiers et la table des fichiers ouverts

Page 35: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

35

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 69

Système de fichiers de Linux Ext2

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 70

Système de fichiers NTFS (Windows)

•  Chaque volume (partition) NTFS contient des fichiers, des répertoires, des bitmaps et d’autres structures de données. volume = {blocs = clusters= 512octets à 64ko} en général = 4ko

•  La structure de données principale est Master File Table MFT = { enregistrements de 1ko}

•  Chaque enregistrement décrit un fichier ou un répertoire.

•  Un fichier ou un répertoire très long peut avoir plusieurs enregistrements chaînés.

•  Une bitmap permet de récupérer les enregistrements libres dans la MFT.

•  MFT est aussi un fichier.

Page 36: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

36

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 71

Système de fichiers NTFS (Windows) (2)

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 72

Système de fichiers NTFS (Windows) (3) Les attributs de la « Master File Table »

Chaque entrée de la table décrit un fichier ou un répertoire

Page 37: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

37

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 73

Système de fichiers NTFS (Windows) (4) 1 fichier -> une entrée de la MFT

Une entrée de la MFT -> Un fichier de 3 groupes de blocs

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 74

Système de fichiers NTFS (Windows) (5) 1 fichier -> plusieurs entrées de la MFT

Un fichier nécessitant 3 entrées de la MFT

Page 38: Noyau d'un système d'exploitation INF2610 Chapitre … · 2014-01-06 2 Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal

2014-01-06

38

Noyau d'un système d'exploitation Génie informatique et génie logiciel Ecole Polytechnique de Montréal Chapitre 10 - 75

Exercice

•  On considère un système disposant d’un système de fichiers similaire à celui d’UNIX avec une taille de blocs de données de 4KO (4096 octets) et des pointeurs (numéros de blocs) définies sur 4 octets.

•  On suppose que le i-noeud de chaque fichier compte 12 pointeurs directs, 1 pointeur indirect simple, 1 pointeur indirect double et 1 pointeur indirect triple.

•  On désire créer un fichier contenant un total de 20.000.000 (vingt millions) de caractères (caractères de fin de ligne et de fin de fichier compris).

•  Quelle est la fragmentation interne totale sur le disque résultant de la création de ce fichier ?

-  20 000 000 octets = 4882 * 4096 + 3328 octets

-  4883 = 12 + 4096 + 775

-  4096 – 3328 = 768