Anda di halaman 1dari 3

MEMORIA VIRTUAL

Objetivo de la memoria virtual Hacer que parezca que la mquina tiene una cantidad de memoria prcticamente ilimitada. Razones de su uso: - Las mquinas (sobre todo las multiproceso y multiusuario) pueden tener una carga de trabajo tal que la cantidad de memoria que necesiten sea mayor que la que tienen. - Sin embargo (como indica el principio de localidad), cada programa utiliza en cada instante una cantidad de memoria bastante inferior a la que usa en toda su ejecucin. - Por otro lado, la mayora de las mquinas pueden direccionar mucha ms memoria (32b de direcciones = 4GB) que la que tienen. Funcionamiento de la memoria virtual. - Los programas usan todos los bits de direcciones, como si realmente existiera toda esa memoria. - Se implementa un mecanismo (generalmente gestionado por el sistema operativo) para que slo los bloques de memoria en uso en cada momento residan en memoria principal. - El resto se guarda en memoria secundaria. - El programa ve una memoria enorme, pero que realmente no existe como tal (virtual). Es necesario: - averiguar la direccin de memoria real (fsica) en la que se encuentra la informacin que pide el programa con las direcciones que usa (virtual) => traduccin virtual-fsica. - cuando los datos no estn en memoria fsica, interrumpir el programa, traerlos, y reanudarlo (=>excepciones). - De forma parecida a la cach, la memoria virtual se divide en bloques, para aprovechar la localidad espacial. - El intercambio entre memoria secundaria y principal se realiza nicamente por bloques. Analogas con la cach: - Divisin del mapa de direcciones en bloques. - La memoria contiene un subconjunto del total de bloques => se dan fallos. Diferencias: - La gestin es por software (SO). - El siguiente nivel (memoria secundaria) no contiene slo bloques, tambin el sistema de ficheros. - La tasa de fallos es mucho menor (los bloques son mayores). En memoria virtual, a veces se usan bloques de tamao fijo (pginas) y a veces de tamao variable (segmentos).

Memoria Virtual Paginada Divide la memoria fsica y la virtual en bloques de tamao constante (pginas). Igual que en cach, slo es necesaria una porcin de la direccin para identificar la pgina, el resto es el desplazamiento dentro de la pgina. Direccin nmero de pgina desplazamiento

La traduccin consiste en sustituir el nmero de pgina virtual por el fsico (el que dice en qu marco de memoria fsica est la pgina). Ubicacin A diferencia de la cach, la penalizacin por fallo es enorme (acceso a disco). La poltica de ubicacin suele ser totalmente asociativa (es la que menos fallos genera). Identificacin Para saber si una pgina de memoria virtual est en memoria fsica, y en ese caso, dnde est, se usa una estructura de datos Llamada tabla de pginas. - Esta tabla tiene una entrada por cada pgina virtual del programa. - Si la pgina est en memoria fsica, adems indica en qu marco

-Solamente la traduccin supone un acceso a memoria, que es donde est la tabla de pginas. - Para acelerar la traduccin, se implementa una pequea tabla en memoria, con un subconjunto de todas las entradas de la tabla de pgina. - Se suele llamar TLB (Translation Lookaside Buffer, Bffer de consulta para la traduccin) o cach de traducciones. - El algoritmo de sustitucin en el TLB suele ser una variacin del LRU. El modo de funcionamiento es el siguiente: La CPU genera una referencia a memoria (direccin virtual). Se busca la traduccin en el TLB Si no est, se busca en la tabla de pginas y se actualiza el TLB >> si la traduccin no est en la tabla de pginas, eso es que la pagina no est en memoria fsica Se genera una excepcin para el S.O. El S.O carca la pgina en memoria fsica y actualiza la tabla de paginas Se repite el acceso. Una vez hecha la traduccin, se realiza el acceso a memoria con la direccin fsica Sustitucin La gestin de pginas la lleva el SO (es software). Esto permite disear algoritmos algo ms complejos pero ms eficientes. Algunos algoritmos usados son LRU, FIFO, Working Set Escritura Como los discos no permiten accesos a unidades menores que el sector, es necesario usar postescritura con ubicacin. Tamao de pgina Igual que en cach, el tamao de bloque influye en el rendimiento. Si la pgina es de mayor tamao: La tabla de pginas es menor (porque hay menos pginas). Se da ms eficiencia en las transferencias con mem. Secundaria. Si la pgina es de menor tamao: Se da menos desperdicio por fragmentacin interna. Es necesario menos ancho de banda con mem. Secundaria.

Memoria Virtual Segmentada - En este caso, la memoria fsica no se divide en bloques de tamao fijo, sino variable (segmentos). - Un segmento tiene una significacin lgica (una zona de datos, de cdigo, etc). - La direccin ahora consta de dos valores: Identificador del segmento (tpicamente su direccin de inicio). La posicin del dato en ese segmento.

Ubicacin - Ahora es necesario tener en cuenta que los segmentos no caben en cualquier hueco. - Existen varias tcnicas: mejor ajuste, peor ajuste, el primero que se encuentre, etc. Identificacin - Anlogamente a la MV paginada, existe una tabla de traducciones, llamada tabla de segmentos. - Adems, se puede incluir tambin el TLB para acelerar Sustitucin - Se usa un mecanismo anlogo al de la paginacin. - Si embargo, hay que tener en cuenta que no sirve con desalojar cualquier segmento (el nuevo puede no caber). - Puede ser necesario desalojar varios segmentos o recolocar los que quedan para hacer un hueco mayor. Escritura - En memoria segmentada, por las mismas razones que en paginada, se usa post-escritura con ubicacin.

Anda mungkin juga menyukai