Sei sulla pagina 1di 9

Memoria Virtual Kernel de Linux

LINUX KERNEL VIRTUAL MEMORY

Alejo Gómez Duran

Esteban Rojas

RESUMEN

Christian Castro Rojas

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.

Palabras clave: Kernel, 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.

Keywords: Kernel, Memoria Virtual.

INTRODUCCION

El trabajo que se presenta, se centra

detallado del núcleo de Linux llamado kernel, concretamente en la denominada Memoria Virtual.

en el estudio

más

Se desarrollará un análisis exhaustivo y profundo de los códigos insertos en el núcleo. La idea central del trabajo desarrollado radica en la obtención y comprensión de cómo actúa el kernel a la hora de sobrepasar la memoria física existente para así activar o generar los módulos de memoria virtual, a fin de abarcar un procedimiento o proceso que exija más de la memoria existente.

Se presentarán módulos explicativos, además de tablas y se harán alusiones a trozos de códigos con la finalidad de dar una buena comprensión del tema que se hace referencia como es la Memoria Virtual.

El siguiente informe tiene como finalidad llevar al lector una herramienta concreta que facilite los procesos de comprensión en torno a la memoria virtual desarrollada e implementada en el kernel de Linux.

Se conocerán además conceptos de mapeo, intercambio de memoria, swap entre otras.

Para ello se estructura el siguiente informe de la manera que se detalla:

Paginación

Estructura de Página

Tamaño de una Página

Tabla de Páginas

Segmentación

Gestión de la Segmentación

Intercambio de Segmentos

Swap

Concepto de swap

Swap en Linux

Estructura

Funciones

Swap-in y Swap-out

Sistemas Operativos II – Departamento Ingeniería – Universidad Arturo Prat

1

Sistemas Operativos II

ANALIZANDO EL KERNEL DE LINUX, MEMORIA VIRTUAL

El tamaño combinado del programa, datos y pila puede exceder la cantidad de memoria física disponible, para lo cual se hace el uso de la memoria virtual, lo que sigue a continuación, es un análisis detallado de cómo se maneja la memoria virtual.

- Páginas

PAGINACION

Puesto que hay mucha menos memoria física que memoria virtual, el sistema operativo Linux ha de tener especial cuidado de no hacer un mal uso de la memoria física. Una forma de conservar memoria física es cargar sólo las páginas que están siendo utilizadas por un programa.

La paginación corresponde a la zona de memoria contigua de un determinado tamaño, estas se encuentran encapsuladas en su propio marco de páginas de igual tamaño, y por lo cual estas son referenciadas dentro de una tabla de páginas que contiene la relación entre cada marco y página existente.

El

paginación.

paso

de

dirección

lineal

a

física

se

denomina

Aplicando el concepto de paginación a como hace uso el kernel de Linux de este método, se presenta la estructura utilizada a continuación:

typedef struct page { struct list_head list; struct address_space *mapping; unsigned long index; struct page *next_hash; atomic_t count; unsigned long flags; struct list_head lru; struct page **pprev_hash; struct buffer_head * buffers;

#if defined(CONFIG_HIGHMEM) ||defined(WANT_PAGE_VIRTUAL)

void *virtual;

#endif /* CONFIG_HIGMEM || WANT_PAGE_VIRTUAL */

Imagen 1. Estructura utilizada para la creación de la estructura pagina del kernel de Linux, contenida en la dirección <linux/mm.h>. Cabe señalar que la estructura se encuentra dispersa en varios sectores del archivo.

En la Imagen 1 se observa la estructura básica de la pagina utilizada por el kernel, se puede observar que está compuesta por varios atributos necesarios para su creación, de los cuales destaca el índex o numero de la 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 cuenta las referencias a la página, en caso de no tener ninguna referencia, libera la página en cuestión.

no tener ninguna referencia, libera la página en cuestión. Imagen 2. Creación del tipo de dato

Imagen 2. Creación del tipo de dato struct page haciendo referencia con un puntero tipo *pgtable_t, a la tabla de páginas, el código se encuentra alojado en <arch/include/alfa/asm/page.h>.

En la Imagen 2 se muestra como se hace la denominación de la página, y esta a su vez genera un puntero a la tabla de páginas correspondiente.

-Tamaño Páginas

Para determinar el tamaño aproximado de una página, se definen ciertos parámetros a utilizar dentro del kernel de Linux, los cuales se encuentran almacenados dentro del directorio <arch/include/alfa/asm/page.h>, que se mencionan a continuación:

, que se mencionan a continuación: Imagen 3. Estructura tamaño de

Imagen 3. Estructura

tamaño

de

<arch/include/alfa/asm/page.h>

utilizada

para

la

página,

alojada

determinar

en

el

ruta

la

En la Imagen 3, se observan los siguientes atributos:

Sistemas Operativos II – Departamento Ingeniería – Universidad Arturo Prat

2

Sistemas Operativos II

ANALIZANDO EL KERNEL DE LINUX, MEMORIA VIRTUAL

PAGE_SHIFT: se define como el largo en bits lineales del desplazamiento de la página.

PAGE_SIZE: se define como el tamaño de la página que se compone de su largo en bits – 1.

PAGE_MASK: se define como la máscara de la página, que en el caso de sobrepasar el tamaño, lo rellena con ceros para compensar la falta de bits.

-Tabla de Páginas

Como se mencionó anteriormente, las páginas están referenciadas por su tabla de página, el kernel de Linux mantiene la tabla de páginas dentro del archivo <arch/include/alfa/asm/page.h>

Por lo cual en la imagen siguiente se presentan las estructuras correspondientes a la tabla de páginas, cabe señalar que la tabla de páginas no posee una estructura determinada, y se forma por una serie de punteros de estructura.

y se forma por una serie de punteros de estructura. Imagen 4. Implementación de funciones que

Imagen 4. Implementación de funciones que hacen referencia a una estructura de la tabla de página, contenida en <arch/include/alfa/asm/pgtable.h>.

La imagen 4, presenta una detallada implementación que corresponde a funciones primordiales para la confección de la tabla de páginas, de las cuales se descompone el Tamaño de la tabla, la máscara utilizada, y los correspondientes punteros hacia la memoria y obtención de datos correspondientes para el manejo de las tablas.

Para llevar un orden, el kernel de Linux propone niveles de tablas de páginas, para ello existen las tablas de primer nivel y segundo nivel para luego referenciar las páginas.

nivel y segundo nivel para luego referenciar las páginas. Imagen 5 . Muestra de niveles utilizados

Imagen 5. Muestra de niveles utilizados por el kernel de Linux para la tabla de páginas.

La imagen 5, presenta la estructura utilizada por el kernel de Linux para la tabla de páginas la cual consta de tres niveles los cuales se presentan a continuación:

PGD: corresponde al primer nivel de la tabla de páginas que contiene como atributo de ella el número de PMD como atributo relevante.

PMD: corresponde al segundo nivel de la tabla de

a

páginas

referenciar PTE, su ubicación entre otros.

y

contiene

la

información

de

la

página

PTE: estructura base que contiene las páginas que son referenciadas por la PMD, además de los atributos propios de cada página.

la PMD, además de los atributos propios de cada página. Imagen 6 . Imagen que representa

Imagen 6. Imagen que representa los 3 niveles con los cuales el kernel maneja la tabla de páginas, contenido en <arch/include/alfa/asm/pgtable.h>

Un

esquema

prototipo

es

el

que

se

presenta

a

continuación:

 

Sistemas Operativos II – Departamento Ingeniería – Universidad Arturo Prat

3

Sistemas Operativos II

ANALIZANDO EL KERNEL DE LINUX, MEMORIA VIRTUAL

SEGMENTACIÓN

Divide la memoria en segmentos, cada uno de los cuales tiene una longitud variable, que está definida intrínsecamente por el tamaño de ese segmento del programa.

La MMU no sabe nada sobre las distintas regiones de los procesos. Sólo entiende de páginas. El sistema operativo debe guardar para cada proceso una tabla de regiones que especifiquen qué páginas pertenecen a cada región.

Por lo cual, se especifican los siguientes hitos de cómo funciona la segmentación:

• El paso de dirección lógica a lineal se denomina

segmentación

• Las direcciones lógicas son de 48 bits divididas en dos Partes: segmento (16 bits) y desplazamiento (32 bits)

• Las direcciones lineales y físicas son de 32 bits.

El i386 contiene registros de segmento para generar las direcciones lógicas

• El registro contiene un selector de segmento

• Con este selector se obtiene un descriptor de segmento

• Con el descriptor y el offset se obtiene la dirección lógica

• Los descriptores de segmento residen en dos tablas,

la GDT (global) y la LDT (local)

• El selector de segmento es un índice dentro de una u otra tabla

• Los detalles del descriptor de segmento

-Gestión de Segmentación

del descriptor de segmento -Gestión de Segmentación Imagen 7. Parte del código que gestiona la memoria

Imagen 7. Parte del código que gestiona la memoria compartida para la segmentación <mm/hugetlb.c>

En la Imagen 7, se describen las variables correspondientes a los segmentos encontrados que se comparten y en base a ello, los localiza y cuenta cada segmento compartido en la memoria.

localiza y cuenta cada segmento compartido en la memoria. Imagen 8. Parte del código que ajusta
localiza y cuenta cada segmento compartido en la memoria. Imagen 8. Parte del código que ajusta

Imagen 8. Parte del código que ajusta el número de segmentos y la cantidad de bytes a escribir y devuelve el error apropiado <mm/filemap.h>

En la Imagen 8, se describen las condiciones, funciones y variables asociadas al código de ajuste de segmento, de las cuales se describen las siguientes:

IOV: solicitud de vectores de entrada y salida. Nr_segs: numero de segmentos que contiene el vector Count: contador, contiene el numero de bytes a escribir. Acces_Flags: indica el tipo de acceso, de los cuales pueden ser VERIFY_READ%, verifica si es de lectura, VERIFY_WRITE%, verifica si es de escritura.

Dado que los segmentos necesitan ser administrados por una estructura base, el kernel de Linux utiliza una forma determinada de manejo del tamaño de los segmentos, por tanto se define detalladamente.

Sistemas Operativos II – Departamento Ingeniería – Universidad Arturo Prat

4

Sistemas Operativos II

ANALIZANDO EL KERNEL DE LINUX, MEMORIA VIRTUAL

-Intercambio de Segmentos

KERNEL DE LINUX, MEMORIA VIRTUAL -Intercambio de Segmentos Imagen 9. Código asociado al intercambio entre los

Imagen 9. Código asociado al intercambio entre los segmentos y la memoria, alojado en <mm/filemap.c>.

La Imagen 9, se puede observar la referencia al traspaso de segmentos a páginas y seguidamente estos se traspasan a memoria principal o guardarlos en archivos dependiendo de lo que se necesite hacer.

Además puede hacer lo contrario que es traspasar las páginas a segmentos y así gestionar lo necesario de manera inversa.

Si no ocurren los sucesos mencionados anteriormente, se bloquea este proceso, dado que no todos los segmentos se pueden copiar a la vez sin producir un fallo de página, es decir, debe de ir por segmentos consecutivos.

Para controlar el límite de los segmentos, el kernel de Linux asocia un código determinado que soluciona el problema mostrado.

un código determinado que soluciona el problema mostrado. Imagen 10 . se muestra parte del código

Imagen 10. se muestra parte del código inserto en el kernel de linux, para el manejo de los límites de segmento.

La Imagen 10 muestra el manejo de los límites de los segmentos, y contiene a, los segmentos asociados a un tamaño o limite determinado para lo cual se utilizan las siguientes sentencias.

Rimita: no deja que crezca más allá del límite el tamaño del segmento.

Newark: indica cuando son los cortes del segmento nuevo.

Oldbrk: indica el corte final del segmento.

SWAP

Swapping es la técnica mediante la cual se intercambia un proceso que está en memoria por otro que no lo está. Para esto se hace uso de un área de memoria de intercambio (swap). Actualmente no se intercambian procesos sino páginas de memoria.

Un sistema operativo puede disponer de más memoria RAM que existente físicamente en el hardware que éste controla. Esto se consigue mediante lo que se conoce como memoria virtual. Cuando se necesita memoria, y no hay más físicamente, el kernel puede eliminar páginas de memoria para obtener espacio libre. Se tienen en cuenta varios aspectos:

- Si la página a descartar es de sólo lectura, se elimina sin más.

- Si es de escritura y no ha sido modificada, también se elimina.

- Si es de escritura y ha sido modificada, se debe 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).

guarda en la memoria de intercambio (dispositivo de swap). El swapping debe ser transparente a los

El swapping debe ser transparente a los programas. Es decir, no se necesita introducir ninguna instrucción 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

ANALIZANDO EL KERNEL DE LINUX, MEMORIA VIRTUAL

para señalar que una página que pertenecía a un espacio de dirección de proceso se ha intercambiado. Además de esa bandera, Linux también se aprovecha de los bits restantes de la entrada de tabla de página para almacenar en ellos un swapped-out page identifier (un identificador) que codifique la localización de la página descargada al almacenamiento swap del disco. Cuando ocurre una excepción de fallo de página, el manejador de la excepción puede detectar accediendo a la tabla de páginas que la página no está presente en la RAM e invocar la función que intercambia la página que falta del disco.

Las características principales y funciones de las que se encarga el sistema de intercambio pueden ser resumidas en:

· Crear las "zonas swap" en el disco para almacenar las páginas que no tienen una imagen en el disco.

· Manejar el espacio de las zonas de swap para asignar y liberar "marcos de página" según las necesidades.

· Proporcionar una función para realizar el intercambio de las páginas desde la RAM a una zona swap “swap

out” y otra función para intercambiar las páginas de una zona swap a la RAM “swap in”.

· Hacer uso los "swapped-out page identifiers" en las

entradas de tabla de página, para saber en todo momento las páginas que se intercambian y así no perder de vista las posiciones de los datos en zona de memoria swap en un momento determinado.

La realización de un swapping puede estar deshabilitada (manteniendo inactivas las zonas swap que existan) o activa manteniendo alguna zona activada (funciones swapoff y swapon respectivamente).

Para tener una visión del uso de swap cabe destacar que su uso es básicamente para obtener un espacio adicional para la memoria principal, ampliando así el espacio de direcciones de memoria útiles para los procesos en modo usuario. De hecho, las zonas de swap grandes permiten que el núcleo lance varias peticiones de memoria que excedan la cantidad de RAM física instalada en el sistema. Sin embargo, la simulación de la RAM no es como una RAM física en términos del funcionamiento. Cada acceso para un proceso a una página que está siendo intercambiada de la RAM al espacio swap, es mayor que el acceso a una página de la RAM. Por tanto siempre será mucho mejor aumentar la RAM como solución al aumento de necesidades de un sistema, que utilizar el swapping y sólo debemos utilizar éste método como último recurso. Sin embargo hoy por hoy aún es recomendable el uso de swap, ya que nos permitirá en cualquier momento desalojar de RAM procesos de poca actividad dando paso a otros que requieran espacio en memoria principal.

Swap en el kernel de Linux

Las características principales del sistema de intercambio son:

• Crear las "zonas swap" en el disco para almacenar las

páginas que no tienen una imagen en el disco.

• Manejar el espacio de las zonas de swap para asignar y

liberar "slots de página".

• Proporcionar una función para realizar el intercambio de páginas en RAM a una zona swap “swap out” y otra

función para intercambiar las páginas de una zona swap a RAM “swap in”.

• Hacer uso los identificadores de páginas

intercambiadas en las entradas de tabla de página, para saber en todo momento las páginas que se intercambian y así no perder de vista las posiciones de los datos en zona swap en un momento determinado

Habilitar y deshabilitar la opción swapping.

Función swapon() : esta función se utilizapara activar una zona swap. Para ello hace uso de la llamada al sistema sys_swapon()

Linux/mm/swapfile.c

Se inserta debidamente en swap_list (lista por prioridades) y finalmente la función, tras comprobar posibles errores del dispositivo pasado en specialfile, rellena la estructura swap_header almacenada en el slot 0 del dispositivo swap cuando se creó (mkswap).

sys_swapoff() : La rutina de servicio sys_swapoff() desactiva una zona swap identificada por el parámetro specialfile. Es mucho más compleja y consume más tiempo que sys_swapon(), ya que la partición que se desactivará puede contener páginas pertenecientes a varios procesos. La función explora forzosamente la zona swap e intercambia todas las páginas existentes. Cada intercambio requiere un nuevo marco de página.

Zona de intercambio

Las zonas swap se implementan como una partición del disco o como un fichero.

• Se pueden definir múltiples zonas swap hasta un

máximo especificado en la macro MAX_SWAPFILES (normalmente 32)

• Una zona swap está compuesta por slots (ranuras)

• El primer slot almacena información sobre la zona

contenida en la estructura swap_header Los datos almacenados en una zona swap son temporales, cuando el sistema se apaga se pierden todos los datos. Por esta razón, las zonas swap almacenan poca información de control, siendo básicamente:

Sistemas Operativos II – Departamento Ingeniería – Universidad Arturo Prat

6

Sistemas Operativos II

ANALIZANDO EL KERNEL DE LINUX, MEMORIA VIRTUAL

• Tipo de zona swap • Lista de slots defectuosos.

Crear y activar una zona swap

Generalmente el administrador del sistema crea una partición swap al crear el resto de particiones del sistema Linux. Para crear un área de disco como una nueva zona swap se utiliza el camando mkswap que inicializa los campos con la información obtenida del primer slot.Este comando deja la zona swap en estado inactivo. Para activar la zona se puede utilizar un scrip incluido en el fichero cargador (inittab) o dinámicamente una vez el sistema está funcionando.

Estructura de datos.

El núcleo guarda en memoria una lista de dispositivos de swap activos. Se utiliza una tabla de descriptores, en la que cada uno describe un dispositivo de swap. La estructura swap_info_struct, declarada en el archivo cabecera <linux/swap.h>, define el formato de estos descriptores. Contiene los campos siguientes:

de estos descriptores. Contiene los campos siguientes: Imagen 11 . se presenta la estructura básica de

Imagen 11. se presenta la estructura básica de la swap.

funcional

Algunos de los significados de ésta estructura se encuentran definidos a continuación.

de ésta estructura se encuentran definidos a continuación. Descriptor de la zona swap (swap_list_t) struct swap_list_t

Descriptor de la zona swap (swap_list_t)

struct swap_list_t { int head; /* head of priority-ordered swapfile

list */

int next; /* swapfile to be used next */

};

Swap_list_t es una lista de prioridades encabezada por el dispositivo con mayor prioridad. La variable swap_list, del tipo swap_list_t, incluye los campos siguientes:

Head : primer elemento de la lista en el swap_info • Next: índice del vector swap_info de la zona swap siguiente que se seleccionará para el intercambio de las páginas. Este campo se utiliza para implementar el algoritmo Round Robin para elegir la zonas de swap de la máxima prioridad con slots libres.

Identificador de la página descargada al almacenamiento swap Esta página se identifica especificando la entrada del índice de la zona swap swap_info y el slot de página dentro de la zona swap. Porque la primera página (con el índice 0) de la zona swap se reserva para la swap_header union, luego el primer slot útil de la página tiene índice

Sistemas Operativos II – Departamento Ingeniería – Universidad Arturo Prat

7

Sistemas Operativos II

ANALIZANDO EL KERNEL DE LINUX, MEMORIA VIRTUAL

1. El formato de un identificador descargado al almacenamiento swap de una página es:

Acto seguido se invoca a la función add_to_swap():

es: Acto seguido se invoca a la función add_to_swap(): añade un slot nuevo en una zona

añade un slot nuevo en una zona swap e inserta la dirección del descriptor.

Funciones utilizadas:

swp_entry La función swp_entry(type, offset) construye un identificador para una página descargada al almacenamiento swap. Cabe resaltar que cuando una página se intercambia de RAM a espacio swap, se inserta su identificador en la tabla de página así que la página puede ser encontrada cuando sea necesario.

swp_type() y swp_offset(): Inversamente, las funciones swp_type() y swp_offset() extraen del identificador de la página descargada al almacenamiento swap, el índice de la zona swap y el índice del slot de página, respectivamente.

Entre otras funciones que existen y que se exploraran en profundidad más adelante se encuentran:

Swap_free(),get_swap_map(),scan_swap_map(), entre otras.

Intercambio de páginas de RAM a zona swap (swap-out)

Pasos:

1.Insertar el marco de página en la cache swap:

debemos preparar la cache swap, para ello invocamos la función shrink_list() que determina si la página es anónima y si el marco de página correspondiente no está incluido ya en la cache.

2. Actualizar las entradas de la tabla de páginas:

Una vez que el add_to_swap() termine, el shrink_list() invoca el try_to_unmap(), que determina la entrada en la tabla de páginas en modo usuario que señala a la página a intercambiar y escribe en ella un identificador de página.

3. Escribir la página en la zona swap: en este paso se inicia la transferencia. Se comprueba que sólo un proceso hace referencia a la página. Al finalizar se despierta cualquier proceso que estuviera en espera.

4. Borrado del marco de página de la cache swap: el último paso para realizar la migración de una página finaliza con la función shrink_list() para verificar si hay algún proceso intentando acceder al marco de página mientras se realiza la transferencia I/O. Si es así, se invoca a delete_from_swap_cache() para quitar el marco de página de la caché swap.

Intercambio de páginas de zona swap a RAM (swap-in)

El proceso de migración de las páginas del espacio swap

a RAM ocurre cuando un proceso hace referencia a una

página que ha sido intercambiada fuera del disco. El manejador de la excepción de fallo de página comienza

la migración (de swap a RAM) cuando ocurren las condiciones siguientes:

· La página incluyendo la dirección que causó la

excepción es válido, pertenece a una región de memoria

del proceso actual.

static unsigned long shrink_list(enum lru_list lru, unsigned long nr_to_scan, struct zone *zone, struct scan_control *sc, int

·

La página no está presente en memoria, es decir es, la

actual bandera Presenta en la entrada de tabla de página 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 al almacenamiento swap.

Si todas las condiciones anteriores se cumplen, el handle_pte_fault() invoca la función do_swap_page() do_swap_page()

if (is_active_lru(lru)) { if (inactive_list_is_low(zone, sc, file)) shrink_active_list(nr_to_scan, zone,

sc, priority, file);

 

return 0;

}

 

return shrink_inactive_list(nr_to_scan, zone, sc, priority, file);

}

Sistemas Operativos II – Departamento Ingeniería – Universidad Arturo Prat

8

Sistemas Operativos II

ANALIZANDO EL KERNEL DE LINUX, MEMORIA VIRTUAL

CONCLUSION

Sabemos que la memoria virtual en un sistema operativo es muy importante, ya que, sin esta tendríamos que cargar todos los procesos a memoria principal, lo que produciría lentitud y ciertas limitaciones a la hora de ejecutar programas, algo no óptimo para las necesidades que se presentan hoy en día.

REFERENCIAS DIGITALES

 

[1]

http://www.wikilearning.com/tutorial/kernel_d

e_linux-memory_manager/633-7

 

[2]

http://ownz.despai.es/Documentos/GNU

-

En cuanto a la paginación, se obtuvo una visión más clara de cómo trata el kernel de linux este tema, aprendiendo además que se trabaja con tablas de páginas, etc.

Linux/kernel.htm

[3]

http://sistemas-clases.foroactivo.net/taller-en-

clase-11-f77/arturo-saines-medina-s6j-

 
 

memoria-virtual-t913.htm

Para que haya segmentación es necesario que exista la paginación, ya que la MMU no sabe de segmentos, solo de páginas, lo que provocó así el conocimiento de cómo trabaja la segmentación dentro del kernel y que rol cumple.

[4]

http://kerneltrap.org/node/2450

Enfocándose en la swap, se encarga de guardar los archivos por un corto periodo de tiempo para pasarlos a memoria principal o a memoria virtual.

REFERENCIAS

Las ventajas de la memoria virtual, es que podernos ejecutar procesos o programas de gran tamaño y no dependiendo de la memoria física existente.

[1]

Sistemas Operativos “Una Visión Aplicada” Jesus Carretero – Felix Garcia – Pedro de Miguel Mcgraw-hill Pag. 187 - 207

Las desventajas, es que puede existir paginación, que se provoca cuando existen muchos intercambios entre memoria principal y secundaria generando así latencia para el procesador. Se adquirió conocimiento relevante de cómo trabaja el kernel enfocándose en la memoria virtual y que procesos son parte del kernel aplicado a el ámbito virtual.

[2]

Sistemas Operativos Andrew Tanenbaun Prentice-Hall Pag. 319 - 330

 

[3]

Sistemas Operativos Williams Stalling Prentice-Hall Pag. 286 – 336

[4]

Sistemas Operativos “5 Edición” Abraham Silverchantz Pearson Education Pag.

289

Sistemas Operativos II – Departamento Ingeniería – Universidad Arturo Prat

9