funciones y operaciones del administrador de memoria
TRANSCRIPT
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
1/46
1 Funciones y operaciones del administrador de memoria
El único espacio de almacenamiento que el procesador puede utilizar
directamente, más allá de los registros (que si bien le son internos y sumamente
rápidos, pero de capacidad muy escasa) es la memoria física. Todas las
arquitecturas de procesador tienen instrucciones para interactuar con la memoria,pero ninguna lo tiene para hacerlo con medios persistentes de almacenamiento,
como las unidades de disco. abe mencionar que cuando !eamos en un te"to
referencia al almacenamiento primario siempre se referirá a la memoria, mientras
que el almacenamiento secundario se refiere a los discos u otros medios de
almacenamiento persistente.
Todos los programas que deseemos e#ecutar deben cargarse a la memoria del
sistema antes de ser utilizados. En esta unidad !eremos c$mo administra el
sistema operati!o a la memoria para permitir que !arios procesos la compartan %
Esta tarea debe pre!erse desde el proceso de compilaci$n de nuestros programas(en particular, la fase de ligado). &oy en día, además, casi todos los sistemas
operati!os emplean implementaciones que requieren de hard'are especializado
% a nidad de *ane#o de *emoria (**). &ablaremos de c$mo se mane#aban
los sistemas multitarea antes de la uni!ersalizaci$n de los **, y qu+ rol #uegan
hoy en día.
En esta primer secci$n, !eremos algunos conceptos base que iremos hilando y
empleando en las secciones subsecuentes.
1.1 Espacio de direccionamiento
a memoria está estructurada como un arreglo direccionable de bytes. Esto es, al
solicitar los contenidos de una direcci$n específica de memoria, el hard'are nos
entregará un byte ( bits), y no menos. -i queremos hacer una operaci$n sobre
bits específicos, tenemos que solicitar y almacenar bytes enteros. En algunas
arquitecturas, el tamao de palabra es mayor % /or e#emplo, los procesadores
0lpha incurrían en fallas de alineaci$n si se solicitaba una direcci$n de memoria
no alineada a 12 bits, y toda llamada a direcciones mal alineadas tenía que ser
atrapada por el sistema operati!o, re3alineada, y entregada.
n procesador que soporta un espacio de direccionamiento de 41 bits puedereferirse directamente a hasta 56784195 bytes, esto es, a hasta 1:,:;1 bytes (12? y 4=? % os más
conocidos incluyen al @ntel ?? y ?:, Ailog A?, *B- 1:?6 y 1:4?, y *otorola
1??. &ay que recalcar que estos procesadores son reconocidos como
procesadores de bits, pero con espacio de direccionamiento de 41 bits. El
procesador empleado en las primeras /, el @ntel ?1, mane#aba un
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
2/46
direccionamiento de 6? bits (hasta 4?62,6=1 bytes (2DC), que está ya dentro de
los parámetros de lo esperable hoy en día una arquitectura de ;6 bits sine"tensiones adicionales no puede emplear más de 2DC F0* a tra!+s de un
mecanismo llamado /0E (E"tensi$n de Girecci$nes Hísicas, /hysical 0ddress
E"tension) permite e"tender esto a rangos de hasta 5678:695 a cambio de un ni!el
más de indirecci$n.
n procesador de 12 bits podría direccionar hasta 4,221,>22,?>;,>?=,::4,141
bytes (41 E"abytes). os procesadores comercialmente hoy en día no ofrecen esta
capacidad de direccionamiento principalmente por un criterio econ$micoI 0l
resultar tan poco probable que e"ista un sistema con estas capacidades, los chips
actuales están limitados a entre 56782?95 y 5678295 bits % 4 y 6:1 terabytes.Esta restricci$n debe seguir teniendo sentido econ$mico por muchos aos aún.
1.2 Hardware: de la unidad de manejo de memoria (MMU)
0 lo largo de la historia de las computadoras ha sido necesario emplear más
memoria de la que está directamente disponible % /or un lado, ofrecer a los
procesos más espacio de lo que puede direccionar la arquitectura (hard'are) que
empleamos, por otro lado la abstracci$n de un espacio !irtualmente ilimitado para
realizar sus operaciones incluso cuando la memoria real es mucho menor a la
solicitada, y por último, la ilusi$n de tener un bloque contiguo e ininterrumpido de
memoria, cuando en realidad puede haber alta fragmentaci$n.
Jeremos c$mo es que el ** cubre estas necesidades, qu+ mecanismos emplea
para lograrlo % K qu+ debemos cuidar, incluso como programadores de
aplicaciones de alto ni!el, para apro!echar de la me#or manera estas funciones (y
e!itar, por el contrario, que nuestros programas se !uel!an lentos por no saber
mane#ar la memoria) correctamente.
El ** es tambi+n el encargado de !erificar que un proceso no tenga acceso a
leer o modificar los datos de otro % -i el sistema operati!o tu!iera que !erificar
que ninguna de las instrucciones e#ecutadas por un programa resulta en una!iolaci$n de seguridad, la penalizaci$n en !elocidad sería demasiado se!era6.
na primer apro"imaci$n a la protecci$n de acceso es a tra!+s de un registro base
y un registro límiteI -i la arquitectura ofrece dos registros del procesador que s$lo
pueden ser modificados por el sistema operati!o (Esto es, el hard'are define la
modificaci$n de dichos registros como una operaci$n pri!ilegiada que requiere
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
3/46
estar e#ecutando en modo super!isor), el ** puede comparar cada acceso a
memoria para !erificar que est+ en el rango permitido.
/or e#emplo, si a un proceso le fue asignado un espacio de memoria de 12<
(1::;: bytes) a partir de la direcci$n :?2642 (2=62= (::1
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
4/46
&ace aos esto no era un problema % a !elocidad del procesador estaba
básicamente sincronizada con la del mane#ador de memoria, y el flu#o podía
mantenerse básicamente estable. /ero conforme los procesadores se fueron
haciendo más rápido, y conforme se ha popularizado el procesamiento enparalelo, la memoria no ha podido acelerarse a la misma !elocidad. a memoria
de alta !elocidad es demasiado cara, e incluso las distancias de unos pocos
centímetros se !an !ol!iendo obstáculos insal!ables por la !elocidad má"ima de
los electrones !ia#ando por pistas conductoras.
uando el procesador solicit$ el contenido de una direcci$n de memoria y esta no
está aún disponible, tiene que detener su e#ecuci$n (stall) hasta que los datos
est+n disponibles. El / no puede, a diferencia del sistema operati!o, LcongelarL
todo y guardar el estado para atender a otro procesoI /ara el procesador, la lista
de instrucciones a e#ecutar es estrictamente secuencial, y todo tiempo querequiere esperar a una transferencia de datos es tiempo perdido.
a respuesta para reducir esa espera es la memoria cach+. Esta es memoria de
alta !elocidad, situada entre la memoria principal y el procesador propiamente,
que guarda copias de las páginas que !an siendo accesadas, partiendo del
principio de la localidad de referenciaI
ocalidad temporal
Es probable que un recurso que fue empleado recientemente !uel!a a ser
empleado en un futuro cercano.
ocalidad espacial
a probabilidad de que un recurso aún no requerido sea accesado es mucho
mayor si fue requerido algún recurso cercano.
ocalidad secuencial
n recurso, y muy particularmente la memoria, tiende a ser requerido de forma
secuencial.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
5/46
/atrones de acceso a memoria, demostrando la localidad espacial M temporal
(-ilberschatz, p.;:?)
Casándonos en estos conceptos, !emos que cuando el procesador solicita al
hard'are determinada direcci$n de memoria, el hard'are no s$lo transfiere a la
memoria cach+ el byte o palabra solicitado, sino que un bloque o página completo.
abe mencionar que hoy en día (particularmente desde que se detu!o la guerra
de los *egahertz parte importante del diferencial en precios de los procesadores
líderes en el mercado es la cantidad de cache de primero y segundo ni!el con que
cuentan.
1." El espacio en memoria de un proceso
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
6/46
uando un sistema operati!o inicia un proceso, no se limita a !olcar el archi!o
e#ecutable a memoria, sino que tiene que pro!eer la estructura para que +ste !aya
guardando la informaci$n de estado relati!a a su e#ecuci$n.
-ecci$n de te"to
Es el nombre que recibe la imagen en memoria de las instrucciones a ser
e#ecutadas. Típicamente, la secci$n de te"to ocupa las direcciones más ba#as del
espacio en memoria.
-ecci$n de datos
Espacio fi#o preasignado para las !ariables globales. Este espacio es fi#ado en
tiempo de compilaci$n, y no puede cambiar (aunque los datos que carga sí
cambian en el tiempo de !ida del proceso)
Espacio de libres
(&eap) Espacio de memoria que se emplea para la asignaci$n dinámica de
memoria durante la e#ecuci$n del proceso. Este espacio se ubica por encima de la
secci$n de datos, y crece hacia arriba.
uando el programa es escrito en lengua#es que requieren mane#o manual de la
memoria (como ), esta área es la que se mane#a a tra!+s de las llamadas de la
familia de malloc y free en lengua#es con gesti$n automática, esta área es
monitoreada por los recolectores de basura (!ol!eremos a estos conceptos más
adelante).
/ila de llamadas
(-tacN) Estructuras representando a la serie de funciones que han sido llamadas
dentro del proceso, con sus parámetros, direcciones de retorno, !ariables locales,
etc. a pila ocupa la parte más alta del espacio en memoria, y crece hacia aba#o.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
7/46
Fegiones de la memoria para un proceso
1.# $esoluci%n de direcciones
n programa compilado no emplea nombres simb$licos para las !ariables o
funciones que llama2 el compilador, al con!ertir el programa a lengua#e máquina,
las substituye por la direcci$n en memoria donde se encuentra.
0hora bien, en los sistemas actuales, los procesos requieren coe"istir con otros,
para lo cual las direcciones indicadas en el te"to del programa pueden requerir ser
traducidas al lugar relati!o al sitio de inicio del proceso en memoria % Esto es,
resueltas. /odemos hablar de las siguientes tres estrategias de resoluci$nI
En tiempo de compilaci$n
El te"to del programa tiene la direcci$n absoluta de los datos y funciones. Esto era
muy común en las computadoras pre!ias al multiprocesamiento en la arquitectura
compatible con /, el formato e#ecutable .B* es un !olcado de memoria directo
de un archi!o ob#eto con las direcciones indicadas de forma absoluta. Esto lo
podemos !er hoy principalmente en sistemas embebidos o de funci$n específica.
En tiempo de carga
0l cargarse a memoria el programa y antes de iniciar su e#ecuci$n, el cargador (componente del sistema operati!o) actualiza las referncias a memoria dentro del
te"to para que apunten al lugar correcto % laro está, esto depende de que el
compilador indique d$nde están todas las referencias a !ariables y funciones.
En tiempo de e#ecuci$n
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
8/46
El programa nunca hace referencia a una ubicaci$n absoluta de memoria, sino
que lo hace siempre relati!o a una base y un desplazamiento (offset). Esto permite
que el proceso sea incluso reubicado en la memoria mientras está siendo
e#ecutado sin tener que sufrir cambios, pero requiere de hard'are específico
(como un **).
Esto es, los nombres simb$licos (por e#emplo, la !ariable llamada contador) para
ser traducidos ya sea a ubicaciones en la memoria, pueden resol!erse en tiempo
de compilaci$n (y quedar plasmada en el programa en disco con una ubicaci$n
e"plícita y definiti!aI :4?6??), en tiempo de carga (sería guardada en el programa
en disco como inicio O :=1 bytes, y el proceso de carga incluiría substituirla por la
direcci$n resuelta a la suma del registro base, :?2642, y el desplazamiento, :=1,
esto es, :4?6??).
/or último, para emplear la resoluci$n en tiempo de e#ecuci$n, se mantiene en las
instrucciones a ser e#ecutadas por el proceso la etiqueta relati!a al m$dulo actual,inicio O :=1 bytes, y es resuelta cada !ez que sea requerido.
/roceso de compilaci$n y carga de un programa, indicando el tipo de resoluci$n
de direcciones (-ilberschatz, p.64)
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
9/46
2 &si'naci%n de memoria conti'ua
En los sistemas de e#ecuci$n en lotes, así como en las primeras computadoras
personales, s$lo un programa se e#ecutaba a la !ez, por lo que, más allá de la
carga del programa y la satisfacci$n de alguna e!entual llamada al sistema
solicitando recursos, el sistema operati!o no tenía que ocuparse de la asignaci$nde memoria.
0l nacer los primeros sistemas operati!os multitarea, se hizo necesario resol!er
c$mo asignar el espacio en memoria a diferentes procesos.
2.1 artici%n de la memoria
a primer respuesta, claro está, es la más sencillaI 0signar a cada programa a ser
e#ecutado un bloque contiguo de memoria de un tamao fi#o. En tanto los
programas permitieran la resoluci$n de direcciones en tiempo de carga o de
e#ecuci$n, podrían emplear este esquema.
El sistema operati!o emplearía una regi$n específica de la memoria del sistema
(típicamente la regi$n ba#a % Gesde la direcci$n en memoria ?"???????? hacia
arriba), y una !ez terminado el espacio necesario para el núcleo y sus estructuras,
el sistema asigna espacio a cada uno de los procesos. -i la arquitectura en
cuesti$n permite limitar los segmentos disponibles a cada uno de los procesos
(por e#emplo, con los registros base y límite discutidos anteriormente), esto sería
suficiente para alo#ar en memoria a !arios procesos y e!itar que interfieran entre
sí.
Gesde la perspecti!a del sistema operati!o, cada uno de los espacios asignados a
un proceso es una partici$n. uando el sistema operati!o inicia, toda la memoria
disponible es !ista como un s$lo bloque, y conforme se !an lanzando procesos,
este bloque !a siendo subdi!idido para satisfacer sus requisitos. ada proceso
debe indicar al sistema operati!o cuánta memoria !a a requerir a lo largo de su
!ida pre!ista.
2.1.1 Fra'mentaci%n
a fragmentaci$n comienza a aparecer cuando más procesos !an siendo lanzados
y !an terminandoI 0l terminar la e#ecuci$n de un proceso, ya no tenemos s$lo un
bloque de espacio libre, sino dos. /otencialmente, cada programa que !aya
terminando, irá de!ol!iendo al sistema operati!o un bloque de distinto tamao, que
quede entre dos procesos acti!os.
-i la computadora no tiene hard'are específico que permita que los procesos
resuel!an sus direcciones en tiempo de e#ecuci$n, el sistema operati!o no puede
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
10/46
reasignar los bloques e"istentes, y aunque pudiera hacerlo, mo!er un proceso
entero en memoria puede resultar una operaci$n cara en tiempo de
procesamiento.
0l lanzarse un nue!o programa, el sistema operati!o tiene tres estrategias según
las cuales podría asignarle uno de los bloques disponiblesI
/rimer a#uste
0signa al nue!o proceso el primer bloque que encuentre donde +ste quepa. Este
mecanismo es el más simple de implementar y el de más rápida e#ecuci$n.
*e#or a#uste
El sistema busca entre todos los bloques disponibles cuál es el que me#or se
a#usta al tamao requerido por el nue!o proceso. Esto requiere la re!isi$n
completa de la lista de bloques lle!a a que los bloques remanentes, una !ez quese ubic$ al nue!o proceso, sean tan pequeos como sea posible (esto es, que
haya menor desperdicio).
/eor a#uste
El sistema busca cuál es el bloque más grande disponible, y se lo asigna al nue!o
proceso. Empleando una estrucura de datos como un montículo, esta operaci$n
puede ser incluso más rápida que la de primer espacio. on este mecanismo se
busca que los bloques que queden despu+s de otorgarlos a un proceso sean tan
grandes como sea posible, de cierto modo balanceando su tamao.
a fragmentaci$n e"terna se produce cuando hay muchos bloques libres entre
bloques asignados a procesos la fragmentaci$n interna se refiere a la cantidad de
memoria perdida por asuntos administrati!os % /or e#emplo, si el sistema
operati!o mane#a bloques de :46 bytes y un proceso requiere >1 bytes para su
e#ecuci$n, el sistema le entregará dos bloques (4?62 bytes), con lo cual
desperdicia 6:1. En el peor de los casos, con un bloque de 5n5 bytes, un proceso
podría solicitar 5NnO45 bytes de memoria, desperdiciando por fragmentaci$n
interna 5n345 bytes.
-egún análisis estadísticos (-ilberschatz, p.6=), por cada P bloques asignados,se perderán del $rden de ?.:P bloques por fragmentaci$n interna y e"terna.
2.1.2 ompactaci%n
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
11/46
n problema importante que !a surgiendo como resultado de esta fragmentaci$n
es que el espacio total libre de memoria puede ser mucho mayor que lo que
requiere un nue!o proceso, pero al estar fragmentada en muchos bloques, +ste no
encontrará una partici$n donde ser cargado.
-i los procesos emplean resoluci$n de direcciones en tiempo de e#ecuci$n,cuando el sistema operati!o comience a detectar un alto índice de fragmentaci$n,
puede lanzar una operaci$n de compresi$n o compactaci$nI *o!er los contenidos
en memoria de los procesos en e#ecuci$n para que ocupen espacios contiguos,
permitiendo unificar !arios bloques libres en uno solo.
ompactaci$n de la memoria de procesos en e#ecuci$n
a compactaci$n tiene un costo alto % @n!olucra mo!er prácticamente la totalidad
de la memoria (probablemente más de una !ez por bloque).
2.1.3 *ntercam+io (swap) con el almacenamiento secundario
-iguiendo de cierto modo la l$gica requerida por la compactaci$n encontramos lossistemas que utilizan intercambio (s'ap) entre la memoria primaria y secundaria.
En estos sistemas, el sistema operati!o puede comprometer más espacio de
memoria del que tiene físicamente disponible. uando hay más procesos de los
que caben en memoria, el sistema suspende a uno de ellos y almacena una copia
de su imagen en memoria en almacenamiento secundario.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
12/46
&ay algunas restricciones a obser!ar pre!io a suspender un proceso. n proceso
que tiene abierto alguna operaci$n de entradaMsalida en curso. na estrategia ante
esto podría ser que todas las operaciones se realicen únicamente a buffers en el
espacio del sistema operati!o y +ste las transfiera al espacio del proceso
interesado.
Esta t+cnica se populariz$ en los sistemas de escritorio hacia fines de los 4=? y
principios de los 4==?, en que las computadoras personales tenían típicamente
entre 4 y *C de memoria.
Fecordemos que las unidades de disco son del $rden de decenas de miles de
!eces más lentas que la memoria, por lo que este proceso resulta muy caro % /or
e#emplo, si la imagen en memoria de un proceso es de 4??*C, bastante
conser!ador hoy en día, y la tasa de transferencia sostenida al disco de :?*CMs,
intercambiar un proceso al disco toma dos segundos. argarlo de !uelta a
memoria toma otros dos segundos % K a esto debe sumarse el tiempo deposicionamiento de la cabeza de lecturaMescritura, especialmente si el espacio a
emplear no es secuencial y contiguo. Fesulta ob!io por qu+ esta t+cnica ha caído
en desuso conforme aumenta el tamao de los procesos.
3 ,e'mentaci%n
0l desarrollar un programa, el programador no !e a la memoria como un s$lo
arreglo plano, en el que todas las direcciones son iguales (si bien está consciente
de que la realidad es así). El uso que damos a la memoria sigue una l$gica de
distintos segmentosI En !ez de dar una direcci$n lineal, damos al procesador una
direcci$n de segmento y un desplazamiento dentro de dicho segmento. /odemos
tener segmentos de distintos tamaos presentes en memoria, y la resoluci$n de
direcciones de cada uno de ellos se realizará por mecanismos análogos al descrito
en el apartado anterior (registro base y desplazamiento). laro está, esto debe
tambi+n hacerse con apoyo del **.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
13/46
E#emplo de segmentaci$n
na de las implementaciones más ob!ias y directas de un espacio de memoria
segmentado es asignar un segmento distinto a cada una de las secciones
mencionadas en la secci$n espacio en memoria de un proceso.
a segmentaci$n tambi+n ayuda a incrementar la modularidad de un programaI Es
muy común que las bibliotecas ligadas dinámicamente est+n representadas en
segmentos independientes.
;.4 /ermisos
na de las principales !enta#as del uso de segmentaci$n es que nos permite pedir
al ** que cada uno de los segmentos tenga un distinto #uego de permisos para
el proceso en cuestí$nI El sistema operati!o puede indicar, por e#emplo, que el
segmento de te"to (el c$digo del programa) sea de lectura y e#ecuci$n, mientras
que la seci$n de datos es de lectura y escritura. Ge este modo podemos e!itar que
un error en la programaci$n resulte en que datos proporcionados por el usuario o
por el entorno modifiquen el c$digo que está siendo e#ecutado.: Es más, @ncluso,
dado que el acceso de e#ecuci$n está limitado a s$lo los segmentos cargados del
disco por el sistema operati!o, el atacante no podrá introducir c$digo e#ecutabletan fácilmente % Tendría que cargarlo como un segmento adicional con los
permisos correspondientes.
;.6 @ntercambio parcial
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
14/46
n uso muy común de la segmentaci$n, particularmnete en los sistemas de los
4=?s, era el de permitir que s$lo ciertas regiones de un programa sean
intercambiadas al discoI -i un programa está compuesto por porciones de c$digo
que nunca se e#ecutarán apro"imadamente al mismo tiempo en sucesi$n, puede
separar su te"to (e incluso los datos correspondientes) en diferentes segmentos.
0 lo largo de la e#ecuci$n del programa, algunos de sus segmentos pueden no
emplearse por largos periodos de tiempo. Estas páginas pueden ser en!iadas al
espacio de intercambio (s'ap) ya sea a solicitud del proceso o por iniciati!a del
sistema operati!o.
3.2.1 $endimiento
En la secci$n donde presentamos el concepto de intercambio mencionamos que
intercambiar un proceso completo resultaba demasaido caro. uando hablamos
de un espacio de memoria segmentado, y muy particularmente cuando hablamos
de bibliotecas de carga dinámica, la sobrecarga es mucho menorI
En primer t+rmino, podemos hablar de la cantidad de informaci$n que
intercambiaremosI En un sistema que s$lo mane#a regiones contiguas de
memoria, intercambiar un proceso significa mo!er toda su informaci$n al disco
cuando hablamos de intercambio en un sistema con segmentaci$n, puede
en!iarse a disco cada uno de los segmentos por separado, según el sistemaoperati!o lo #uzgue necesario. /odría sacar de memoria a alguno de los
segmentos, eligiendo no necesariamente al que más estorbe (esto es, el más
grande), sino el que más probablemente no est+ siendo utilizadoI Emplear el
principio de localidad de referencia para intercambiar al segmento menos
recientemente utilizado (F, east Fecently sed).
0demás de esto, si hablamos de un segmento de te"to (sea el c$digo programa
base o alguna de las bibliotecas) y su acceso es de s$lo lectura, una !ez que +ste
fue copiado una !ez al disco, ya no hace falta !ol!er a hacerloI Tenemos la certeza
de que no será modificado por el proceso en e#ecuci$n, por lo que basta marcarlocomo no presente en las tablas de segmentos en memoria para que cualquier
acceso ocasione que el sistema operati!o lo traiga de disco.
/or otro lado, si la biblioteca en cuesti$n reside en disco (antes de ser cargada)
como una imagen directa de su representaci$n en memoria, al sistema operati!o
le bastará identificar el archi!o en cuesti$n al cargar el proceso no hace falta
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
15/46
siquiera cargarlo en la memoria principal y guardarlo al área de intercambio, puede
quedar referido directamente al espacio en disco en que reside el archi!o.
laro está, el acceso a disco sigue siendo una fuerte penalizaci$n cada !ez que
un segmento tiene que ser cargado del disco (sea del sistema de archi!os o del
espacio de intercambio), pero este mecanismo reduce dicha penalizaci$n,haciendo más atracti!a la fle"ibilidad del intercambio por segmentos.
3.3 Ejempli-icando
0 modo de e#emplo (HinNel, p.>=), y con#untando los conceptos presentados en
esta secci$n, si un proceso tu!iera la siguiente tabla de segmentosI
,e'mento *nicio ama/o ermisos resente
? 4;261 61 FQR sí
4 6;?= ?? F sí
6 4??? 6; QR sí
; 3 =: Q no
2 4???? 4?? FQR sí
En la columna de permisos, F se refiere a lectura, Q a escritura y R a e#ecuci$n.
n segmento que ha sido en!iado al espacio de intercambio (en este caso, el ;),
de#a de estar presente en memoria y, por tanto, no tiene ya direcci$n de inicio
registrada.
Jeamos el resultado de entregar al ** las siguientes direcciones y tipos de
accesoI
0irecci%n ipo de 0irecci%n
irtual acceso -sica
?3? F 4;261
634> Q 4?4>
634> F 0trapadaI Jiolaci$n de seguridad
63;6 F 0trapadaI Gesplazamiento fuera de rango
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
16/46
0irecci%n ipo de 0irecci%n
irtual acceso -sica
;3>6 Q 0trapadaI -egmento faltante
;3=2 F 0trapadaI -egmento faltante
!iolaci$n de seguridad
23== R 4??==
>36: R 0trapadaI -egmento in!alido
uando se atrapa una situaci$n de e"cepci$n, el sistema operati!o debe
inter!enir. /or e#emplo, la solicitud de un segmento in!álido, de un desplazamientomayor al tamao del segmento, o de un tipo de acceso que no est+ autorizado,
típicamente lle!an a la terminaci$n del proceso, en tanto que una de segmento
faltante (indicando un segmento que está en el espacio de intercambio) lle!aría a
la suspensi$n del proceso, lectura del segmento de disco a memoria, y una !ez
que +ste estu!iera listo, se permitiría continuaci$n de la e#ecuci$n.
En caso de haber más de una e"cepci$n, como podemos !erlo en la solicitud de
lectura de la direcci$n ;3=2, el sistema debe reaccionar primero a la más se!eraI
-i como resultado de esa solicitud iniciara el proceso de carga del segmento, s$lo
para abortar la e#ecuci$n del proceso al detectarse la !iolaci$n de tipo de acceso,sería un desperdicio in#ustificado de recursos.
" a'inaci%n
a fragmentaci$n e"terna y, por tanto, la necesidad de compactaci$n pueden
e!itarse por completo empleando la paginaci$n. Esta consiste en que cada
proceso est+ compuesto por una serie de páginas, de#ando de requerir que la
asignaci$n sea de un área contigua de memoria. laro está, esto requiere de
mayor espacializaci$n por parte del hard'are, y mayor informaci$n relacionada a
cada uno de los procesosI Po nos basta ya con indicar d$nde inicia y d$nde
termina el área de memoria de cada proceso, sino que debemos hacer un mapeo
entre la ubicaci$n real (física) y la presentada a cada uno de los procesos (l$gica).
a memoria se presentará a cada proceso como si fuera de su uso e"clusi!o.
a memoria física se di!ide en una serie de marcos (frames), todos ellos del
mismo tamao, y el espacio cada proceso se di!ide en una serie de páginas
(pages), del mismo tamao que los marcos. El ** se se encarga del mapeo
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
17/46
entre páginas y marcos a tra!+s de tablas de páginas. as direcciones que mane#a
el / ya no son presentadas de forma absoluta, sino que como la combinaci$n
de un identificador de página y un desplazamiento % Ge forma similar a lo que
presentamos al hablar de resoluci$n de instrucciones en tiempo de e#ecuci$n.
El tamao de los marcos (y, por tanto, las páginas) debe ser una potencia de 6, demodo que el ** pueda discernir fácilmente la porci$n de una direcci$n de
memoria que se refiere a la página del desplazamiento. El rango !aría, según el
hard'are, entre los :46 bytes (567=5) y 41*C (56786295) al ser una potencia de
6, el ** puede separar la direcci$n en memoria entre los primeros 5m5 bits
(referentes a la página) y los últimos 5n5 bits (referentes al desplazamiento).
/ágina y desplazamiento, en un esquema de direccionamiento de 41 bits ypáginas de :46 bytes
/ara poder realizar este mapeo, el ** requiere de una tabla de páginas (page
table), que resuel!e la relaci$n entre páginas y marcos, con!irtiendo la direcci$n
l$gica (aquella que conoce el proceso) en la direcci$n física (la ubicaci$n en que
realmente se encuentra en la memoria del sistema).
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
18/46
Esquema del proceso de paginaci$n, ilustrando el rol del **
/odemos tomar como e#emplo para e"plicar este mecanismo el esquema
presentado en el libro de -ilberschatz, Dal!in y Dagn+. Este nos presenta un
esquema minúsculoI n espacio de direccionamiento de ;6 bytes (: bits),
organizado en páginas de 2 bytes cada una (esto es, la página es representada
con los ; bits más significati!os de la direcci$n, y el desplazamiento con los 6 bits
menos significati!os).
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
19/46
E#emplo (minúsculo) de paginaci$n, con un espacio de direccionamiento de ;6
bytes y páginas de 2 bytes
El proceso que se nos presenta tiene una !isi$n de la memoria como la columna
del lado izquierdoI e parece que e"isten 2 páginas, y tiene sus datos distribuidos
en $rden desde la direcci$n ????? (?) hasta la ?4444 (4:), aunque en realidad enel sistema +stas se encuentren desordenadas y desperdigadas.
uando el proceso quiere referirse a la letra f, lo hace indicando la direcci$n ??4?4
(:). Ge esta direcci$n, los tres bits más significati!os (??4, 4 % K recordemos que
para la computadora, lo natural es comenzar a contar por el ?) se refieren a la
página número 4, y los dos bits menos significati!os (?4, 4) indican al
desplazamiento dentro de +sta.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
20/46
El ** !erifica en la tabla de páginas, y encuentra que la página 4 corresponde
al marco número 1 (44?), por lo que traduce la direcci$n l$gica ??4?4 (:) a la física
44??4 (61).
/odemos !er que la paginaci$n resulta en una suerte de resoluci$n de direcciones
en tiempo de e#ecuci$n, pero con una base distinta para cada una de las páginas.
".1 ama/o de la p'ina
0hora, si bien la fragmentaci$n e"terna se resuel!e al emplear paginaci$n,
seguiremos enfrentándonos con la fragmentaci$n internaI 0l di!idirse la memoria
en bloques de longitud preestablecida de 567n5 bytes, un proceso en promedio
desperdiciará 5Sfrac867n98695 (y, en el peor de los casos, hasta 567n 3 45).
*ultiplicando esto por el número de procesos que están en e#ecuci$n en todo
momento en el sistema, para e!itar que una proporci$n sensible de la memoria se
pierda en fragmentaci$n interna, podríamos !ernos tentados a emplear un tamao
de página tan pequeo como fuera posible.
-in embargo, la sobrecarga administrati!a en que incurriríamos por gestionar
demasiadas páginas pequeas se !uel!e una limitante en sentido opuestoI
as transferencias entre unidades de disco y memoria son mucho más eficientes
si pueden mantenerse como trechos contínuos. El controlador de disco puede
responder a solicitudes de acceso directo a memoria (G*0) siempre que tanto los
fragmentos en disco como en memoria sean continuos fragmentar la memoria
demasiado #ugaría en contra de la eficiencia de estas solicitudes.
El bloque de control de proceso (/C) incluye la informaci$n de memoria. Entre
más páginas tenga un proceso (aunque estas fueran muy pequeas), más grande
es su /C, y más informaci$n requerirá intercambiar en un cambio de conte"to.
Estas consideraciones opuestas apuntan a que debemos mantener el tamao de
página más grande, y se regulan con las primeras e"puestas en esta secci$n.
&oy en día, el tamao habitual de las páginas es de 2
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
21/46
0lgunos de los primeros equipos en mane#ar memoria paginada empleaban un
con#unto especial de registros para representar la tabla de páginas. Esto era
posible dado que eran sistemas de 41 bits, con páginas de
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
22/46
alta !elocidad, una suerte de registros residentes dentro del **, donde las
lla!es son las páginas y los !alores son los marcos correspondientes. Ge este
modo, las búsquedas se efectúan en tiempo constante.
El TC típicamente tiene entre 12 y 4?62 entradas. uando el procesador efectúa
un acceso a memoria, si la página solicitada está en el TC, el ** tiene la
direcci$n física de inmediato.= En caso de no encontrarse la página en el TC, el
** lanza un fallo de página (page fault), con lo cual consulta de la memoria
principal cuál es el marco correspondiente. Esta nue!a entrada es agregada al
TC por las propiedades de localidad de referencia que !imos anteriormente, la
probabilidad de que las regiones más empleadas de la memoria durante un área
específica de e#ecuci$n del programa sean cubiertas por relati!amente pocas
entradas del TC son muy altas.
omo sea, dado que el TC es limitado, es necesario e"plicitar un mecanismo que
indique d$nde guardar las nue!as entradas una !ez que el TC está lleno y se
produce un fallo de página. no de los esquemas más comunes es emplear la
entrada menos recientemente utilizada (F, east Fecently sed), nue!amente
apelando a la localidad de referencia esto tiene como consecuencia necesaria
que debe haber un mecanismo que contabilice los accesos dentro del TC (lo cual
agrega tanto latencia como costo) otro mecanismo (con ob!ias des!enta#as) es el
reemplazar una página al azar. Jeremos con mayor detalle más adelante algunos
de los mecanismos más empleados para este fin, comparando sus puntos a fa!or
y en contra.
".2.2 ,u+diidiendo la ta+la de p'inas
@ncluso empleando TCs, el espacio empleado por las páginas sigue siendo
demasiado grande. onsideremos un escenario más frecuente que el propuesto
anteriormenteI Empleando un procesador con espacio de direccionamiento de ;6
bits, y un tamao de página estándar (21
(56786?95) páginas. -i cada entrada de la página ocupa 2? bits4? (esto es, :
bytes), cada proceso requeriría de :*C (: bytes por cada una de las páginas)s$lamente para representar su mapeo de memoria. Esto, especialmente en
procesos pequeos, resultaría más gra!oso para el sistema que los beneficios
obtenidos de la paginaci$n.
0pro!echando que la mayor parte del espacio de direccionamiento de un proceso
está típicamente !acío, se puede subdi!idir el identificador de página en dos (o
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
23/46
más) ni!eles, por e#emplo, separando una direcci$n de ;6 bits en una tabla
e"terna de 4? bits, una tabla interna de 4? bits, y el desplazamiento de 46 bits.
/aginaci$n en dos ni!elesI na tabla e"terna de 4? bits, tablas intermedias de 4?
bits, y marcos de 46 bits (esquema común para procesadores de ;6 bits)
Este esquema funciona adecuadamente para equipos con direccionamiento de
hasta ;6 bits. -in embargo, recordemos que cada ni!el de páginas conlle!a un
acceso adicional a memoria en caso de fallo de página % Emplear paginaci$n
#erárquica con un ni!el e"terno y uno interno implica que un fallo de página triplica
(y no duplica, como sería con un esquema de paginaci$n directo) el tiempo de
acceso a memoria. /ara obtener una tabla de páginas mane#able ba#o los
parámetros aquí descritos en un sistema de 12 bits, tendríamos que septuplicar el
tiempo de acceso (cinco accesos en cascada para fragmentos de 4? bits, y un
tamao de página de 42 bits, mas el acceso a la página destino).
Btra alternati!a es el emplear funciones digestoras (hash functions)44 para
mapear cada una de las páginas a un espacio muestral mucho más pequeo.
ada página es mapeada a una lista de correspondencias simples46.
n esquema basado en funciones digestoras nos brinda características muy
deseablesI El tamao de la tabla de páginas puede !ariar según crece el uso de
memoria de un proceso (aunque esto requiera recalcular la tabla con diferentes
parámetros) y el número de accesos a memoria en espacios tan grandes como el
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
24/46
de un procesador de 12 bits se mantiene mucho más tratable. -in embargo, por la
alta frecuencia de accesos a esta tabla, debe elegirse un algoritmo digestor muy
ágil para e!itar que el tiempo que tome calcular la posici$n en la tabla resulte
significati!o frente a las alternati!as.
".3 Memoria compartida
&ay muchos escenarios en que diferentes procesos pueden beneficiarse de
compartir áreas de su memoria. no de ellos es como mecanismo de
comunicaci$n entre procesos (@/, @nter /rocess ommunication), en que dos o
más procesos pueden intercambiar estructuras de datos comple#as sin incurrir en
el costo de copiado que implicaría copiarlas a tra!+s del sistema operati!o. Btro
caso, mucho más frecuente, es el de compartir c$digo.
-i un mismo programa es e#ecutado !arias !eces, y dicho programa no emplea
mecanismos de c$digo auto3modificable, no tiene sentido que las páginas en que
se representa cada una de dichas instancias ocupe un marco independiente % El
sistema operati!o puede asignar a páginas de di!ersos procesos el mismo
con#unto de marcos, con lo cual puede aumentar la capacidad percibida de
memoria.
K si bien es muy común compartir los segmentos de te"to de los di!ersos
programas que están en un momento dado en e#ecuci$n en la computadora, este
mecanismo es toda!ía más útil cuando hablamos de bibliotecas del sistemaI &ay
bibliotecas que son empleadas por una gran cantidad de programas4;.
so de memoria compartidaI Tres procesos comparten la memoria ocupada por el
te"to del programa (azul), difieren s$lo en los datos.
laro está, para ofrecer este modelo, el sistema operati!o debe poder garantizar
que las páginas correspondientes a las secciones de te"to (el c$digo del
programa) sean de s$lo lectura.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
25/46
n programa que está programado y compilado de forma que permita que todo su
c$digo sea de s$lo lectura es reentrante, dado que posibilita que di!ersos
procesos entren a su espacio en memoria sin tener que sincronizarse con otros
procesos que lo est+n empleando.
".3.1 opiar al escri+ir (opy on 4rite5 o4)
En los sistemas ni", el mecanismo más frecuentemente utilizado para crear un
nue!o proceso es el empleo de la llamada al sistema forN(). uando es in!ocado
por un proceso, el sistema operati!o crea a un nue!o proceso id+ntico al que lo
llam$, diferenciándose únicamente en el !alor entregado por la llamada a forN(). -i
ocurre algún error, el sistema entrega un número negati!o (indicando la causa del
error). En caso de ser e"itoso, El proceso nue!o (o proceso hi#o) recibe el !alor ?,
mientras que el proceso pree"istente (o proceso padre) recibe el /@G (número
identificador de proceso) del hi#o. Esto es, es frecuente que !eamosI
Este m+todo es incluso utilizado normalmente para crear nue!os procesos,
transfiriendo el ambiente (!ariables, por e#emplo, que incluyen cuál es la entrada y
salida estándar de un proceso, esto es, a qu+ terminal están conectados,
indispensable en un sistema multiusuario). Hrecuentemente, la primer instrucci$n
que e#ecuta un proceso hi#o es e"ec!e(), que carga a un nue!o programa sobre
del actual y transfiere la e#ecuci$n a su primer instrucci$n.
uesta traba#o comprender el por qu+ de esta l$gica si no es por el empleo de la
memoria compartidaI El costo de forN() en un sistema ni" es muy ba#o, se limita a
crear las estructuras necesarias en la memoria del núcleo. Tanto el proceso padre
como el proceso hi#o comparten todas sus páginas de memoria % -in embargo,
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
26/46
siendo dos procesos independientes, no deben poder modificarse más que por los
canales e"plícitos de comunicaci$n entre procesos.
*emoria de dos procesos inmediatamente despu+s de la creaci$n del proceso hi#o
por forN()
Esto ocurre así gracias a un mecanismo llamado opiar al escribir (opy on Qrite
o oQ). as páginas de memoria de ambos procesos son las mismas mientras
sean s$lo leídas. -in embargo, si uno de los procesos modifica a cualquier dato en
una de estas páginas, +sta se copia a un nue!o marco, y de#a de ser una página
compartida. El resto de las páginas seguirá siendo compartido.
uando el proceso hi#o modifica informaci$n en la primer página de su memoria,
se crea como una página nue!a.
@ncluso cuando se e#ecutan nue!os programas a tra!+s de e"ec!e(), es posible
que una buena parte de la memoria se mantenga compartida, por e#emplo, al
refrirse a copias de bibliotecas de sistema.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
27/46
# Memoria irtual
Jarios de los aspectos mencionados en la secci$n de paginaci$n !an
conformando a lo que conocemos como memoria !irtualI Jimos ya que en un
sistema que emplea paginaci$n, un proceso no conoce su direcci$n en memoria
relati!a a otros procesos, sino que traba#an con una idealizaci$n de la memoria, enla cual ocupan el espacio completo de direccionamiento, desde el cero hasta el
límite l$gico de la arquitectura, independientemente del tamao físico de la
memoria disponible.
K si bien el modelo mencionado de paginaci$n nos lle!$ a que los diferentes
procesos pueden compartir regiones de memoria y direccionar más memoria de la
físicamente disponible, no abordamos qu+ estrategia se emplearía cuando el total
de páginas solicitadas por todos los procesos acti!os en el sistema superara el
total de espacio físico. Es ahí donde entra en #uego la memoria !irtualI /ara
ofrecer a los procesos mayor espacio en memoria del que e"iste físicamente, elsistema emplea espacio en almacenamiento secundario (típicamente, disco duro),
a tra!+s de un esquema de intercambio (s'ap).
Esquema general de la memoria, incorporando espacio en almacenamiento
secundario, representando la memoria !irtual
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
28/46
Es importante apuntar que la memoria !irtual es gestionada de forma automática y
transparente por el sistema operati!o. Po hablaríamos de memoria !irtual, por
e#emplo, si un proceso pide e"plícitamente intercambiar determinadas páginas.
/uesto de otra maneraI Gel mismo modo que la segmentaci$n permiti$ hacer
mucho más c$modo y útil al intercambio a tra!+s del intercambio parcial,permitiendo que continuara la e#ecuci$n del proceso incluso con ciertos segmentos
intercambiados (s'appeados) a disco, la memoria !irtual lo hace aún más
con!eniente al aumentar la granularidad del intercambioI 0hora ya no s$lo se
en!iarán a disco secciones l$gicas completas del proceso (segmentos), sino que
podrá hacerse página por página, aumentando muy fuertemente el rendimiento
resultante. Jeremos que, empleando memoria !irtual, de cierto modo la memoria
física se !uel!e s$lo una proyecci$n parcial de la memoria l$gica, potencialmente
mucho mayor a +sta.
T+cnicamente, cuando hablamos de memoria !irtual, no nos referirmos ya a unintercambiador (s'apper), sino que al paginador.
#.1 a'inaci%n so+re demanda
a memoria !irtual entra en #uego desde la carga misma del proceso. Tomemos en
cuenta que casi siempre tenemos c$digo durmienteI $digo que s$lo se emplea
e!entualmente, como el que responde ante una situaci$n de e"cepci$n o el que se
emplea s$lo ante circunstancias particulares (por e#emplo, la e"portaci$n de un
documento a determinados formatos, o la !erificaci$n de que no haya tareas
pendientes antes de cerrar un programa). K si bien a una computadora le sería
imposible e#ecutar c$digo que no est+ cargado en memoria,42 el c$digo sí puede
comenzar e#ecutarse sin estar completamente en memoriaI Casta con haber
cargado la página donde están las instrucciones que comenzaremos a seguir.
a paginaci$n sobre demanda significa que, para comenzar a e#ecutar un proceso,
el sistema operati!o carga s$lamente la porci$n necesaria para comenzar la
e#ecuci$n, y que a lo largo de la e#ecuci$n de cada uno de los procesos, el
paginador es flo#oI4: -$lo carga a memoria las páginas cuando !an a ser
utilizadas. 0l emplear un paginador flo#o, las páginas que no sean requeridas
nunca serán siquiera cargadas a memoria.
a estructura empleada por el ** para implementar un paginador flo#o es muy
parecida a la descrita al hablar del buffer de traduci$n adelantadaI a tabla de
páginas incluirá un bit de !alidez, indicando para cada página del proceso si está
presente o no en memoria. -i el proceso intenta emplear una página que est+
marcada como no !álida, esto causa un fallo de página, que lle!a a que el sistema
operati!o lo suspenda y traiga a memoria la página solicitadaI
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
29/46
/asos que atra!iesa la respuesta a un fallo de página
4. Jerifica en el /C si esta solicitud corresponde a una página que ya ha sido
asignada a este proceso.6. En caso de que la referencia sea in!álida, se termina el proceso.;. /rocede a traer la página del disco a la memoria. El primer paso es buscar
un marco disponible (por e#emplo, a tra!+s de una tabla de asignaci$n de
marcos)2. -olicita al disco la lectura de la página en cuesti$n hacia el marco
especificado:. na !ez que finaliza la lectura de disco, modifica tanto al /C como al TC
para indicar que la tabla está en memoria.1. Termina la suspensi$n del proceso, continuando con la instrucci$n que
desencaden$ al fallo. El proceso puede continuar tal como si la página
siempre hubiera estado presente en memoria.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
30/46
le!ando este proceso al e"tremo, podemos hablar de un sistema de paginaci$n
puramente sobre demanda (pure demand paging)I En un sistema así, ninguna
página llegará al espacio de un proceso si no es a tra!+s de un fallo de página un
proceso, al iniciarse, comienza su e#ecuci$n sin ninguna página en memoria, y con
el apuntador de siguiente instrucci$n del procesador apuntando a una direcci$n
que no está en memoria. El sistema operati!o responde cargando esta primer
página, y conforme a!anza el flu#o del programa, el proceso irá ocupando el
espacio real que empleará.
#.2 $endimiento
a paginaci$n sobre demanda puede impactar fuertemente el rendimiento de un
proceso. &emos !isto ya que un acceso a disco es !arios miles de !eces más
lento que el acceso a memoria podemos calcular el tiempo de acceso efecti!o a
memoria (5te5) a partir de la probabilidad que en un proceso se presente un fallo
de página (5? Sle p Sle 45), conociendo el tiempo de acceso a memoria (5ta5) y eltiempo que toma atender a un fallo de página (5tf5)I
5te U (43p)ta O ptf5
0hora bien, dado que 5ta5 ronda hoy en día entre los 4? y 6??ns, mientras que
5tf5 está más bien cerca de los ms (la latencia típica de un disco duro es de
;ms, el tiempo de posicionamiento de cabeza de :ms, y el tiempo de transferencia
es de ?.?:ms), para prop$sitos prácticos ignorar a 5ta5. on los !alores
presentados, seleccionando el mayor de los 5ta5 presentados, si s$lo un acceso
a memoria de cada 4??? ocasiona un fallo de página (esto es, 5pUSfrac849
84???95)I
5te U (43Sfrac84984???9) Stimes 6??ns O Sfrac84984???9 Stimes ,???,???ns5
5te U 4==.ns O ???ns U 4==.ns5
Esto es, en promedio, tendemos un tiempo efecti!o de acceso a memoria 2?
!eces mayor a que si no empleáramos este mecanismo. on estos mismosnúmeros, para mantener la degradaci$n de rendimiento por acceso a memoria por
deba#o del 4?V, tendríamos que reducir la probabiliad de fallos de página a
5Sfrac8498;==,==?95.
abe mencionar que este impacto al rendimiento no necesariamente significa que
una proporci$n relati!amente alta de fallos de página para un proceso impacte
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
31/46
negati!amente a todo el sistema % El mecanismo de paginaci$n sobre demanda
permite, al no requerir que se tengan en memoria todas las páginas de un
proceso, que haya más procesos acti!os en el mismo espacio en memoria,
aumentando el grado de multiprogramaci$n del equipo. Ge este modo, si un
proceso se !e obligado a esperar por ms a que se resuel!a un fallo de página,
durante ese tiempo pueden seguirse e#ecutando los demás procesos.
#.2.1 &comodo de las p'inas en disco
El cálculo reci+n presentado, además, asume que el acomodo de las páginas en
disco es $ptimo. -in embargo, si para llegar a una página hay que resol!er la
direcci$n que ocupa en un sistema de archi!os (posiblemente na!egar una
estructura de directorio), y si el espacio asignado a la memoria !irtual es
compartido con los archi!os en disco, el rendimiento sufrirá adicionalmente.
na de las principales deficiencias estructurales en este sentido de los sistemas
de la familia Qindo's es que el espacio de almacenamiento se asigna en el
espacio libre del sistema de archi!os. Esto lle!a a que, conforme crece la
fragmentaci$n del disco, la memoria !irtual quede esparcida por todo el disco
duro.
a generalidad de sistemas tipo ni", en contraposici$n, reser!an una partici$n de
disco e"clusi!amente para la memoria !irtual.
#.3 $eempla6o de p'inas
-i apro!echamos las características de la memoria !irtual para aumentar el gradode multiprogramaci$n, como !imos en la secci$n anterior, se nos presenta un
problemaI 0l sobre3comprometer memoria, en determinado momento, los
procesos que están en e#ecuci$n pueden caer en un patr$n que requiera cargarse
a memoria física páginas por un mayor uso de memoria que el que hay
físicamente disponible.
K si recordamos que uno de los ob#eti!os del sistema operati!o es otorgar a los
usuarios la ilusi$n de una computadora dedicada a sus procesos, no sería
aceptable terminar la e#ecuci$n de un proceso ya aceptado y cuyos requisitos han
sido aprobados porque nos quedamos sin recursos. -e hace necesario encontrar una forma #usta y adecuada de lle!ar a cabo un reemplazo de páginas que nos
permita continuar satisfaciendo sus necesidades.
El reemplazo de páginas es una parte fundamental de la paginaci$n sobre
demanda, es la pieza que posibilita una !erdadera separaci$n entre memoria
l$gica y física.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
32/46
El mecanismo básico a e#ecutar es simpleI -i todos los marcos están ocupados,
debemos encontrar una página que podamos liberar (una página !íctima) y
grabarla al espacio de intercambio en el disco. na !ez que lo hayamos hecho,
podemos emplear el espacio liberado para cargar una página nue!a, y continuar
con la e#ecuci$n del proceso.
Esto nos lle!a a una doble transferencia al disco (una para grabar la página
!íctima y una para traer la página de reemplazo), y por tanto, a una doble demora.
/odemos, con un mínimo de burocracia adicional (aunque requiere de apoyo del
**)I implementar un mecanismo que disminuya la probabilidad de que
tengamos que realizar esta doble transferenciaI 0gregar un bit de modificaci$n o
bit de página sucia (dirty bit) a la tabla de páginas. Este bit se marca como
apagado siempre que se carga una página a memoria, y es automáticamente
encendido cuando se realiza un acceso de escritura a dicha página.
uando el sistema operati!o elige una página !íctima, si su bit de página sucia
está encendido, es necesario grabarla al disco, pero si está apagada, sabemos
que la informaci$n en disco es id+ntica a la que tenemos en memoria, y permite
ahorrar la mitad del tiempo de transferencia.
0hora bien, Wc$mo decidimos qu+ páginas remplazar marcándolas como !íctimas
cuando hace faltaX /ara esto tenemos que elegir un algoritmo de reemplazo de
páginas. a característica que buscamos en este algoritmo es que, para una
patr$n de accesos dado, nos d+ el menor número de fallos de página.
Esta secci$n está basada en los e#emplos presentados en los presentados en ellibro Bperating -ystems oncepts Essentials (-ilberschatz, Dal!in y Dagn+,
6?44).
0l igual que como lo hicimos al describir los algoritmos de planificaci$n de
procesos, para analizar los que aquí presentaremos lo haremos sobre una cadena
de referencia, esto es, sobre una representaci$n de accesos solicitados. Estas
cadenas modelan el comportamiento de un con#unto de procesos en el sistema, y,
ob!iamente, diferentes comportamientos nos lle!arán a diferentes resultados.
&acer un !olcado y trazado de e#ecuci$n en un sistema real puede dar unaenorme cantidad de informaci$n, del $rden de un mill$n de accesos por segundo.
/ara reducir esta informaci$n en un número más tratable, se puede simplificar
basado en que no nos interesa el acceso independiente a cada direcci$n de
memoria, sino que a cada página.
0demás, !arios accesos a direcciones de memoria en la misma página no causan
efecto en el estado. /odemos tomar como un s$lo acceso a todos aquellos que
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
33/46
ocurren de forma consecuti!a (esto es, sin llamar a ninguna otra página, no es
necesario que sean en instrucciones consecuti!as) a una misma página.
/ara analizar a un algoritmo de reemplazo, si lo que buscamos es la cantidad de
fallos de página producidos, además de la cadena de referencia, necesitamos
saber cuántos marcos tiene nuestra computadora hipot+tica. /or e#emplo, situ!i+ramos la cadenaI
4, 2, ;, 2, 4, 6, 2, 6, 4, ;, 4, 2
0l recorrer esta cadena en una computadora con cuatro o más marcos, s$lo nos
encontraríamos con cuatro fallos (el fallo inicial que hace que se cargue por
primera !ez cada una de las páginas). -i, en el otro e"tremo, tu!i+ramos s$lo un
marco, nos encontraríamos con 46 fallos, dado que a cada solicitud tendríamos
que reemplazar el único marco disponible. El rendimiento que e!aluaríamos sería
en los casos de que tu!i+ramos dos o tres marcos.
n fen$meno interesante que se presenta con algunos algoritmos es la anomalía
de CeladyI -i bien la l$gica indica que a mayor número de marcos disponibles
tendremos una menor cantidad de fallos de página, con algunas de cadenas de
referencia y ba#o ciertos algoritmos puede haber una regresi$n, en que aumentar
la cantidad de marcos tambi+n aumenta la cantidad de fallos.
omportamiento del algoritmo H@HB que e"hibe la anomalía de Celady al pasar de
; a 2 marcos
/ara los algoritmos que !eremos a continuaci$n, asumiremos una memoria con
tres marcos, y con la siguiente cadena de referenciaI
>, ?, 4, 6, ?, ;, ?, 2, 6, ;, ?, ;, 6, 4, 6, ?, 4, >, ?, 4
#.3.1 rimero en entrar5 primero en salir (F*F7)
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
34/46
El algoritmo de más simple y ob!ia implementaci$n es, nue!amente, el H@HBI 0l
cargar una página en memoria, se toma nota de en qu+ momento fue cargada, y
cuando llegue el momento de reemplazar una página !ie#a, se elige la que haya
sido cargada hace más tiempo.
/artiendo de un estado inicial en que nuestras tres páginas están !acías,necesariamente las tres primeras referencias a distintas páginas de memoria (>, ?,
4) causarán fallos de página. a siguiente (6) causará uno, pero la quinta
referencia (?) puede ser satisfecha sin requerir una nue!a transferencia.
0lgoritmo H@HB de reemplazo de páginas
a principal !enta#a de este algoritmo es, como ya lo hemos mencionado, la
simplicidad, tanto para programarlo como para comprenderlo. -u implementaci$n
puede ser tan simple como una lista ligada circular, cada elemento que !a
recibiendo se agrega en el último elemento de la lista, y se Lempu#aL el apuntador
para con!ertirlo en la cabeza. -u des!enta#a, claro está, es que no toma en cuenta
a la historia de las últimas solicitudes, por lo que puede causar un ba#o
rendimiento. Todas las páginas tienen la misma probabilidad de ser reemplazadas,
sin importar su frecuencia de uso.
on las condiciones aquí presentadas, un esquema H@HB nos lle!a a 4: fallos de
página en un total de 6? accesos requeridos.
El algoritmo H@HB es !ulnerable a la anomalía de Celady. Esto puede ilustrarse al
pasar de ; a 2 marcos con la cadena de referenciaI
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
35/46
4, 6, ;, 2, 4, 6, :, 4, 6, ;, 2, :
a pre!alencia de cadenas que desencadenan la anomalía de Celady fue uno de
los factores principales que lle!aron al diseo de nue!os algoritmos de reemplazo
de páginas.
#.3.2 $eempla6o de p'inas %ptimo (75 M*8)
n segundo algoritmo, de inter+s casi puramente te$rico, fue propuesto, y es
típicamente conocido como B/T o *@P. Ca#o este algoritmo, el enunciado será
elegir como página !íctima a aquella página que no !aya a ser utilizada por un
tiempo má"imo.
0lgoritmo $ptimo de reemplazo de páginas (B/T)
-i bien este algoritmo está demostrado como $ptimo o mínimo, se mantiene como
curiosidad te$rica porque requiere conocimiento a priori de las necesidades del
sistema % K si esto es impracticable ya en los algoritmos que re!isamos de
despachadores, lo será mucho más con un recurso de reemplazo tan dinámico
como la memoria.
-u principal utilidad reside en que nos brinda una cota mínimaI alculando el
número de fallos que se presentan al seguir B/T, podemos !er qu+ tan cercano
resulta otro algoritmo respecto al caso $ptimo. /ara esta cadena de referencia, y
con tres páginas, tenemos un total de nue!e fallos.
#.3.3 Menos recientemente utili6ado (L$U)
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
36/46
&emos !isto este esquema en di!ersos mecanismos relacionados con la
administraci$n de memoria. Cusca acercarse a B/T prediciendo cuándo será la
pr$"ima !ez en que se emplee cada una de las páginas que tiene en memoria
basado en la historia reciente de su e#ecuci$n.
uando necesita elegir una página !íctima, F elige la página que no ha sidoempleada hace más tiempo
0lgoritmo reemplazo de páginas menos recientemente utilizadas (F)
/ara nuestra cadena de referencia, F genera 46 fallos, en el punto medio entre
B/T y H@HB.
na obser!aci$n interesante puede ser que para una cadena 5-5 y su cadena
espe#o (in!ertida) 5F7-5, el resultado de e!aluar 5-5 por F es igual al de
e!aluar 5F7-5 por B/T, y !ice!ersa.
a principal debilidad de F es que para su implementaci$n requiere apoyo en
hard'are41 sensiblemente más comple#o que H@HB. na implementaci$n podría
ser agregar un contador a cada uno de los marcos, actualizarlo siempre al hacer
una referenciar a dicha página, y elegir como !íctima a la página con un menor
conteo. Este mecanismo tiene la des!enta#a de que, en presencia de una grancantidad de páginas, tiene que recorrerlas a todas para buscar a la más
en!e#ecida.
Btro mecanismo es emplear una lista doblemente ligada con dos m+todos de
accesoI ista y stacN. ada !ez que se haga referencia a una página, se mue!e a
la cabeza del stacN, y cada !ez que se busque a una página !íctima, se selecciona
a aquella que est+ en el e"tremo inferior del stacN. Este mecanismo hace un poco
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
37/46
más cara la actualizaci$n (pueden requerirse hasta seis modificaciones), pero
encuentra a la página !íctima en tiempo constante.
-e ha demostrado que F y B/T están libres de la anomalía de Celady, dado
que, para 5n5 marcos, las páginas que estarían en memoria son un subcon#unto
estricto de las que estarían con 5nO45 marcos.
#.3." Ms -recuentemente utili6ada (MFU) 9 Menos -recuentemente utili6ada(LFU)
Estos dos algoritmos se basan en mantener un contador, como lo hace F, pero
en !ez de medir el tiempo, miden la cantidad de referencias que se han hecho a
cada página.
*H parte de la l$gica que, si una página fue empleada muchas !eces,
probablemente !uel!a a ser empleada muchas !eces más H parte de que una
página que ha sido empleada pocas !eces es probablemente una página reci+ncargada, y !a a ser empleada en el futuro cercano.
Estos dos algoritmos son tan caros de implementar como F, y su rendimiento
respecto a B/T no es tan cercana, por lo cual casi no son empleados.
#.3.# &proimaciones a L$U
Gada la comple#idad que presenta la implementaci$n de F en hard'are,
algunos sistemas implementan una apro"imaci$n a +ste.
Cit de referencia
Esta es una apro"imaci$n bastante común. onsiste en que todas las entradas de
la tabla de páginas tengan un bit adicional, al que llamaremos de referencia. 0l
iniciar la e#ecuci$n, todos los bits de referencia están apagados (?). ada !ez que
se referencia a un marco, su bit de referencia se enciende.
El sistema operati!o in!oca peri$dicamente a que se apaguen nue!amente todos
los bits de referencia. En caso de presentarse un fallo de página, se elige por H@HB
sobre el subcon#unto de marcos que no hayan sido referenciados en el periodo
actual (esto es, entre todos aquellos para los cuales el bit de referencia sea ?).
olumna de referencia
na me#oría casi tri!ial sobre la anterior consiste en agregar !arios bits de
referencia, conformándose como una columnaI En !ez de descartar su !alor cada
!ez que transcurre el periodo determinado, el !alor de la columna de referencia es
recorrido a la derecha, descartando el bit más ba#o. /or e#emplo, si nuestra
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
38/46
implementaci$n tu!iera 2 bits, un marco que no ha sido empleado en los últimos 2
periodos tendría el !alor ????, mientras que un marco que sí ha sido referenciado
los últimos cuatro periodos tendría 4444. n marco que fue empleado hace cuatro
y tres periodos, pero desde entonces no, tendría el ??44.
uando el sistema tenga que elegir a una nue!a página !íctima, lo hará de entreel con#unto que tenga un número más ba#o.
a parte de mantenimiento de este algoritmo es muy simple recorrer una serie de
bits es una operaci$n muy sencillo. -eleccionar el número más pequeo requiere
una pequea búsqueda, pero sigue resultando mucho más sencillo que F.
-egunda oportunidad (o relo#)
El algoritmo de la segunda oportunidad traba#a tambi+n basado en un bit de
referencia y un recorrido tipo H@HB. a diferencia en este caso es que, al igual que
hay e!entos que encienden a este bit (efectuar una referencia al marco), tambi+nhay e!entos que lo apaganI
-e mantiene un apuntador a la pr$"ima !íctima, y cuando el sistema requiera
efectuar un reemplazo, +ste !erificará si el marco al que apunta tiene el bit de
referencia encendido o apagado. En caso de estar apagado, el marco es
seleccionado como !íctima, pero en caso de estar encendido (indicando que fue
utilizado recientemente), se le da una segunda oportunidadI El bit de referencia se
apaga, el apuntador de !íctima potencial a!anza una posici$n, y !uel!e a
intentarlo.
0 este algoritmo se le llama tambi+n de relo# porque puede implementarse como
una lista ligada circular, y el apuntador puede ser !isto como una manecilla. a
manecilla a!anza sobre la lista de marcos buscando uno con el bit de referencia
apagado, y apagando a todos a su paso.
En el peor caso, el algoritmo de segunda oportunidad degenera en H@HB.
-egunda oportunidad me#orada
El bit de referencia puede amplairse con un bit de modificaci$n, dándonos las
siguientes combinaciones, en $rden de preferenciaI
(?, ?)
Po ha sido utilizado ni modificado recientemente. andidato ideal para su
reemplazo.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
39/46
(?,4)
Po ha sido utilizada recientemente, pero está modificada. Po es tan buena opci$n,
porque es necesario escribir la página a disco antes de reemplazarla, pero puede
se elegida.
(4,?)
El marco está limpio, pero fue empleado recientemente, por lo que probablemente
se !uel!a a requerir pronto
(4,4)
Empleada recientemente y sucia % -ería necesario escribir la página a disco
antes de reemplazar, y probablemente !uel!a a ser requerida pronto. &ay que
e!itar reemplazarla.
a l$gica para encontrar una página !íctima es similar a la segunda oportunidad,
pero busca reducir el costo de EM-. Esto puede requerir, sin embargo, dar hasta
cuatro !ueltas (por cada una de las listas) para elegir la página !íctima.
#.3.; &l'oritmos con manejo de +u--ers
n mecanismo que se emplea con cada !ez mayor frecuencia es que el sistema
no espere a enfrentarse a la necesidad de reemplazar un marco, sino que
proacti!amente busque tener siempre espacio !acío en memoria. /ara hacerlo,
conforme la carga lo permite, el sistema operati!o busca las páginas sucias más
procli!es a ser paginadas a disco y !a actualizando el disco (y marcándolasnue!amente como limpias). Ge este modo, cuando tenga que traer una página
nue!a del disco, siempre habrá espacio donde ubicarla sin tener que esperar a
que se transfiera una para liberarla.
#." &si'naci%n de marcos
0bordando el problema prácticamente por el lado opuesto al del reemplazo de
páginas, Wc$mo se asignan los marcos e"istentes a los procesos del sistemaX
Esto es, Wqu+ esquemas podemos encontrar para que la asignaci$n inicial (y, de
ser posible, en el transcurso de la e#ecuci$n) sea adecuadaX
onsideremos en primer t+rmino un esquema sencilloI n sistema con 4?62
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
40/46
-i el sistema operati!o ocupa 62
Este esquema, si bien es simple, al requerir una gran cantidad de fallos de página
e"plícitos puede penalizar el rendimiento del sistema % El esquema puede
resultar demasiado flo#o, no le !endría mal ser un poco más ansioso y asignar, de
inicio, un número determinado como mínimo utilizable de marcos.
#.".1 Mnimo de marcos
-i un proceso tiene asignados demasiado pocos marcos, su rendimiento
indudablemente se !erá afectado. &asta ahora hemos supuesto que cada
instrucci$n puede causar un s$lo fallo de página, pero la realidad es más
comple#a. ada instrucci$n del procesador puede, dependiendo de la arquitectura,
desencadenar !arias solicitudes.
Todas las arquitecturas proporcionan instrucciones de referencia directa a
memoria (instrucciones que permiten especificar una direcci$n de memoria para
leer o escribir) % Esto significa que todas requerirán que, para que un proceso
funcione adecuadamente, tenga por lo menos dos marcos asignadosI En caso de
que se le permitiera solo uno, si la instrucci$n ubicada en ?"??06 solicita la
carga de ?"?2;H??, esta causaría dos fallosI El primero, cargar al marco la página
?"?2;, y el segundo, cargar nue!amente la página ?"??0, necesario para leer la
siguiente instrucci$n a e#ecutar del programa (?"??06, asumiendo palabras de
;6 bits).
0lgunas arquitecturas, además, permiten referencias indirectas a memoria, esto
es, nuestra instrucci$n de carga puede solicitar la direcci$n que está referenciada
en ?"?2;H??. El procesador tendría que recuperar esta direcci$n, y podría
encontrarse con que hace referencia a una direcci$n en otra página (digamos,
?"?4?H?). ada ni!el de indirecci$n que se permite aumenta en uno el número
de páginas que debemos reser!ar como mínimo por proceso.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
41/46
0lgunas arquitecturas, particularmente las más antiguas,4, permiten que tanto los
operandos de algunas instrucciones aritm+ticas como su resultado sean
direcciones de memoria (y no operan estrictamente sobre los registros, como las
arquitecturas F@-). En dichas arquitecturas, el mínimo debe tambi+n tener este
factor en cuentaI -i en una sola instrucci$n podemos sumar dos direcciones de
memoria y guardar el resultado en una adicional, el mínimo a reser!ar es de
cuatro marcosI no para el flu#o del programa, uno para el primer operando, uno
para el segundo operando, y uno para el resultado.
:.2.6 Esquemas de asignaci$n
0hora, una !ez establecido el número mínimo de marcos por proceso, Wc$mo
podemos determinar el ni!el deseableX
/artiendo de que el rendimiento de un proceso será me#or entre menos fallos de
paginaci$n cause, podríamos intentar otorgar a cada proceso el total de marcos
que solicita % /ero esto tendría como resultado disminuir el grado de
multiprogramaci$n, y por tanto, reducir el uso efecti!o total del procesador.
Btra alternati!a es la asignaci$n igualitariaI -e di!ide el total de espacio en
memoria física entre todos los procesos en e#ecuci$n, en partes iguales. Esto es,
!ol!iendo a la computadora hipot+tica que presentamos al inicio de esta secci$n,
si tenemos 2 procesos que requieren ser e#ecutados, de los 4=2 marcos
disponibles, el sistema asignará 2 marcos (4=6
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
42/46
ada proceso recibirá entonces 5H/ U Sfrac8J/98JT9 Stimes m5, donde 5H/5
indica el espacio de memoria física que el proceso recibirá, 5J/5 la cantidad de
memoria !irtual que está empleando, y 5m5 la cantidad total de marcos de
memoria disponibles. Ge este modo, 5/45 recibirá 4;? marcos, 5/65 >, 5/;5
;: y 5/25 6?, proporcionalmente a su uso de memoria !irtual.
abe apuntar que este mecanismo debe obser!ar ciertos parámetros mínimosI
/or un lado, si el mínimo de marcos definido para esta arquitectura es de 2, por
más que entrara en e#ecuci$n un proceso de ;6
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
43/46
/ara responder a los problemas que la anterior secci$n nos de#a abiertos, se
puede discutir el ámbito en que operará el algoritmo de reemplazo de páginas.
Feemplazo local
*antenemos tan estable como sea posible el cálculo hecho por el esquema de
asignaci$n que estemos empleando. Esto significa que cuando se presente un
fallo de página, las páginas que serán consideradas para su intercambio serán
únicamente aquellas pertenecientes al mismo proceso que el que caus$ el fallo.
n proceso tiene asignado su espacio de memoria física, y se mantendrá estable
mientras el sistema operati!o no tome alguna decisi$n por cambiarlo.
Feemplazo global
os algoritmos de asignaci$n determinan el espacio asignado a los procesos al ser
inicializados, e influyen a los algoritmos de reemplazo (por e#emplo, dando mayor peso para ser elegidas como páginas !íctima a aquellas que pertenezcan a un
proceso que e"cede de su asignaci$n en memoria física).
os algoritmos de reemplazo de páginas operan sobre el espacio completo de
memoria, y la asignaci$n física de cada proceso puede !ariar según el estado del
sistema momento a momento.
Feemplazo global con prioridad
Es un esquema mi"to, en el que un proceso puede sobrepasar su límite siempre
que le robe espacio en memoria física e"clusi!amente a procesos de prioridadinferior a +l. Esto es consistente con el comportamiento de los algoritmos
planificadores, que siempre dan preferencia a un proceso de mayor prioridad por
sobre de uno de prioridad más ba#a.
El reemplazo local es más rígido y no permite apro!echar para me#orar el
rendimiento los periodos de inacti!idad de algunos de los procesos. En
contraposici$n, los esquemas basados en reemplazo global puede lle!ar a
rendimiento inconsistenteI Gado que la asignaci$n de memoria física sale del
control de cada proceso, puede que la misma secci$n de c$digo presente tiempos
de e#ecuci$n muy distintos si porciones importantes de su memoria fueronpaginadas a disco.
#.# Hiperpa'inaci%n
uando (ba#o un esquema de reemplazo local) un proceso tiene asignadas
demasiado pocas páginas para lle!ar a cabo su traba#o y genera fallos de página
con tal frecuencia que le imposibilita realizar traba#o real, o (ba#o un esquema de
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
44/46
reemplazo global) hay demasiados procesos en e#ecuci$n en el sistema y los
constantes fallos y reemplazos hacen imposible a todos los procesos in!olucrados
a!anzar, se dice que estamos en estado de hiperpaginaci$n.6?
&ay !arios escenarios que pueden lle!arnos a la hiperpaginaci$n, y su impacto es
tan claro e identificable que prácticamente cualquier usuario de c$mputo lo sabráreconocer. /resentemos, pues, un escenario e#emplo en que las malas decisiones
del sistema operati!o pueden conducirlo a este estado.
omencemos con un sistema que está con una carga media normal, con un
esquema de reemplazo global de marcos. -e lanza un nue!o proceso, que como
parte de su inicializaci$n requiere poblar di!ersas estructuras a lo largo de su
espacio de memoria !irtual. /ara hacerlo, lanza una serie de fallos de página, a
las que el sistema operati!o responde reemplazando a !arios marcos
pertenecientes a otros procesos.
asualmente, a lo largo del periodo que toma esta inicializaci$n (recordemos que
puede parecer una eternidadI El disco es entre miles y millones de !eces más
lento que la memoria) algunos de estos procesos solicitan los espacios de
memoria que acaban de ser en!iados a disco, por lo cual lanzan nue!os fallos de
página.
uando el sistema detecta que la utilizaci$n del procesador decrece, el sistema
operati!o puede apro!echar la situaci$n para lanzar procesos de mantenimiento.
-e lanzan estos procesos, reduciendo aún más el espacio de memoria física
disponible para cada uno de los procesos pree"istentes.
-e ha formado ya toda una cola de solicitudes de paginaci$n, algunas !eces
contradictorias. El procesador tiene que comenzar a e#ecutar PBB/ (esto es, no
tiene traba#o que e#ecutar), porque la mayor parte del tiempo lo pasa en espera de
un nue!o marco por parte del disco duro. El sistema completo a!anza cada !ez
más lento.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
45/46
0l aumentar demasiado el grado de multiprogramaci$n, el uso del / cae
abruptamente y caemos en la hiperpaginaci$n (-ilberschatz, p.;2=)
os síntomas de la hiperpaginaci$n son muy claros, y no son difíciles de detectar.
WYu+ estrategia puede emplear el sistema operati!o una !ez que se da cuenta
que se present$ esta situaci$nX
na salida sería reducir el ni!el de multiprogramaci$n % -i la paginaci$n se
present$ debido a que los requisitos de memoria de los procesos actualmente en
e#ecuci$n no pueden ser satisfechos con la memoria física disponible, el sistema
puede seleccionar a uno (o más) de los procesos y suspenderlos por completohasta que el sistema !uel!a a un estado normal. /odría seleccionarse, por
e#emplo, al proceso con menor prioridad, al que est+ causando más cantidad de
fallos, o al que est+ ocupando más memoria.
#.#.1 Modelando el conjunto actio
n pico en la cantidad de fallos de página no necesariamente significa que
estamos cayendo en una situaci$n de hiperpaginaci$n % *uchas !eces indica
que el proceso cambi$ su atenci$n de un con#unto de páginas a otro, o dicho de
otro modo, que cambi$ el con#unto acti!o del proceso % K resulta natural que, al
cambiar el con#unto acti!o, el proceso accese de golpe una serie de páginas que
no había tocado en cierto tiempo.
-
8/17/2019 Funciones y Operaciones Del Administrador de Memoria
46/46
os picos y !alles en la cantidad de fallos de página de un proceso definen a su
con#unto acti!o (-ilberschatz, p.;2=)
El con#unto acti!o es, pues, la apro"imaci$n más clara a la localidad de referencia
de un proceso dadoI El con#unto de páginas sobre los que está iterando en un
momento dado.
@dealmente, para e!itar los problemas relacionados con la hiperpaginaci$n,
debemos asignar a cada proceso suficientes páginas como para que mantenga en
memoria física su con#unto acti!o % K si no nos es posible hacerlo, el proceso es
un buen candidato para ser suspendido. -in embargo, detectar con suficienteclaridad como para efectuar este diagn$stico los cuál es el con#unto acti!o es una
tarea muy comple#a, que típicamente implica rastrear y !erificar del $rden de los
últimos miles a decenas de miles de accesos a memoria.