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
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