12.10.2014 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!