From 80894586ca62d615c374e26f769d52143bb1ae77 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Sun, 1 Jul 2001 09:21:06 +0000 Subject: [PATCH] Aggiunto materiale su memory locking --- process.tex | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/process.tex b/process.tex index 333dea8..6058959 100644 --- a/process.tex +++ b/process.tex @@ -643,6 +643,33 @@ si possono avere queste necessit richiedono il blocco di alcune pagine di memoria. \end{itemize} +Il meccanismo che previene la paginazione di parte della memoria virtuale di +un processo è chiamato \textit{memory locking} (blocco della memoria), il +blocco è sempre associato alle pagine della memoria virtuale del processo, non +con il segmento reale di ram su cui essa viene mantenuta. + +La regola è che se un segmento di ram fa da supporto ad almeno una pagina +bloccata allora esso viene escluso dal meccanismo della paginazione. I blocchi +non si accumulano, se si blocca due volte la stessa pagina non è necessario +sbloccarla due volte, una pagina o è bloccata o no. + +Il blocco di memoria persiste fintanto che il processo che lo detiene la +memoria bloccata non la sblocca. Chiaramente la terminazione del processo +comporta anche la fine dell'uso della sua memoria virtuale, e quindi anche di +tutti i blocchi di memoria. + +I memory lock non sono ereditati dai processi figli\footnote{ma siccome Linux + usa il copy on write gli indirizzi virtuali del figlio sono mantenuti sullo + stesso segmento di ram del padre, quindi usufruiscono dei memory lock di + questo}. Siccome la presenza di memory lock ha un impatto sugli altri +processi solo root ha la capacità di bloccare una pagina, ogni processo può +però sbloccare le sue pagine. Il sistema pone dei limiti all'ammontare di +memoria di un processo che può essere bloccata e al totale di memoria fisica +che può dedicare a questo. + + + + \section{Il controllo di flusso non locale} \label{sec:proc_longjmp} -- 2.30.2