Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
RESUMEN
En el presente informe se darán a conocer los conceptos básicos de la implementación y funcionamiento del módulo
Memoria Virtual utilizados por el kernel de Linux. Además se presentarán ejemplos e imágenes de referencia para llevar
al lector a interiorizarse en el ámbito Linux y su aplicación en la memoria virtual. Los objetivos a obtener del presente
informe radican en conocer cómo trabaja y está programado el kernel de manera tal, que a la hora de conocer su
funcionamiento, se adquiera la capacidad de discernir y tener en claro el código que se está aplicando y en qué momento
se aplica. Incluyendo además citas bibliográficas y presentaciones de diferentes autores al respecto del propio kernel de
Linux enfocándose en el ámbito de la memoria virtual.
ABSTRACT
This report will be released the basics of implementation and operation of Virtual Memory module used by the Linux
kernel. Also present examples and reference images for the reader to internalize in the Linux environment and its
application in virtual memory. The objectives to obtain this report lies in knowing how it works and is scheduled kernel
so that when it comes to understand how it works, it acquires the ability to discern and be clear about the code being
implemented and at what time applies. Also including citations, and presentations from different authors about the
Linux kernel itself by focusing on the area of virtual memory.
El tamaño combinado del programa, datos y pila puede En la Imagen 1 se observa la estructura básica de la
exceder la cantidad de memoria física disponible, para lo pagina utilizada por el kernel, se puede observar que está
cual se hace el uso de la memoria virtual, lo que sigue a compuesta por varios atributos necesarios para su
continuación, es un análisis detallado de cómo se maneja creación, de los cuales destaca el índex o numero de la
la memoria virtual. pagina (unsigned long índex;), además de su cabecera
(struct list_head list;), también cuenta dentro de su
estructura un contador de página (atomic_t count;) que
PAGINACION cuenta las referencias a la página, en caso de no tener
ninguna referencia, libera la página en cuestión.
- Páginas
#if defined(CONFIG_HIGHMEM)
||defined(WANT_PAGE_VIRTUAL)
void *virtual;
#endif /* CONFIG_HIGMEM ||
WANT_PAGE_VIRTUAL */
-Tabla de Páginas
SEGMENTACIÓN
SWAP
Imagen 9. Código asociado al intercambio entre los Swapping es la técnica mediante la cual se intercambia
segmentos y la memoria, alojado en <mm/filemap.c>. un proceso que está en memoria por otro que no lo está.
Para esto se hace uso de un área de memoria de
La Imagen 9, se puede observar la referencia al traspaso intercambio (swap). Actualmente no se intercambian
de segmentos a páginas y seguidamente estos se traspasan procesos sino páginas de memoria.
a memoria principal o guardarlos en archivos
dependiendo de lo que se necesite hacer. Un sistema operativo puede disponer de más memoria
RAM que existente físicamente en el hardware que éste
Además puede hacer lo contrario que es traspasar las controla. Esto se consigue mediante lo que se conoce
páginas a segmentos y así gestionar lo necesario de como memoria virtual. Cuando se necesita memoria, y
manera inversa. no hay más físicamente, el kernel puede eliminar
páginas de memoria para obtener espacio libre. Se
Si no ocurren los sucesos mencionados anteriormente, se tienen en cuenta varios aspectos:
bloquea este proceso, dado que no todos los segmentos se
pueden copiar a la vez sin producir un fallo de página, es - Si la página a descartar es de sólo lectura, se
decir, debe de ir por segmentos consecutivos. elimina sin más.
- Si es de escritura y no ha sido modificada,
Para controlar el límite de los segmentos, el kernel de también se elimina.
Linux asocia un código determinado que soluciona el - Si es de escritura y ha sido modificada, se debe
problema mostrado. almacenar su contenido antes de eliminarla, y
así el proceso al que pertenece puede cuando
lo requiera.
- Si la página es la proyección de un fichero en
memoria, se reescribe en el archivo.
- Si no lo es, se guarda en la memoria de
intercambio (dispositivo de swap).
Imagen 10. se muestra parte del código inserto en el El swapping debe ser transparente a los programas. Es
kernel de linux, para el manejo de los límites de decir, no se necesita introducir ninguna instrucción
segmento. especial relacionada con el intercambio en el código.
Cada entrada de tabla de página incluye una bandera
que identifica donde se sitúa realmente la página (RAM,
Swap o disco). Por tanto el núcleo utiliza esta bandera
Sistemas Operativos II – Departamento Ingeniería – Universidad Arturo Prat 5
Sistemas Operativos II
static unsigned long shrink_list(enum lru_list lru, · La página no está presente en memoria, es decir es, la
unsigned long nr_to_scan, actual bandera Presenta en la entrada de tabla de página
struct zone *zone, struct scan_control *sc, int está desactivada .
priority)
{ · La entrada de tabla de página asociada a la página no
int file = is_file_lru(lru); es nula, pero el bit dirty está a 0; esto significa que la
entrada contiene un identificador de página descargada
if (is_active_lru(lru)) { al almacenamiento swap.
if (inactive_list_is_low(zone, sc, file))
shrink_active_list(nr_to_scan, zone, Si todas las condiciones anteriores se cumplen, el
sc, priority, file); handle_pte_fault() invoca la función do_swap_page()
return 0; do_swap_page()
}
CONCLUSION