Está en la página 1de 19

Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin.

de la Mem 3-1

3. ADMINISTRACIÓN DE LA MEMORIA

INTRODUCCIÓN

OBJETIVO

El objetivo general del administrador de la memoria es proporcionar


a cada proceso espacio en la memoria (RAM), de acuerdo con lo que
necesita cada proceso y con el espacio disponible. Si el espacio que
necesitan los procesos es mayor que el de la memoria RAM, tendrá que
hacerse uso de la memoria secundaria, la cual servirá como una
extensión o respaldo de la RAM. Debemos considerar que un proceso
sólo usará los contenidos de la memoria secundaria después de que
estos hayan sido copiados a la RAM.

En concreto, este administrador debe, ante las peticiones de los


procesos y la cantidad de memoria disponible:
• Establecer cuánto espacio de memoria otorgar a cada proceso (y,
en consecuencia, a cada hilo) y en qué lugar.
• Establecer por cuánto tiempo otorga ese espacio.
• Impedir que los procesos usen espacios a los que no tengan
autorización.

Claramente, la concurrencia complica la administración de la memoria


en comparación con la administración de la memoria si un solo proceso,
con un solo hilo, puede estar en el trámite de ejecución.

LOS DISPOSITIVOS DE ALMACENAMIENTO

Empezaremos por dividir los dispositivos en dos categorías:

1. Dispositivos cuya operación normal es de sólo lectura.


2. Dispositivos cuya operación normal es de escritura y lectura.

1.
La memoria de sólo lectura (Read Only) o memoria ROM, tiene un
contenido fijo en su operación normal, aunque pudiera actualizarse
para mejorar su desempeño. Es una memoria de acceso aleatorio, esto
es, la memoria ROM también es RAM (Random Access Memory), aunque no
se le designe así. Los dispositivos RAM operan electrónicamente,
accediendo a cada celda a partir de que se establece su ubicación,
sin que haya que pasar antes por otra celda de menor numeración.
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-2

Contrasta con las memorias de acceso secuencial, en las que, para


acceder a una celda se deben recorrer (mecánicamente), todas las
celdas físicamente anteriores en el recorrido a ese registro; tal es
el caso de la cinta magnética.

La memoria ROM se utiliza para almacenar los programas que ponen en


marcha la computadora y que hacen diagnósticos. Se ha usado la memoria
ROM para almacenar al sistema operativo, pero lo común es que éste
pase de la memoria secundaria a la principal; la memoria ROM es pequeña
(algunos miles de bytes).

2.
Enseguida se mencionan los dispositivos de almacenamiento cuyo
funcionamiento normal incluye la escritura y lectura, en orden
creciente de capacidad de almacenamiento y tiempo de acceso,
incluyendo valores de referencia:

• Registros en la CPU. Memoria inmediata, pero muy pequeña,


utilizada por un proceso cuando usa la CPU (<1K, 0.25-0.5ns).
• Memoria caché (del francés cache: depósito oculto). Es una
memoria más pequeña que la RAM pero más rápida (<16MB, 0.5-25
ns).
• Memoria principal (RAM). El lugar natural para el alojamiento de
los procesos (<64GB, 80-250ns).
• Memoria secundaria. El lugar en que se almacenan contenidos de
los procesos que no caben en la RAM. Disco magnético (<=20TB,
8.5ms); unidad de estado sólido (<= 4 TB, 0.1 ms).

La figura muestra los dispositivos mencionados, los cuales se resaltan


en negro; a la izquierda, se apartan los registros, cuyo uso se incluye
cuando se otorga un procesador a un proceso.

La memoria caché es un caso especial, que ayuda a mejorar el desempeño;


la memoria caché funciona de manera similar a la RAM pero es más
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-3

rápida aunque más pequeña. Cuando se hace referencia a alguna porción


de la memoria por primera vez, se toma de la RAM pero se copia a la
caché y se pasa a la CPU. Cuando en otro punto del programa se haga
referencia a esa misma porción, se buscará primero en la caché; de
encontrarse en la caché, se ahorrará el tiempo de acceso a la RAM y
el acceso se hará más rápido.

La memoria caché se considera un depósito oculto para un programador


de aplicaciones, puesto que éstas hacen referencias a los registros
y a la RAM. Un ejemplo de la utilidad de la caché sería el depositar
en ella los contenidos relativos al cuerpo de un ciclo, que incluyen
instrucciones y datos; los accesos repetidos a ese cuerpo serían más
rápidos si se usa la caché en vez de la RAM. Otro ejemplo de mejoría
con la caché es el contenido relativo a un subprograma, en caso de
que las llamadas a éste se repitan.

Hay que señalar que, comúnmente, la memoria caché está integrada en


la CPU. Por otra parte, ha generalizado la designación caché para
dispositivos de almacenamiento informales intermedios hacia otro
dispositivo que es más lento. Por ejemplo, la memoria principal puede
servir de caché para intercambios que, en principio, se hacen con el
disco duro.

LA MEMORIA PRINCIPAL

Puede ser visualizada como una agregación lineal de celdas numeradas.


También es llamada memoria RAM (Random Access Memory) o memoria de
acceso aleatorio, según se explicó para la memoria ROM. Cada celda o
palabra tiene asignado un número; sólo se tiene que especificar ese
número para acceder a la celda correspondiente, ya sea para guardar
o recuperar una secuencia de bits. Dada la importancia de la memoria
principal, el término memoria se refiere generalmente a la memoria
principal.

EL ALOJAMIENTO DE LOS PROCESOS EN LA MEMORIA

El asunto es alojar un proceso en la memoria RAM. El espacio requerido


por un proceso incluye el código y espacio de trabajo, según se
mencionó en el capítulo 2. El problema se ilustra en la siguiente
figura.
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-4

EVOLUCIÓN DE LA ADMINISTRACIÓN DE LA MEMORIA

COMPUTADORA SIN SISTEMA OPERATIVO

En este caso el código que estaría en el sistema operativo se encuentra


en el programa de usuario, el cual tiene el control de la memoria. Es
el caso más simple pero no hay quien proporcione algún servicio; el
programa de usuario es responsable de obtener lo que necesita. Las
direcciones establecidas originalmente en el programa son absolutas
(No están sujetas a nada, porque no tienen vínculo alguno de
dependencia con cualquier otra realidad): corresponden exactamente a
las direcciones de la memoria. Este enfoque podría ser útil para
algunos sistemas dedicados.

COMPUTADORA CON SISTEMA OPERATIVO

SISTEMA OPERATIVO QUE ATIENDE PROCESOS DE USUARIO

En este caso la memoria se reparte entre el sistema operativo y los


procesos de usuario. El sistema operativo tiene acceso completo a la
memoria pero el usuario no debe afectar el espacio del sistema
operativo o el de otros usuarios.

Notemos que, por ejemplo, el sistema operativo ocupa N1 celdas, de la


celda 0 a la celda N1-1 y después se deben alojar los demás procesos.

Ahora supongamos que un proceso de usuario requiere, para ejecutar,


N2 celdas, las cuales incluirían el código del programa, las variables
y otras cosas. Durante la ejecución del sistema operativo la CPU haría
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-5

referencia a celdas en el rango de 0 a N1-1, pero la ejecución del


proceso de usuario produciría referencias de 0 a N1-1.

Claramente, estas últimas peticiones de acceso no se pueden permitir,


por lo que el proceso de usuario debe alojarse en un lugar que no se
traslape con el que ocupa el sistema operativo. Lo mismo ocurriría
con otros procesos de usuario, se deben colocar donde no encimen al
espacio ocupado por algún otro proceso.

En general, supongamos que un proceso de usuario requiere M celdas y


es ubicado en el rango de celdas de B a B+M-1 en la memoria física.
La ejecución de ese proceso generará peticiones de acceso a una
memoria hipotética de 0 a M-1; a esta memoria se le llama memoria
lógica del proceso y su numeración se conoce como el espacio de
direcciones lógicas del proceso, también llamado espacio de
direcciones virtuales.

Cuando un proceso hace una petición de acceso a una celda de la memoria


pero en realidad se le otorga espacio en otro lugar, podemos decir
que el espacio solicitado por el proceso es virtual. Sin embargo, es
común designar como memoria virtual sólo a la porción de memoria
secundaria usada por un programa, según trataremos más adelante. El
espacio de B a B+M-1 será llamado espacio de direcciones físico del
proceso. En la CPU, el valor B se puede colocar en el llamado registro
de base; el valor de M-1 se puede almacenar en el llamado registro
límite. Vea la figura.

La transformación de las direcciones que solicita la CPU será


realizada por la Unidad de Gestión de Memoria (UGM). Cuando la CPU
emite una solicitud de acceso a la dirección d:

• Primero verifica si está en el rango de 0 a M.


• Si está en ese rango, entrega el valor d+B como la dirección
física requerida; en caso contrario, reporta una violación de
memoria y el programa es detenido.
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-6

Este procedimiento garantiza que la dirección entregada no sea menor


que B o mayor que B+M. De esa manera se impide que un proceso acceda
a un espacio no autorizado de memoria. La siguiente figura representa
el mapeo de la dirección lógica a la dirección física.

La dirección d es una dirección lógica, pero también es llamada


dirección relativa porque su valor corresponde al de la dirección
física de la palabra correspondiente pero relativo al valor B inicial.

También se dice que el sistema operativo tiene un total de memoria


comprometida (committed) para el uso de los procesos; esa memoria se
puede ubicar en RAM o, como veremos más adelante, en el disco.

PARTICIONES DE LA MEMORIA FÍSICA

El sistema operativo intentará alojar cada proceso en la memoria. De


alguna manera, debe partir la memoria física; reserva un espacio para
el sistema operativo y el resto de la memoria se otorga a los procesos
de usuario.

Cuando un proceso termina su ejecución, libera el espacio asignado.


Al paso del tiempo, se generan espacios vacíos en la memoria y algunos
de ellos tal vez no sean del suficiente tamaño para alojar algún
proceso. Vea la siguiente figura.

Podría pensarse en la compactación de los espacios llenos, recorriendo


los contenidos de espacios que están siendo usados; eso podría sugerir
una mejor utilización de la memoria, según se muestra en la siguiente
figura. Sin embargo, se incurre en una sobre carga de trabajo al
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-7

desplazar los contenidos, además de que el desempeño no mejora en la


compactación de una memoria RAM; en el caso de la compactación
(desfragmentación) de contenidos en un disco duro, el desempeño mejora
puesto que la cercanía de las celdas que son requeridas si produce
una mejora notable en el desempeño.

La alternativa útil es la partición de la memoria lógica que se


describe más adelante.

PRÁCTICA

Use el Administrador de tareas y la utilería RamMap para observar el


total de la memoria RAM y su uso.

ANOTACIÓN DEL ESPACIO OCUPADO DE LA MEMORIA

Para llevar el registro del espacio ocupado de la memoria se puede


usar:
• Mapa de bits. La memoria se divide en bloques y se construye un
mapa de bits para cada bloque; si el bloque está libre se asigna
un 0, pero se asigna un 1 en caso contrario.
• Listas enlazadas. Puede construirse una lista de los espacios
de memoria en uso y otra para los espacios vacíos.

PARTICIÓN DE LA MEMORIA LÓGICA

Los espacios de la memoria que van quedando libres a medida que se


realiza la ejecución de los programas pueden ser insuficientes, cada
uno, para dar cabida un nuevo programa, pero la suma de esos espacios
sí podría alojarlo.

Para aprovechar el espacio libre que está dividido en pequeños


pedazos, se puede partir la memoria lógica en partes adecuadas que
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-8

serán alojadas en los espacios libres de la memoria física. Vea el


ejemplo de la figura siguiente.

La partición sistemática de la memoria lógica puede hacerse con:


• Paginación y
• Segmentación, los cuales describimos a continuación.

PAGINACIÓN

La memoria lógica es dividida en bloques del mismo tamaño llamados


páginas y la memoria física es dividida en bloques iguales, del tamaño
de las páginas, llamados marcos (frames).

Cuando se ejecuta un programa, las páginas son cargadas en los marcos,


sin que estos tengan que ser secuenciales por lo que mejora la
utilización de la memoria. Además, la paginación permite, con un poco
de más trabajo, implementar el esquema de páginas compartidas, que
permite compartir el código común entre procesos; mejorando aún más
la utilización de la memoria. Enseguida describiremos cómo se realiza
la paginación.
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-9

DIVISIÓN DE LA MEMORIA LÓGICA

Supongamos que la memoria lógica consta de 2P celdas con P entero. Si


partimos la memoria en 2N pedazos (páginas), el tamaño de cada página
será de 2P-N celdas. Verificando, el número total de celdas será:
2N(2P-N) = 2P
Enseguida presentamos la división de una memoria de 210 en páginas de
diversos tamaños.

Número de Tamaño de la página Número total de


páginas celdas
23=8 27=128 23(27)=1024
24=16 26=64 24(26)=1024
25=32 25=32 25(25)=1024
26=64 24=16 26(24)=1024
27=128 23=8 27(23)=1024

LAS DIRECCIONES DE LA MEMORIA LÓGICA

La paginación utiliza una propiedad de los números naturales,


expresados en cualquier base:
Si consideramos una secuencia de números colocados uno abajo del otro,
notaremos que las cifras de la izquierda no cambian en una determinada
porción, mientras las cifras de la derecha cambian de un renglón a
otro. Por ejemplo, consideremos los números binarios de 10 cifras,
del 0 al 1023. Los primeros 128 números tendrán las 000 como las
primeras cifras de la izquierda, los siguientes 128 números tendrán
las cifras 001. La siguiente tabla muestra, para cada número, su
representación decimal y luego su representación binaria en dos
partes: la primera de 3 cifras y la segunda de 7 cifras.

Números en Primeras 3 cifras Siete cifras


representación binarias a la binarias restantes
decimal izquierda
0-127 000 0000000-1111111
128-255 001 0000000-1111111
256-383 010 0000000-1111111
384-511 011 0000000-1111111
512-639 100 0000000-1111111
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-10

640-767 101 0000000-1111111


768-895 110 0000000-1111111
896-1023 111 0000000-1111111

Si la sucesión de los 1024 números la dividimos en bloques de 128


elementos, tendríamos 8 de esos bloques y cualquier número puede
representarse como la concatenación:

Por ejemplo, el número binario 0101001011 puede considerarse como la


concatenación del número de bloque 010 y el número 1001011 dentro de
ese bloque; en términos de las direcciones de la memoria lógica,
tendríamos que la dirección de la celda sería la concatenación del
número de página 010 y el número de celda dentro de esa página 1001011.

DIRECCIONES DE LOS MARCOS

Por un argumento similar a las direcciones de la memoria lógica, la


dirección de una celda en la memoria física puede considerarse como
la concatenación del número del marco y el número de la celda en ese
marco.

Las expresiones anteriores pueden usarse para sistemas de otras bases


sustituyendo el 2 por la base que se trate. Enseguida se muestra, con
un ejemplo, el alojamiento de las páginas en los marcos de la memoria
física, definiendo una tabla de páginas, la cual establece la
correspondencia de páginas con marcos.
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-11

En una paginación normal el número de marcos puede ser mayor al


número de páginas; esto es diferente cuando no hay memoria RAM
suficiente, como se explicará en el tema de memoria virtual.

MAPEO DE DIRECCIONES EN LA PAGINACIÓN

Cuando ya se ha establecido la tabla de páginas, se puede hacer el


mapeo de una dirección lógica a una dirección física, según se
muestra.

El número de marco se obtiene a partir del número de página usando la


tabla de páginas; el número de posición es el mismo en ambos casos.

Enseguida mostraremos en detalle cómo se hace la representación de


las direcciones lógicas; usaremos la representación binaria, que es
la usada en una computadora. Tomaremos el esquema anterior con 4
páginas, especificadas como 00, 01, 10 y 11; se requieren 2 bits para
especificar una página. Supongamos que cada página tiene 128 celdas,
por lo que se requieren 7 bits para especificar el número de celda
dentro de una página. Entonces, para especificar una dirección lógica
se requieren 9 bits; la memoria lógica mostrada contiene 512
direcciones. Cada dirección lógica puede ser representada de la
siguiente forma.
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-12

Ilustraremos el mapeo de direcciones con la dirección 010110011 (179


en decimal). Corresponde, en la segunda página, la 01 (1 en decimal),
a la celda 0110011 (51 en decimal), esto es, a la quincuagésima segunda
celda.
Completaremos el ejemplo de la paginación determinando la dirección
física correspondiente a la dirección lógica 010110011; supongamos
que las direcciones físicas usan 3 bits para especificar el número de
marco. Por lo que cada dirección física se puede representar así.

El número de marco es 100 (4 en decimal). El número de celda en ese


marco es 0110011; es igual al número de celda en la página
correspondiente. Por lo tanto, el mapeo de direcciones es así:

010110011→1000110011

EJERCICIO

En la figura de la página 9, considere páginas con 32 celdas. Obtenga


la dirección física de las direcciones lógicas: 0101110 y 1111011.

SEGMENTACIÓN

En la segmentación la división de la memoria lógica se realiza en


porciones de tamaño variable llamadas segmentos. Un segmento es una
entidad de un programa, como una función, una estructura de datos o
un objeto; incluye contenidos que están estrechamente relacionados
entre sí. La segmentación tiene las siguientes ventajas:
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-13

• Se puede dividir una aplicación en partes más pequeñas (llamadas


módulos), que pueden ser alojados en diferentes partes de la
memoria.
• Protección. Se pueden proteger los módulos de accesos no
autorizados.
• Se pueden compilar y depurar separadamente los módulos.
Para asignar inicialmente los lugares de la memoria física donde se
alojarán los segmentos se requiere el tamaño de cada segmento. Para
efectuar el mapeo de direcciones, las direcciones lógicas de un
programa pueden representarse en la forma (segmento, posición), en
forma similar al de la paginación y utilizar una tabla de segmentación
para ubicar los segmentos en la memoria física. Debe tomarse en cuenta
el tamaño de cada segmento, a diferencia de la paginación, cuyo tamaño
de página es una constante.

La principal dificultad de la segmentación radica en la diferencia de


tamaños de los segmentos. Esto se puede mejorar dividiendo en páginas
los segmentos que se tengan, produciendo una combinación de
segmentación y paginación. En este caso, cada segmento es paginado
separadamente, con su propia tabla de paginación. Combina las ventajas
de la paginación (división del espacio lógico de un programa en partes
iguales) y la segmentación (soporte directo a las regiones de un
programa).

ADMINISTRACIÓN DE MEMORIA INSUFICIENTE

Cuando la memoria RAM no es suficiente para alojar a los programas,


se debe extender usando una parte de la memoria secundaria. Una
solución de este tipo es el intercambio, que consiste en pasar
temporalmente a la memoria secundaria un proceso alojado en la memoria
principal; con eso se libera espacio en la RAM, el cual puede ser
usado por otro proceso, que tal vez tenga mayor prioridad. Más
adelante, el proceso desalojado puede regresar a la RAM para proseguir
su ejecución.

Esta acción es óptima cuando el proceso que sale de la RAM está


bloqueado; en caso contrario, la acción bloqueará por sí misma al
proceso. Para los procesos que no estén bloqueados, el intercambio
les es desfavorable; en ese caso, se usa la memoria virtual, que
describimos a continuación.
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-14

MEMORIA VIRTUAL

Según el diccionario y el uso común, virtual:

Se aplica a la cosa que existe pero no en la forma aparente.

En términos de la memoria que usa un proceso con sus peticiones de


acceso, podemos decir que sólo un proceso (tal vez el sistema
operativo) es el que usa las celdas con la numeración solicitada por
el proceso; todos los demás procesos usan un espacio de direcciones
lógicas o virtuales. Sin embargo, es común referirse a la memoria
virtual como aquella memoria que aloja los contenidos de un proceso
que no están en la memoria RAM. Esto es,

Memoria total usada por un proceso =


Porción de memoria RAM usada +
Espacio usado en memoria secundaria (llamado memoria virtual)

La técnica de la memoria virtual es una solución al problema de memoria


insuficiente en la que un proceso puede estar en ejecución, o listo
para ejecutarse, cuando sólo una parte de él reside en la memoria
principal; el resto, que de momento no se usa, es almacenado en una
porción de la memoria secundaria.

Cuando la ejecución del proceso requiera la parte que se mantenía en


la memoria secundaria, esa parte debe traerse al espacio que deje
libre un bloque de algún programa que en ese momento tendrá que pasarse
a la memoria secundaria.

La memoria virtual se utiliza en dos tipos de situaciones:

• El espacio de direcciones de un programa es mayor que el espacio


en RAM.
• Se requiere alojar en memoria programas que, siendo más pequeños
que la memoria, requieren en total un espacio mayor que el de la
RAM.

En ambos casos tenemos un espacio de direcciones mayor al espacio


físico; claramente, una parte de ese espacio de direcciones es
virtual.
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-15

MEMORIA VIRTUAL CON PAGINACIÓN

La implementación de la memoria virtual utiliza la división de la


memoria lógica, por ejemplo, la paginación o la segmentación, aunque
también puede usar una combinación de ambas. En esta sección
trataremos principalmente la implementación con paginación.

La siguiente figura ilustra la implementación de la memoria virtual


con paginación; cada entrada de la tabla de páginas es aumentada. En
la figura se muestran bits adicionales; uno de ellos puede indicar si
la página está presente o no en RAM. Otro de ellos puede expresar si
la página ha sido modificada desde que se cargó en RAM; posteriormente
consideraremos otros casos. La representación muestra un ejemplo de
ubicación de una página en RAM y otro de una página en el disco duro.

El disco tendrá una zona dedicada al intercambio llamada espacio de


intercambio (swap). Puede ser una partición del disco (Linux:
partición Swap), o un archivo (Linux: archivo Swap; Windows: archivo
de intercambio swapfile.sys o archivo de paginación pagefile.sys). El
archivo hiberfil.sys en Windows realiza este tipo de transferencias
pero para hibernar.

El espacio de intercambio tiene como tamaño de referencia el tamaño


de la RAM, aunque puede elegirse otro valor.
Algunos programas exigen un mínimo para el tamaño de la memoria virtual
que está en disco.

PRÁCTICA

1. Verifique la existencia y tamaño de los archivos pagefile.sys y


swapfile.sys de Windows en C:\. Visualice el tamaño del archivo en
donde puede, además, cambiarse su tamaño (seleccionando: Este Equipo-
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-16

Propiedades-Configuración avanzada del sistema-Opciones avanzadas-


Rendimiento-Configuración-Opciones avanzadas).

2. Use las utilerías RAMMap y VMMap para observar las cantidades de


memoria física y virtual de los procesos.

La utilidad de la paginación aumenta si la ejecución del programa se


realiza con instrucciones que se encuentran en la memoria principal
al momento de ser requeridas para ejecución. Si la secuencia de
ejecución nos lleva a una página que no está en RAM, se produce un
fallo o error de página; eso representa un retraso en la ejecución
del programa, puesto que se debe realizar un procedimiento de
intercambio, que incluye:

• Determinar qué página pasará al disco.


• Realizar el intercambio, accediendo al disco, que es un medio
relativamente lento.

Si los errores de página son frecuentes, se tiene la llamada


hiperpaginación (thrashing), que es claramente indeseable. Se puede
mejorar la situación modificando el sistema en una o más de las
siguientes formas:

• Aumentando la memoria principal.


• Limitando el número de programas abiertos.
• Aumentando el espacio en disco para intercambio.

ALGORITMOS DE REMPLAZO PARA LA PAGINACIÓN

Cuando la memoria está llena y se requiere cargar una nueva página,


debe removerse una página para dar espacio a la que entra. Si la
página removida de RAM ha sido modificada desde que se cargó, debe
ser copiada en el disco para guardar la actualización; en caso
contrario, solamente se desecha la página.
El algoritmo de remplazo elige la página que será removida de la RAM;
idealmente, el algoritmo escoge la página que tardará más tiempo en
ser solicitada. Si el algoritmo escogiera una página que sería
solicitada en poco tiempo, provocaría un fallo de página y
contribuiría a la hiperpaginación. Consideraremos algunos algoritmos
de remplazo.
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-17

Línea de espera (PEPS)

Cada vez que se carga una página en RAM, su identificación es colocada


en una cola. Cuando se requiere remover una página de la RAM, se toma
la que corresponde al primer elemento de la cola. Por lo tanto, la
primera página que se cargó será la primera en salir, con la idea de
que no será requerida por más tiempo que las demás.

Debido a que la elección de la página saliente en el algoritmo PEPS


no toma en cuenta si ésta ha sido usada recientemente, podría remover
una página que pronto fuera solicitada, contribuyendo a la
hiperpaginación.

Segunda oportunidad

Utiliza una cola construida con las páginas según el momento en que
se incorporan a la RAM, pero, para tomar en cuenta el uso que se ha
hecho de las páginas, cada entrada de la tabla de páginas tiene un
bit adicional, que llamaremos R. Expresa si la página ha sido
referenciada (leída o modificada); cuando la página es cargada se
pone R en 0, pero se pone en 1 cuando la página es usada.

El algoritmo de remplazo es como sigue:

• Si se requiere remover una página, se considera la página


correspondiente al primer elemento en la cola; si esa página
tiene R en 0 es removida de la RAM y el algoritmo concluye.
• Si R es 1, se pone en 0 y ese elemento se pone hasta el final de
la cola. Se reinicia la travesía en la cola hasta encontrar una
página que no haya sido usada, la cual es removida.
• En caso de que todas las demás páginas hayan sido usadas (R=1),
el algoritmo termina una etapa en la que todos los elementos
quedan con R=0. Entonces se toma el primer elemento de la cola
y es removido.

Página menos usada

Cuando una página ingresa en la RAM, se anota la hora en el registro


correspondiente de la tabla de paginación. Si esa página es
referenciada, el valor de la hora es actualizado a ese momento. Cuando
se desea remover una página, se elige la página que lleva más tiempo
sin ser referenciada.
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-18

MANEJO DE FALLOS DE PÁGINA

Cuando ocurre un fallo de página y se detiene la ejecución del


programa, se realizan las siguientes acciones:

• Se guarda el contador del programa en una pila.


• Se inicia una rutina de servicio que guarda la información
volátil, incluyendo el contenido de los registros, para luego
llamar al sistema operativo.
• El sistema operativo se percata de que ha habido un fallo y
determina la dirección virtual involucrada. Si es una dirección
inválida, termina la ejecución del programa y envía un mensaje
de error; en caso contrario, se busca un marco libre. Si hay un
marco libre, se aloja en él la página requerida; en caso
contrario, se usa un algoritmo de remplazo para elegir la página
que saldrá.
• Si la página no ha sido actualizada, se desecha; en caso
contrario, se enviará a la memoria secundaria para hacer la
actualización.
• Cuando la página llega a la RAM, se actualiza la tabla de páginas
y se planifica la ejecución del programa que se detuvo y el
sistema operativo llama nuevamente a la rutina de servicio.
• La rutina recarga la información volátil previamente almacenada,
incluyendo el valor del contador del programa. La ejecución
cambia a modo de usuario y el programa detenido reanuda su
ejecución.

LIBERACIÓN DE PÁGINAS

Un proceso usuario puede expresar que no usará determinada página,


por lo que el marco donde se aloja queda liberado. Este mecanismo
debe usarse cuidadosamente, para no liberar páginas que pudieran
volver a usarse, lo que ocasionaría un retraso en la ejecución de un
programa.

MEMORIA VIRTUAL CON SEGMENTACIÓN

La implementación de la memoria virtual con paginación divide la


memoria lógica en partes iguales pero no toma en consideración que el
contenido de una página A pueda estar estrechamente relacionado con
otro contenido asignado a otra página B. Por ejemplo, si la paginación
divide en dos partes un arreglo o el código de un método es lógico
Sistemas Operativos I Gildardo D Zarza Oct 2023 Admin. de la Mem 3-19

que la ejecución de un proceso exija, instantáneamente, el paso de la


página A a la página B. Pero la página B puede estar en la memoria
secundaria por lo que un error de página es inminente, retrasando la
ejecución.

Cuando se usa al segmento como la unidad de asignación de memoria,


los contenidos estrechamente relacionados están en el mismo bloque de
memoria. Por ejemplo, después de ejecutarse una instrucción, la
instrucción siguiente de un método estará en el mismo segmento.

Sin embargo, la administración de memoria con segmentación también


tiene sus dificultades:
• Eventualmente, también se puede producir un fallo de segmento,
por lo que se tendría que remover un segmento para alojar otro.
• Si un segmento ocupa un bloque de memoria en el que se encontraba
un segmento de mayor tamaño, quedará un espacio libre;
eventualmente, se producirá el llamado efecto de ajedrez, puesto
que algunas porciones estarán llenas y otras vacías.

RETRASO PRODUCIDO CON LA MEMORIA INSUFICIENTE

Tanto en el intercambio como en la memoria virtual se produce un


retraso considerable en la ejecución debido a:

 La sobrecarga de trabajo debida al tránsito adicional de los


bits de la memoria principal a la secundaria y de regreso.
 Los dispositivos de memoria secundaria son mucho más lentos que
la memoria principal.

También podría gustarte