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

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

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

Saved successfully!

Ooh no, something went wrong!