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

también asigna marcos <strong>de</strong> página a los buffers (memorias intermedias) <strong>de</strong> los bloques <strong>de</strong> disco. Aunque esto<br />

es un esquema <strong>de</strong> gestión <strong>de</strong> memoria efectiva para procesos <strong>de</strong> usuario y <strong>de</strong> E/S <strong>de</strong> disco, un esquema <strong>de</strong><br />

memoria virtual paginado se adapta peor a la gestión <strong>de</strong> asignación <strong>de</strong> memoria para el kernel, y para este<br />

último propósito se utiliza un gestor <strong>de</strong> memoria <strong>de</strong>l kernel.<br />

<strong>3.</strong><strong>3.</strong>1. Intercambio (swap)<br />

¿Qué hacer si no caben todos los programas en memoria principal? ⇒ Uso <strong>de</strong> intercambio (swapping)<br />

• Swap ⇒ partición <strong>de</strong> disco que almacena imágenes <strong>de</strong> procesos<br />

• Swap out ⇒ Cuando no caben en memoria procesos activos, se “expulsa” un proceso <strong>de</strong> memoria<br />

principal, copiando su imagen a swap (área <strong>de</strong> intercambio), aunque no es necesario copiar todo el<br />

mapa (ni código ni huecos). Existen diversos criterios <strong>de</strong> selección <strong>de</strong>l proceso a intercambiar: (1)<br />

Dependiendo <strong>de</strong> la prioridad <strong>de</strong>l proceso; (2) Preferencia a los procesos bloqueados; (3) No<br />

intercambiar si está activo DMA sobre mapa <strong>de</strong>l proceso.<br />

• Swap in ⇒ Cuando haya espacio en memoria principal, se intercambia el proceso a memoria copiando<br />

imagen <strong>de</strong>s<strong>de</strong> swap.<br />

Asignación <strong>de</strong> espacio en el dispositivo <strong>de</strong> swap: (1) Con preasignación ⇒ se asigna espacio al crear el<br />

proceso; (2) Sin preasignación ⇒ se asigna espacio al intercambiarlo (cuando se crea una región, no se hace<br />

ninguna reserva en el swap). La ten<strong>de</strong>ncia actual es utilizar la segunda estrategia, dado que la primera<br />

conlleva un peor aprovechamiento <strong>de</strong> la memoria secundaria, puesto que toda página <strong>de</strong>be tener reservado<br />

espacia en ella.<br />

Dispositivo <strong>de</strong> swap ⇒ dispositivo <strong>de</strong> bloques en sección configurable <strong>de</strong>l disco.<br />

El kernel asigna espacio en el dispositivo <strong>de</strong> swap en grupos <strong>de</strong> bloques contiguos ⇒ Diferente al sistema <strong>de</strong><br />

archivos (rapi<strong>de</strong>z). Uno o varios dispositivos swap.<br />

El kernel mantiene espacio libre en tabla en memoria llamada map o mapa. Mapa ⇒ array<br />

• Entrada = (dirección recurso disponible, número unida<strong>de</strong>s <strong>de</strong>l recurso)<br />

• Unidad en mapa <strong>de</strong>l dispositivo <strong>de</strong> swap ⇒ grupo <strong>de</strong> bloques <strong>de</strong> disco<br />

• Dirección ⇒ <strong>de</strong>splazamiento (offset) <strong>de</strong> bloques <strong>de</strong>s<strong>de</strong> el principio <strong>de</strong>l área <strong>de</strong> intercambio.<br />

• Inicialmente ⇒ Figura <strong>3.</strong>1.<br />

Dirección<br />

Unida<strong>de</strong>s<br />

Inicial Todas<br />

Figura <strong>3.</strong>1. Situación inicial <strong>de</strong>l mapa<br />

<strong>3.</strong><strong>3.</strong>1.1. Asignación <strong>de</strong>l Espacio para Intercambio por parte <strong>de</strong>l Kernel<br />

Dirección map que indica qué map usar + número unida<strong>de</strong>s pedidas:<br />

• Éxito ⇒ la dirección<br />

• Fracaso ⇒ 0<br />

Asignar espacio para intercambio:<br />

• El kernel busca en mapa 1ª entrada con suficiente espacio para la petición.<br />

• Si petición consume todos los recursos <strong>de</strong> la entrada <strong>de</strong>l mapa:<br />

− El kernel quita la entrada <strong>de</strong>l array.<br />

− Mapa ⇒ Una entrada menos.<br />

• En caso contrario<br />

− Ajusta dirección y unida<strong>de</strong>s acor<strong>de</strong> a cantidad recursos asignados<br />

Liberar espacio <strong>de</strong> intercambio:<br />

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

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

Saved successfully!

Ooh no, something went wrong!