12.10.2014 Views

TEMA 3. GESTIÓN DE MEMORIA - Universidad de Almería

TEMA 3. GESTIÓN DE MEMORIA - Universidad de Almería

TEMA 3. GESTIÓN DE MEMORIA - Universidad de Almería

SHOW MORE
SHOW LESS

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>3.</strong> Gestión <strong>de</strong> Memoria<br />

• Fin swap: (1) El proceso hijo existirá en el dispositivo <strong>de</strong> swap; (2) El proceso padre lo pondrá en el<br />

estado “listo para ejecutarse” y volverá a modo usuario; (3) El swapper lo lleva a memoria cuando el<br />

kernel lo planifique (scheduler).<br />

Swap <strong>de</strong> Expansión: Proceso requiere más memoria <strong>de</strong> la que tiene asignada en el momento (crecimiento<br />

pila o Brk) y no hay suficiente memoria disponible para satisfacer la petición ⇒ El kernel hace un swap <strong>de</strong><br />

expansión <strong>de</strong>l proceso en el que realiza los siguientes pasos: (1) Reserva suficiente espacio en swap para el<br />

proceso, incluyendo petición actual; (2) Ajusta el mapa <strong>de</strong> traducción <strong>de</strong> direcciones <strong>de</strong>l proceso para la<br />

nueva configuración <strong>de</strong> la memoria virtual ⇒ no asigna memoria física porque no está disponible; (3)<br />

Intercambia el proceso fuera <strong>de</strong> memoria con nueva memoria igual a cero en el swap; (4) Al volver a<br />

memoria, el kernel le asignará suficiente memoria según el nuevo mapa <strong>de</strong> traducción <strong>de</strong> direcciones.<br />

texto<br />

Disposición Original<br />

Virtual Física<br />

0 278K<br />

1K 432K<br />

vacía<br />

texto<br />

Disposición Expandida<br />

Virtual Física<br />

0 278K<br />

1K 432K<br />

vacía<br />

Dispositivo Swap<br />

684<br />

datos<br />

64K 573K<br />

65K 647K<br />

66K 595K<br />

vacía<br />

datos<br />

64K 573K<br />

65K 647K<br />

66K 595K<br />

vacía<br />

690<br />

691<br />

pila<br />

128K<br />

vacía<br />

401K<br />

pila<br />

Nueva Página<br />

128K 401K<br />

129 ---<br />

vacía<br />

Figura <strong>3.</strong>4. Ajuste <strong>de</strong>l mapa <strong>de</strong> memoria en un swap <strong>de</strong> expansión.<br />

<strong>3.</strong><strong>3.</strong>1.<strong>3.</strong> Intercambiar Procesos entre Memoria Principal y swap<br />

Proceso 0, swapper (proceso <strong>de</strong>l kernel) ⇒ único capaz <strong>de</strong> mover procesos entre memoria y swap.<br />

Comportamiento:<br />

• Fin inicialización <strong>de</strong>l sistema ⇒ swapper empieza un bucle infinito.<br />

• Única tarea que tiene que hacer el swapper es intercambiar procesos <strong>de</strong>s<strong>de</strong> swap: (1) Examina<br />

procesos “listos para ejecutarse en área <strong>de</strong> swap” y selecciona el que haya estado más tiempo<br />

intercambiado; (2) Si tiene suficiente memoria libre disponible asigna memoria física, lee el proceso<br />

<strong>de</strong>s<strong>de</strong> el dispositivo <strong>de</strong> swap y libera la memoria en el mismo; (3) Si no tiene suficiente espacio en<br />

memoria principal, intenta intercambiar procesos al dispositivo <strong>de</strong> swap.<br />

• Si no hay procesos para intercambiar a memoria, o ninguno <strong>de</strong> los procesos que hay en memoria<br />

pue<strong>de</strong>n ser intercambiados al dispositivo <strong>de</strong> swap ⇒ swapper se duerme, y se <strong>de</strong>spierta: (1) El reloj, lo<br />

<strong>de</strong>spertará una vez cada segundo en este estado (dormido); (2) el kernel si otro proceso va a dormir; y<br />

(3) vuelve a empezar <strong>de</strong>s<strong>de</strong> el principio buscando más procesos.<br />

Criterios <strong>de</strong>l swapper para elegir un proceso para echarlo (intercambiarlo) <strong>de</strong> memoria: (1) Examina cada uno<br />

<strong>de</strong> los procesos que estén en memoria; (2) No examina ni Zombies, ni procesos bloqueados en memoria; (3)<br />

Prefiere “Dormidos” a “listos para ejecutarse”; (4) Elegir <strong>de</strong> los “Dormidos” los que menos f(prioridad,<br />

tiempo que proceso lleva en memoria) tengan; (5) Elegir <strong>de</strong> los “listos para ejecutarse” los que menos f(nice,<br />

tiempo que el proceso haya estado en memoria) tengan.<br />

Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>3.</strong>11

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

Saved successfully!

Ooh no, something went wrong!