fbpx
Wikipedia

Paginación de memoria

En sistemas operativos de computadoras, los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa.

En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes procesos, mientras que algunos marcos están disponibles para su uso. El sistema operativo mantiene una lista de estos últimos marcos, y una tabla por cada proceso, donde consta en qué marco se encuentra cada página del proceso. De esta forma, las páginas de un proceso pueden no estar continuamente ubicadas en memoria, y pueden intercalarse con las páginas de otros procesos.

En la tabla de páginas de un proceso, se encuentra la ubicación del marco que contiene a cada una de sus páginas. Las direcciones lógicas ahora se forman como un número de página y de un desplazamiento dentro de esa página (conocido comúnmente como offset). El número de página es usado como un índice dentro de la tabla de páginas, y una vez obtenida la dirección del marco de memoria, se utiliza el desplazamiento para componer la dirección real o dirección física. Este proceso se realiza en una parte del computador específicamente diseñada para esta tarea, es decir, es un proceso hardware y no software.

De esta forma, cuando un proceso es cargado en memoria, se cargan todas sus páginas en marcos libres y se completa su tabla de páginas.

Veamos un ejemplo:

Número de marco Programa.#página Dirección física
0 Programa A.0 1000:0000
1 Programa A.1 1000:1000
2 Programa A.2 1000:2000
3 Programa D.0 1000:3000
4 Programa D.1 1000:4000
5 Programa C.0 1000:5000
6 Programa C.1 1000:6000
7 Programa D.2 1000:7000

La tabla de la derecha muestra una posible configuración de la memoria en un momento dado, con páginas de 4Kb. La forma en que se llegó a este estado puede haber sido la siguiente:

Se tienen cuatro procesos, llamados A, B, C y D, que ocupan respectivamente 3, 2, 2 y 3 páginas.

  1. El programa A se carga en memoria (se le asignan los marcos 0, 1 y 2)
  2. El programa B se carga en memoria (se le asignan los marcos 3 y 4)
  3. El programa C se carga en memoria (se le asignan los marcos 5 y 6)
  4. El programa B termina, liberando sus páginas
  5. El programa D se carga en memoria (se le asignan los marcos 3 y 4 que usaba el proceso B y el marco 7 que permanecía libre)

De esta forma, las tablas simplificadas de cada proceso se ven de esta forma:

Proceso A
Página Dirección física
0 1000:0000
1 1000:1000
2 1000:2000
Proceso B
Página Dirección física
- -
- -
Proceso C
Página Dirección física
0 1000:5000
1 1000:6000
Proceso D
Página Dirección física
0 1000:3000
1 1000:4000
2 1000:7000

Ahora consideremos qué sucede cuando un programa quiere acceder a su memoria. Si el programa A contiene una referencia a la memoria con dirección 20FE, se realizará el siguiente procedimiento. 20FE es 0010000011111110 en notación binaria (en un sistema de 16 bit), y en el ejemplo se están usando páginas de 4Kb de tamaño. Cuando la petición de la dirección de memoria 20FE es realizada, la Unidad de Gestión de memoria se ve de esta forma:

 0010000011111110 = 20FE |__||__________| | | | v | Posición de memoria dentro de la página (0FE) v Número de página (0010 = 2) 

Tabla de paginación
Entrada a la tabla de páginas
n = @ página física V P L E M

* n = bits de la @ lógica -log2(número de palabras de una página). * V: bit de validez. * P: bit de persistencia. * L: bit de derecho a lectura. * E: bit de derecho a escritura. * M: bit de modificación. 

Al usar páginas de 4096 bytes, todas las ubicaciones dentro de una página pueden ser representadas por 12 bits, en el sistema binario (212=4096), lo que deja 4 bits para representar el número de página. Si las páginas hubieran sido de la mitad del tamaño (2048) se podrían tener 5 bits para el número de página, lo que significa que a menor tamaño de página se pueden tener tablas con más páginas.

Cuando el pedido de acceso a memoria es realizado, la MMU busca en la tabla de páginas del proceso que realizó el pedido por la relación en memoria física. En nuestro ejemplo, la página número 2 del proceso A corresponde al marco número 2 en memoria física, con dirección real 1000:2000, por lo tanto, la MMU devolverá la dirección del marco en memoria física, con el desplazamiento dentro de esa página: 1000:20FE.

Paginación en memoria virtual

El único inconveniente de paginación pura es que todas las páginas de un proceso deben estar en memoria para que se pueda ejecutar. Esto hace que si los programas son de tamaño considerable, no puedan cargarse muchos a la vez, disminuyendo el grado de multiprogramación del sistema. Para evitar esto, y aprovechando el principio de cercanía de referencias donde se puede esperar que un programa trabaje con un conjunto cercano de referencias a memoria (es decir con un conjunto residente más pequeño que el total de sus páginas), se permitirá que algunas páginas del proceso sean guardadas en un espacio de intercambio (fragmentación interna) mientras no se necesiten.

Cuando la paginación se utiliza junto con memoria virtual, el sistema operativo mantiene además el conocimiento sobre qué páginas están en memoria principal y cuáles no, usando la tabla de paginación. Si una página buscada está marcada como no disponible (tal vez porque no está presente en la memoria principal, pero sí en el área de intercambio), cuando la CPU intenta referenciar una dirección de memoria en esa página, la MMU responde levantando una excepción (comúnmente llamada fallo de página). Si la página se encuentra en el espacio de intercambio, el sistema operativo invocará una operación llamada intercambio de página, para traer a memoria principal la página requerida. La operación lleva varios pasos. Primero se selecciona una página en memoria, por ejemplo una que no haya sido usada recientemente (para más detalles ver algoritmos de reemplazo de páginas). Si la página fue modificada, se escribe la misma en el espacio de intercambio. El siguiente paso en el proceso es leer la información en la página necesitada desde el espacio de intercambio. Cuando esto sucede, las tablas para traducción de direcciones virtuales a reales son actualizadas para reflejar los contenidos de la memoria física. Entonces el intercambio de página sale, y el programa que usó la dirección que causó la excepción es vuelto a ejecutar desde el punto en que se dio la misma y continúa como si nada hubiera pasado. También es posible que una dirección virtual sea marcada como no disponible porque no fue localizada previamente. En estos casos, una página de memoria es localizada y llenada con ceros, la tabla de paginación es modificada para mostrar los cambios y el programa se reinicia como en el otro caso.

Si la página que ha provocado el fallo de página no se encuentra en el espacio de intercambio, habrá que ir a buscarla a la unidad de disco. El proceso, por lo demás sería análogo.

Véase también

  •   Datos: Q656083

paginación, memoria, sistemas, operativos, computadoras, sistemas, paginación, memoria, dividen, programas, pequeñas, partes, páginas, mismo, modo, memoria, dividida, trozos, mismo, tamaño, páginas, llamados, marcos, página, esta, forma, cantidad, memoria, des. En sistemas operativos de computadoras los sistemas de paginacion de memoria dividen los programas en pequenas partes o paginas Del mismo modo la memoria es dividida en trozos del mismo tamano que las paginas llamados marcos de pagina De esta forma la cantidad de memoria desperdiciada por un proceso es el final de su ultima pagina lo que minimiza la fragmentacion interna y evita la externa En un momento cualquiera la memoria se encuentra ocupada con paginas de diferentes procesos mientras que algunos marcos estan disponibles para su uso El sistema operativo mantiene una lista de estos ultimos marcos y una tabla por cada proceso donde consta en que marco se encuentra cada pagina del proceso De esta forma las paginas de un proceso pueden no estar continuamente ubicadas en memoria y pueden intercalarse con las paginas de otros procesos En la tabla de paginas de un proceso se encuentra la ubicacion del marco que contiene a cada una de sus paginas Las direcciones logicas ahora se forman como un numero de pagina y de un desplazamiento dentro de esa pagina conocido comunmente como offset El numero de pagina es usado como un indice dentro de la tabla de paginas y una vez obtenida la direccion del marco de memoria se utiliza el desplazamiento para componer la direccion real o direccion fisica Este proceso se realiza en una parte del computador especificamente disenada para esta tarea es decir es un proceso hardware y no software De esta forma cuando un proceso es cargado en memoria se cargan todas sus paginas en marcos libres y se completa su tabla de paginas Veamos un ejemplo Numero de marco Programa pagina Direccion fisica0 Programa A 0 1000 00001 Programa A 1 1000 10002 Programa A 2 1000 20003 Programa D 0 1000 30004 Programa D 1 1000 40005 Programa C 0 1000 50006 Programa C 1 1000 60007 Programa D 2 1000 7000La tabla de la derecha muestra una posible configuracion de la memoria en un momento dado con paginas de 4Kb La forma en que se llego a este estado puede haber sido la siguiente Se tienen cuatro procesos llamados A B C y D que ocupan respectivamente 3 2 2 y 3 paginas El programa A se carga en memoria se le asignan los marcos 0 1 y 2 El programa B se carga en memoria se le asignan los marcos 3 y 4 El programa C se carga en memoria se le asignan los marcos 5 y 6 El programa B termina liberando sus paginas El programa D se carga en memoria se le asignan los marcos 3 y 4 que usaba el proceso B y el marco 7 que permanecia libre De esta forma las tablas simplificadas de cada proceso se ven de esta forma Proceso A Pagina Direccion fisica0 1000 00001 1000 10002 1000 2000Proceso B Pagina Direccion fisica Proceso C Pagina Direccion fisica0 1000 50001 1000 6000Proceso D Pagina Direccion fisica0 1000 30001 1000 40002 1000 7000 Ahora consideremos que sucede cuando un programa quiere acceder a su memoria Si el programa A contiene una referencia a la memoria con direccion 20FE se realizara el siguiente procedimiento 20FE es 0010000011111110 en notacion binaria en un sistema de 16 bit y en el ejemplo se estan usando paginas de 4Kb de tamano Cuando la peticion de la direccion de memoria 20FE es realizada la Unidad de Gestion de memoria se ve de esta forma 0010000011111110 20FE v Posicion de memoria dentro de la pagina 0FE v Numero de pagina 0010 2 div style overflow x auto table class wikitable style float right caption Tabla de paginacion caption tbody tr th Entrada a la tabla de paginas th tr tr td n pagina fisica td td V td td P td td L td td E td td M td tr tbody table div n bits de la logica log2 numero de palabras de una pagina V bit de validez P bit de persistencia L bit de derecho a lectura E bit de derecho a escritura M bit de modificacion Al usar paginas de 4096 bytes todas las ubicaciones dentro de una pagina pueden ser representadas por 12 bits en el sistema binario 212 4096 lo que deja 4 bits para representar el numero de pagina Si las paginas hubieran sido de la mitad del tamano 2048 se podrian tener 5 bits para el numero de pagina lo que significa que a menor tamano de pagina se pueden tener tablas con mas paginas Cuando el pedido de acceso a memoria es realizado la MMU busca en la tabla de paginas del proceso que realizo el pedido por la relacion en memoria fisica En nuestro ejemplo la pagina numero 2 del proceso A corresponde al marco numero 2 en memoria fisica con direccion real 1000 2000 por lo tanto la MMU devolvera la direccion del marco en memoria fisica con el desplazamiento dentro de esa pagina 1000 20FE Paginacion en memoria virtual EditarEl unico inconveniente de paginacion pura es que todas las paginas de un proceso deben estar en memoria para que se pueda ejecutar Esto hace que si los programas son de tamano considerable no puedan cargarse muchos a la vez disminuyendo el grado de multiprogramacion del sistema Para evitar esto y aprovechando el principio de cercania de referencias donde se puede esperar que un programa trabaje con un conjunto cercano de referencias a memoria es decir con un conjunto residente mas pequeno que el total de sus paginas se permitira que algunas paginas del proceso sean guardadas en un espacio de intercambio fragmentacion interna mientras no se necesiten Cuando la paginacion se utiliza junto con memoria virtual el sistema operativo mantiene ademas el conocimiento sobre que paginas estan en memoria principal y cuales no usando la tabla de paginacion Si una pagina buscada esta marcada como no disponible tal vez porque no esta presente en la memoria principal pero si en el area de intercambio cuando la CPU intenta referenciar una direccion de memoria en esa pagina la MMU responde levantando una excepcion comunmente llamada fallo de pagina Si la pagina se encuentra en el espacio de intercambio el sistema operativo invocara una operacion llamada intercambio de pagina para traer a memoria principal la pagina requerida La operacion lleva varios pasos Primero se selecciona una pagina en memoria por ejemplo una que no haya sido usada recientemente para mas detalles ver algoritmos de reemplazo de paginas Si la pagina fue modificada se escribe la misma en el espacio de intercambio El siguiente paso en el proceso es leer la informacion en la pagina necesitada desde el espacio de intercambio Cuando esto sucede las tablas para traduccion de direcciones virtuales a reales son actualizadas para reflejar los contenidos de la memoria fisica Entonces el intercambio de pagina sale y el programa que uso la direccion que causo la excepcion es vuelto a ejecutar desde el punto en que se dio la misma y continua como si nada hubiera pasado Tambien es posible que una direccion virtual sea marcada como no disponible porque no fue localizada previamente En estos casos una pagina de memoria es localizada y llenada con ceros la tabla de paginacion es modificada para mostrar los cambios y el programa se reinicia como en el otro caso Si la pagina que ha provocado el fallo de pagina no se encuentra en el espacio de intercambio habra que ir a buscarla a la unidad de disco El proceso por lo demas seria analogo Vease tambien EditarPaginacion anidada Segmentacion de memoria Datos Q656083 Obtenido de https es wikipedia org w index php title Paginacion de memoria amp oldid 124695306, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos