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 />
La unidad <strong>de</strong> manejo <strong>de</strong> memoria (MMU) es parte <strong>de</strong>l procesador. Sus funciones son:<br />
• Convertir las direcciones lógicas emitidas por los procesos en direcciones físicas.<br />
• Comprobar que la conversión se pue<strong>de</strong> realizar. La dirección lógica podría no tener una dirección física<br />
asociada. Por ejemplo, la página correspondiente a una dirección se pue<strong>de</strong> haber intercambiada a una<br />
zona <strong>de</strong> almacenamiento secundario temporalmente.<br />
• Comprobar que el proceso que intenta acce<strong>de</strong>r a una cierta dirección <strong>de</strong> memoria tiene permisos para<br />
ello.<br />
En caso <strong>de</strong> fallo se lanzará una excepción que <strong>de</strong>berá ser resuelta por el kernel <strong>de</strong>l sistema operativo. El<br />
kernel <strong>de</strong>l sistema operativo está siempre en memoria principal, puesto que si se intercambia a una zona <strong>de</strong><br />
almacenamiento secundario, ¿quién sería el encargado <strong>de</strong> llevarlo a memoria principal cuándo se produjera un<br />
fallo <strong>de</strong> acceso a memoria?<br />
La MMU se inicializa para cada proceso <strong>de</strong>l sistema. Esto permite que cada proceso pueda usar el rango<br />
completo <strong>de</strong> direcciones lógicas (memoria virtual), ya que las conversiones <strong>de</strong> estas direcciones serán<br />
distintas para cada proceso.<br />
En todos los procesos se configura la MMU para que la zona <strong>de</strong>l kernel (el cuarto gigabyte) sólo se pueda<br />
acce<strong>de</strong>r en modo kernel (modo privilegiado).<br />
La configuración correspondiente al espacio <strong>de</strong> memoria <strong>de</strong>l kernel es idéntica en todos los procesos. Todos<br />
los threads <strong>de</strong> un mismo proceso también compartirán la configuración <strong>de</strong>l espacio <strong>de</strong> memoria <strong>de</strong>l usuario.<br />
Para ejecutar un proceso ⇒ <strong>de</strong>be estar, al menos en parte, en memoria principal. Subsistema <strong>de</strong> Gestión <strong>de</strong><br />
Memoria (parte <strong>de</strong>l kernel <strong>de</strong>l sistema operativo):<br />
• Deci<strong>de</strong> qué procesos resi<strong>de</strong>n en memoria principal (al menos una parte).<br />
• Maneja parte <strong>de</strong>l espacio <strong>de</strong> direcciones virtuales que ha quedado fuera.<br />
• Controla la cantidad <strong>de</strong> memoria principal.<br />
• Gestiona el intercambio <strong>de</strong> procesos entre memoria principal y memoria secundaria o dispositivo <strong>de</strong><br />
swap.<br />
Históricamente UNIX:<br />
• Política <strong>de</strong> gestión <strong>de</strong> memoria llamada intercambio (swapping).<br />
• Transferían procesos enteros entre memoria principal y swap.<br />
• Problema: Límite al tamaño <strong>de</strong> los procesos.<br />
• Ventaja: Facilidad <strong>de</strong> implementación y el menor overhead <strong>de</strong>l sistema.<br />
UNIX BSD ⇒ Paginación por <strong>de</strong>manda o <strong>de</strong>manda <strong>de</strong> páginas. Transferencia páginas <strong>de</strong> memoria, no procesos,<br />
entre memoria principal y swap. Kernel carga páginas <strong>de</strong> un proceso cuando las referencia. Ventajas<br />
(paginación por <strong>de</strong>manda):<br />
• Flexibilidad al mapear el espacio <strong>de</strong> direcciones virtuales <strong>de</strong> un proceso con la memoria física <strong>de</strong> la<br />
máquina<br />
• Permite tamaño proceso > cantidad <strong>de</strong> memoria física disponible.<br />
• Más procesos residiendo en memoria simultáneamente.<br />
<strong>3.</strong>2. <strong>MEMORIA</strong> VIRTUAL.<br />
El tamaño combinado <strong>de</strong>l programa, datos y pila pue<strong>de</strong> exce<strong>de</strong>r la cantidad <strong>de</strong> memoria física disponible. El<br />
sistema operativo guarda aquellas partes <strong>de</strong>l programa concurrentemente en uso en memoria central y el<br />
resto en disco. Cuando un programa espera que se le cargue en memoria central <strong>de</strong> disco otra parte <strong>de</strong>l<br />
mismo, la CPU se pue<strong>de</strong> asignar a otro proceso.<br />
Memoria virtual, el sistema operativo gestiona niveles <strong>de</strong> memoria principal y memoria secundaria:<br />
• Transferencia <strong>de</strong> bloques entre ambos niveles (normalmente basada en paginación).<br />
• De memoria secundaria a principal: por <strong>de</strong>manda.<br />
Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>3.</strong>3