\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.
