UNIX es un sistema operativo diseñado
para ser instalado sobre una gran variedad de máquinas. Ya que la gestión de la
memoria es muy dependiente del soporte hardware disponible, nos encontraremos
con que existen diferentes formas de gestión de memoria en UNIX.
El proceso de gestión de memoria se basa en el complejo trabajo del intercambio o conocido también como swapping, junto con la memoria virtual, la paginación por demanda, el reemplazo de páginas y la gestión de memoria del kernel.
El swapping es el proceso de
intercambiar un proceso que se encuentre en la memoria y otro que está pidiendo
ser ejecutado, es decir, si queremos ejecutar algún programa y este no
encuentra espacio disponible, se realiza un intercambio en la memoria con algún
proceso que no se esté utilizando o ejecutando en ese momento.
Cuando Unix opera en
máquinas más grandes, suele disponer de manejo de memoria de paginación por
demanda. Un sistema de paginación por demanda ofrece muchas ventajas en cuanto
a flexibilidad y agilidad en la atención concurrente de múltiples procesos y
proporciona, además, memoria virtual, es decir, la capacidad de trabajar con
procesos mayores que el de la memoria central. Estos esquemas son bastante
complejos y requieren del apoyo de hardware especializado. También requieren de
ciertas estructuras que permiten la gestión de memoria utilizando paginación
por demanda, las cuales son; tablas de páginas, que permiten acceder a la
memoria virtual de cada proceso, generando así una tabla por cada proceso, en
la cual podremos encontrar la dirección lógica de cada proceso y así poder
hallar cada página de manera organizada y rápida. Los descriptores de bloques
de discos, acá podemos encontrar el proceso de copia de disco de una página
virtual, contando también con la facultad de poder enumerar todos los
dispositivos lógicos permitiendo así el uso de uno o más dispositivos para el
intercambio (swapping). También utilizando la tabla de marcos de páginas que guarda información acerca del estado
de la página (asignada), el número de procesos que referencian el marco, y el
dispositivo que contiene una copia de la página y el número de bloque. Y la tabla de uso de swap, que permite que cada entrada a
la página esté relacionada con cada dispositivo lógico o swap.
Por último encontraremos el
gestor de memoria del kernel, el cual implica la asignación de memoria
dinámica, la cual es usada cuando dicho kernel ejecuta, crea y destruye
pequeñas tablas de páginas y buffers. Pero esto implica dos procesos el de
asignación y liberación, los cuales son la base de este gestor y por lo tanto
al momento de ser ejecutados tienen que ser de manera sumamente rápida para que
así se pueda ver la mejora de la memoria en el sistema operativo UNIX.
Análisis realizado por: Angely Salazar
que es el algoritmo del reloj de dos agujas y para que se utiliza?
ResponderEliminariOS
El algoritmo del reloj de las dos agujas utilizará un bit de referencia en la entrada de la tabla de páginas para cada página de la memoria que no esté bloqueada para ser expulsada. Éste bit se pone en 0 cuando la página entra por primera vez y a 1 cuando se refiere a una página para una lectura o una escritura. Una aguja del algoritmo del reloj, la aguja frontal, recorre la lista de páginas elegibles y pone el bit a referencia a 0 en cada página. Algún tiempo más tarde, la aguja trasera recorre la misma lista y comprueba el bit de referencia, si el bit está en 1 indica que la página se ha referenciado desde que la aguja frontal hizo el recorrido y se ignora el marco. Si el bit todavía se encuentra en 0, entonces la página no se ha referenciado en el intervalo de tiempo entre la visita de la aguja frontal y la aguja trasera y se pone a éstas páginas en una lista para ser reemplazadas. En otras palabras, el algoritmo se direcciona a que cuando una página tiene un bit asignado (igual a cero) y pasa por esa página la aguja frontal y a un cierto momento pasa la aguja trasera, y no se han generado cambios en el bit hace referencia que dicha página puede ser sacada y ser reemplazada por otra siempre y cuando el bit no haya sido modificado a 1 lo cual indica que esa página a sido utilizada para una lectura o una escritura.
Eliminar