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 />
if (siguiente operación es una solicitud <strong>de</strong> bloque libre)<br />
{<br />
if (D i ≥ 2)<br />
{<br />
Marcarlo libre localmente y liberarlo localmente;<br />
D i = D i – 2;<br />
{<br />
else<br />
{<br />
if (D i = 1)<br />
{<br />
Marcarlo libre globalmente, liberarlo globalmente y unirlo si es posible;<br />
D i = 0;<br />
}<br />
else<br />
{<br />
if (D i = 0)<br />
{<br />
Marcarlo libre globalmente, liberarlo globalmente y unirlo si es posible;<br />
Seleccionar un bloque <strong>de</strong> tamaño 2i y liberarlo globalmente y unirlo si es posible;<br />
D i = 0;<br />
}<br />
}<br />
}<br />
}<br />
<strong>3.</strong>4. GESTIÓN <strong>DE</strong> <strong>MEMORIA</strong> EN LINUX<br />
<strong>3.</strong>4.1. Visión General<br />
Linux comparte muchas <strong>de</strong> las características <strong>de</strong> los esquemas <strong>de</strong> gestión <strong>de</strong> memoria <strong>de</strong> otras<br />
implementaciones UNIX, pero tiene sus características propias y únicas, aunque hay que <strong>de</strong>stacar que el<br />
esquema <strong>de</strong> gestión <strong>de</strong> memoria <strong>de</strong> Linux es bastante complejo.<br />
En lo que respecta a memoria virtual, el direccionamiento <strong>de</strong> memoria virtual <strong>de</strong> Linux, hace uso <strong>de</strong> una<br />
estructura <strong>de</strong> tabla <strong>de</strong> páginas con tres niveles, formada por los siguientes tipos <strong>de</strong> tablas (cada tabla<br />
individual es <strong>de</strong>l tamaño <strong>de</strong> una página): (1) Directorio <strong>de</strong> páginas ⇒ un proceso activo tiene un solo<br />
directorio <strong>de</strong> páginas que es <strong>de</strong>l tamaño <strong>de</strong> una página. Cada entrada en el directorio <strong>de</strong> páginas apunta a una<br />
página <strong>de</strong>l directorio intermedio <strong>de</strong> páginas. Para un proceso activo, el directorio <strong>de</strong> páginas tiene que estar en<br />
la memoria principal; (2) Directorio intermedio <strong>de</strong> páginas ⇒ este directorio pue<strong>de</strong> ocupar varias páginas y<br />
cada entrada <strong>de</strong> este directorio apunta a una página <strong>de</strong> la tabla <strong>de</strong> páginas; (3) Tabla <strong>de</strong> páginas ⇒ esta tabla<br />
<strong>de</strong> páginas también pue<strong>de</strong> ocupar varias páginas, y cada entrada <strong>de</strong> la tabla <strong>de</strong> página hace referencia a una<br />
tabla virtual <strong>de</strong>l proceso.<br />
Para utilizar esta estructura <strong>de</strong> la tabla <strong>de</strong> páginas a tres niveles, una dirección virtual en Linux se ve como un<br />
conjunto <strong>de</strong> cuatro campos. El campo más a la izquierda (más significativo) se utiliza como índice en el<br />
directorio <strong>de</strong> páginas. El siguiente campo sirve como índice en el directorio intermedio <strong>de</strong> páginas. El tercer<br />
campo sirve como índice en la tabla <strong>de</strong> páginas. Y el cuarto y último campo, indica el <strong>de</strong>splazamiento <strong>de</strong>ntro<br />
<strong>de</strong> la página seleccionada <strong>de</strong> la memoria. La estructura <strong>de</strong> tabla <strong>de</strong> página en Linux es in<strong>de</strong>pendiente <strong>de</strong> la<br />
plataforma y fue diseñada para ajustarse al procesador Alpha <strong>de</strong> 64 bits, el cual proporciona soporte <strong>de</strong><br />
hardware para los tres niveles <strong>de</strong> paginación. Con direcciones <strong>de</strong> 64 bits, el uso <strong>de</strong> sólo dos niveles <strong>de</strong> páginas<br />
en el procesador Alpha generaría tablas <strong>de</strong> páginas y directorios muy gran<strong>de</strong>s. Los 32 bits <strong>de</strong> la arquitectura<br />
Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>3.</strong>19