lunes, 28 de mayo de 2012

7.2 UNIX

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