2012-01-30 14:05:18 +00:00
|
|
|
\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
|
2012-06-19 16:15:40 +00:00
|
|
|
pages du processus (\_start, main, ...) pour éviter le grand nombre
|
2012-01-30 14:05:18 +00:00
|
|
|
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}
|
|
|
|
|