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. Así, las primeras implementaciones de UNIX, sobre
máquinas PDP-11, no trabajaban con memoria virtual. Las implementaciones
posteriores proporcionan memoria virtual con paginación por demanda combinado
con swapping de procesos. A continuación describiremos la gestión de la memoria en
el System V.
Para cada entrada de la tabla de páginas se considera la dirección física del marco de
página, bits de protección (r, w, x), bit de validez, bit de referencia, bit de página
modificada, y un contador de antigüedad de la página. Estrictamente, sólo la
dirección física y el bit de validez deben estar obligatoriamente soportados por
hardware. El resto de la información puede simularse en software (como ocurría en
15
Esta estrategia equivale a una implementación software de un algoritmo de reemplazo NRU. Al no
poder contar siempre con un bit de referencia hardware, es el bit de validez el que hace su papel; la
rutina de atención al fallo de página representa implícitamente las páginas no referenciadas
recientemente dentro de las listas de marcos libres y modificados.
16
El paginador organiza la ubicación de las páginas en disco de manera que se almacenen en lo
posible en bloques contiguos.
17
El quantum de memoria se refiere a la cantidad de tiempo que un proceso puede estar residente en
memoria, y no coincide con el concepto de quantum que habitualmente se usa para describir modelos
Round-Robin, referido al tiempo que un proceso puede estar consecutivamente en la CPU. Al contrario,
en el VAX/VMS se utiliza el término quantum para referirse al tiempo acumulado de CPU de un
proceso en memoria.
el VAX-11). Además, para cada entrada de la tabla de páginas se almacena la
información para acceder a la página en memoria secundaria (descriptor de bloque
del disco).
Otra estructura de información que se mantiene es una lista de marcos de página, que
guarda información acerca del estado de la página (asignada, en fichero ejecutable,
libre, cargándose por DMA), el número de procesos que referencian el marco (para
compartición), y el dispositivo que contiene una copia de la página y el número de
bloque.
Algunas características de la gestión de la memoria virtual en el Sistema V son los
siguientes:
Asignación global y working-set. UNIX define el working-set de un proceso como el
conjunto de páginas asignadas a un proceso. Los marcos no asignados a ningún
proceso son marcos libres asignables a cualquier proceso. El sistema define el número
mínimo de marcos libres, que comprueba periódicamente. Si en un instante de
tiempo no se alcanza dicho límite, un proceso paginador (page-stealer) entra para
envejecer las páginas. Toda referencia a una página pone a cero la edad de la página.
Si la edad alcanza un valor n, establecido por la instalación, la página pasa a estado
libre. El diagrama de transición de estados que ilustra este mecanismo se muestra en
la Figura 4.8. La página de un marco libre puede ser rescatada en una referencia si el
marco no hubiera sido asignado antes. Este mecanismo se ha implementado en los
Sistemas V hasta la versión 3, y es utilizado también por Linux. El SVR4 ha
simplificado el reemplazo de páginas prescindiendo del contador de edad. El
paginador se limita a poner a cero el bit de referencia (lo que equivale a envejecer
hasta n=1) y a liberar las páginas con R=0 siguiendo el algoritmo del reloj.
Escritura de páginas en disco por grupos. Si el paginador decide liberar una página y la
página se ha modificado o no existe una copia en disco (por ejemplo, página iniciada
a ceros), el paginador pone la página en una lista de páginas a escribir. Si el número
de elementos de esta lista alcanza un cierto límite, las páginas se escriben físicamente
en el disco.
Swapping. En situaciones de mucha demanda de memoria por parte de los procesos,
el paginador puede no ser capaz de conseguir marcos libres a la velocidad necesaria.
Cuando la rutina de fallo de página no es capaz de mantener el nivel mínimo de
marcos libres, entra el proceso swapper para sacar algún proceso de memoria. Los
criterios de elección dependen de la versión de UNIX, pero fundamentalmente se
basan en el estado del proceso y su prioridad.
Figura 4.8. Transición de estados y envejecimiento de una página en UNIX.
No hay comentarios:
Publicar un comentario