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