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

Proceso P<br />

Tabla <strong>de</strong> Regiones<br />

por Proceso<br />

Proceso C<br />

Tabla <strong>de</strong> Regiones<br />

por Proceso<br />

Tema <strong>3.</strong> Gestión <strong>de</strong> Memoria<br />

Región T<br />

Contador Referencias 2<br />

Entradas en la<br />

Tabla <strong>de</strong> Páginas<br />

Región P1<br />

Contador Referencias 1<br />

Entradas en la<br />

Tabla <strong>de</strong> Páginas<br />

Región C1<br />

Contador Referencias 1<br />

Entradas en la<br />

Tabla <strong>de</strong> Páginas<br />

Dir. Virtual Pág.<br />

24K 967<br />

Dir. Virtual Pág.<br />

97K 613<br />

Dir. Virtual Pág.<br />

97K 613<br />

Marco <strong>de</strong> Página 967<br />

Contador Referencias 1<br />

Marco <strong>de</strong> Página 613<br />

Contador Referencias 2<br />

Figura <strong>3.</strong>8. Fork en <strong>de</strong>manda <strong>de</strong> páginas.<br />

Sistema <strong>de</strong> paginación en BSD. (1) Fork ⇒ Copia física <strong>de</strong> las páginas <strong>de</strong>l proceso padre. (2) Vfork ⇒<br />

Asume que el proceso hijo llama a exec a continuación ⇒ (2.1) No copia tablas <strong>de</strong> páginas → Rapi<strong>de</strong>z; (2.2)<br />

Proceso hijo se está ejecutando en el mismo espacio <strong>de</strong> direcciones físicas que su padre hasta el exec o el<br />

exit → Podría sobreescribir en la pila y en los datos <strong>de</strong>l proceso padre.<br />

<strong>3.</strong><strong>3.</strong>2.<strong>3.</strong> Reemplazo <strong>de</strong> Páginas<br />

La tabla <strong>de</strong> marcos <strong>de</strong> página se utiliza en el reemplazo <strong>de</strong> páginas. Se emplean varios punteros para crear<br />

listas <strong>de</strong>ntro <strong>de</strong> una tabla. Todos los marcos <strong>de</strong> páginas disponibles se enca<strong>de</strong>nan en una lista <strong>de</strong> marcos <strong>de</strong><br />

páginas vacíos disponibles para cargar páginas (lista <strong>de</strong> páginas libres). Cuando el número <strong>de</strong> páginas<br />

disponibles es inferior a un cierto umbral, el kernel “robará” varias páginas para compensarlo. El algoritmo <strong>de</strong><br />

reemplazo <strong>de</strong> página en UNIX es un refinamiento <strong>de</strong>l la política <strong>de</strong>l reloj (clock), conocido como el “algoritmo<br />

<strong>de</strong>l reloj <strong>de</strong> dos agujas”. El algoritmo utilizará un bit <strong>de</strong> referencia en la entrada <strong>de</strong> la tabla <strong>de</strong> páginas para<br />

cada página <strong>de</strong> la memoria que no esté bloqueada para ser “expulsada”. Este bit se pone a 0 cuando la página<br />

entra por primera vez y a 1 cuando se hace referencia a la página para una lectura o escritura. Una aguja <strong>de</strong>l<br />

algoritmo <strong>de</strong>l reloj, la aguja frontal, recorre la lista <strong>de</strong> páginas elegibles y pone el bit <strong>de</strong> referencia a 0 en cada<br />

página. Algún tiempo más tar<strong>de</strong>, la aguja trasera recorre la misma lista y comprueba el bit <strong>de</strong> referencia. Si el<br />

bit está a 1, entonces la página se ha referenciado <strong>de</strong>s<strong>de</strong> que la aguja frontal hizo el recorrido y se ignora el<br />

marco. Si el bit está todavía a 0, entonces la página no se ha referenciado en el intervalo <strong>de</strong> tiempo entre la<br />

visita <strong>de</strong> la aguja frontal y la aguja trasera, y se pone a estas páginas en una lista para ser reemplazadas.<br />

Dos parámetros <strong>de</strong>terminan la operación <strong>de</strong>l algoritmo: (1) Velocidad <strong>de</strong> recorrido, que indica la velocidad con<br />

la cual las dos agujas se mueven a través <strong>de</strong> la lista <strong>de</strong> páginas (páginas por segundo); (2) Alcance entre<br />

agujas, que indica el espacio entre la aguja frontal y la aguja trasera (páginas). Estos dos parámetros tienen<br />

valores por <strong>de</strong>fecto asignados en el arranque y basados en la cantidad <strong>de</strong> memoria física disponible. El<br />

parámetro <strong>de</strong> velocidad <strong>de</strong> recorrido pue<strong>de</strong> modificarse para cumplir condiciones cambiantes, y varía<br />

linealmente entre los valores <strong>de</strong> recorrido lento y recorrido rápido (asignados en la configuración) conforme la<br />

cantidad <strong>de</strong> memoria libre varía entre los valores “mucho_libre” y “poco_libre”. Es <strong>de</strong>cir, conforme la<br />

cantidad <strong>de</strong> memoria libre <strong>de</strong>sminuye, las agujas <strong>de</strong>l reloj se mueven más rápidamente para liberar más<br />

páginas. El parámetro <strong>de</strong> alcance entre agujas <strong>de</strong>termina el espacio entre la aguja frontal y la trasera, y<br />

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

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

Saved successfully!

Ooh no, something went wrong!