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
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Diseño <strong>de</strong> Sistemas Operativos<br />
Tema <strong>2.</strong> Gestión <strong>de</strong> Procesos<br />
algoritmo growreg(pregión, incremento)<br />
{<br />
if (incremento es positivo)<br />
{<br />
Controlar legalidad <strong>de</strong>l nuevo tamaño;<br />
Asignar tablas <strong>de</strong> paginas;<br />
if (mo<strong>de</strong>lo <strong>de</strong> programa entero)<br />
{<br />
Asignar memoria física;<br />
Inicialización <strong>de</strong> tablas necesarias;<br />
}<br />
}<br />
else<br />
{<br />
Liberar memoria física;<br />
Liberar tablas;<br />
}<br />
Otras inicializaciones;<br />
Cambiar tamaño <strong>de</strong> proceso en la Tabla <strong>de</strong> Procesos;<br />
}<br />
• Cargar una región. Si el sistema soporta paginación por <strong>de</strong>manda, el sistema pue<strong>de</strong> mapear el<br />
espacio <strong>de</strong> direcciones <strong>de</strong>l ejecutable durante la exec <strong>de</strong> tal forma que sólo cuando sea necesario<br />
leerá las páginas a memoria. Si el mo<strong>de</strong>lo es <strong>de</strong> programa entero se <strong>de</strong>be copiar el ejecutable<br />
cargando las regiones en las direcciones virtuales que se especifique en el archivo (posibles páginas<br />
vacías). Para cargar el archivo en la región <strong>de</strong>be expandirla <strong>de</strong> acuerdo a la memoria que necesite.<br />
Marca la región en el estado Cargándose y usa una variación <strong>de</strong> la llamada al sistema read para<br />
leer el ejecutable (porque pue<strong>de</strong> ganarse velocidad, y porque en un mo<strong>de</strong>lo <strong>de</strong> paginación por<br />
<strong>de</strong>manda se podría producir un fallo <strong>de</strong> página durante una read). El offset que se indica como<br />
parámetro indica el <strong>de</strong>splazamiento <strong>de</strong>ntro <strong>de</strong>l archivo <strong>de</strong>l inicio <strong>de</strong> la región y count el número <strong>de</strong><br />
datos a leer.<br />
algoritmo loadreg(pregión, dir_Virtual, i-no<strong>de</strong>, Offset , count)<br />
{<br />
Incrementar tamaño (growreg);<br />
Marcar estado Cargándose;<br />
Desbloquear región (unlock);<br />
Poner parámetros <strong>de</strong> lectura en u-Area;<br />
Leer ejecutable en la región (variación <strong>de</strong> read);<br />
Bloquear región;<br />
Marcar estado Válida;<br />
Despertar procesos que esperan por región cargándose;<br />
}<br />
Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>2.</strong>27