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
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Diseño <strong>de</strong> Sistemas Operativos<br />
Tema <strong>3.</strong> Gestión <strong>de</strong> Memoria<br />
<strong>3.</strong>4.4. Intercambio (swapping) en Linux<br />
<strong>3.</strong>4.4.1. Visión general <strong>de</strong>l intercambio (swapping) en Linux<br />
<strong>3.</strong>4.4.2. Dispositivos <strong>de</strong> swap<br />
<strong>3.</strong>4.4.<strong>3.</strong> Gestión <strong>de</strong> los dispositivos <strong>de</strong> swap<br />
<strong>3.</strong>4.4.4. Gestión <strong>de</strong>l swap, perspectiva general <strong>de</strong> la implementación<br />
<strong>3.</strong>4.4.4.1. Formato <strong>de</strong> los dispositivos <strong>de</strong> swap<br />
<strong>3.</strong>4.4.4.2 Descriptores <strong>de</strong> dispositivos <strong>de</strong> swap<br />
<strong>3.</strong>4.4.4.<strong>3.</strong> Direcciones <strong>de</strong> entradas <strong>de</strong>l swap<br />
<strong>3.</strong>4.4.4.4. Selección <strong>de</strong> páginas a <strong>de</strong>scartar<br />
<strong>3.</strong>4.4.5. Gestión <strong>de</strong>l swap, perspectiva <strong>de</strong>tallada <strong>de</strong> la implementación<br />
<strong>3.</strong>4.4.5.1. Gestión <strong>de</strong> los dispositivos <strong>de</strong> swap<br />
<strong>3.</strong>4.4.5.2. Entrada/salida <strong>de</strong> páginas <strong>de</strong> swap<br />
<strong>3.</strong>4.4.5.<strong>3.</strong> Eliminación <strong>de</strong> páginas <strong>de</strong> memoria<br />
<strong>3.</strong>4.5. Cachés en Linux para la gestión <strong>de</strong> la memoria<br />
<strong>3.</strong>1. INTRODUCCIÓN<br />
La memoria es uno <strong>de</strong> los recursos más valiosos que gestiona el sistema operativo. Uno <strong>de</strong> los elementos<br />
principales que caracterizan un proceso es la memoria que utiliza. Ésta está lógicamente separada <strong>de</strong> la <strong>de</strong><br />
cualquier otro proceso <strong>de</strong>l sistema (excepto los threads <strong>de</strong> un mismo proceso que comparten normalmente la<br />
mayor parte <strong>de</strong> la memoria que tienen asignada). Un proceso no pue<strong>de</strong> acce<strong>de</strong>r, al espacio <strong>de</strong> memoria<br />
asignado a otro proceso, lo cual es imprescindible para la seguridad y estabilidad <strong>de</strong>l sistema. El<br />
direccionamiento es una parte importante <strong>de</strong> la gestión <strong>de</strong> memoria, puesto que influye mucho en la visión <strong>de</strong>l<br />
mismo por parte <strong>de</strong> un proceso, como en el aprovechamiento <strong>de</strong>l hardware y el rendimiento <strong>de</strong>l sistema. En<br />
Linux, a<strong>de</strong>más, un proceso tiene dos espacios <strong>de</strong> memoria: el espacio <strong>de</strong> memoria <strong>de</strong>l usuario, único para<br />
ese proceso, y el espacio <strong>de</strong> memoria <strong>de</strong>l kernel, idéntico en todos los procesos.<br />
Objetivos <strong>de</strong>l sistema <strong>de</strong> gestión <strong>de</strong> memoria:<br />
• Ofrecer a cada proceso un espacio lógico propio.<br />
• Proporcionar protección entre procesos.<br />
• Permitir que los procesos compartan memoria.<br />
• Dar soporte a las distintas regiones <strong>de</strong>l proceso.<br />
• Maximizar el rendimiento <strong>de</strong>l sistema.<br />
• Proporcionar a los procesos mapas <strong>de</strong> memoria muy gran<strong>de</strong>s.<br />
Espacio <strong>de</strong> direcciones <strong>de</strong> un proceso ⇒ Conjunto <strong>de</strong> direcciones a las que hace referencia. Los espacios <strong>de</strong><br />
direcciones involucrados en la gestión <strong>de</strong> la memoria son <strong>de</strong> tres tipos:<br />
• Espacio <strong>de</strong> direcciones físicas. Las direcciones físicas son aquellas que referencian alguna posición<br />
<strong>de</strong> la memoria física. Se obtienen <strong>de</strong>spués <strong>de</strong> aplicar una transformación por parte <strong>de</strong> la MMU (Unidad<br />
<strong>de</strong> Manejo <strong>de</strong> Memoria).<br />
• Espacio <strong>de</strong> direcciones lógicas o virtuales. Las direcciones lógicas son las direcciones utilizadas por<br />
los procesos. Sufren una serie <strong>de</strong> transformaciones, realizadas por el procesador (la MMU), antes <strong>de</strong><br />
convertirse en direcciones físicas.<br />
• Espacio <strong>de</strong> direcciones lineales. Las direcciones lineales se obtienen a partir <strong>de</strong> las direcciones<br />
lógicas tras haber aplicado una transformación <strong>de</strong>pendiente <strong>de</strong> la arquitectura. En Linux las direcciones<br />
lógicas y lineales son idénticas. En el i386, es el nombre que reciben las direcciones tras haber aplicado<br />
la técnica <strong>de</strong> segmentación. En la segmentación, tras haber realizado las correspondientes<br />
comprobaciones <strong>de</strong> seguridad, se le suma a la dirección lógica una cierta dirección base, obteniendo así<br />
la dirección lineal. A partir <strong>de</strong>l kernel <strong>de</strong> Linux 2.2.x, las direcciones base <strong>de</strong> casi todos los segmentos<br />
es 0, y por lo tanto, las direcciones lineales y las lógicas son las mismas.<br />
Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>3.</strong>2