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