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

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

memoria. En caso contrario, se comprueba su estado. Si la página ha sido modificada, <strong>de</strong>be guardarse en<br />

disco: si hay asociada una operación <strong>de</strong> memoria swapout a la región que contiene la página, se llama; si no,<br />

se asigna una entrada <strong>de</strong> swap llamando a get_swap_page, y se llama a la función write_swap_page para<br />

escribir la página. En el caso en que la página no haya sido modificada, se llama a la función page_unuse para<br />

suprimirla <strong>de</strong>l caché <strong>de</strong> páginas, y la página se libera por free_page.<br />

Las funciones swap_out_prnd y swap_out_pgd exploran la tabla <strong>de</strong> páginas <strong>de</strong> un proceso intentando<br />

eliminar cada página. Estas funciones paran su ejecución en cuanto una página ha sido eliminada. La función<br />

swap_out_vma llama a swap_out_pgd para intentar eliminar una página en una región <strong>de</strong> memoria, parando<br />

su ejecución cuando una página ha sido eliminada. La función swap_out_process se llama para eliminar una<br />

página <strong>de</strong>l espacio <strong>de</strong> direccionamiento <strong>de</strong> un proceso. Explora la lista <strong>de</strong> regiones <strong>de</strong> memoria contenidas en<br />

el espacio <strong>de</strong> direccionamiento <strong>de</strong>l proceso, llama a swap_out_vma para cada región y para su ejecución en<br />

cuanto se elimina una página.<br />

La función swap_out se llama para eliminar una página que forme parte <strong>de</strong>l espacio <strong>de</strong> direccionamiento <strong>de</strong><br />

uno <strong>de</strong> los procesos existentes. Explora la tabla <strong>de</strong> procesos y llama a la función swap_out_process para<br />

cada proceso que posee páginas resi<strong>de</strong>ntes en memoria. Cuando una página ha podido ser eliminada o cuando<br />

ninguna página pue<strong>de</strong> ser eliminada <strong>de</strong> la memoria, para su ejecución. La función try_to_free_page se llama<br />

para intentar liberar una página <strong>de</strong> memoria cualquiera. Se llama sucesivamente a shrink_mmap, shm_swap y<br />

swap_out para intentar liberar páginas <strong>de</strong> memoria.<br />

La función kswapd implementa el proceso kswap que elimina páginas <strong>de</strong> la memoria en segundo plano. Este<br />

proceso efectúa un bucle infinito durante el cual se suspen<strong>de</strong> por una llamada a interruptible_sleep_on, y<br />

seguidamente intenta liberar páginas <strong>de</strong> memoria llamando a try_to_free_page cuando se <strong>de</strong>spierta. La<br />

función swap_tick se llama en cada ciclo <strong>de</strong> reloj, y <strong>de</strong>spierta el proceso kswapd para liberar memoria, si el<br />

número <strong>de</strong> páginas disponibles es inferior al umbral tolerado.<br />

<strong>3.</strong>4.5. Cachés en Linux para la Gestión <strong>de</strong> la Memoria<br />

Linux emplea varios cachés para la gestión <strong>de</strong> la memoria que pasamos a enunciar a continuación:<br />

• Buffer Caché . Contiene buffers <strong>de</strong> datos que son utilizados por los gestores <strong>de</strong><br />

dispositivos <strong>de</strong> bloques. Estos buffers son <strong>de</strong> tamaño fijo (por ejemplo 512 bytes) y contienen bloques<br />

<strong>de</strong> información que ha sido bien leída <strong>de</strong> un dispositivo <strong>de</strong> bloques o que ha <strong>de</strong> ser escrita. Un<br />

dispositivo <strong>de</strong> bloques es un dispositivo sobre el que sólo se pue<strong>de</strong>n realizar operaciones <strong>de</strong> lectura o<br />

escritura <strong>de</strong> bloques <strong>de</strong> tamaño fijo. Todos los discos duros son dispositivos <strong>de</strong> bloque. El buffer caché<br />

(caché <strong>de</strong> disco formado por buffers, que almacena un único bloque <strong>de</strong> disco) está in<strong>de</strong>xado vía el<br />

i<strong>de</strong>ntificador <strong>de</strong> dispositivo y el número <strong>de</strong> bloque <strong>de</strong>seado, índice que es utilizado para una rápida<br />

localización <strong>de</strong>l bloque. Los dispositivos <strong>de</strong> bloque son exclusivamente accedidos a través <strong>de</strong>l buffer<br />

caché. Si un dato (bloque) se pue<strong>de</strong> encontrar en el buffer caché, entonces no es necesario leerlo <strong>de</strong>l<br />

dispositivo <strong>de</strong> bloques físico, por el disco duro, y por tanto el acceso es mucho más rápido, puesto que<br />

se reduce el número <strong>de</strong> accesos a disco.<br />

• Caché <strong>de</strong> Páginas . Éste caché es un caché <strong>de</strong> disco formado por páginas, y cada<br />

página en el caché correspon<strong>de</strong> a varios bloques <strong>de</strong> un archivo regular (normal) o <strong>de</strong> un archivo <strong>de</strong><br />

dispositivo <strong>de</strong> bloque (el número <strong>de</strong> bloques contenidos en una página <strong>de</strong>pen<strong>de</strong> <strong>de</strong>l tamaño <strong>de</strong>l bloque).<br />

Todos los bloques son contiguos <strong>de</strong>s<strong>de</strong> un punto <strong>de</strong> vista lógico (es <strong>de</strong>cir, ellos representan una parte<br />

íntegra <strong>de</strong> un archivo regular o <strong>de</strong> un archivo <strong>de</strong> dispositivo <strong>de</strong> bloque). Éste se utiliza para acelerar el<br />

acceso a imágenes y datos en disco. Se usa para guardar el contenido lógico <strong>de</strong> un archivo <strong>de</strong> páginas<br />

y se acce<strong>de</strong> vía el archivo y el <strong>de</strong>splazamiento <strong>de</strong>ntro <strong>de</strong>l archivo. Conforme las páginas se leen en<br />

memoria, se almacenan en el caché <strong>de</strong> páginas. Para reducir el número <strong>de</strong> accesos a disco, antes <strong>de</strong><br />

activar la operación <strong>de</strong> E/S <strong>de</strong> página, el kernel <strong>de</strong>bería comprobar si los datos solicitados están ya en<br />

el caché <strong>de</strong> páginas.<br />

• No <strong>de</strong>bemos también olvidar el Dentry Caché (también <strong>de</strong>nominado, Dcache o caché<br />

<strong>de</strong> nombres) que lo utiliza el sistema <strong>de</strong> archivos virtual (VFS) para acelerar la traducción <strong>de</strong> un<br />

nombre completo (pathname) <strong>de</strong> archivo al correspondiente inodo.<br />

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

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

Saved successfully!

Ooh no, something went wrong!