Sei sulla pagina 1di 9

Memoria Virtual Kernel de Linux

LINUX KERNEL VIRTUAL MEMORY

Alejo Gómez Duran Esteban Rojas Christian Castro Rojas

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.

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 Se conocerán además conceptos de mapeo, intercambio


de memoria, swap entre otras.
El trabajo que se presenta, se centra en el estudio
detallado del núcleo de Linux llamado kernel, más Para ello se estructura el siguiente informe de la manera
concretamente en la denominada Memoria Virtual. que se detalla:

Se desarrollará un análisis exhaustivo y profundo de los


códigos insertos en el núcleo. La idea central del trabajo Paginación
desarrollado radica en la obtención y comprensión de  Estructura de Página
cómo actúa el kernel a la hora de sobrepasar la memoria  Tamaño de una Página
física existente para así activar o generar los módulos de  Tabla de Páginas
memoria virtual, a fin de abarcar un procedimiento o
proceso que exija más de la memoria existente. Segmentación
 Gestión de la Segmentación
Se presentarán módulos explicativos, además de tablas y  Intercambio de Segmentos
se harán alusiones a trozos de códigos con la finalidad de
dar una buena comprensión del tema que se hace Swap
referencia como es la Memoria Virtual.  Concepto de swap
 Swap en Linux
El siguiente informe tiene como finalidad llevar al lector
 Estructura
una herramienta concreta que facilite los procesos de
 Funciones
comprensión en torno a la memoria virtual desarrollada e
implementada en el kernel de Linux.  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 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

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.
Imagen 2. Creación del tipo de dato struct page haciendo
referencia con un puntero tipo *pgtable_t, a la tabla de
El paso de dirección lineal a física se denomina
páginas, el código se encuentra alojado en
paginación.
<arch/include/alfa/asm/page.h>.
Aplicando el concepto de paginación a como hace uso el
En la Imagen 2 se muestra como se hace la denominación
kernel de Linux de este método, se presenta la estructura
de la página, y esta a su vez genera un puntero a la tabla
utilizada a continuación:
de páginas correspondiente.

typedef struct page { -Tamaño Páginas


struct list_head list;
struct address_space *mapping; Para determinar el tamaño aproximado de una página,
unsigned long index; se definen ciertos parámetros a utilizar dentro del kernel
struct page *next_hash; de Linux, los cuales se encuentran almacenados dentro
atomic_t count; del directorio <arch/include/alfa/asm/page.h>, que se
unsigned long flags; mencionan a continuación:
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 3. Estructura utilizada para determinar el


Imagen 1. Estructura utilizada para la creación de la tamaño de la página, alojada en la ruta
estructura pagina del kernel de Linux, contenida en la <arch/include/alfa/asm/page.h>
dirección <linux/mm.h>. Cabe señalar que la estructura
se encuentra dispersa en varios sectores del archivo. 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> Imagen 5. Muestra de niveles utilizados por el kernel de
Linux para la tabla de páginas.
Por lo cual en la imagen siguiente se presentan las
estructuras correspondientes a la tabla de páginas, cabe La imagen 5, presenta la estructura utilizada por el kernel
señalar que la tabla de páginas no posee una estructura de Linux para la tabla de páginas la cual consta de tres
determinada, y se forma por una serie de punteros de niveles los cuales se presentan a continuación:
estructura.

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


páginas y contiene la información de la página a
referenciar PTE, su ubicación entre otros.

PTE: estructura base que contiene las páginas que son


referenciadas por la PMD, además de los atributos
propios de cada página.

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.
Imagen 6. Imagen que representa los 3 niveles con los
Para llevar un orden, el kernel de Linux propone niveles cuales el kernel maneja la tabla de páginas, contenido en
de tablas de páginas, para ello existen las tablas de primer <arch/include/alfa/asm/pgtable.h>
nivel y segundo nivel para luego referenciar las páginas.

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 Imagen 8. Parte del código que ajusta el número de
• Con el descriptor y el offset se obtiene la dirección segmentos y la cantidad de bytes a escribir y devuelve el
lógica error apropiado <mm/filemap.h>
• Los descriptores de segmento residen en dos tablas,
la GDT (global) y la LDT (local) En la Imagen 8, se describen las condiciones, funciones y
• El selector de segmento es un índice dentro de una u variables asociadas al código de ajuste de segmento, de
otra tabla las cuales se describen las siguientes:
• Los detalles del descriptor de segmento
IOV: solicitud de vectores de entrada y salida.
-Gestión de Segmentación 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.

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.

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


Sistemas Operativos II

ANALIZANDO EL KERNEL DE LINUX, MEMORIA VIRTUAL

-Intercambio de Segmentos 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

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

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 Swap en el kernel de Linux
de esa bandera, Linux también se aprovecha de los bits
restantes de la entrada de tabla de página para Las características principales del sistema de
almacenar en ellos un swapped-out page identifier (un intercambio son:
identificador) que codifique la localización de la página
descargada al almacenamiento swap del disco. Cuando • Crear las "zonas swap" en el disco para almacenar las
ocurre una excepción de fallo de página, el manejador páginas que no tienen una imagen en el disco.
de la excepción puede detectar accediendo a la tabla de • Manejar el espacio de las zonas de swap para asignar y
páginas que la página no está presente en la RAM e liberar "slots de página".
invocar la función que intercambia la página que falta • Proporcionar una función para realizar el intercambio
del disco. 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”.
Las características principales y funciones de las que se • Hacer uso los identificadores de páginas
encarga el sistema de intercambio pueden ser resumidas intercambiadas en las entradas de tabla de página, para
en: saber en todo momento las páginas que se intercambian
y así no perder de vista las posiciones de los datos en
· Crear las "zonas swap" en el disco para almacenar las zona swap en un momento determinado
páginas que no tienen una imagen en el disco.
· Manejar el espacio de las zonas de swap para asignar y Habilitar y deshabilitar la opción swapping.
liberar "marcos de página" según las necesidades.
· Proporcionar una función para realizar el intercambio Función swapon() : esta función se utilizapara activar
de las páginas desde la RAM a una zona swap “swap una zona swap. Para ello hace uso de la llamada al
out” y otra función para intercambiar las páginas de una sistema sys_swapon()
zona swap a la RAM “swap in”.
· Hacer uso los "swapped-out page identifiers" en las Linux/mm/swapfile.c
entradas de tabla de página, para saber en todo momento
las páginas que se intercambian y así no perder de vista Se inserta debidamente en swap_list (lista por
las posiciones de los datos en zona de memoria swap en prioridades) y finalmente la función, tras comprobar
un momento determinado. posibles errores del dispositivo pasado en specialfile,
rellena la estructura swap_header almacenada en el slot
La realización de un swapping puede estar deshabilitada 0 del dispositivo swap cuando se creó (mkswap).
(manteniendo inactivas las zonas swap que existan) o
activa manteniendo alguna zona activada (funciones sys_swapoff() : La rutina de servicio sys_swapoff()
swapoff y swapon respectivamente). desactiva una zona swap identificada por el parámetro
specialfile. Es mucho más compleja y consume más
Para tener una visión del uso de swap cabe destacar que tiempo que sys_swapon(), ya que la partición que se
su uso es básicamente para obtener un espacio adicional desactivará puede contener páginas pertenecientes a
para la memoria principal, ampliando así el espacio de varios procesos. La función explora forzosamente la
direcciones de memoria útiles para los procesos en zona swap e intercambia todas las páginas existentes.
modo usuario. De hecho, las zonas de swap grandes Cada intercambio requiere un nuevo marco de página.
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 Zona de intercambio
RAM no es como una RAM física en términos del
funcionamiento. Cada acceso para un proceso a una Las zonas swap se implementan como una partición del
página que está siendo intercambiada de la RAM al disco o como un fichero.
espacio swap, es mayor que el acceso a una página de la • Se pueden definir múltiples zonas swap hasta un
RAM. Por tanto siempre será mucho mejor aumentar la máximo especificado en la macro MAX_SWAPFILES
RAM como solución al aumento de necesidades de un (normalmente 32)
sistema, que utilizar el swapping y sólo debemos utilizar • Una zona swap está compuesta por slots (ranuras)
éste método como último recurso. Sin embargo hoy por • El primer slot almacena información sobre la zona
hoy aún es recomendable el uso de swap, ya que nos contenida en la estructura swap_header
permitirá en cualquier momento desalojar de RAM Los datos almacenados en una zona swap son
procesos de poca actividad dando paso a otros que temporales, cuando el sistema se apaga se pierden todos
requieran espacio en memoria principal. 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.

Descriptor de la zona swap (swap_list_t)


Estructura de datos.
struct swap_list_t {
El núcleo guarda en memoria una lista de dispositivos int head; /* head of priority-ordered swapfile
de swap activos. Se utiliza una tabla de descriptores, en list */
la que cada uno describe un dispositivo de swap. La int next; /* swapfile to be used next */
estructura swap_info_struct, declarada en el archivo };
cabecera <linux/swap.h>, define el formato de estos
descriptores. Contiene los campos siguientes:
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
Imagen 11. se presenta la estructura básica funcional
Esta página se identifica especificando la entrada del
de la swap.
índice de la zona swap
swap_info y el slot de página dentro de la zona swap.
Algunos de los significados de ésta estructura se
Porque la primera página (con el índice 0) de la zona
encuentran definidos a continuación.
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():
añade un slot nuevo en una zona swap e inserta la
dirección del descriptor.

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


Funciones utilizadas: Una vez que el add_to_swap() termine, el shrink_list()
invoca el try_to_unmap(), que determina la entrada en
swp_entry la tabla de páginas en modo usuario que señala a la
La función swp_entry(type, offset) construye un página a intercambiar y escribe en ella un identificador
identificador para una página descargada al de página.
almacenamiento swap. Cabe resaltar que cuando una
página se intercambia de RAM a espacio swap, se 3. Escribir la página en la zona swap: en este paso se
inserta su identificador en la tabla de página así que la inicia la transferencia. Se comprueba que sólo un
página puede ser encontrada cuando sea necesario. proceso hace referencia a la página. Al finalizar se
despierta cualquier proceso que estuviera en espera.
swp_type() y swp_offset(): Inversamente, las funciones
swp_type() y swp_offset() extraen del identificador de 4. Borrado del marco de página de la cache swap: el
la página descargada al almacenamiento swap, el índice último paso para realizar la migración de una página
de la zona swap y el índice del slot de página, finaliza con la función shrink_list() para verificar si hay
respectivamente. algún proceso intentando acceder al marco de página
mientras se realiza la transferencia I/O. Si es así, se
Entre otras funciones que existen y que se exploraran en invoca a delete_from_swap_cache() para quitar el
profundidad más adelante se encuentran: marco de página de la caché swap.
Swap_free(),get_swap_map(),scan_swap_map(),
entre otras. Intercambio de páginas de zona swap a RAM
(swap-in)
Intercambio de páginas de RAM a zona swap
(swap-out) El proceso de migración de las páginas del espacio swap
a RAM ocurre cuando un proceso hace referencia a una
Pasos: página que ha sido intercambiada fuera del disco. El
manejador de la excepción de fallo de página comienza
1.Insertar el marco de página en la cache swap: la migración (de swap a RAM) cuando ocurren las
debemos preparar la cache swap, para ello invocamos la condiciones siguientes:
función shrink_list() que determina si la página es
anónima y si el marco de página correspondiente no está · La página incluyendo la dirección que causó la
incluido ya en la cache. excepción es válido, pertenece a una región de memoria
del proceso actual.

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()
}

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 REFERENCIAS DIGITALES


es muy importante, ya que, sin esta tendríamos que cargar
todos los procesos a memoria principal, lo que produciría [1] http://www.wikilearning.com/tutorial/kernel_d
lentitud y ciertas limitaciones a la hora de ejecutar e_linux-memory_manager/633-7
programas, algo no óptimo para las necesidades que se
presentan hoy en día. [2] http://ownz.despai.es/Documentos/GNU -
Linux/kernel.htm
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 [3] http://sistemas-clases.foroactivo.net/taller-en-
además que se trabaja con tablas de páginas, etc. 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 [4] http://kerneltrap.org/node/2450
de páginas, lo que provocó así el conocimiento de cómo
trabaja la segmentación dentro del kernel y que rol
cumple.

Enfocándose en la swap, se encarga de guardar los


archivos por un corto periodo de tiempo para pasarlos a REFERENCIAS
memoria principal o a memoria virtual.
[1] Sistemas Operativos
Las ventajas de la memoria virtual, es que podernos “Una Visión Aplicada”
ejecutar procesos o programas de gran tamaño y no Jesus Carretero – Felix Garcia – Pedro de Miguel
dependiendo de la memoria física existente. 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 [2] Sistemas Operativos
para el procesador. Se adquirió conocimiento relevante de Andrew Tanenbaun
cómo trabaja el kernel enfocándose en la memoria virtual Prentice-Hall
y que procesos son parte del kernel aplicado a el ámbito Pag. 319 - 330
virtual.
[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

Potrebbero piacerti anche