Está en la página 1de 42

UNIDAD 3 Administracin de memoria.

4.1 Poltica y filosofa.


4.2 Memoria real.
3.2.1 Administracin de almacenamiento.
3.2.2 Jerarqua.
3.2.3 Estrategia de administracin de memoria.
3.2.4 Asignacin contigua v.s. no contigua.
3.2.5 Multiprogramacin de particin fija, particin variable, con intercambio de
almacenamiento.
4.3 Organizacin de memoria virtual.
3.3.1 Evaluacin de las organizaciones de almacenamiento.
3.3.2 Paginacin.
3.3.3 Segmentacin.
3.3.4 Sistemas de paginacin segmentacin.
4.4 Administracin de memoria virtual.
3.4.1 Estrategias de administracin.
3.4.2 Tcnicas de reemplazo de pginas.
3.4.3 Paginacin por demanda.
3.4.4 Paginacin anticipada.
3.4.5 Liberacin de pgina.
3.4.6 Tamao de pgina.

INTRODUCCION

4.1 POLTICA Y FILOSOFA


Segn Andrew S. Tanenbaum-1994. La memoria principal es el lugar donde el CPU lee las
instrucciones a ejecutar, as como algunos datos a emplear. Una de las funciones bsicas que
debe implementar un SO es la Administracin de la Memoria para tener un control sobre los
lugares donde estn almacenados los procesos y datos que actualmente se estn utilizando.

4.2 MEMORIA REAL.


La organizacin y administracin de la memoria principal , memoria primaria o memoria real de
un sistema ha sido y es uno de los factores ms importantes en el diseo de los S. O. [1987,
Deitel].
Los trminos memoria y almacenamiento se consideran equivalentes.
Los programas y datos deben estar en el almacenamiento principal para:
Poderlos ejecutar.
Referenciarlos directamente.
Se considera almacenamiento secundario o almacenamiento auxiliar al generalmente soportado
en discos. (Morris Mano - 1994)
Los hechos demuestran que generalmente los programas crecen en requerimientos de memoria
tan rpido como las memorias:
Ley de Parkinson parafraseada: Los programas se desarrollan para ocupar toda la
memoria disponible para ellos.
La parte del S. O. que administra la memoria se llama administrador de la memoria: (David Luis la
Red Martnez)
Lleva un registro de las partes de memoria que se estn utilizando y de aquellas que no.

Asigna espacio en memoria a los procesos cuando estos la necesitan.


Libera espacio de memoria asignada a procesos que han terminado.

4.2.1 Administracin de almacenamiento.


Independientemente del esquema de organizacin hay que decidir las estrategias que se
utilizarn para optimizar el rendimiento.
Para Duncan Mackenzie -1999, Las estrategias de administracin deben considerar:
cundo se consigue un nuevo programa para colocar en la memoria ?:
o cuando el sistema lo pide especficamente o se intenta anticiparse a las
peticiones ?.
dnde se colocar el programa que se ejecutar a continuacin ?:
o se prioriza el tiempo de carga o la optimizacin en el uso del
almacenamiento ?.
con qu criterio se desplazarn programas ?.
4.2.2 Jerarqua.
Los programas y datos tienen que estar en la memoria principal para poder ejecutarse o
ser referenciados (Duncan Mackenzie -1999)
Los programas y datos que no son necesarios de inmediato pueden mantenerse en el
almacenamiento secundario.
El almacenamiento principal es ms costoso y menor que el secundario pero de acceso
ms rpido.
Los sistemas con varios niveles de almacenamiento requieren destinar recursos para
administrar el movimiento de programas y datos entre niveles (ver Figura 3.1 [7, Deitel]).
Un nivel adicional es el cach o memoria de alta velocidad, que posee las siguientes
caractersticas:
Es ms rpida y costosa que la memoria principal.
Impone al sistema un nivel ms de traspaso:
o Los programas son traspasados de la memoria principal al cach antes de
su ejecucin.
Los programas en la memoria cach ejecutan mucho ms rpido que en la
memoria principal.
Al utilizar memoria cach se espera que:
o La sobrecarga que supone el traspaso de programas de un nivel de
memoria a otro sea mucho menor que la mejora en el rendimiento obtenida
por la posibilidad de una ejecucin mucho ms rpida en la cach.

4.2.3 Estrategia de administracin de memoria.


Estn dirigidas a la obtencin del mejor uso posible del recurso del almacenamiento
principal.( Behrouz A. Forouzan-2004)
Se dividen en las siguientes categoras:

Estrategias de bsqueda:
o Estrategias de bsqueda por demanda.
o Estrategias de bsqueda anticipada.
Estrategias de colocacin.
Estrategias de reposicin.

Las estrategias de bsqueda estn relacionadas con el hecho de cundo obtener el


siguiente fragmento de programa o de datos para su insercin en la memoria principal.
En la bsqueda por demanda el siguiente fragmento de programa o de datos se carga al
almacenamiento principal cuando algn programa en ejecucin lo referencia.
Se considera que la bsqueda anticipada puede producir un mejor rendimiento del
sistema.
Las estrategias de colocacin estn relacionadas con la determinacin del lugar de la
memoria donde se colocar (cargar un programa nuevo).
Las estrategias de reposicin estn relacionadas con la determinacin de qu fragmento
de programa o de datos desplazar para dar lugar a los programas nuevos.

4.2.4 Asignacin contigua vs no contigua.

En la asignacin contigua cada programa ocupa un bloque contiguo y sencillo de


localizaciones de almacenamiento.
En la asignacin no contigua un programa se divide en varios bloques o segmentos que
pueden almacenarse en direcciones que no tienen que ser necesariamente adyacentes,
por lo que es ms compleja pero ms eficiente que la asignacin continua. (Behrouz A.
Forouzan-2004)

4.2.5 Multiprogramacin de particin fija, particin variable, con intercambio


de almacenamiento.
Multiprogramacin de Particin Fija
Los sistemas de un solo usuario desperdician gran cantidad de recursos
computacionales debido a que: (Ann McIver McHoes - 2001)

Cuando ocurre una peticin de E / S la CPU normalmente no puede


continuar el proceso hasta que concluya la operacin de e / s requerida.
Los perifricos de e / s frenan la ejecucin de los procesos ya que
comparativamente la CPU es varios rdenes de magnitud ms rpida que
los dispositivos de e / s.

Los sistemas de multiprogramacin permiten que varios procesos usuarios


compitan al mismo tiempo por los recursos del sistema:

Un trabajo en espera de e / s ceder la cpu a otro trabajo que est listo


para efectuar cmputos.
Existe paralelismo entre el procesamiento y la e / s.
Se incrementa la utilizacin de la cpu y la capacidad global de ejecucin
del sistema.
Es necesario que varios trabajos residan a la vez en la memoria principal.

Multiprogramacin de Particin Variable


Los procesos ocupan tanto espacio como necesitan, pero obviamente no deben
superar el espacio disponible de memoria. (Ann McIver McHoes - 2001)
No hay lmites fijos de memoria, es decir que la particin de un trabajo es su propio
tamao.
Se consideran esquemas de asignacin contigua, dado que un programa debe
ocupar posiciones adyacentes de almacenamiento.
Los procesos que terminan dejan disponibles espacios de memoria principal
llamados agujeros:

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.

Multiprogramacin con Intercambio de Almacenamiento


En el esquema de intercambio los programas del usuario no requieren
permanecer en la memoria principal hasta su terminacin. (Ann McIver McHoes 2001)
Una variante consiste en que un trabajo se ejecuta hasta que ya no puede
continuar:

Cede el almacenamiento y la cpu al siguiente trabajo.


La totalidad del almacenamiento se dedica a un trabajo durante un breve
perodo de tiempo.
Los trabajos son intercambiados, dndose que un trabajo puede ser
intercambiado varias veces antes de llegar a su terminacin.
Es un esquema razonable y eficiente para un nmero relativamente reducido de
procesos de usuarios.

4.3 ORGANIZACIN DE MEMORIA VIRTUAL.


Almacenamiento virtual significa la capacidad de direccionar un espacio de almacenamiento
mucho mayor que el disponible en el almacenamiento primario de determinado sistema de
computacin. (George W. Reynolds-2002)
La memoria virtual se refiere al acceso a memoria principal y memoria secundaria indistintamente,
como si fuesen idnticas.
La administracin de memoria virtual exige un tratamiento de las direcciones para averiguar si
corresponden a memoria principal o no; en caso de que no est entra a ejecutarse el sistema
operativo que coloca el dato buscado en un lugar de la memoria principal.
Se pueden distinguir tres tipos de memoria virtual.
Segmentada
paginada
Segmentada-Paginada
A los tres tipos de memoria virtual se les suele aadir el calificativo de Bajo Solicitud
Las direcciones generadas por los programas en su ejecucin no son, necesariamente, aquellas
contenidas en el almacenamiento primario (memoria real), ya que las direcciones virtuales suelen
seleccionarse dentro de un nmero mucho mayor de direcciones que las disponibles dentro del
almacenamiento primario.
Conceptos Bsicos de Almacenamiento Virtual
La clave del concepto de memoria (almacenamiento) virtual est en la disociacin: ((George W.
Reynolds-2002))
De las direcciones a las que hace referencia un programa.
De las direcciones disponibles en la memoria real (almacenamiento primario).
Los principales conceptos son los siguientes:
Direcciones virtuales:
o Son las referidas por un proceso en ejecucin.
Direcciones reales:

o Son las disponibles dentro del almacenamiento primario.


Espacio de direcciones virtuales (v) de un proceso:
o Es el nmero de direcciones virtuales a que puede hacer referencia el proceso.
Espacio de direcciones reales (r) de un computador:
o Es el nmero de direcciones reales disponibles en el ordenador.

4.3.1 Evaluacin de las organizaciones de almacenamiento.


Organizacin del Almacenamiento de Niveles Mltiples
Se deben proporcionar los medios para retener programas y datos en un gran
almacenamiento auxiliar para: (Roberto Escalona Garca - 2004)

Permitir que el espacio de direcciones virtuales de un usuario sea mayor que el


espacio de direcciones reales.
Soportar multiprogramacin de forma efectiva en un sistema con muchos usuarios
que compartan el almacenamiento real.
Se utiliza un esquema de almacenamiento de dos niveles:
a) Primer nivel: almacenamiento real :
o En l se ejecutan los procesos y en l deben estar los datos para que un
proceso pueda referirse a ellos.
Segundo nivel: almacenamiento auxiliar, secundario o adicional :
o Generalmente consta de discos de gran capacidad que pueden mantener
los programas y datos que no caben al mismo tiempo en el ms limitado
almacenamiento real.

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

2518 LOAD 1,2108


2FFF 3000
0000
PAGINA 0 0518 LOAD 1,2108

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

FIGURA 3.2 CARGA DE PROGRAMAS POR PGINAS

En este caso la pgina 0 est en el bloque 2, la pagina 1 en el bloque 4 y la pgina 2 en el


bloque 7. La instruccin LOAD 1,2108 que esta en la posicin 0518 (pagina 0, bye 518) en el
espacio de direcciones del trabajo 2 fsicamente esa almacenada en la posicin real 2518
(bloque 2 byte 518). En forma anloga los datos 015571 localizados lgicamente en la posicin
7108 (pagina 2 byte 108) estas almacenados en la posicin de memoria fsica 7108 (bloque 7
byte 108).

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

CONTENIDO DE CADA 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

TABLA 3.1 TABLA DE BLOQUES DE MEMORIA (BMT)

Las funciones del sistema Operativo con esta gestin de memoria


1. Llevar control del estado, que se logra por medio de dos conjuntos de tablas
a. Tabla de mapa de pagina. Una por espacio de direccin (una por programa)
Cada tabla tiene tantas entradas horizontales como paginas tenga el
programa.
b. Tabla de bloque de memoria. Una en el sistema, que tiene una entrada
horizontal por cada bloque de memoria con informacin relativa al uso de ese
bloque. (ver Tabla 3.1)
2. Determinar a que trabajo se le asigna la memoria disponible, siendo competencia del
gestor de trabajos.
3. Asignacin: se deben cargar todas las pginas del trabajo a bloque asignados y hacer
las entradas apropiadas en la tabla de mapa de pginas y la tabla de bloque de
memoria.
4. Des asignacin: al terminar el trabajo, se deben poner los bloques en estado de libre y
liberar el espacio por la PMT de dicho trabajo.
Ventajas:
El plan de memoria Paginada elimina la fragmentacin, lo que significa mayor utilizacin de
memoria y procesador.
Desventajas:
1. Generalmente el hardware de mapeo de direcciones de pgina aumenta el costo de las
computadoras a la vez que el procesador se ve frenado, esto se debe al espacio que
se requiere para almacenar las distintas estructuras de datos principalmente la PMT
de dicho trabajo, ya que se debe usar tiempo del procesador para mantener y
actualizar esas tablas.
2. Hay prdida de memoria ya que si por ejemplo tengo un trabajo de 5K y las paginas
son de 4k se requerirn 2 bloques para almacenar este trabajo, cada uno de 4k por lo
que se desperdiciaran 3 k bytes, estos no pueden ser usados por ningn otro trabajo.

Paginacin bajo solicitud o memoria virtual paginada. El concepto general de paginacin se


conserva, solamente que ahora buscamos lgicamente lograr una utilizacin superior al100%
Para ejemplificar considrese que los bloques de memoria son de 1000 bytes (en
hexadecimal), supongamos tambin que se cargan tres trabajos de la memoria, dejando sin
usar dos bloques de 1000 bytes. Cmo se podra manejar un cuarto trabajo que requiere
4000 bytes? Se podra hacer como esta indicado en la figura 3.3 cargar solamente 2 de las
pginas del trabajo 4. Entonces se ejecutaran correctamente mientras solo haga referencia a
la informacin de esas dos pginas.
Quedan por responder dos preguntas clave
1. Qu se hace si un trabajo hace referencia a un rea del espacio de direcciones que
no est en la memoria principal?. En la figura 3.3 se puede ver que la instruccin ADD
1,2410 localiza en la posicin 104 del trabajo 4 hace referencia a una pgina que no
est en memoria principal. Si el dispositivo DAT al comprobar la tabla de pginas, se
encuentra el Bit F en 1 se genera una interrupcin de pgina. Esta interrupcin es
distinta a una interrupcin de proteccin, ya que no se trata de un error del programa
de usuario. El Sistema Operativo (SO) debe procesar esta interrupcin cargando las
pginas requeridas y ajustando en forma adecuada la PMT. En seguida se puede
reiniciar la instruccin. Se dice que esta pgina fue cargada bajo solicitud. En especial
cuando se programa un trabajo para su ejecucin, generalmente solo se carga
fsicamente su primera pgina y las dems pginas que requiera el trabajo se cargan
subsecuentemente bajo solicitud. Lo que garantiza que no se cargue una pgina
innecesaria y el rendimiento del sistema sea mejor, as como permitir la
multiprogramacin.
2. De dnde se cargan estas pginas cuando se solicitan? De un dispositivo de
almacenamiento secundario donde se reserva una copia de todo el espacio de
direccin del trabajo. Cuando se necesita una copia en memoria principal, se carga
desde el dispositivo mencionado.
La tcnica de gestin de memoria paginada bajo solicitud es muy atractiva, debido a que no
limita los espacios de direccin al tamao de la memoria principal. Sin embargo hay ciertas
complicaciones. En la figura 3.3 cuando se llega a la instruccin ADD 1,2410 en la posicin
104, se debe cargar la pgina 2 del programa 4 en la memoria principal, pero al estar
ocupados todos los bloques de la memoria
a) Dnde puedo colocar la pgina 2? Esto requiere el movimiento de alguna pgina. Una vez
que la memoria est llena con pginas es posible, es posible cargar una nueva eliminando
primero una de las que ya residen en memoria.
b) Como se decide que pagina se remueve de la memoria? Bajo un algoritmo de remplazo de
pagina. Estos algoritmos estn implementados en el sistema operativo, son variados y ninguno
de ellos es cien por ciento eficiente. El remover una pgina de la memoria y necesitarla de
inmediato sera muy desafortunado. Cuando sucede con frecuencia el excesivo movimiento
entre las memoria principal y el almacenamiento secundario se le llama azotado de pginas, ya
que se consume mucho tiempo en el traslado, sobre todo por la diferencia de velocidad de la
memoria secundaria y la memoria principal. Tanto el azotado como la forma de evitarlo han
constituido el centro de mucha atencin e investigacin.
Para gestionar esta tcnica se requiere de:
a) Una tabla de pginas por espacio de direccin (por programa)
b) Una tabla de bloques para el control de la memoria principal
La tabla de pginas est constituida por las partes sealadas en la figura 3.4 y significan lo
siguiente:
a) Numero de pgina. Indica el nmero de pgina al cual se est refiriendo y tambin el
nmero de la entrada en la tabla.
b) Nmero de bloque. Indica el bloque correspondiente a cada una de las pginas, es decir,
en qu bloque est dicha pgina en memoria principal.

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

LOAD 11120 ADD 12410TRABAJO


TRAB 4 4 PGINA 0
3FFF 4000
TRABAJO2

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

FIGURA 4.3 SITUACION PARTICULAR DE LOS TRABAJOS Y DE LA MEMORIA

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.

e) Bit de Referencia. El bit de referencia se pone en 1 (automticamente mediante el equipo


fsico) siempre que se hace referencia a su bloque. Este bit es el que utilizan los algoritmos
de reemplazo de pgina para decidir si la pagina se saca de memoria o no, si el bit esta en
1 cuando se requiere retirar una pgina, lo que esta en este bloque.
f) Bit de cambio. Este bit se activa siempre que se almacenan datos en la pgina que reside
en dicho bloque. Este bit se emplea para decidir si es necesaria una operacin de salida de
la pgina.
o
No. DE PAGINA No. DE BLOQUE BIT DE FALLO

POSICION EN MEMORIA SECUNDARIA

FIGURA 3.4 TABLA DE PAGINA PARA LA PAGINACION VIRTUAL

No. DE BLOQUEID. DE PROGRAMANo. DE PAGINA BIT DE ESTADO BIT DE REFERENCIA


BIT DE CAMBIO

FIGURA 3.5 TABLA DE BLOQUES PARA LA PAGINACION VIRTUAL

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)

FIGURA 3.6 CAMPO DE DIRECCION

Espacio de direccin: se llama as, segn se haga la referencia a programa o memoria


fsica, al nmero de celdas ocupado por un programa o al nmero de celdas de la memoria
principal.

ESPACIO DE DIRECCIONES DEL PROGRAMA A

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

FIGURA 3.7 ESPACIO DE DIRECCIONES DE UN PROGRAMA

El sistema operativo ha dividido el programa A en cinco segmentos. La direccin origen de


cada segmento es cero (esto ocurre siempre). Cada segmento es un espacio De
direcciones contiguo (vase figura 3.4) Cmo se puede hacer referencia a la posicin

20000 en el segmento 2 y desde cualquier segmento? Decir que la instruccin X se refiere


a la posicin de 20000 es muy ambiguo. Habr que indicar el segmento a que pertenece esa
posicin 20000; pero, como este segmento es el 2, el campo de direccin de dicha
instruccin debe quedar como indica la figura 3.6
En un programa segmentado, por tanto la direccin de una posicin de instruccin o de
datos tendr una estructura de dos partes (s, i) en la que:
s
i

representa el nombre del segmento.


representa la direccin de una posicin dentro de un segmento.

Si un sistema de computadora posee un operando con una estructura de 24 bits, la


direccin indicada por el operando estar dividida en dos partes. La figura 3.8 muestra una
forma de estructurar la direccin.
Nmero de segmento
DESPLAZAMIENTO

8 bits
0

16 bits

7 8

23

FIGURA 3.8 CAMPO DE DIRECCION

Con este esquema, un espacio direccionable de un programa podra tener de 1 a 256


segmentos (los 8 bits utilizados para numero de segmento). Cada segmento podra tener
de 0 a 65,535 (64K) posiciones (los 16 bits utilizados para desplazamiento). La estructura
de las direcciones de los segmentos establece dos lmites importantes:
1. el nmero mximo de segmentos que puede existir en el espacio direccionable de
un programa
2. el desplazamiento mximo de cualquier segmento en el espacio direccionable
3.3.3.1. TRADUCCION DINAMICA DE DIRECCIONES.
Para ejecutar un programa segmentado, durante la ejecucin del mismo, la traduccin de
direcciones debe producirse cada vez que se hace referencia a una instruccin o a un
elemento de datos.
ESPACIO DE DIRECCIONES DEL PROGRAMA D
Supngase que se estn ejecutando en el sistema los programas A, B y C y que el
MEMORIA REAL
programa D est esperando
su proceso. El sistema operativo debe decidir si segmentando
0
el programa D adecuadamente
cabe en memoria principal o no.
75K
SUPERVISOR
Supngase que el programa D se ha segmentado de la forma que indica la figura 3.6
SEGMENTO 1
20 K

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

En la figura 3.7 se muestran los segmentos del programa D cargados Qu sucede en el


momento de la carga? El sistema operativo transfiere cada segmento del programa D a la
memoria real, pro no se produce ninguna traduccin. Los segmentos del programa D
contienen todava sus direcciones relativas. La CPU de la computadora hace referencia a
las posiciones de la memoria real solamente mediante una direccin absoluta.
Imagnese que se est ejecutando una instruccin (figura 3.8) y, para realizarla la CPU
necesita datos de la posicin de memoria 15000 del segmento 1 (posicin relativa). Como
se sabe, la posicin real (absoluta) no es la misma.
Cmo tiene lugar la traduccin durante la ejecucin? Se requiere un equipo fsico
especial. Asimismo, el sistema operativo debe crear una tabla a la que se hace referencia
durante la traduccin. Esta tabla establece la correspondencia entre el espacio de
direcciones segmentado de un programa y la posicin real de los segmentos en la memoria
real considrese, de nuevo el caso del programa D en la
Figura 4.9. Los programas A, B y C no aparecen, pero se supone que estn. (Las
direcciones de la figura 4.9) son decimales para mayor claridad del lector.)
ESPACIO DE DIRECCIONES DEL PROGRAMA D

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

Conforme se cargan los segmentos del programa D en la memoria real, el sistema


operativo crea una tabla de segmentos para el programa. La tabla de segmentos se
construye en la memoria real, casi siempre en la zona del sistema operativo. Cada entrada
horizontal real. As la segunda entrada de la tabla de segmentos n la figura 3.10 muestra el
256K
segmento 2 del programa D que empieza en la posicin 125K de la memoria real. En dicha
tabla hay una entrada horizontal por cada segmento. Habr tantas tablas de segmentos en
memoria como programas estn en ella.

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

FIGURA 3.11 EJECUCION DE UNA INSTRUCCION

Adems de la tabla de segmentos, para la traduccin dinmica de direcciones se utiliza un


registro de control, llamado registro de origen de la tabla de segmentos (registro STOR).
Indica la direccin de origen en la memoria real de una tabla de segmentos o representa el
programa que se est ejecutando en ese momento.
La tabla de segmentos del programa D tiene tres entradas. El origen de la tabla de
segmentos empieza en la posicin 68000 de la memoria real. Vase figura 3.13 Teniendo
toda esta informacin, se puede calcular la direccin absoluta de la relativa 1,15000. Estos
son los pasos a seguir:

MEMORIA REAL

ESPACIO DE DIRECCIONES DEL PROGRAMA D


TABLA DE SEGMENTOS DEL PROGRAMA D

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

SEGMENTO 2 DEL PROGRAMA D


125k
PROGRAMA B
SEGMENTO 3 DEL PROGRAMA D
135 K
205K
PROGRAMA C

FIGURA 3.12 CREACION DE UNA TABLA DE SEGMENTOS


225K

256K

1.- el registro de origen de la tabla de segmentos indica el comienzo de la tabla de


segmentos del programa D. en el ejemplo esta es la posicin 68000 de la memoria real.
2.- el nmero de segmento, en la direccin relativa, se utiliza como ndice para la tabla de
segmentos. En el ejemplo indica la primera entrada.

TABLA DE SEGMENTOS DEL PROGRAMA D


DE ORIGEN DE LA TABLA DE SEGMENTOS
No. DE SEGMENTO
POSICION EN MEMOERIA REGISTRO
REAL

75 K

125 K

205 K

68000

FIGURA 3.13 POSICION DE LA TABLA DE SEGMENTOS EN MEMORIA

La posicin especificada en la entrada de la tabla de segmentos indica el origen del


segmento en la memoria real. El desplazamiento en la direccin relativa se aade al origen
y da como resultado una direccin real. En este ejemplo, el desplazamiento 15000 se
aade al origen del segmento 1 -75000-, que proporciona la direccin 90000 en la memoria
real. Vase la figura 3.11
Como las direcciones de un programa segmentado son todas relativas, este proceso de
traduccin de direcciones se produce continuadamente durante la ejecucin de un
programa. La traduccin la lleva a cabo automticamente el dispositivo de traduccin
dinmica de direcciones (DAT), que utiliza el registro de origen de la tabla de segmentos y
la tabla de segmentos del programa.
REGISTRO DE ORIGEN DE LA TABLA DE SEGMENTOS
DIRECCION RELATIVA

68000

15000

TABLA DE SEGMENTOS DEL PROGRAMA D


No. DE SEGMENTO
POSICION EN MEMOERIA REAL

++
1

75 K

125 K

205 K

DIRECCION ABSOLUTA
90 K O 90000

FIGURA 3.11 PROCESO DE CALCULO DE LA DIRECCION ABSOLUTA

En su momento la segmentacin fue el mejor modo de gestin de la memoria real. Con la


segmentacin se poda conseguir una fragmentacin de la memoria real menor que la de la
de la gestin de memoria particionada. Los segmentos son ms pequeos que los
programas y, por consiguiente, con la segmentacin los fragmentos tambin son ms
pequeos. Sin embargo, la fragmentacin segua existiendo. Por ello de forma posterior

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)

Segmentacin bajo solicitud o segmentacin virtual


La memoria virtual que se ha analizado hasta ahora es unidimensional, puesto que las
direcciones virtuales van desde 0 hasta una direccin mxima, una despus de otra. Para muchos
problemas, el hecho de tenerlo o ms espacios independientes de direcciones virtuales es mucho
mejor que tener uno solo. Por ejemplo, un compilador tiene muchas tablas, las cuales se integran
al proceder la compilacin; entre stas estn las siguientes:
1.- El texto fuente que se resguarda para el listado impreso (en los sistemas de
procesamiento por lotes).
2.- La tabla de smbolos, con los nombres y atributos de las variables.
3.- La tabla que contiene todas las constantes enteras y de punto flotante.
4.- El rbol del lxico, con el anlisis sintctico del programa.
5.- La pila que se utiliza para las llamadas a los procedimientos dentro del compilador.
Cada una de las cuatro primeras tablas crece de forma continua mientras se lleva a cabo la
compilacin. La ltima crece y decrece en forma impredecible durante la compilacin. En una
memoria unidimensional, estas cinco tablas tendran asignados bloques adyacentes en el espacio
de direcciones virtuales, como se muestra en la figura 3.12.

FIGURA 3.12 EN UN ESPACIO UNIDIMENSIONAL DE DIRECCIONES CON TABLAS CRECIENTES, UNA TABLA PUEDE ENCIMARSE
CON OTRA

Cuando un programa tiene un nmero excepcionalmente grande de variables, el bloque de


espacio de direcciones asignadas para la tabla de smbolos podra ocuparse en su totalidad,
aunque hubiera espacio en las dems tablas. Si esto ocurre el compilador manda un mensaje de
error.
Una solucin directa y muy general consiste en dotar a la mquina de varios espacios
independientes, llamados segmentos. Cada segmento tiene una serie lineal de direcciones, desde
0 hasta cierto mximo. La longitud de cada segmento puede variar de 0 hasta un mximo

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

Un segmento puede contener un procedimiento, un arreglo, una pila, o bien un conjunto de


variables escalares, aunque, por lo general no contiene una mezcla de varios.
Una memoria segmentada tiene otras ventajas, adems de hacer ms sencilla la
administracin de las estructuras de datos que crecen o se reducen. Si cada procedimiento ocupa
un segmento independiente, con la direccin 0 como direccin inicial, el ligado independiente de
los procedimientos compilados es mucho ms sencillo. Despus de compilar y ligar todos los
procedimientos que constituyen un programa, una llamada al procedimiento en el segmento n
utilizar la direccin (n, 0) para dirigirse a la palabra 0 (en donde est el dato).

Si el procedimiento del segmento n se modifica y vuelve a compilar ms tarde, no hay que


cambiar los dems procedimientos (puesto que no se han modificado las direcciones iniciales),
incluso en caso de que la nueva versin sea ms grande que la anterior.
La segmentacin tambin facilita el uso de procedimientos o datos compartido entre varios
procesos. Un ejemplo comn es la biblioteca compartida. Es frecuente que las estaciones de
trabajo modernas que ejecutan sistemas avanzados, con ventanas, que tengan bibliotecas grficas
de tamao muy grande que se compilan casi en todos los programas. En un sistema segmentado,
la biblioteca grfica se puede colocar en un segmento y compartirse entre varios procesos, sin
necesidad de tenerla en el espacio de direcciones de cada proceso.
Puesto que cada segmento es una unidad lgica de la que es consciente el programador,
como por ejemplo un procedimiento, arreglo o pila, los distintos segmentos pueden tener distintos
tipos de proteccin. Un segmento de procedimiento podra utilizarse slo para su ejecucin, si se
prohben los intentos por leerlo o almacenar algo en l. Un arreglo de punto flotante podra
utilizarse en modo lectura escritura, pero no para su ejecucin, de forma que los intentos por
entrar a l se vieran frustrados. Tal proteccin es til para determinar errores de programacin.

A continuacin se presenta una comparacin entre la paginacin y segmentacin


Considerando
Necesita saber el programador
si est utilizando esta tcnica?
Cuntos espacios lineales de
direcciones existen?
Puede el espacio total de
direcciones exceder el tamao de
la memoria fsica?
Pueden
distinguirse
los
procedimientos y los datos,
adems de protegerse en forma
independiente?
Pueden adecuarse con facilidad
las
tablas
con
tamaos
fluctuantes?
Se facilita el uso de
procedimientos compartidos entre
los usuarios?
Para qu se invent esta
tcnica?

Paginacin
No

Segmentacin
S

Muchos

No

No

No

Para obtener un gran


espacio lineal de
direcciones sin tener
que adquirir ms
memoria fsica

Para permitir que los programas


y datos fueran separados en
espacios independientes de
direcciones y poder proporcionar
la proteccin y uso de objetos
compartidos

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

es menor, se coloca en su lugar. Obtenemos la configuracin de memoria de la figura 3.14 (b).


Entre el segmento 7 y el 2 est en un rea no utilizada (es decir, un espacio). Entonces, el
segmento 4 se reemplaza con el segmento 5, como en la figura 3.14 (c) y el segmento 3 se
reemplaza con el segmento 6 como se muestra en la figura 3.14 (d). Despus de que el sistema
est en ejecucin durante cierto tiempo, la memoria quedar dividida en varios bloques, algunos
con segmentos y otros con espacios. Este fenmeno de fragmentacin externa (checkboarding)
desperdicia la memoria correspondiente a los espacios. Se puede enfrentar mediante la
compactacin, como se muestra en la figura 3.14 (e). De esta forma los huecos son unificados,
generando as un hueco de tamao suficiente para albergar algn otro segmento ms.

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].

3.3.4 Sistemas de paginacin segmentacin.


Ofrecen las ventajas de las dos tcnicas de organizacin del almacenamiento virtual. (Morris
Mano - 1994)
El tamao de los segmentos es mltiplo del de las pginas.
No es necesario que todas las pginas de un segmento se encuentren al mismo tiempo en el
almacenamiento primario.
Las pginas de almacenamiento virtual, que son contiguas en este almacenamiento, no
necesitan ser contiguas en el almacenamiento real.
El direccionamiento es tridimensional con una direccin de almacenamiento virtual v = (s,p,d):
s es el nmero del segmento.
p es el nmero de pgina.
d es el desplazamiento en la pgina donde se encuentra asignado el elemento
deseado.

La paginacin y la segmentacin puras son mtodos de manejo de memoria bastante


efectivos, aunque la mayora de los sistemas operativos modernos implantan esquemas
combinados, es decir, combinan la paginacin y la segmentacin. La idea de combinar estos
esquemas se debe a que de esta forma se aprovechan los conceptos de la divisin lgica de los
programas (segmentos) con la granularidad de las pginas. De esta forma, un proceso estar
repartido en la memoria real en pequeas unidades (pginas) cuya liga son los segmentos.
Tambin es factible as el compartir segmentos a medida que las partes necesitadas de los mismos
se van referenciando (pginas).
Para la paginacin y segmentacin puras se puede decir que el direccionamiento es
bidimensional porque se necesitan dos valores para hallar la direccin real. Para el caso
combinado, se puede decir que se tiene un direccionamiento tridimensional. El sistema debe contar
con una tabla de procesos (TP). Por cada rengln de esa tabla se tiene un nmero de proceso y
una direccin a una tabla de segmentos. Es decir, cada proceso tiene una tabla de segmentos.
Cuando un proceso hace alguna referencia a memoria, se consulta TP para encontrar la tabla de
segmentos de ese proceso. En cada tabla de segmentos de proceso (TSP) se tienen los nmeros
de los segmentos que componen a ese proceso. Por cada segmento se tiene una direccin a una
tabla de pginas. Cada tabla de pginas tiene las direcciones de las pginas que componen a un
solo segmento. Por ejemplo, el segmento A puede estar formado por las pginas reales a, b, c, p y
x. El segmento B puede estar compuesto de las pginas f, g, j, w y z.
En este esquema pueden haber dos tipos de fallos: por fallo de pgina y por fallo de
segmento. Cuando se hace referencia a una direccin y el segmento que la contiene no est en
RAM (aunque sea parcialmente), se provoca un fallo por falta de segmento y lo que se hace es
traerlo del medio de almacenamiento secundario y crearle una tabla de pginas. Una vez cargado
el segmento se necesita localizar la pgina correspondiente, pero sta no existe en RAM, por lo
cual se provoca un fallo de pgina y se carga de disco y finalmente se puede ya traer la direccin
deseada por medio del desplazamiento de la direccin virtual.
Otro aspecto importante es la estrategia para cargar pginas (o segmentos) a la memoria
RAM. Se usan ms comnmente dos estrategias: cargado de pginas por demanda y cargado de
pginas anticipada. La estrategia de cargado por demanda consiste en que las pginas solamente
son llevadas a RAM si fueron solicitadas, es decir, si se hizo referencia a una direccin que cae
dentro de ellas. La carga anticipada consiste en tratar de adivinar qu pginas sern solicitadas en
el futuro inmediato y cargarlas de antemano, para que cuando se pidan ya no ocurran fallos de
pgina. Ese adivinar puede ser que se aproveche el fenmeno de localidad y que las pginas que
se cargan por anticipado sean aquellas que contienen direcciones contiguas a la direccin que se
acaba de referenciar.
Segmentacin con paginacin: MULTICS
MULTICS se utiliza en las mquinas Honeywell 6000 y descendientes, con el fin de
proporcionar a cada programa una memoria virtual de hasta 2 18 segmentos (ms de 250 mil), cada
uno de los cuales puede tener una longitud de hasta 65 536 (36 bits) palabras. Para su
implementacin, los diseadores de MULTICS optaron por considerar a cada segmento como una
memoria virtual y paginarlo, para combinar las ventajas de la paginacin (tamao uniforme de
pgina sin tener que conservar todo el segmento en memoria si slo se utiliza parte de l) con las
de la segmentacin (fcil programacin, modularidad, proteccin y objetos compartidos).
Cada programa de MULTICS tiene una tabla de segmentos, con un descriptor por
segmento. Puesto que existe ms de un cuarto de milln de datos potenciales para la tabla, la tabla
de segmentos tambin es un segmento, que est paginado. Un descriptor de segmento contiene
una indicacin de si el segmento se encuentra o no en la memoria principal. Si cualquiera de las
partes del segmento se encuentra dentro de la memoria, se considera que el segmento est en
memoria y su tabla de pginas se encuentra dentro de la memoria. Si el segmento est en
memoria, su descriptor contiene un apuntador de 18 bits a su tabla de pginas (Ver la figura 3.25
(a)). Puesto que las direcciones fsicas tienen 24 bytes y todas las pginas estn alineadas con
fronteras de 64 bytes (lo cual implica que los seis bits inferiores de las direcciones de pgina son
000000), slo se necesitan 18 bits en el descriptor para almacenar una direccin de la tabla de
pginas. El descriptor contiene tambin el tamao del segmento, los bits de proteccin y varios
elementos adicionales. La figura 3.25 (b) ilustra un descriptor de segmento en MULTICS. La

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

Cada segmento es un espacio de direcciones virtuales y se pagina de la misma forma que


la memoria con paginacin (sin segmentar) descrita antes en esta unidad.
El tamao de pgina es de 1024 palabras (aunque unos cuantos segmentos utilizados por
MULTICS sean paginados o estn paginados en unidades de 64 palabras).
Una direccin de MULTICS consta de dos partes: el segmento y las direcciones dentro de
l. Las direcciones dentro del segmento se dividen tambin en un nmero de pginas y una
palabra dentro de la pgina, como se muestra en la figura 3.16

FIGURA 3.16 UNA DIRECCION VIRTUAL DE 34 BITS EN MULTICS

Si se lleva a cabo una referencia a memoria, se realiza el siguiente algoritmo:


1.- El nmero de segmento se utiliza para determinar al descriptor del segmento.
2.- Se verifica si la tabla de pginas del segmento se encuentra en memoria. En caso
afirmativo, se le localiza; si no, ocurre un fallo de segmento. Si existe un intento de violacin de una
proteccin, ocurre un sealamiento de fallo.
3.- La entrada de la tabla de pginas de la pgina virtual requerida es examinada. Si la
pgina no se encuentra en memoria, se realiza un fallo de pgina. Si se encuentra en memoria, la
direccin en la memoria principal del principio de la pgina se obtiene de la entrada de la tabla de
pginas.
4.- Se aade el ajuste al origen de la pgina para obtener la direccin en la memoria
principal donde se localiza la palabra.
5.- Por ltimo, se lleva a cabo la operacin de lectura o resguardo.
Este proceso se ilustra en la figura 3.17:

FIGURA 3.17CONVERSION DE UNA DIRECCION DE DOS PARTES DE MULTICS A UNA DIRECCION

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.

Si el algoritmo anterior realmente fuera realizado por el sistema operativo en cada


instruccin, la ejecucin de los programas sera demasiado lenta. En realidad, el hardware de
MULTICS contiene una memoria asociativa de 16 bits y alta velocidad, la cual puede buscar todos
sus datos en paralelo para una clave determinada. Esto se ilustra en la figura 3.18.

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.

FIGURA 3.19 UN SELECTOR 386

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

Si la paginacin est inactiva (debido a un bit en el registro de control global), la direccin


lineal se interpreta como la direccin fsica y se enva a la memoria para la lectura o escritura. En
este caso, tenemos un esquema de segmentacin pura, donde el descriptor proporciona la
direccin base de cada segmento. Se permite que los segmentos se traslapen en forma incidental,
lo que puede ocurrir debido a que sera mucho problema y tomara mucho tiempo verificar que son
ajenos.
Por otro lado, si la paginacin est activa, la direccin lineal se interpreta como una
direccin virtual y se asocia con la 'direccin fsica por 'medio de laS tablas de pgina, en forma
muy parecida a la ejemplos anteriores. La nica complicacin es que con una direccin virtual de
32 bits y una pgina de 4K, un segmento podra contener 1 milln de pginas, por lo que se utiliza
una asociacin con dos niveles para reducir el tamao de la tabla de pginas para los segmentos
pequeos.
En la figura 3.22 (a) vemos una direccin lineal dividida en tres campos, Dir, Pag y Aj. El
campo Dir se utiliza en primer lugar como un ndice en el directorio de pginas para localizar el
apuntador a la tabla de pginas adecuada. A continuacin se utiliza el campo Pag como un ndice
en esta tabla para determinar la direccin fsica del marco.
Por ltimo, se aade Aj a la direccin del marco de pgina para obtener la direccin fsica
del byte o palabra en proceso.
Los datos de la tabla de pginas tienen 32 bits cada uno, 20 de los cuales contienen un
nmero de marco. Los dems son bits de acceso o bien indican si contienen cierta informacin, los
cuales se determinan mediante el hardware en beneficio del sistema operativo; tambin hay bits de
proteccin o de utileras.
Cada tabla de pginas contiene los datos de 1024 marcos de pginas de 4K, de forma que
una sola tabla controla 4 MB de memoria. Un segmento menor que 4MB tendr un directorio de
pginas con un solo dato, un apuntador a una nica tabla. De esta forma, el gasto excesivo para
los segmentos cortos es de slo dos pginas, en vez del milln de pginas necesarias en una tabla
de un nivel.
Para evitar la repeticin de referencias a la memoria, la 386, al igual que MULTICS, tiene
una pequea memoria asociativa que relaciona en forma directa las combinaciones Dir-Pag ms
recientes con la direccin fsica del marco. Slo en caso de que la combinacin activa no est
presente en la memoria asociativa se lleva a cabo el mecanismo de la figura 3.22 y se actualiza la
memoria asociativa

FIGURA 3.22 ASOCIACION DE UNA DIRECCION LINEAL CON UNA DIRECCION FISICA

3.4 ADMINISTRACIN DE MEMORIA VIRTUAL.


Los sistemas de administracin de memoria se pueden clasificar en dos tipos. Los que desplazan
los procesos de la memoria principal al disco y viceversa durante la ejecucin (intercambio y
paginacin) y aquellos que no.

3.4.1.- Estrategias de Administracin de la memoria virtual.


En el almacenamiento real se vieron las estrategias de administracin de memoria para
obtencin, colocacin y reemplazo. Tales estrategias se vuelven a considerar aqu en el contexto
de los sistemas de almacenamiento virtual:
Estrategias de obtencin.- Determinan cundo se debe transferir una pgina o un
Segmento del almacenamiento secundario al primario. Las estrategias de obtencin por
demanda esperan a que un proceso en ejecucin haga referencia a una pgina o un segmento
antes de traer la pgina o el segmento al almacenamiento primario. Los esquemas de obtencin
anticipada intentan determinar por adelantado a cules pginas o segmentos har referencia un
proceso. Si la probabilidad de una referencia es alta y hay espacio disponible, entonces se trae al
almacenamiento primario la pgina o el segmento antes de que se haga la referencia explcita.
Estrategias de colocacin.- Determinan en qu lugar del almacenamiento primario se debe
colocar una pgina o un segmento entrante. Los sistemas de paginacin vuelven trivial la decisin
de la colocacin, porque una pgina entrante se puede ubicar en cualquier marco de pgina
disponible. Los sistemas con segmentacin requieren estrategias de colocacin como las tratadas
en el contexto de los sistemas de multiprogramacin con particiones variables.
Estrategias de reemplazo.- Sirven para decidir cul pgina o segmento se debe desplazar
para dejar espacio a una pgina o segmento entrante cuando est completamente ocupado el
almacenamiento primario.

3.4.2.- Tcnicas de reemplazo de pginas.


En los sistemas con paginacin es comn que estn en uso todos los marcos de pgina.
En este caso, las rutinas de administracin del almacenamiento del sistema operativo deben
decidir que pgina del almacenamiento primario se debe desplazar para dejar espacio a una
pgina entrante. Se vern las siguientes estrategias de reemplazo de pginas:

Reemplazo de pginas ptimo.


Reemplazo de pginas aleatorio.
Reemplazo de pginas de primeras entradas-primeras salidas (FIFO).
Reemplazo de pginas de la menos recientemente utilizada (LRU).
Reemplazo de pginas de la menos frecuentemente utilizada (LFU).
Reemplazo de pginas de la no utilizada recientemente (NRU).
Reemplazo de pginas de la segunda oportunidad.
Reemplazo de pginas por reloj.
Reemplazo de pginas por frecuencia de fallas de pgina.
Reemplazo de pginas ptimo.
El mejor algoritmo posible para el reemplazo de pginas es fcil de describir, pero
imposible de implantar. Es algo as: al momento de ocurrir un fallo de pgina, cierto
conjunto de pginas se encuentra en la memoria. En la siguiente instruccin se har
referencia a una de estas pginas (la pgina que contenga a dicha instruccin). Otras
pginas no se utilizarn sino hasta 10, 100 o tal vez 1000 instrucciones ms adelante.
Cada pgina puede etiquetarse con el nmero de instrucciones ejecutadas antes
de la primera referencia a esa pgina.
El algoritmo ptimo dice que se elimine la pgina con la mxima etiqueta. Si una
pgina no va a utilizarse durante 8 millones de instrucciones y otra pgina se utilizar hasta
dentro de 6 millones de instrucciones, la eliminacin de la primera retrasa el fallo de pgina

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.

Considrese la figura 3.23. La columna de la izquierda indica el patrn de


referencias a pginas de un proceso. La primera tabla muestra cmo dicho patrn de
referencias a pginas hace que las pginas se carguen en memoria y se reemplacen en
secuencia FIFO cuando se asignan tres marcos de pgina al proceso. La segunda tabla
muestra cmo se comporta este proceso en las mismas circunstancias, pero con cuatro
marcos de pgina asignados. A la izquierda de cada tabla se indica si la nueva referencia a
la ltima pgina ocasiona o no una falla de pgina. Cuando el proceso se ejecuta en cuatro
pginas, experimenta una falla de pgina ms que cuando se ejecuta en tres pginas,
observacin que ciertamente es contraria a la intuicin.

FIGURA 3.23 ANOMALIA


FIFO

La anomala FIFO se considera ms una curiosidad que un resultado importante.


Posiblemente su importancia real para un estudiante de sistemas operativos sea la de
servir como una advertencia de que los sistemas operativos son entidades complejas que
a veces desafan a la intuicin.
Reemplazo de pginas de la menos recientemente utilizada (LRU)
Esta estrategia selecciona para su reemplazo a aquella pgina que no ha sido
utilizada durante el mayor tiempo. La estrategia se basa en la heurstica de localidad
segn la cual el pasado reciente es un buen indicador del futuro cercano, de modo que
LRU exige que se marque cada pgina con el instante en que se hace referencia a ella.
Esto podra requerir mucho trabajo adicional, por lo que la estrategia LRU pese a ser

atractiva, no se usa a menudo en los sistemas actuales; lo que se hace es utilizar


estrategia que se aproximen a la LRU y que no ocasionen esos grandes costos.
La estrategia LRU se puede realizar con una estructura de listas que contenga una
entrada por cada marco de pgina ocupado. Cada vez que se hace referencia a un marco
de pgina, la entrada correspondiente a esa pgina se coloca al principio de la lista, y las
entradas ms antiguas se llevan al final de la lista. Cuando hay que reemplazar una pgina
para dejar espacio a otra entrante, se selecciona la entrada final de la lista, se libera el
marco de pgina correspondiente (lo cual posiblemente requiera escribir una pgina
modificada en el almacenamiento secundario), se coloca la pgina entrante en el marco de
pgina y la entrada correspondiente a ese marco de pgina se coloca al principio de la
lista, porque esa pgina es ahora la que ha sido utilizada ms recientemente. Este
esquema llevara a la prctica fielmente la estrategia LRU, pero tambin incurre en un
considerable trabajo extra.
Siempre hay que tener cuidado al aplicar razonamientos heursticos en los
sistemas operativos. Por ejemplo, en la estrategia LRU, la pgina menos recientemente
usada podra ser la siguiente en ser utilizada, si un programa realiza un ciclo grande que
abarque varias pginas. Si se reemplazara la pgina LRU, el sistema se encontrara as
mismo transfiriendo esa pgina de nuevo al almacenamiento principal casi de inmediato.
Dicho fenmeno tambin podra ocurrir en un sistema con una serie de llamadas a
procedimientos profundamente anidados; a medida que los procedimientos llamados
volvieran a la pgina que contena la llamada original, esa pgina podra reemplazarse
fcilmente como pgina LRU justo antes del retorno final.
Analicemos ahora un segundo algoritmo LRU en hardware. En una mquina con n
marcos para pgina, el hardware LRU puede utilizar una matriz de n x n bits, cuyos datos
iniciales son todos 0. En una referencia al marco k, el hardware primero activa todos los
bits del rengln k y desactiva despus todos los bits de la columna k. En cualquier instante,
el rengln cuyo valor en binario es mnimo es el de uso menos reciente, el rengln con el
siguiente valor ms pequeo es el segundo de uso menos reciente, etc. El trabajo de este
algoritmo aparece en la figura 3.24 para cuatro marcos para pginas con referencias a las
pginas en el orden
0123210323
Despus de hacer referencia a la pgina 0 tenemos la situacin de la figura 3.34
(a), etc.

FIGURA 3.24 EL RLU CON USO DE


UNA MATRIZ ANOMALIA FIFO

Reemplazo de pginas de la menos frecuentemente utilizada (LFU)


Una aproximacin al LRU es la estrategia de la menos frecuentemente utilizada
(LFU) en la cual lo importante es la intensidad con la que se ha utilizado cada pgina; la
pgina por reemplazar es aquella que se ha usado menos frecuentemente o a la que se ha
hecho referencia con menos frecuencia. De nuevo, el atractivo intuitivo es real, pero con

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

una consecuencia simple de la reiniciacin peridica de los bits de referencia (pero no de


los bits de modificacin) y es perfectamente razonable.
Los esquemas como NRU se pueden utilizar en mquinas como VAX, que carecen
de un bit de referencia en hardware e incluso en mquinas que no tienen bit de
modificacin en hardware. Los bits de referencia y modificacin se implantan por lo regular
en hardware y se modifican automticamente como parte de la ejecucin de cada una de
las instrucciones de mquina. Dichos bits se pueden simular interviniendo los manejadores
de fallas y los de excepciones de un sistema operativo en la siguiente forma: El bit de
referencia se puede simular con un bit de software y actualizar cada una de las entradas
de la tabla de pginas para indicar que no est presente la pgina correspondiente; una
referencia a una pgina provoca una falla de pgina y transfiere el control al manejador de
fallas de pgina, el cual asigna al bit de referencia el valor 1 y reanuda el procesamiento
normal. Para simular el bit de modificacin basta marcar todas las pginas como de slo
lectura; cuando se hace un intento de modificar una pgina, ocurre una excepcin de
acceso y el manejador de excepciones toma el control, asigna al bit de modificacin
(controlado por software) el valor 1 y cambia el control de acceso de esa pgina a
lectura/escritura. Por supuesto, el mecanismo que maneja al bit de modificacin debe
evitar la actualizacin de las pginas autnticas de slo lectura, por lo que el sistema
operativo debe recordar cules pginas son en verdad de slo lectura y cules son en
verdad de lectura/escritura.
Reemplazo de pginas de la segunda oportunidad.
La evidente debilidad de la estrategia FIFO es que puede decidir reemplazar una
pgina muy utilizada que ha permanecido en memoria durante mucho tiempo. Esta
posibilidad se puede evitar reemplazando slo aquellas pginas cuyos bits de referencia
valgan 0.
Una modificacin simple de FIFO que evita deshacerse de una pgina de uso
frecuente inspecciona el bit R de la pgina ms antigua. Si es 0, la pgina es tanto antigua
como no utilizada, por lo que reemplaza en forma inmediata. Si el bit es 1, el bit se limpia,
la pgina se coloca al final de la lista de pginas y su tiempo de carga se actualiza, como si
hubiera llegado en ese momento a la memoria. Despus contina la bsqueda.
La operacin de este algoritmo, llamado de la segunda oportunidad, se muestra en
la figura 3.25. En la figura 3.25 (a), vemos las pginas de la A hasta H, en una lista ligada
ordenada segn el tiempo de llegada a la memoria.

FIGURA 3.24 LA OPERACIN DE LA SEGUNDA OPORTUNIDAD (a) PGINAS


ORDENADAS EN ORDEN FIFO. (b) LA LISTA DE LAS PAGINAS SI OCURRE UN ERROR
DE LA PAGINA AL INSTANTE 20 Y A TIENE ACTIVADO SU BIT R

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.

FIGURA 3.26 EL ALGORITMO DEL RELOJ PARA


REEMPLAZO DE PAGINAS ANOMALIA FIFO

Al ocurrir un fallo de pgina, se inspecciona la pgina a la que apunta la manecilla. Si su bit


R = 0, la pgina se retira de la memoria, se inserta la nueva pgina en su lugar en el reloj y
la manecilla avanza una posicin. Si R = 1, este bit se limpia y la manecilla avanza a la
pgina siguiente. Este proceso contina hasta encontrar una pgina con R = 0. Difiere de
la segunda oportunidad slo por la implementacin.
Reemplazo de pginas por frecuencia de fallas de pgina.
Una medida de la eficiencia con que se ejecuta un proceso en un ambiente de
paginacin es su tasa de fallas de pgina. Los procesos que fallan constantemente pueden
estar hiperpaginando porque tienen muy pocos marcos de pgina y no pueden mantener
sus conjuntos de trabajo en el almacenamiento primario. Los procesos que casi nunca
fallan pueden tener de hecho demasiados marcos de pgina y estar impidiendo el progreso
de otros procesos del sistema. Idealmente, los procesos deben operar en algn punto
entre esos extremos. El algoritmo de frecuencia de fallas de pgina (page fault frequency,
PFF) ajusta el conjunto de pginas residentes de un proceso (es decir, aquellas pginas
que estn actualmente en la memoria) basndose en la frecuencia con que el proceso
tiene fallas de pgina (o, alternativamente, segn el tiempo que hay entre fallas de pgina,
denominado tiempo entre fallas).
El PFF registra el tiempo entre la ltima falla de pgina y el vigente. Si ese tiempo
es mayor que un valor lmite superior, entonces se liberan todas las pginas a las que no
se haya hecho referencia en ese intervalo. Si el tiempo es menor que un valor lmite
inferior, la pgina entrante se convierte en un miembro del conjunto de pginas residentes
del proceso.
Lo prctico del PFF es que ajusta dinmicamente el conjunto de pginas
residentes de un proceso en respuesta al comportamiento cambiante del proceso. Si un
proceso est conmutndose a un conjunto de trabajo mayor, entonces tendr fallas
frecuentes de pgina y el PFF le dar ms marcos de pgina. Una vez que se acumule el
nuevo conjunto de trabajo, la frecuencia de fallas de pgina se reducir y el PFF
mantendr el conjunto de pginas residentes o incluso podr reducirlo.

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

3.4.3.- Paginacin por demanda.


El sentido comn indica que las pginas de un proceso deben cargarse por demanda. No se debe
transferir ninguna pgina del almacenamiento secundario al primario hasta que un proceso en
ejecucin haga explcitamente referencia a ella. Hay varias razones por las cuales es atractiva esta
estrategia:
Los resultados de la teora de la computabilidad, especficamente l problema de la
detencin, indican que no se puede predecir con precisin la trayectoria de
ejecucin que seguir un programa. As pues, cualquier intento de cargar pginas
con anticipacin a su uso puede hacer que se carguen las pginas equivocadas.
La paginacin por demanda garantiza que las nicas pginas que se transfieren al
almacenamiento principal son aqullas que requieren los procesos.
.El trabajo extra requerido para decidir cules pginas se deben transferir al
almacenamiento principal es mnimo. Las estrategias de obtencin anticipada de
pginas pueden requerir mucho tiempo de ejecucin adicional.
La paginacin por demanda tambin presenta problemas, como se indica en la figura 3.37.

FIGURA 3.27 PRODUCTO ESPACIO- TIEMPO EN EL ESQUEMA DE PAGINACION POR


DEMANDA

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

3.4.4.- Paginacin anticipada.


Un tema central de la administracin de recursos es que el valor relativo de un recurso influye en la
intensidad con que se debe administrar. Por un lado se han reducido en gran medida los costos del
hardware. Por otro, ha disminuido mucho el valor relativo del tiempo de mquina con respecto al
tiempo de la gente. Ahora los diseadores de sistemas operativos se centran en los mtodos para
reducir la cantidad de tiempo que la gente debe esperar para recibir los resultados de una
computadora. La paginacin anticipada es una tcnica que promete dar buenos resultados, y se
denomina a veces prepaginacin.
En la paginacin anticipada, el sistema operativo intenta predecir cules pginas
necesitar un proceso y entonces carga dichas pginas cuando hay espacio disponible. Si se
toman las decisiones correctas, se puede reducir considerablemente el tiempo de ejecucin total

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.

3.4.5.- Liberacin de pgina.


En una administracin del almacenamiento mediante conjuntos de trabajo, los programas
indican por referencia explcita cules pginas desean utilizar. Los programas que ya no requieran
pginas especficas debern desechar tales pginas de sus conjuntos de trabajo.
Por lo regular, hay un tiempo durante el cual permanecen en el almacenamiento principal
las pginas que ya no se requieren.
Cuando es evidente que ya no ser necesaria una pgina, un usuario podra dar una orden
de liberacin voluntaria de pgina para liberar el marco de pgina. Esto eliminara el retraso que
implica dejar que el proceso deseche poco a poco la pgina de su conjunto de trabajo.
La liberacin voluntaria de pginas podra eliminar el desperdicio y acelerar la ejecucin de
un programa, pero la mayora de los usuarios de los sistemas de cmputo actuales ni siquiera
saben que es una pgina y no se les puede pedir que tomen decisiones al nivel del sistema. La
incorporacin de mandatos de liberacin de pginas en los programas de usuario podra hacer
mucho ms lento el desarrollo de las aplicaciones.

3.4.6.- Tamao de pginas.


En los sistemas con paginacin, el almacenamiento real se divide normalmente en marcos de
pginas e tamao fijo. Para Qu tamao deben tener esos marcos de pgina? Qu tamao
debe tener una pgina? Deben ser del mismo tamao todas las pginas de un sistema o deben
utilizar diferentes tamaos de pgina? Si se usan diferentes tamaos, los tamaos mayores
deben ser mltiplos enteros de los tamaos menores de pgina?
Tales preguntas requieren sentido comn y un profundo conocimiento del hardware, del
software y de las aplicaciones deseadas para un sistema en particular. No hay respuestas
universales. No existe una necesidad imperiosa de que todos los sistemas de cmputo tengan el
mismo tamao de pgina o en ese caso, un tamao de pgina nico.
Qu factores determinan si una pgina debe ser grande o pequea? Aqu se resuelven
alguno de ellos:
Cuanto menor sea el tamao de la pgina, ms pginas y marcos de pgina habr
y mayores tendrn que ser las tablas de pginas. En los sistemas en los que las
tablas de pginas ocupan el almacenamiento primario, hay una necesidad de
pginas ms grandes. El desperdicio de almacenamiento debido a tablas
excesivamente grandes se denomina fragmentacin de tablas. Cabe sealar que

este argumento es menos vlido ahora gracias a la disponibilidad de memorias


muy grandes y econmicas.
Con tamaos de pgina grandes, se paginan en el almacenamiento primario
grandes cantidades de informacin a la que quiz nunca se haga referencia. Esto
indica la necesidad de pginas ms pequeas.
Dado que las transferencias de entrada/salida desde el disco son relativamente
lentas, se desea reducir al mnimo el nmero de transferencias a que se someta un
programa a medida que se ejecuta. Esto parece indicar la necesidad de tamaos
de pgina grandes.
Los programas tienden a exhibir la propiedad de localidad de referencia y esas
localidades tienden a ser pequeas. As, un tamao de pgina ms pequeo
ayudar a un programa a establecer un conjunto de trabajo ms ajustado; es decir,
las pginas del conjunto del trabajo que se mantienen en el almacenamiento real
contendrn ms elementos de informacin a los que se har referencia
intensamente.
Debido a que las unidades de procedimientos y datos ocasionalmente comprenden
un nmero entero de pginas, los sistemas con paginacin experimentan
fragmentacin interna, como se muestra en la figura 3.28.

FIGURA 3.28 FRAGMENTACION INTERNA EN UN SISTEMA CON


PAGINACION

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

También podría gustarte