Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCION
Estrategias de bsqueda:
o Estrategias de bsqueda por demanda.
o Estrategias de bsqueda anticipada.
Estrategias de colocacin.
Estrategias de reposicin.
Pueden ser usados por otros trabajos que cuando finalizan dejan otros
agujeros menores.
En sucesivos pasos los agujeros son cada vez ms numerosos pero ms
pequeos, por lo que se genera un desperdicio de memoria principal.
4.3.2 Paginacin.
Introduccin
Antes de entrar a la explicacin del manejo de memoria virtual explicaremos el manejo de la
paginacin y la segmentacin de forma simple, estas formas de gestin o administracin de
memoria simple son la base de la memoria paginada y segmentada virtual o bajo solicitud.
Paginacin simple
Para la gestin de memoria paginada se divide el espacio de direcciones de cada
programa en pedazos iguales llamados pginas. En esta gestin, el espacio de
direcciones de la memoria fsica es dividido en pedazos iguales llamados bloques.
El tamao de las pginas est obligado a ser, a lo sumo, del tamao de un bloque.
Se puede colocar cualquier pgina en cualquier bloque. Las pginas permanecen
lgicamente contiguas (para el programa del usuario), aunque los bloques
correspondientes no lo sean.
No se necesita que la particin de un trabajo este completamente contigua en la
memoria. La nica contigidad que debe darse se refiere a las instrucciones de la
misma pgina.
Casi todos los sistemas de paginado utilizan un tamao de bloque de 4K bytes,
pero no tiene por qu ser siempre de ese tamao.
Un programa de usuario es convertido a lenguaje maquina y a la primera
instruccin se le asigna la direccin cero; a la segunda instruccin, la direccin
siguiente de la primera instruccin y as sucesivamente. Este programa se guarda
en memoria secundaria (disco magntico). Esta misma operacin la realiza con
todos los programas de usuario. Por tanto, en el disco puede haber una cola de
programas distribuidos, como se observa en la figura 3.2
Para que el hardware realice la comprobacin (testeo) del espacio de direcciones
de la memoria fsica, debe haber un registro por separado para cada pgina. Se
llama mapas de pagina o tablas de mapas de pagina (PMT) a un conjunto de esos
registros. Dichos PMT pueden ser registros especiales del hardware o una seccin
reservada de la memoria. En la figura 3.1 se muestra un ejemplo simple usando un
tamao de pgina de 1000 bytes (en hexadecimal) (4K). El trabajo 2, que tiene un
espacio de direccin de 3000 bytes (es decir, que ocupa 3000 bytes en
hexadecimal), esta dividido en tres pginas. La tabla de las pginas asociadas con
el trabajo 2 indica en que bloque se encuentra cada pgina.
ESPACIO DE DIRECCIONES
MEMORIA FISICA
TABLAS DE PGINAS
0000
0000
SISTEMA OPERATIVO
PAG BLO
0
5
1
6
1000
0FFF 1000
0FFF 2000
1FFF
TRABAJO 1
0FFF 1000
PAG BLO
2
4
3FFF 4000
LIBRE
4FFF 5000
PAGINA 1
0FFF 2000
PAGINA 22118
015571
6FFF 7000
2FFF
TRABAJO 2
0FFF
7108
7FFF 8000
PAG BLO
0
8
0000
TRABAJO 3
5FFF 6000
015571
8FFF 9000
9FFF
LIBRE
En la figura 3.2 hay 2000 bytes de memoria disponibles, aunque no estn contiguos, si hubiera
un trabajo que requiriera 2000 bytes, se podra introducir en memoria sin necesidad de
compactarla.
No BLOQUE
0
1
2
3
4
5
6
7
8
9
SISTEMA OPERATIVO
SISTEMA OPERATIVO
TRABAJO 2
DISPONIBLE
TRABAJO 2
TRABAJO 1
TRABAJO 1
TRABAJO 2
TRABAJO 3
DISPONIBLE
c) Bit de fallo. Este bit indica si la pgina referenciada esta o no en memoria principal. Este bit
estar en cero cuando la pgina est en memoria principal, y se pondr en uno cuando la
pgina no est en memoria principal.
d) Posicin en memoria secundaria. Indica la posicin exacta de la pgina en memoria
secundaria.
MEMORIA PRINCIPAL
0000
0FFF
1000
1FFF
0000
0FFF
1000
1FFF
0000
SISTEMA OPERATIVO
0FFF 1000
1FFF 2000
2518 TRABAJO 2
2FFF 3000
0000
0FFF
1000
1FFF
0000
0FFF
1000
1FFF
0000
0FFF
1000
1FFF
11
PAGINA 0
4FFF 5000
TRABAJO1
5FFF 6000
TRABAJO1
PAGINA 1
PAGINA 0
PAGINA 1
6FFF 7000
7108
TRABAJO 2
7FFF 8000
TRABAJO 3
PAGINA 2
PAGINA 0
8FFF 9000
TRABAJO 4 PAGINA 1
9FFF
006802
La tabla de bloques est constituida por las partes sealadas en la figura 3.5 y significan lo
siguiente:
a) Numero de Bloque. Indica el bloque al cual se est referenciado y tambin el nmero de
entrada en la tabla.
b) Identidad del Programa (ID). Esta parte refleja el nombre del programa al cual est
asignado el bloque.
c) Nmero de Pgina. Dice qu pgina es la que est en ese bloque.
d) Bit de Estado. Este bit posee tres estados que significan:
i.
El boque est libre
ii.
El bloque est asignado a un programa
iii.
El bloque esta en trnsito, es decir, se va a introducir de inmediato la pgina en el
bloque.
3.3.3 Segmentacin.
GESTION DE MEMORIA POR SEGMENTACION
Para Explicar la segmentacin empecemos por entender cmo es que esta surgi, y esta
explicacin se basa en la forma de trabajo del lenguaje pascal. Un programador de
PASCAL por ejemplo, al realizar un programa, intenta dentro de lo posible que sea
estructurado. Pues bien, esta forma de programacin es de mxima utilidad para el sistema
operativo, ya que este puede dividir el programa en segmentos, de tal forma que cada
segmento sea un procedure (subprograma). Supngase que el programa ejemplo ocupa
160K de memoria. Como el encargado de segmentar el programa seria el gestor de
trabajos cuando se le entregue el programa al compilarlo (pasarlo a lenguaje objeto)-,
construye el campo de direccin en las instrucciones de cdigo maquina segn la figura 3.6
Nmero de segmento
DESPLAZAMIENTO
2 (s)
20 000 (i)
0
SEGMENTO 1
SEGMENTO 2
50 K
0K
POSICION 20000
SEGMENTO 3
SEGMENTO 4
SEGMENTO 5
25 K
0K
32 K
0K
30 K
0K
23 K
8 bits
0
16 bits
7 8
23
20 K
95K
125k
SEGMENTO 2
10 K
PROGRAMA A
10 K
SEGMENTO 3
20 K
PROGRAMA B
135 K
20 K
205K
PROGRAMA C
FIGURA 3.9 SEGMENTACION DEL PROGRAMA D
225K
256K
MEMORIA REAL
0
75K
SUPERVISOR
SEGMENTO 1 DEL
90000
PROGRAMA
95K
SEGMENTO 1
20 K
SEGMENTO 2
10 K
PROGRAMA A
SEGMENTO 3
SEGMENTO 2 DEL PROGRAMA D
20 K
125k
PROGRAMA B
SEGMENTO 3 DEL PROGRAMA D
135 K
205K
PROGRAMA C
FIGURA 3.10 SEGMENTOS DEL PROGRAMA D CARGADOS A MEMORIA
225K
0
SUPERVISOR
DIRECCION RELATIVA
SEGMENTO
1 DEL PROGRAMA D
75 K
1500
15000
DIRECCION ABSOLUTA
PROGRAMA A
90000
95 K
SEGMENDO 2 DEL PROGRAMA D
125 K
MEMORIA REAL
0
75K
No. DE SEGMENTO
POSICION EN MEMOERIA REAL
SEGMENTO 1
20 K
SEGMENTO 2
10 K
SEGMENTO 3
20 K
75 K
125 K
205 K
SUPERVISOR
SEGMENTO 1 DEL
90000
PROGRAMA
95K
PROGRAMA A
256K
75 K
125 K
205 K
68000
68000
15000
++
1
75 K
125 K
205 K
DIRECCION ABSOLUTA
90 K O 90000
se dio la gestin de memoria paginada simple, lo cual elimino por completo el problema de
la fragmentacin.
En los sistemas de segmentacin un programa y sus datos pueden ocupar varios bloques
separados de almacenamiento real. (Roberto Escalona Garca - 2004)
FIGURA 3.12 EN UN ESPACIO UNIDIMENSIONAL DE DIRECCIONES CON TABLAS CRECIENTES, UNA TABLA PUEDE ENCIMARSE
CON OTRA
permitido. Los distintos segmentos pueden tener, y de hecho tienen generalmente, longitudes
distintas. Adems, la longitud de un segmento puede variar durante la ejecucin. La longitud de un
segmento de la pila puede crecer si algo entra a la pila y decrecer si algo sale de ella.
Puesto que cada segmento constituye un espacio independiente de direcciones, los
distintos segmentos pueden crecer o reducirse en forma independiente, sin afectar a los dems. Si
la pila de cierto segmento necesita ms espacio para crecer, lo puede tener, puesto que ya no
posee un lugar en su espacio de direcciones para poderlo ocupar.
Un segmento puede ser utilizado en su totalidad, pero lo comn es que los segmentos
sean grandes, de modo que lo anterior ocurre muy poco. Para especificar una direccin en esta
memoria segmentada o bidimensional, el programa debe proporcionar una direccin con 2 partes,
un nmero de segmento y una direccin dentro de ste. La figura 3.13 ilustra una memoria
segmentada que se utiliza para las tablas del compilador ya analizadas.
FIGURA 3.13 UNA MEMORIA SEGMENTADA PERMITE QUE CADA TABLA CREZCA O SE REDUZCA EN FORMA INDEPENDIENTE DE
LAS DEMAS
Paginacin
No
Segmentacin
S
Muchos
No
No
No
Implementacin en la segmentacin.
La figura 3.14 (a) muestra un ejemplo de memoria fsica que contiene al principio cinco
segmentos. Consideremos ahora lo que ocurre si el segmento 1 se elimina y el segmento 7, que
FIGURA 3.14 (a)-(d) DESARROLLO DEL FENOMENO DE SEGMENTACION EXTERNA (CHECKBOARDING), (e) ELIMINACION DE ESTE
PROBLEMA MEDIANTE LA SEGMENTACION
Los bloques:
No necesitan ser de igual tamao.
Los bloques separados no necesitan ser adyacentes.
Deben estar compuestos de posiciones contiguas de almacenamiento.
Se complica la proteccin de bloques de memoria de un proceso de usuario.
Es ms difcil limitar el rango de acceso de cualquier programa [1997, Deitel].
direccin del segmento en la memoria secundaria no se encuentra dentro del descriptor del
segmento sino en otra tabla que utiliza el controlador de fallos de segmento.
FIGURA 3.15 LA MEMORIA VIRTUAL DE MULTICS (a) EL SEGMENTO DEL DESCRIPTOR APUNTA HACIA LA TABLA DE
PAGINAS. (b) UN DESCRIPTOR DE SEGMENTOS. LOS NUMEROS SON LAS LOMGITUDES DE LOS CAMPOS
Se ha omitido el hecho de que el segmento descriptor tambin se pagina para hacer ms sencilla
la exposicin. Lo que realmente ocurre es que un registro (el registro base del descriptor) se utiliza
para localizar la tabla de pginas del segmento descriptor, la cual, a su vez, apunta hacia las
pginas del segmento descriptor. Una vez determinado el descriptor del segmento necesario, se
lleva a cabo el direccionamiento, como se muestra en la figura anterior.
FIGURA 3.18 UNA VERSION SIMPLE DE LA MEMORIA ASOCIATIVA DE MULTICS. LA EXISTENCIA DE DOS
TAMAOS DE PAGINA HACE QUE LA MEMORIA ASOCIATIVA REAL SEA MAS COMPLEJA
Al presentar una direccin a la computadora, el hardware de las direcciones verifica en primer lugar
si la direccin virtual est en la memoria asociativa. En caso afirmativo, recupera el nmero de
marco en forma directa de la memoria asociativa y forma la direccin real de la palabra a la que se
hace referencia sin tener que buscar en el segmento descriptor o en la tabla de pginas.
Las direcciones de las 16 pginas de referencia ms reciente se mantienen dentro de la memoria
asociativa. Los programas cuyo conjunto de trabajo es menor que el tamao de la memoria
asociativa llegarn a un equilibrio con las direcciones de todo el conjunto de trabajo en la memoria
asociativa, por lo que su ejecucin ser eficiente. Si la pgina no est dentro de la memoria
asociativa, se hace una referencia al descriptor y las tablas de pginas para determinar la direccin
del marco; la memoria asociativa se actualiza para contener a esta pgina y para eliminar la pgina
de uso menos reciente. El campo de la edad mantiene un registro de del dato de uso menos
reciente. La razn del uso de una memoria asociativa es que el nmero de pgina y segmento de
todas las entradas se pueden comparar en forma simultnea, para ganar velocidad.
Segmentacin con paginacin: Intel 386.
La memoria virtual de la 386 se parece en muchos aspectos a la de MULTICS, entre los que se
cuenta la presencia simultnea de la paginacin y la segmentacin. Mientras que MULTICS tiene
256k segmentos independientes, cada uno con hasta 64k palabras de 36 bits, la 386 tiene 16K
segmentos independientes, cada uno con hasta mil millones de palabras de 32 bits. Aunque el
nmero de segmentos es menor, el mayor tamao de los segmentos es mucho ms importante, ya
que pocos programas necesitan ms de 1000 segmentos, pero la mayora requiere de segmentos
que contengan megabytes.
El corazn de la memoria virtual de la 386 lo forman dos tablas, LDT (tabla de descriptores
locales) y GDT (tabla de descriptores globales). Cada programa tiene su propia LDT, pero existe
una nica GDT, compartida por todos los programas en la computadora. La LDT describe los
segmentos locales de cada programa, su cdigo, datos, pila, etc., mientras que la GDT describe los
segmentos del sistema, entre los que est el propio sistema operativo.
Para tener acceso a un segmento, un programa 386 carga primero un selector de ese
segmento en uno de los seis registros de segmento de la mquina. Durante la ejecucin, el registro
CS mantiene el selector del segmento de cdigo y el registro DS mantiene el selector del segmento
de datos. Los dems registros de segmento son menos importantes. Cada selector tiene un
nmero de 16 bits, como se muestra en la figura 3.19.
Uno de los bits del selector indica si el segmento es local o global (es decir, si est en la
LDT o en la GDT). Otros trece bits indican el nmero de dato en la LDT o GDT, de forma que una
restriccin de estas tablas consiste en que slo pueden contener descriptores de segmento de 8K.
Los otros 2 bits son relativos a la proteccin y los describiremos ms adelante. El descriptor 0 est
prohibido. Se puede cargar con seguridad en un registro de segmento para indicar que dicho
registro no est disponible por el momento. Si se utiliza, provoca un sealamiento.
Cuando un selector se carga en un registro de segmento, el descriptor correspondiente se
busca en la LDT o GDT y se almacena en los registros de rnicroprograma, de forma que pueda
tenerse un acceso rpido. Un descriptor consta de 8 bytes, los que contienen la direccin base,
tamao e informacin adicional del segmento, como se muestra en la figura 3.30.
FIGURA 3.20 DESCRIPTOR DE UN SEGMENTO DE CODIGO. LOS SEGMENTOS DE DATOS TIENEN LIGERAS DIFERENCIAS
El formato del selector se elige de tal forma que sea fcil su localizacin. Primero se
selecciona la LDT o la GDT, con base en el bit 2 del selector. A continuacin se copia el selector a
un registro de rnicroprograma y los 3 bits del nivel inferior toman el valor 0. Por ltimo, se le suma
la direccin de la tabla LDT o GDT, para obtener un apuntador directo al descriptor. Por ejemplo, el
selector 72 se refiere al dato 9 de la GDT, el cual se localiza en GDT+72.
Vamos a seguir los pasos mediante los que una pareja (selector, ajuste) se convierte en
una direccin fsica. Tan pronto el microprograma sabe cul registro de segmento se est
utilizando, puede determinar el descriptor completo correspondiente a dicho selector en sus
registros internos. Si el segmento no existe (selector 0) o no est dentro de la memoria, ocurre un
sealamiento.
Se verifica entonces si el ajuste sale del final del segmento, en cuyo caso tambin ocurre
un sealamiento. Desde el punto de vista lgico, hay un campo de 32 bits en el descriptor para el
tamao del segmento, pero slo existen 20 bits disponibles, de modo que se usa un esquema
diferente. Si el campo Gbit (granularidad) es 0, el campo contiene el tamao exacto del segmento,
que puede ser de hasta 1MB. Si es 1, el campo lmite da el tamao del segmento en pginas, en
vez de bytes. El tamao fijo de Pgina en la 386 es de 4K bytes, de forma que 20 bits son
suficientes para los segmentos de hasta 232 bytes.
Si el segmento se encuentra en memoria y el ajuste est dentro del rango, la 386 suma
entonces el campo Base de 32 bits del descriptor al ajuste para conformar una direccin lineal,
como se muestra en la figura 3.21. El campo Base se divide en tres partes y disemina en todo el
descriptor para hacerlo compatible con la 286, en la cual el campo Base slo tiene 24 bits. De
hecho, el campo Base permite que cada segmento comience en un lugar arbitrario dentro del
espacio de direcciones lineales de 32 bits.
FIGURA 3.21 CONVERSION DE UNA PAREJA (SELECTOR, AJUSTE) A UNA DIRECCION LINEAL
FIGURA 3.22 ASOCIACION DE UNA DIRECCION LINEAL CON UNA DIRECCION FISICA
lo ms posible. Las computadoras, al igual que las personas, intentan posponer los
sucesos desagradables lo ms que puedan.
El nico problema de este algoritmo es que es irrealizable. Al momento del fallo de
pgina, el sistema operativo no tiene forma de saber a cul de las pginas se har
referencia. (Se ha visto una situacin similar con el algoritmo de planificacin que ejecuta
en primer lugar el trabajo ms corto: cmo podra saber el sistema cul es el trabajo ms
corto?) Aun as, si se ejecuta un programa en un simulador y se lleva un registro de las
referencias a las pginas, es posible implantar el reemplazo ptimo de pginas en la
segunda ejecucin, mediante la informacin de referencias de pginas recogida en la
primera ejecucin.
De esta forma, es posible comparar el rendimiento de los algoritmos realizables
con el del mejor algoritmo posible. Si un sistema operativo logra un rendimiento de,
digamos, 1 % peor que el del algoritmo ptimo; cualquier esfuerzo por buscar un mejor
algoritmo slo dar por resultado una mejora de 1 %.
Para evitar cualquier posible confusin, debe quedar claro que este registro de
referencias a pginas se refiere slo al programa que se est midiendo. El algoritmo de
reemplazo as obtenido est asociado entonces a ese programa. Aunque este mtodo es
til para la evaluacin de los algoritmos de reemplazo, no tiene utilidad en trminos
prcticos. Ms adelante estudiaremos algoritmos que s son tiles en los sistemas reales
Reemplazo de pginas aleatorio.
Si se busca una estrategia de reemplazo de pginas con un gasto extra reducido y
que no discrimine a ciertos usuarios, el reemplazo de pginas aleatorio es una tcnica
sencilla para lograrlo. As, todas las pginas que se encuentran en el almacenamiento
principal tienen la misma probabilidad de ser elegidas para el reemplazo. Esta estrategia
podra seleccionar cualquier pgina para ser reemplazada, incluyendo la siguiente pgina a
la que se har referencia (lo cual constituye, por supuesto, la peor eleccin de reemplazo
de pginas).Las decisiones de reemplazo aleatorio de pginas se pueden tomar
rpidamente, y con un nmero significativo de marcos de pgina donde elegir slo habra
una pequea probabilidad de reemplazar una pgina a la que se vaya a hacer referencia
de nuevo casi de inmediato. Sin embargo este esquema casi no se utiliza debido a su
enfoque aleatorio para acertar o errar.
Reemplazo de pginas de primeras entradas-primeras salidas (FIFO).
En el reemplazo de pginas de primeras entradas-primeras salidas (FIFO), para
cada pgina se registra el instante en que entr en el almacenamiento primario. Cuando se
necesita reemplazar una pgina, se escoge la que ha permanecido en el almacenamiento
durante mayor tiempo. Por intuicin, esta estrategia parece razonable, pues esa pgina ha
tenido su oportunidad y es tiempo de darle una oportunidad a otra pgina.
Lamentablemente, es probable que esta estrategia reemplace pginas muy utilizadas, ya
que si una pgina permanece en el almacenamiento primario durante mucho tiempo puede
deberse a que est en uso constante. Por ejemplo, en los grandes sistemas de tiempo
compartido es comn que muchos usuarios compartan una copia de un editor de texto
cuando capturan y corrigen sus programas. La estrategia de reemplazo de pginas de
primeras entradas-primeras salidas en tales sistemas podra decidir reemplazar una pgina
muy utilizada del editor, y sta ser sin duda una mala eleccin, porque la pgina se
volvera a transferir al almacenamiento principal casi de inmediato. Dicha estrategia
tambin se podra poner en- prctica con una simple cola FIFO: a medida que llega una
pgina, se coloca al final de la cola, y las pginas que se reemplazan son las del principio
de la cola.
Anomala FIFO.
Parece razonable pensar que cuantos ms marcos de pgina se asignen a un
proceso, menos fallas de pgina experimentar ste. Belady, Nelson y Shedler
descubrieron que al utilizar el reemplazo de pginas FIFO, ciertos patrones de referencias
a pginas originan ms fallas de pgina cuando aumenta el nmero de marcos de pgina
asignados a un proceso. Este fenmeno se denomina anomala FIFO, o anomala de
Belady.
toda facilidad se podra seleccionar para reemplazo una pgina equivocada. Por ejemplo,
la pgina menos frecuentemente utilizada podra ser aquella que se trajo al
almacenamiento principal ms recientemente. Esa pgina ha sido utilizada slo una vez,
mientras que las dems pginas que se encuentran en almacenamiento principal podran
haber sido utilizadas en varias ocasiones. El mecanismo de reemplazo de pginas
reemplazar esta pgina, aunque de hecho tenga una alta probabilidad de ser utilizada de
inmediato.
Al parecer, todos los esquemas de reemplazo de pginas corren cierto riesgo de
tomar decisiones equivocadas. Esto sucede por el simple hecho de que no se puede
predecir con precisin el futuro. Por tanto, es deseable una estrategia de reemplazo de
pginas que tiene decisiones razonables la mayor parte del tiempo y que implique un gasto
extra reducido.
Reemplazo de pginas de la no utilizada recientemente (NRU)
Un esquema popular de aproximacin a la LRU con poco trabajo extra es el de la
no utilizada recientemente (NRU). No es probable que sean utilizadas pronto las pginas
que no se han utilizado recientemente, por lo que pueden reemplazarse con pginas
entrantes.
Como es deseable reemplazar una pgina que no ha sido modificada mientras
estaba en el almacenamiento primario, la estrategia NRU se lleva a la prctica con la
adicin de dos bits de hardware por pgina. Esos bits son
a) bit de referencia
= 0 si no se ha hecho referencia a la pgina.
= 1 se ha hecho referencia a la pgina.
b) bit de modificacin = 0 si la pgina no ha sido modificada.
= 1 si la pgina ha sido modificada.
El bit de modificacin se denomina a menudo bit sucio. La estrategia NRU trabaja
en la siguiente forma. Inicialmente, los bits de referencia de todas las pginas valen cero.
Cuando ocurre una referencia a una pgina, su bit de referencia toma el valor l.
Inicialmente, los bits de modificacin de todas las pginas valen cero. Cuando una pgina
se modifica, su bit de modificacin toma el valor 1. Cuando se va a reemplazar una pgina,
primero se intenta encontrar una pgina a la que no se haya hecho referencia (porque
estamos aproximando la estrategia LRU). De otro modo, no queda ms eleccin que
reemplazar una pgina a la que ya se hizo referencia. Si una pgina no ha sido objeto de
una referencia, se comprueba si ha sido modificada. Si no lo ha sido, se reemplaza, pues
requiere menos trabajo que el reemplazo de una pgina modificada, la cual debe escribirse
en el almacenamiento secundario. De otro modo, hay que reemplazar una pgina
modificada.
En un sistema de mltiples usuarios, el almacenamiento principal ser objeto de
frecuentes referencias y, tarde o temprano, la mayor parte o todos los bits de referencia
valdrn 1. En ese momento se pierde la capacidad de distinguir las pginas que ms
conviene reemplazar. Una tcnica ampliamente aplicada para evitar el problema consiste
en asignar peridicamente a todos los bits de referencia de valor 0 para partir otra vez
desde el principio, y despus permitir que los bits de referencia tomen de nuevo el valor de
1, de acuerdo con los patrones normales de referencia. Lamentablemente, ello el
reemplazo se vuelve vulnerable incluso en las pginas activas, pero slo durante un breve
momento despus de poner en cero los bits. Los bits de referencia de las pginas activas
cambiarn 1 casi de inmediato.
Segn se ha descrito, el esquema NRU origina la existencia de cuatro grupos de
pginas:
Grupo 1 sin referencia no modificado
Grupo 2 sin referencia modificado
Grupo 3 con referencia no modificado
Grupo 4 con referencia modificado
Las pginas de los dos primeros grupos se reemplazarn primero, y las de los
ltimos grupos, al final. Las pginas de un grupo se seleccionan aleatoriamente para ser
reemplazadas. Obsrvese que el grupo 2 parece describir una situacin irreal en la que las
pginas han sido modificadas, pero no se ha hecho referencia a ellas; sin embargo, esto es
Ejemplo. Ocurre un fallo de pgina en el instante 20. La pgina ms antigua es A, que lleg
en el instante 0, al iniciar el proceso. Si A tiene el bit R = 0, se retira de la memoria, ya sea
mediante su escritura en el disco (si tiene nueva informacin) o slo se abandona (en caso
contrario). Por otro lado, si R = 1, A se coloca al final de la lista y su tiempo de carga
cambia al tiempo activo (20). Se limpia entonces el bit R. La bsqueda de una pgina
adecuada prosigue con B. Lo que hace la segunda oportunidad es buscar una pgina
antigua sin referencias durante el anterior intervalo de tiempo. Si todas las pginas tienen
alguna referencia, el algoritmo de la segunda oportunidad deriva en un simple FIFO. En
efecto, supongamos que todas las pginas de la figura 3.35 (a) tienen R = l. Una a una, el
sistema operativo traslada las pginas al final de la lista y limpia el bit R cada vez que
aade una. En cierto momento, regresa a la pgina A, la cual tiene R = 0. En ese
momento, A se retira de la memoria. As, el algoritmo siempre termina.
Reemplazo de pginas por reloj.
Aunque la segunda oportunidad es un algoritmo razonable, es ineficiente e
innecesario, puesto que desplaza en forma constante las pginas en una lista. Un mejor
enfoque es mantener las pginas en una lista circular, con la forma de un reloj, como se
muestra en la figura 3.26. Una manecilla apunta hacia la pgina ms antigua.
La clave para la operacin adecuada y eficiente del PFF es mantener los lmites en
valores apropiados.
Una ventaja del PFF con respecto al reemplazo de pginas con conjuntos de
trabajo es que ajusta el conjunto de pginas residentes slo despus de cada falla de
pgina, mientras que un mecanismo de conjuntos de trabajo debe operar despus de cada
referencia a la memoria
Un proceso debe acumular sus pginas una por una; a medida que se hace referencia a cada
pgina nueva, el proceso debe esperar hasta que esa pgina se transfiera al almacenamiento
primario. Dependiendo de cuntas pginas de este proceso estn ya en el almacenamiento
primario, las esperas se harn ms costosas a medida que mayores cantidades del
almacenamiento queden ocupadas por procesos en espera. La figura ilustra el concepto de
producto espacio-tiempo empleado a menudo en los sistemas operativos para estimar la utilizacin
del almacenamiento por parte de un proceso. El producto espacio-tiempo corresponde al rea bajo
la curva de la figura; refleja la cantidad de almacenamiento que utiliza un proceso y el tiempo que
ste lo utiliza. Reducir el producto espacio-tiempo de las esperas por pginas de un proceso es
una meta importante de las estrategias de administraci6n del almacenamiento.
Desempeo de la paginacin por demanda.
La paginacin por demanda puede tener un efecto importante sobre el desempeo de un sistema
de computacin. Para entender esto, calculemos el tiempo de acceso efectivo de una memoria
paginada por demanda. El tiempo de acceso a la memoria, am, en la mayor parte de los sistemas
de computacin actuales vara entre 10 y 200 nanosegundos. En tanto no ocurran fallos de pgina,
el tiempo de acceso efectivo ser igual al tiempo de acceso a la memoria. Si ocurre un fallo de
pgina, primero habr que leer del disco la pgina en cuestin, y luego acceder a la palabra
deseada.
Sea p la probabilidad de que ocurrir un fallo de pgina (O P 1). Cabe esperar que p
sea cercana a cero; es decir, los fallos de pgina son poco frecuentes. El tiempo de acceso efectivo
es entonces:
tiempo de acceso efectivo = (1 - p) X am + p X tiempo de fallo de pgina.
Para calcular el tiempo de acceso efectivo, necesitamos saber cunto tiempo toma resolver
un fallo de pgina.
Un fallo de pgina hace que ocurra la secuencia siguiente:
1. Trampa al sistema operativo.
2. Guardar los registros del usuario y el estado del proceso.
3. Determinar que la interrupcin fue un fallo de pgina.
4. Verificar que la referencia a la pgina fue vlida y determinar la posicin de la pgina en
el disco.
5. Leer del disco a un marco libre:
a. Esperar en una cola para este dispositivo hasta que se atienda la solicitud de
lectura.
b. Esperar durante el tiempo de bsqueda y / o latencia del dispositivo.
c. Iniciar la transferencia de la pgina a un marco libre.
6. Durante la espera, asignar el CPU a algn otro usuario (planificacin de el CPU;
opcional).
7. Interrupcin del disco (entrada/salida terminada).
8. Guardar los registros y el estado de proceso del otro usuario (si se ejecut el paso 6).
9. Determinar que la interrupcin provino del disco.
10. Corregir la tabla de pginas y las dems tablas de modo que indiquen que la pgina
deseada ya est en la memoria.
11. Esperar que el CPU se asigne otra vez a este proceso.
12. Restaurar los registros de usuario, el estado de proceso y la nueva tabla de pginas, y
reanudar la instruccin interrumpida.
Es posible que no todos estos pasos sean necesarios en todos los casos. Por ejemplo,
estamos suponiendo que en el paso 6 el CPU se asigna a otro proceso mientras se realiza la
entrada/salida. Este proceder permite la multiprogramacin para mantener el aprovechamiento del
CPU, pero requiere tiempo adicional para reanudar la rutina de servicio de fallos de pgina una vez
que se ha llevado a cabo la transferencia de E/S.
En cualquier caso, el tiempo de servicio de un fallo de pgina tiene tres componentes
principales:
1. Atender la interrupcin de fallo de pgina.
2. Traer la pgina a la memoria.
3. Reiniciar el proceso.
Si codificamos con cuidado, podremos reducir la primera y tercera tareas a varios cientos
de instrucciones. Dichas tareas podran tardar entre 1 y 100 microsegundos cada una. El tiempo de
intercambio de pgina, por otra parte, probablemente ser del orden de 24 milisegundos. Un disco
duro representativo tiene una latencia promedio de 8 milisegundos, un tiempo de bsqueda de 15
milisegundos y un tiempo de transferencia de 1 milisegundo. El tiempo total de paginacin sera
entonces de cerca de 25 milisegundos, incluido el tiempo de hardware y de software.
Recuerde tambin que slo estamos considerando el tiempo de servicio. Si hay una cola
de procesos que esperan el dispositivo (otros procesos que han causado fallos de pgina),
tendramos que sumar el tiempo de encolado del dispositivo mientras esperamos que el dispositivo
de paginacin est libre para atender nuestra solicitud, lo que incrementara el tiempo de
intercambio todava ms.
Si suponemos un tiempo de atencin de fallo de pgina promedio de 25 milisegundos y un
tiempo de acceso a la memoria de 100 nanosegundos, el tiempo de acceso efectivo en
nanosegundos es:
tiempo de acceso efectivo = (1 - p) x (100) + p (25 milisegundos)
= (1- p) x 100 + p x 25,000,000
= 100 + 24,999,900 x p.
Queda claro que el tiempo de acceso efectivo es directamente proporcional a la frecuencia de los
fallos de pgina. Si un acceso de cada 1000 causa un fallo de pgina, el tiempo de acceso efectivo
ser de 25 microsegundos. El desempeo del computador se reducira en un factor de 250 a
causa de la paginacin por demanda!. Si queremos una degradacin de menos del 10%,
necesitaremos:
110 > 100 + 25,000,000 x p,
10 > 25,000,000 X p,
p > 0.0000004.
Es decir, para mantener en un nivel razonable la reduccin del desempeo slo podemos permitir
fallos de pgina en menos de uno de cada 2,500,000 accesos a la memoria.
Es importante mantener baja la frecuencia de fallos de pgina en un sistema de paginacin por
demanda. De lo contrario, el tiempo de acceso efectivo aumentar y frenar drsticamente la
ejecucin de los procesos.
Otro aspecto de la paginacin por demanda es el manejo y uso general del espacio de intercambio.
La entrada/salida de disco al espacio de intercambio generalmente es ms rpida que al sistema
de archivos. La razn es que el espacio de intercambio se asigna en bloques mucho ms grandes,
y no se emplean bsquedas de archivos ni mtodos de asignacin indirecta. Por tanto, es posible
mejorar el rendimiento de la paginacin copiando una imagen de archivo completa en el espacio de
intercambio al arrancar el proceso, y luego realizar la paginacin por demanda usando el espacio
de intercambio. Los sistemas con espacio de intercambio limitado pueden utilizar un esquema
distinto si se emplean archivos binarios. Las pginas solicitadas de tales archivos se traen
directamente del sistema de archivos. Si llega a ser necesario el reemplazo de pginas en la
memoria, estas pginas simplemente pueden sobreescribirse (ya que nunca se modifican) y leerse
de nuevo del sistema de archivos si se necesitan. Una tercera opcin es solicitar inicialmente las
pginas al sistema de archivos, pero escribirlas en el espacio de intercambio cuando se
reemplazan. Esto asegurar que slo se leern del sistema de archivos las pginas necesarias, y
que toda la paginacin subsiguiente se realizar desde el espacio de intercambio
del proceso. Mientras el proceso se ejecuta con sus pginas actuales, el sistema carga nuevas
pginas, que estarn disponibles cuando las requiera el proceso.
Algunos sistemas operativos, como VAX/VMS, aprovechan la localidad espacial
transfiriendo al almacenamiento principal bloques de pginas contiguas; la pgina a la que se est
haciendo referencia directamente se pagina por demanda, mientras que las pginas restantes del
grupo esencialmente se prepaginan.
La paginacin anticipada ofrece las siguientes ventajas:
Si se pueden tomar las decisiones correctas en casi todos los casos, se reducir
bastante el tiempo de ejecucin de un proceso. As pues, es importante tratar de
desarrollar mecanismos de paginacin anticipada, aunque no puedan ser cien por
ciento precisos.
En muchos casos se puede tomar decisiones precisas. Si la toma de decisiones se
puede realizar con relativamente poco trabajo extra, entonces la ejecucin de un
proceso dado se puede acelerar en gran medida sin afectar negativamente otros
procesos activos.
Como el hardware de la computadora se vuelve cada vez ms econmico, las
consecuencias de una mala decisin son menos serias. Se puede adquirir
almacenamiento principal extra para manejar la acumulacin de pginas
excedentes que un mecanismo de anticipacin transferira al almacenamiento
principal.
Existe la misma probabilidad de que un segmento de longitud s tenga su ltima pgina casi llena o
casi vaca y, por tanto, en promedio hay media pgina de fragmentacin interna (con la restriccin
de que una pgina no puede contener partes de ms de un segmento). Cuanto menor sea el
tamao de la pgina, menor ser la fragmentacin interna.
Muchos resultados publicados, tanto tericos como empricos, sugieren la necesidad de
pginas pequeas. La siguiente tabla muestra los tamaos de pgina utilizados en varias
computadoras populares e importantes a lo largo de la historia.
Fabricante
Honeywell
IBM
DEC
DEC
Intel
Modelo
Multics
370/168
PDP 10
PDP 20
VAX 8800
Tamao de pgina
1024
1024 512
512
Unidad
Palabra de 36 bits
Palabra de 32 bits
Palabra de 36 bits
512
4096
Byte de 8 bits
Byte de 8 bits
Referencias Bibliogrficas
- Sistemas Operativos 5ta. Edicin
Silberschatz
Galvin
Ed. Pearson
Pgs. 239 240, 249 256, 278 279, 291 306, 307 309, 322 324.
- Sistemas Operativos 2da. Edicin
H.M Deitel
Ed. Addison Wesley Iberoamericana
Pgs. 190 206, 219, 260 267, 272 276.
- Sistemas Operativos Modernos
Andrew S. Tanenbaum
Ed. Pearson.
Pgs. 102 111, 121 128, 146 150.
Referencias en Internet
http://www.tau.org.ar/base/lara.pue.udlap.mx/sistoper/capitulo4.html
http://www.itlp.edu.mx/publica/tutoriales/sistemasoperativos2/unidad1.htm