funciones y operaciones del administrador de memoria

Upload: oberto-jorge-santin-cuesta

Post on 06-Jul-2018

262 views

Category:

Documents


0 download

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.