This repository has been archived on 2021-03-01. You can view files and clone it, but cannot push or open issues or pull requests.
cours-ing1/OS/7-memoirevirtuelle.tex

64 lines
2.3 KiB
TeX

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