\subsection{Algorithme de l'ensemble de travail (WS), 1970}

\textbf{Phénomène de localisation~:} l'ensemble des pages référencées
dépend de \og phases\fg{} dans l'exécution.

\subsection{Bufferisation}

Maintenir un ensemble de cadres de pages libres en permanance.
Lorsqu'un processus demande un nouveau cadre, on sélectionne une
victime, mais on ne la supprime pas tout de suite.

On attend que le MMU soit inactif pour le faire.\\

Implémentation grâce à un \og paging daemon\fg.

\section{Problèmes liés à la conception}

\subsection{Politiques de sélection des pages}

Deux politiques sont possibles~:
\begin{itemize}
  \item \textbf{Allocation globale~:} considérer toutes les pages
    actuellement en mémoire.
  \item  \textbf{Allocation locale~:} lorsque l'on choisit une
    victime, on va chercher a supprimer une page du processus
    courant.
\end{itemize}

\subsection{Répartition des cadres de page}

\begin{itemize}
  \item \textbf{Allocation équitable~:} chaque processus a un nombre
    de cadres de pages identiques aux autres processus.
  \item \textbf{Allocation proportionnelle~:} on alloue un nombre de
    cadre de page en fonction de la taille du processus.
  \item \textbf{Allocation mixte~:} on effectue une allocation
    proportionelle, en regardant aussi la priorité du processus.
  \item \textbf{Prépagination~:} on commence a allouer les premières
    pages du processus (\_start, main, ...) pour éviter le grand nombre
    de défaut de page au lancement.
\end{itemize}

\subsection{Autres}

\textbf{Contrôle de charge~:} gérer \og l'écroulement\fg{} (la somme
des ensembles de travail dépasse la capacité
mémoire). Swapping/refuser d'en faire plus...\\

\paragraph{Pages partagées~:} en allocation locale, on peut supprimer une
page partagée non utilisé dans un processus donné, mais très utilisée
par d'autres processus.

\paragraph{Structure des programmes~:} la manière dont on organise le
code a une incidence sur le pagineur.

\paragraph{Vérouillage des E/S~:} il faut a tout prix éviter
l'éviction d'une page qui est en attente d'une E/S. Pour cela, on
utilise le bit verrou.\\
On peut aussi utiliser ce bit pour vérouiller les pages d'un programme
nouvellement chargé en mémoire.

\section{Problèmes liés à l'implémentation}

