TEMA 2. GESTIÃN DE PROCESOS - Universidad de AlmerÃa
TEMA 2. GESTIÃN DE PROCESOS - Universidad de AlmerÃa
TEMA 2. GESTIÃN DE PROCESOS - Universidad de AlmerÃa
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Diseño <strong>de</strong> Sistemas Operativos<br />
Tema <strong>2.</strong> Gestión <strong>de</strong> Procesos<br />
• Liberar una Región.<br />
algoritmo freereg(region-bloqueada)<br />
{<br />
if (algún proceso está usando la región)<br />
{<br />
Retirar el bloqueo <strong>de</strong> la región;<br />
if (región tiene un i-nodo asociado)<br />
Retirar el bloqueo <strong>de</strong>l i-nodo;<br />
Return;<br />
}<br />
if (región tiene un i-nodo asociado)<br />
Liberar i-nodo (iput);<br />
Liberar memoria física;<br />
Liberar tablas <strong>de</strong> páginas;<br />
Limpiar campos <strong>de</strong> la región;<br />
Pasar la región a lista <strong>de</strong> libres;<br />
Retirar el bloqueo <strong>de</strong> la región;<br />
}<br />
• Desligar (<strong>de</strong>sasociar) región y proceso. Esta acción se realiza en las llamadas al sistema exec, exit<br />
y shmdt. Un contador <strong>de</strong> referencias a la región que sea diferente <strong>de</strong> cero indica que hay más<br />
procesos utilizando la región y por tanto no se <strong>de</strong>be liberar la región. El uso <strong>de</strong>l sticky-bit (bit<br />
pegajoso), que se verá mas a<strong>de</strong>lante, aunque po<strong>de</strong>mos a<strong>de</strong>lantar algo <strong>de</strong> su uso. Para algunos<br />
procesos <strong>de</strong> uso muy frecuente resulta <strong>de</strong> interés mantener su texto en memoria aún cuando no hay<br />
ningún proceso que haga uso <strong>de</strong> él (es <strong>de</strong>cir, un compilador, editor, etc que son frecuentemente<br />
utilizados). La llamada al sistema chmod pue<strong>de</strong> permitir activar un sticky-bit a un archivo <strong>de</strong> tal<br />
forma que cuando se encuentra en memoria sus páginas no son liberadas aún cuando no que<strong>de</strong>n<br />
procesos referenciándolas (esto permitirá que cuando se lance un nuevo proceso que utilice este<br />
texto lo encontrará ya en memoria asignado a una región).<br />
algoritmo <strong>de</strong>attachreg(pregion)<br />
{<br />
Invalidar las tablas auxiliares asociadas al proceso (pregion, tripletas, etc.);<br />
Disminuir el tamaño <strong>de</strong>l proceso;<br />
Disminuir el contador <strong>de</strong> referencias <strong>de</strong> la región;<br />
if (contador llega a 0 y la región no tiene sticky bit)<br />
Liberar la región; // freereg<br />
else // el contador no es 0 o tiene sticky-bit<br />
{<br />
Retirar el bloqueo <strong>de</strong>l i-nodo, si hay i-nodo asociado a la región;<br />
Retirar el bloqueo a la región;<br />
}<br />
}<br />
• Duplicar una región. Este algoritmo es usado por fork. Si la región es compartida no es necesario<br />
hacer una nueva copia <strong>de</strong> la región, bastará incrementar el contador <strong>de</strong> referencias y padre/hijo<br />
compartirán la región. Si no es compartida se <strong>de</strong>be realizar físicamente la copia para lo cual se<br />
necesita una nueva entrada en la tabla <strong>de</strong> regiones, tablas <strong>de</strong> páginas y memoria física para las<br />
páginas.<br />
Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>2.</strong>28