You are on page 1of 6

Escuela Superior Politcnica De Chimborazo Facultad De Informtica Y Electrnica Escuela De Ingeniera Electrnica Telecomunicaciones Y Redes Ctedra: Fundamentos De Sistemas

Operativos Tema: Tablas De Paginacin. Las tablas de paginacin o tablas de pginas son una parte integral del Sistema de Memoria Virtual en sistemas operativos, cuando se utiliza paginacin. Son usadas para realizar las traducciones de direcciones de memoria virtual (o lgica) a memoria real (o fsica) y en general el sistema operativo mantiene una por cada proceso corriendo en el sistema. En cada entrada de la tabla de paginacin (en ingls PTE, Page Table Entry) existe un bit de presencia, que est activado cuando la pgina se encuentra en memoria principal. Otro bit que puede encontrarse es el de modificado, que advierte que la pgina ha sido modificada desde que fue trada del disco, y por lo tanto deber guardarse si es elegida para abandonar la memoria principal; y el bit de accedido, usado en el algoritmo de reemplazo de pginas llamado Menos Usado Recientemente (LRU, least recently used). Tambin podran haber otros bits indicando los permisos que tiene el proceso sobre la pgina (leer, escribir, ejecutar). Dado que las tablas de paginacin pueden ocupar un espacio considerable de la memoria principal, estas tambin podran estar sujetas a paginacin, lo que da lugar a una organizacin paginada de mltiples niveles (o tabla de pginas multinivel). En los sistemas con un tamao de direcciones muy grande ( 64 bits ), podra usarse una tabla de pginas invertida, la cual utiliza menos espacio, aunque puede aumentar el tiempo de bsqueda de la pgina. Las tablas son mantenidas por el sistema operativo y utilizadas por la Unidad de Gestin de Memoria (MMU) para realizar las traducciones. Para evitar un acceso a las tablas de paginacin, hay un dispositivo llamado Buffer de Traduccin Adelantada (TLB, Translation Lookaside Buffer), acelerando el proceso de traduccin.
55555555555555555555555555555

5. Paginacin Es una tcnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones fsicas de igual tamao, denominadas marcos de pgina. Los programas se dividen en unidades lgicas, denominadas pginas, que tienen el mismo tamao que los marcos de pginas. De esta forma, se puede cargar una pgina de informacin en cualquier marco de pgina. Las pginas sirven como unidad de almacenamiento de informacin y de transferencia entre memoria principal y memoria auxiliar o secundaria. Cada marco se identifica por la direccin de marco, que esta en la posicin fsica de la primera palabra en el marco de pgina.

Las pginas de un programa necesitan estar contiguamente en memoria, aunque el programador lo observe de esta forma. Los mecanismos de paginacin permiten la correspondencia correcta entre las direcciones virtuales (dadas por los programas) y las direcciones reales de la memoria que se reverencien. Cada pagina consiste en z palabras contiguas; un espacio de direcciones N de un programa consiste de n paginas (0,1,2,3n-1) (n*z direcciones virtuales) y el espacio de memoria consiste de m marcos de paginas (0,z,2z,,(m-1)z)(m*z posiciones). Una direccin virtual a es equivalente a una direccin dada como una dupla (p, d), en la cual p es el nmero de la pgina y d el nmero de la palabra dentro de la pgina, de acuerdo con la relacin: a=p*z+d (0<=d<z) p=(a/z) (parte entera de la division) d=a mod z (resto de divisor a/z) En las maquinas que usan aritmtica binaria, el calculo de (p, d) es trivial, si z es potencia de 2. Por ejemplo, si el campo de direcciones de la instruccin es de m bits (m>6), los cuatro bits mas significativos indican el numero de la pagina y los m-4 bits restantes, el desplazamiento. Para tener el control de las pginas, debe mantenerse una tabla en memoria que se denomina tabla de Mapas de Pagina (PMT) para cada uno de los procesos. Hasta ahora, los mtodos que hemos visto de la administracin de la memoria principal, nos han dejado con un problema: fragmentacin, (huecos en la memoria que no pueden usarse debido a lo pequeo de su espacio) lo que nos provoca un desperdicio de memoria principal. Una posible solucin para la fragmentacin externa es permitir que espacio de direcciones lgicas lleve a cabo un proceso en direcciones no contiguas, as permitiendo al proceso ubicarse en cualquier espacio de memoria fsica que est disponible, aunque est dividida. Una forma de implementar esta solucin es a travs del uso de un esquema de paginacin. La paginacin evita el considerable problema de ajustar los pedazos de memoria de tamaos variables que han sufrido los esquemas de manejo de memoria anteriores. Dado a sus ventajas sobre los mtodos previos, la paginacin, en sus diversas formas, es usada en muchos sistemas operativos. Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus de memoria, sino que van a una unidad administradora de la memoria (MMU Memory Management Unit). Estas direcciones generadas por los programas se llaman direcciones virtuales y conforman el hueco de direcciones virtuales. Este hueco se divide en unidades llamadas pginas. Las unidades correspondientes en la memoria fsica se llaman marcos para pgina o frames. Las pginas y los frames tienen siempre el mismo tamao. Tablas de pginas Cada pgina tiene un nmero que se utiliza como ndice en la tabla de pginas, lo que da por resultado el nmero del marco correspondiente a esa pgina virtual. Si el bit presente / ausente es 0, se provoca un sealamiento (trap) hacia el sistema operativo. Si el bit es 1, el nmero de marco que aparece en la tabla de pginas se copia en los bits de mayor orden del registro de salida, junto con el ajuste (offset) de 12 bits, el cual se copia sin modificaciones de la direccin virtual de entrada. Juntos forman una direccin fsica de 15 bits. El registro de salida se coloca entonces en el bus de la memoria como la direccin en la memoria fsica.

En teora, la asociacin de las direcciones virtuales con las fsicas se efecta segn lo descrito. El nmero de pgina virtual se divide en un nmero de pgina virtual (los bits superiores)y un ajuste (los bits inferiores). El nmero de pgina virtual se utiliza como un ndice en la tabla de pginas para encontrar la entrada de esa pgina virtual. El nmero de marco (si existe) se determina a partir de la tabla de pginas. El nmero de marco se asocia al extremo superior del ajuste y reemplaza al nmero de pgina virtual para formar una direccin fsica que se puede enviar a la memoria. La finalidad de la tabla de pginas es asociar las pginas virtuales con los marcos. En trminos matemticos, la tabla de pginas es una funcin, cuyo argumento es el nmero de pgina virtual y como resultado el nmero del marco fsico. Mediante el resultado de esta funcin, se puede reemplazar el campo de la pgina virtual de una direccin virtual por un campo de marco, lo que produce una direccin en la memoria fsica. Sin embargo hay que enfrentar dos aspectos fundamentales: 1. La tabla de pginas puede ser demasiado grande. 2. La asociacin debe ser rpida. El primer punto proviene del hecho de que las computadoras modernas utilizan direcciones virtuales de al menos 32 bits. Por ejemplo, si el tamao de pgina es de 4K, un hueco de direcciones de 32 bits tiene un milln de pginas; en el caso de un hueco de direcciones de 64 bits, se tendra ms informacin de la que uno quisiera contemplar. El segundo punto es consecuencia del hecho de que la asociacin virtual fsica debe hacerse en cada referencia a la memoria. Una instruccin comn tiene una palabra de instruccin y tambin un operando de memoria. Entonces es necesario hacer una, dos o ms referencias a la tabla de pginas por cada instruccin. Caractersticas de la paginacin:
y y y y y y y

El espacio de direcciones lgico de un proceso puede ser no contiguo. Se divide la memoria fsica en bloques de tamao fijo llamados marcos (frames). Se divide la memoria en bloques de tamao llamados paginas. Se mantiene informacin en los marcos libres. Para correr un programa de n paginas de tamao, se necesitan encontrara n marcos y cargar el programa. Se establece una tabla de paginas para trasladar las direcciones lgicas a fsicas. Se produce fragmentacin interna.

Ventajas de la paginacin 1. Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud. 2. No es necesario que las paginas estn contiguas en memoria, por lo que no se necesitan procesos de compactacin cuando existen marcos de paginas libres dispersos en la memoria. 3. Es fcil controlar todas las pginas, ya que tienen el mismo tamao. 4. El mecanismo de traduccin de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente al usuario.

5. Se libera al programador de la restriccin de programar para un tamao fsico de memoria, con lo que s e aumenta su productividad. Se puede programar en funcin de una memoria mucho ms grande a la existente. 6. Al no necesitarse cargar un programa completo en memoria para su ejecucin, se puede aumentar el numero de programas multiprogramndose. 7. Se elimina el problema de fragmentacin externa. Desventajas de la paginacin 1. El costo de hardware y software se incrementa, por la nueva informacin que debe manejarse y el mecanismo de traduccin de direcciones necesario. Se consume mucho mas recursos de memoria, tiempo en el CPU para su implantacin. 2. Se deben reservar reas de memoria para las PMT de los procesos. Al no ser fija el tamao de estas, se crea un problema semejante al de los programas (como asignar un tamao ptimo sin desperdicio de memoria, u "ovearhead" del procesador). 3. Aparece el problema de fragmentacin interna. As, si se requieren 5K para un programa, pero las paginas son de 4K, debern asignrseles 2 paginas (8k), con lo que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta forma puede ser mayor que el de varias paginas, pero no podr ser utilizados. Debe asignarse un tamao promedio a las pginas, evitando que si son muy pequeas, se necesiten TABLAS BMT y PMT muy grandes, y si son muy grandes, se incremente el grado de fragmentacin interna. Traduccin de La direccin generada por la CPU se divide en:
y y

Direcciones

Numero de pagina (p): utilizado como indice en la tabla de pagins que contiene la direccin base de cada pagina en la memoria fisica. Offset de la pagina (d): combinado con la direccin base dfine la direccion fisica que ser enviada a la unidad de memoria.

Paginacin
y y

y y y

y y y y

Es una forma de disminuir la fragmentacin externa. Adems, hasta ahora el swapping deba hacerse con los procesos completos. Con paginacin, un proceso puede ser llevado parcialmente al disco. Regla del 90/10: Un proceso ocupa el 90% del tiempo accediendo a 10% de su memoria. Es usada por casi todas las arquitecturas de hardware y por los SO. Las direcciones lgicas no se disponen continuamente en la memoria fsica. Consiste en dividir la memoria fsica en secciones de memoria, llamadas marcos, y dividir la memoria lgica en secciones del mismo tamao, llamadas pginas. El tamao es fijo, y determinado por el hardware (4kb, 2Mb y 4Mb en i386) Cuando se crea un proceso, se le asigna el nmero de pginas y frames necesarios. Las direcciones lgicas del proceso son un rango continuo de nmeros, pero estas se mapean de forma (probablemente) discontinua en memoria fsica. Cualquier marco puede ser asignado a cualquier pgina.

y y y

Se elimina la fragmentacin externa. Se acota la fragmentacin interna (~1/2 pgina por proceso). Ejemplos extremos. Grafico de pginas y marcos: Asignaciones no continuas.

Ejemplos de Paginacin
y

Datos: RAM: 256bytes. Tamao pgina: 16bytes.Direccionamiento por byte. o La direccin fsica tiene 8 bits (suficientes para mapear 256bytes planos). o 16 marcos de 16 bytes. o 4 bits de offset para direcciones 16 bytes dentro de cada pgina o 4 bits para seleccionar la pgina: entre 16 pginas. o 4+4 = 8 bits de direccin lgica. o dado un proceso de 64bytes -> 4 pginas -> la tabla tiene 4 entradas. o p: los '4' ms significativos. 'd' los menos. o dada un direccin: 0x18 (24) -> 0x1 es la pgina, y 0x8 es el offset. o dada un direccin: 0x2A (42) -> 0x2 es la pgina, y 0xA es el offset. Datos: RAM: 512bytes. Tamao pgina: 16bytes.Direccionamiento por word (2 bytes).
o o o o o o o

direccin fsica: 9 bytes. 32 marcos de 16 bytes. 5bits para seleccionar la pgina 3 bits para el offset. (porque son 16bytes = 8 words por pgina) 5+3 = 8 bits de direccin lgica. 'p': los 5 ms significativos, 'n' los 3 menos. dada una direccin: 0xD (13d 1101b)-> p=1b-> 1d , n=101b-> 5d

Cada cambio de contexto es necesario guardar la Tabla de Pgina en el PCB y cargar la del nuevo proceso. La pgina puede estar guardada de dos formas: Registros o Memoria. En el primer caso, es necesario guardar toda la tabla desde los registros a la memoria en el PCB para cambiar de proceso y restaurar los registros desde el PCB del nuevo proceso. En el segundo caso, basta con tener todas las tablas en memoria y guardar un puntero al comienzo de cada tabla en cada PCB. Dnde se guarda la tabla de pginas. Dos opciones: o registros  mas rpidos  si mucha RAM -> la tabla tendr muchas entradas y no se puede ponerla en registos  cada cambio de contexto hay que modificar el valor de todos los registros o memoria  un registro (CR3 en i386) apunta a la tabla de pginas  acceso mas lento que registeos: dos accesos a memoria por cada acceso real.  pero: no hay problemas de espacios

y para cambiar de contexto solo es necesario cambiar un registro, el que apunta a la tabla. Todas las tablas, de todos los procesos, de guardan al mismo tiempo en memoria, y slo se cambia el registro puntero.

y y y y

Otros datos en la tabla: o Presente?: Si esta en la RAM o en swap. o User/Kernel. Si se puede acceder a modo usuario. o Ejecutable/Data. Si es ejecutable o no la info que contiene. o Espacio libres para el SO: Contadores de referencias, Accesos, etc. Estos campos estn definidos por el hardware. Recordar: El CPU trabaja entonces con direcciones lgicas, no fsicas. El cach de memoria esta implementado a nivel lgico, con direcciones lgicas. La MMU posee un TLB para acelerar el proceso de traduccin de direcciones.

You might also like