\chapter{Systèmes de fichiers} \section{Généralités} \begin{itemize} \item Persistande des informations \item Partage d'informations (entre les processus, ...) \end{itemize} La notion de fichier apporte une espace de stockage important, un stockage statique de l'information et une indépendance vis-à-vis des processus qui l'utilisent ou l'ont utilisés. \subsection{Structure} \begin{itemize} \item \textbf{Fichiers~:} unité logique de stockage d'information. \item \textbf{Répertoire~:} organisation logique de l'information. \item \textbf{Partitions~:} organisation de plus haut niveau. \end{itemize} On a une vision logique et uniformisée de l'information. Les caractéristiques physiques du stockage font une abstraction des caractéristiques physiques. Les formats, type du système sont choisis par le créateur. \subsection{Méthodes d'accès} \subsubsection{Accès séquentiel} Méthode historique, basé sur le modèle des bandes magnétiques~: pointeur de lecteur/écriture (offset) automatiquement incrémenté. Et des privitives de positionnement (seek). \subsubsection{Accès direct/relatif} \og Random access\fg, modèle des disques durs.\\ Les primitives de lecture et d'écriture sont paramétrées par un numéro de bloc relatif. Un fichier est vu comme un enregistrement de blocs de taille fixe. \subsubsection{Remarques} \begin{itemize} \item Certains systèmes fournissent plusieurs méthodes d'accès, comme IBM. \item Le mode d'accès peut faire partie du type de fichier. \item Il est trivial d'implémenter l'accès séquentiel à partir de l'accès de l'accès direct. \end{itemize} \subsection{Table de fichiers (ouverts)} Mise en cache des descripteurs de fichiers actuellement utilisés \section{Organisation des systèmes de fichiers} \subsection{Macro-niveaux d'organisation} \begin{itemize} \item \textbf{Partition~:} \og mini-disque\fg (chez IBM), \og volume\fg (chez Mac).\\ Selon les systèmes, plusieurs partitions par disques, ou plusieurs disques par partitions. \item \textbf{Répertoire~:} analogue à une table des symboles. Contient des informations sur les fichiers sous-jacents (nom, emplacement, taille, type\ldots). \end{itemize} \subsection{Niveaux de répertoires} \subsubsection{Niveau 1} Structure simpliste d'une unique répertoire. On a des problèmes d'unicité des noms (11 caractères pour MS-DOS et 255 pour Unix). \subsubsection{Niveau 2} Un répertoire principal (\og MFD\fg) contient des répertoires utilisateurs (\og UFD\fg). Accès implicite à son propre UFD. On voit apparaître la notion de session (login/password). \subsubsection{Nommage} \paragraph{MS-DOS~:} \verb+C:\dupont\test.exe+ \paragraph{Unix~:} \verb+/var/spool/mail/dupont+ \paragraph{VAX-VMS~:} \verb+u:[dir1.dir2]foo.com;1+ \section{Méthode d'allocation} \subsection{Allocation contiguë} Les fichiers sont stockés par blocs contigus sur le disque.\\ Le temps de positionnement des têtes est minimal. Accès direct et séquentiel faciles à implémenter. Problèmes~: fragmentation interne s'il y a trop d'espace ; pas assez d'espace~: déplacement couteux des fichiers ; pas toujours possible.\\ Utilisé sur les CD et DVD. \subsection{Allocation chaînée} Chaque bloc se termine par un pointeur sur le bloc suivant.\\ Une entrée de répertoire contient un pointeur sur le premier bloc. Pas de fragmentation externe, pas de limite de taille. Mais accès direct inefficasse. Au niveau de la fiabilité, la perte d'un pointeur est critique. \subsection{File Allocation Table (FAT)} Il y a une FAT au début de chaque partition. Il s'agit d'une table indexée par numéros de bloc. Chaque entrée pointe sur le numéro de bloc suivant. Une entrée de répertoire contient un pointeur sur le premier bloc. \subsection{Allocation indexée} Chaque fichier possède un bloc d'index. Une entrée de répertoire pointe sur le bloc d'index La ie entrée du bloc d'index pointe sur le ue bloc de donnée du fichier. La table des i-nodes est de taille proportionnelle au nombre de fichiers. Par contre, la fragmentation interne est plus grande qu'avec l'allocation chaînée et un problème de taille des inodes.