X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=dcad87688627b3e71577586a24b12835bb8941a4;hp=c7f441d784a5c76a8d88151bd2cab8356f042cb1;hb=2bb235e9ba8e8d532251205d30b82455dc119894;hpb=432c8645b755cad22c7b9d4b291ea09432eb7f0f diff --git a/prochand.tex b/prochand.tex index c7f441d..dcad876 100644 --- a/prochand.tex +++ b/prochand.tex @@ -290,12 +290,19 @@ il processo figlio continuano ad essere eseguiti normalmente alla istruzione seguente la \func{fork}; il processo figlio è però una copia del padre, e riceve una copia dei segmenti di testo, stack e dati (vedi \secref{sec:proc_mem_layout}), ed esegue esattamente lo stesso codice del -padre, ma la memoria è copiata, non condivisa,\footnote{In generale il segmento - di testo, che è identico, è condiviso e tenuto in read-only, Linux poi - utilizza la tecnica del \textit{copy-on-write}, per cui la memoria degli - altri segmenti viene copiata dal kernel per il nuovo processo solo in caso - di scrittura, rendendo molto più efficiente il meccanismo della creazione di - un nuovo processo.} pertanto padre e figlio vedono variabili diverse. +padre. Si tenga presente però che la memoria è copiata, non condivisa, pertanto +padre e figlio vedono variabili diverse. + +Per quanto riguarda la gestione della memoria in generale il segmento di +testo, che è identico, è condiviso e tenuto in read-only per il padre e per i +figli. Per gli altri segmenti Linux utilizza la tecnica del \textit{copy on + write}\index{copy on write}; questa tecnica comporta che una pagina di +memoria viene effettivamente copiata per il nuovo processo solo quando ci +viene effettuata sopra una scrittura (e si ha quindi una reale differenza fra +padre e figlio). In questo modo si rende molto più efficiente il meccanismo +della creazione di un nuovo processo, non essendo più necessaria la copia di +tutto lo spazio degli indirizzi virtuali del padre, ma solo delle pagine di +memoria che sono state modificate, e solo al momento della modifica stessa. La differenza che si ha nei due processi è che nel processo padre il valore di ritorno della funzione \func{fork} è il \acr{pid} del processo figlio, mentre @@ -1875,6 +1882,7 @@ Questa viene in genere indicata con un numero + \subsection{Il meccanismo di \textit{scheduling} standard} \label{sec:proc_sched_stand} @@ -1883,6 +1891,10 @@ possibile specificare una priorit (argomento che tratteremo più avanti) l'uso comune segue quello che è il meccanismo tradizionale con cui i sistemi +\subsection{Il meccanismo di \textit{scheduling real-time}} +\label{sec:proc_real_time} + +Per settare le