Vous êtes sur la page 1sur 12
—___Gieneias de la Computaciém Gestién de la Memoria Ia 23 de junio de 2011 1. Objetivos + Distinguir entre espacios logicas y fsioos de memoria. Bntender el proceso de traduccion de direcciones. +» Entender el concepto de MMU (Unidad de manejo de memoria) ' Conocer téenicas elementals de intercambio, enlace dindmico, registro base y Mmite. ' Conocer la gestién de memoria contigua: partiién nica, particiones méltiples. Bl problema de Ja fragmentaciéa y sus posibes soluciones. 1 Conover las téenicas de gestion del espacio libre. + Conover el concepto de Paginaciéa. 1 Tdentificar la conveniencia de usar sistemas paginados de dos o més niveles. 1 Conocer las técnicas para compatir memoria o protegerla usando segmentacion y paginacién, ++ Conoeer los algoritmos desustitucién. Como medi ol rendimianto de un algoritmo FIFO, 6ptimo, LRU, NRU, LFU. 2. Propésito de la gestién de la memoria ‘Como ya sabemos por lo que hemos visto desde principio del semestre, la memoria os recurso donde residen el cédigo y los datos de los procesos que se ejecutan en nuestro equipo. La memoria es tun recurso limitado, y mds encima considerado escaso, por lo que cl sistema operativo debe repartislo ‘entre los diferentes procesos que solicitan ejecutarse, asegurando agin nivel de proteccion entr elas ‘2onas ocupadas por los diferentes programas. 2.1. Misién del sistema operativo con respecto a la memoria La memoria del computador es un conjunto de celdas de tamaio fio. El procesador puede leez o escribir en cualquiera de estas celdas, cada una de las cuales tiene une respective dirceiéa. El procesador usa la direccién para indicar qué eelda quiere lero escribir. ara que un programa se pueda ejocutar, su cédigo y sus datos tienen que estar cargados en ‘memoria. Esto es asi porque el procesador necesita leer@h memoria} siguiente instruccién que se v2 ‘a ejecutar, demas de lee datos de entrada que serdn procesades. ‘En tn entorno multiprogramado, puoden exstr varios programas ejecutdadose al mismo tiempo. Esto signifies que todos ellos deben ser alojados en la memoria, o al menos una parte. Bato obliga & sections el espacio disponible de memoria. Coto la capacidad de la memoria e Bait, puede ocurir Queen un momento dado no e pueden ejecuar todos los programas que los usuarios pretendar Lanzar. Por otra parte hay que conocer cuales son las zonas de memoria ya ocupadas, para 10 sobreescribizlas de forma accidental. El responsable de esta administracion es el sistema operativo. Cuando un programa se carga, el sistema operativo debe reservarle una zona de memoria libre. Después vamos a ver que también puede decidir que no se cargue la totalidad del programa, sino «que los fragmentos que realmente se usen, 2.2. Proteccién de la memoria La gestion de la memoria no solo consiate en repartir un recurso escaso. Si tenemos varios procesos de forma simultanea en la memoria, algunos de ellos pueden acceder (lectura 0 escritura) a direeciones de memoria asignadas a otros procesos. Esto puede ser una verdadera fuente de problemas. Si un proceso de usuario sin provilegios os capaz de leer la memoria de un administrador, podria leer la memoria donde se encuentran contraseiias 0 informacién confidencial, con lo que el sistema operative podria usarse para almacenar informacién de uso privado. Ademés si un programa malicioso o simplemente con algin error sobreescribe direcciones de memoria donde se encuentra otro programa, courrirfa que el programa afectacio resutaré daiiado y Jo més probable es que no pueda ejecutarse dde forma satisfactoria. Con ello, nuesor sistema no garantiza un funcionamiento correcto si existe al ‘memos un programa incorrecto, y se perjudicaria el rendimiento general Hay que tener en cuenta que el sistema operativo es software (codigo y datos), y por lo tanto tiene ‘que ocupar parte de la memoria principal, por lo cual esté expuesto a los problemas que se scaban de mencionar. Un proceso malicioso podria destruir el ebdigo o los dates del sistema operativo. Par cevitar estas cosas, los sistemas operatives moderuos no solo tratan de repartir el recurso memoria entre los procesos, sino que ademas se encargan de aislar a cada proceso en la zona de memoria que se considera accesible para é. El objetivo es que un proceso no pueda leery escribir todas las direcciones cde memoria disponibles, sino tan solo un rango bien definido. Con esto se evitan los problemas de pérdida de seguridad o de daa. 2.3. Objetivos de la gestion de memoria Los objetives generales de un sistema de gestién de memoria son: + Repartir la memoria disponible entre los procesos que la soictan. + Intentar que este reparto sea lo més equilibrado posible. ‘+ Llevar el control de qué zonas de memoria estin libres y cuéles estén ocupadas. 1» Proteger las zonas de memoria de secesos indebides. 1 Lograr que el espacio desaprovechado sea el minimo posible. 1 Aprovechar toda la jerarquia de memoria, incluso los discos (memoria virtual). « Resolver el “salto seméntica” que bay entre Ia memoria fisca (tal y cémo esté eatructurada) y Ja memoria I6gica (tal y como la ve el usuario). Estos objetivos estan sujetos a ciertas restrcciones. No hay que olvidar que la memoria es un recurso al que se accede de de forma continua. Al menos una ver por ceda instruccén que se ejecuta. Toe téenicas involucradas en la gest de Ia memoria deben ser muy cuidadosas en el rendimiento, no deben perjudicar los tiempos de acceso a 1a memoria. 3. Conceptos bisicos 3.1. Ciclo de vida de un programa Desde el punto de vita de la memors i de vita i un programa atraviesa una serie de fases, desde que el Pipezamador lo escribe en lenguaje de alto nivel hasta que se eecuts en memoria en forma de obdigo It ewe cope Taine Figura 1 Cis de vida de mama dun program En la figura 1, se muestra las fases: + Compilacién: El compilador traduce las direcciones simbélicas, como nombres de variables, objetos y métodos, a direcciones muméricas. Por ejemplo, una llamada a un método fun( ) se traduce a uns instruccién JSR 1234, donde 1234 es la deccién de memoria donde se ubicaré, l cbdigo del metodo. + Enlace (Link): Bl resultado de la compilacin de los archivos fuentes es un conjunto de archives fen e6digo maquina, lamados archivos objeto. Estos archivos tienen que combinarse en lat bibliotecas del lenguaje (por ejemplo, printf( ) en C/C++, clases java.* en Java) + Carga (load): Para que un programa se pueda ejecutar, el archivo ejecutable debe cargarse en ‘memoria (total o parcialmente). El sistema operativo debe reservarse un espacio de memoria ¥ copiar el ebdigo y datos inciales, asf como configurar y lanzar el nuevo proceso + Bjecucién (run): Una ver que el programs se ejecuta, estaré continuamente realizando seceee a memoria. Al menos un acceso por cada instruccién (para leer la siguiente instruccio que ‘@jocuta). El hardware y el sistema operativo realizan actividades més o menos complejas eo tiempo de ejecucion. 3.2. ‘Traduecién de direcciones: espacios l6gicos y fisicos ‘Un archivo ejecutable contiene tres instrucciones en eSdigo méquina. Esas instrucciones contienen ‘accesos 5 memoria: lecturas y escrituras de datos, saltos a subrutinas, etc. Supongamos que en a tjocutable tenemos un fragmento de cbdigo que aparece a continuacién: fLoap (120), RY JADD Ri, 1 STORE Ra, (200) JSR 240 Este programe solo funciona de forma correcta sien la dreccién 240 se encuentra a la que se pretende invocar, si las direcsiones 120 y 200 realmente coatienen las variables que se estan Jeyendo Y eseribiendo, Por lo genera, el compilador ha calculado estas referencias tomando como punto de partida una dzeccén fj (por ejemplo, el cero). Si el programa se ubica en otra zona de memoria, serd necesario traducir las direciones originales las drecciones reales: e lo que se lama reubicacién. __ Tas dreociones logicas son aquelas alas que accede el programa, tal y como se generé el archivo sjecutable. En muchos cosas, se trata de direcriones contiguas numeradas de cero en adelante. Las direcciones fisicas son aquellas donde se ha ubicado realmente el programa ea la memoria Principal. A cada direeion le corresponder4 une disecein Bisica, que no tienen por qué coinciir. as direcciones fisicas de un proces no tienen que ser contiguas. En las éenicas de segmentacién ¥ paginacion se vers que el espacio fsco de un programa puede consistir en porciones dispersas por ‘oda la memoria pringpal. 3.3. Reubicacién estética y din4mica. Unidad de manejo de memoria La reubicacion de un programa puede ocurrr en varias fases de la vide del programa. Por ejemplo durante la carga del programa en memoria se pueden recalcular las referencias a memoria que se encuentran en el eédigo maquina del archivo ejecutable. Las técnicas més fables son las que traducen las dirocciones justo en el momento en que se generan, decir, durante la ejecueién del programa (reubicacion dindmica) Un ejemplo de reubicacion dindmica consiste en sumarle a cada direccién logica generada a partir de la cual se ha ubicado el programa en I memoria fisica (direcciOn base). La siguiente figura 2 muestra el circulo hardware que realiza esta reubicacion dindmica. ow Omnis Figura 2: Circuito paca tradvciondinkmnica de dceciones usando un rego base El anterior os un circuito para traduccién dindmica de direcciones usando un registro base. {Es imprescindible hacer esta reubicaci6n por software? {No se podria resolver solo con software? Gada vez que la CPU genera un acceso a la memoria, a la direccin logica se le sums el contenido del registro base. Con wa minimo de cireuteria se consigue que todas las direciones logcas se reubiquen covroctamente. Es una solucion més sencilla y eficaz que reubicar estéticamente durante la carga. Si tenemos un sistema mult irecei diferente, En un multiprogramado, cada proceso tendré una direceién base , cada cambio de concexto habra que actalzar el valor del registro base, con la direc apropiada ara al proto entrant unidad de manejo de memoria (MMU) es el componente hardware encargado de tradueir a ‘irecciones fica cada vex que se generan. El sistema de registro base es na MMU muy elemental, las MMU que sirven de apoyo a sistemas simentados o paginados son mucho més complejs. 3.4. Proteccién de zonas de memoria Sabeanos que durante la ejecucion del programa, el sistema operativo debe asepurarse de que no se producen accesos a direcciones pertonocientes al sistema operativoo a los expacos dstinades& ots rocesos. Para poder ejemplificar esto, vamos a dfinis una politica de protecioa sencla, muy imitada. Un proceso ubicado entze las direccones A y B solo puede accoder a las eldas de memoria de ese rango de direcciones. En realidad esta politica podria relajarse bastante, ya.que certs zonas del sistema ‘operative se podrian acceder en modo lectra,y ls process de usuario podsian compartir zonas de datos de forma controlada (para combnicare resultados, mensajes, ete). Para implerentar esa politica de proteccion, nos basaremos en la MMU (la que usa el registro base para reubicacion dindmica). Afaditemos a la MMU un registro limite que apuntaré ala cima, direccién logca que el programa usuario es autrizado a eceder. sre 3: MMU con ern ate y nie ‘Cada vex que el programa intenta acceder a una celda de memoria, primero se comprueba que la dizeccion logica est por debajo cel registro limite. Si es as, el acceso se efectia. De lo contrario, cl ‘acceso no se realiza y se genera una excepcién. El sistema operative recupera cl control de la méquina yy habitualmente aborta el proceso infractor. Con esto se consigue que el proceso solo pueda acceder direcciones logicas entre 0 L-1, donde L es el valor del registro Limite, olo que es lo mais, direceiones fisicas entre B y BrL-1, donde B es el registro base. El valor del registro lignite sera diferente para cada proceso, asi que en cada cambio de contexto kabré que actualizarlo, ‘Cuando al sistema pase a modo privlegindo, por ejemplo, cuando se procesa una Uamada al sisvema 0 en wna interrupcién, el circuit de proveecién deja de aplicarse, para que el cédigo del sistema operativo pueda acceder a todo el espacio de memoria sin ninguna restriecién. 4. La memoria de un proceso Cuando un proceso se encuentra en memoria normalmente se habla de Mapa de Memoria, algo ‘que no es homogéneo, sino que normalmente se forma por regiones o segments. Cuando oe activa la ‘ecucion de un programa, se crcan varias regiones dentro del mapa. Las regione iniciales corresponden fon las distintas soeciones del cjecutable. Cada regién es una zona contigua que se caracteriza pot la direcciéa dentro del mapa del proceso donde comienza y por si tamalio. Ademés tiene asociado wma ‘erie de propiedades y caracteristicas expectficas como: * Soporte de Ia regién, donde esté almacenado el contenido inicial de la regién. Normalmente ve dan dos posibilidades: ‘* Soporte en achivo. Est4 almacenada en un archivo o parte de él. * Sin soporte. No tiene un contenido iniial * Tipo de uso compartido: * Privada. El contenido de la regién es accesible solamente al proceso que la contiene. Las ‘modificacines sobre la regién no se reflejan permanentemente. ‘+ Compartida. El contenido de la regin puee ser compastide por varies proceses. Las ‘modificaciones en el contenido de la regi6n se reflejan permanentement. + Proteccin. Tipos de acceso In region permitido. Tipicamente se proporcionan tres tipos: © Lectura. Se permiten arcoses de lertura de operands de instruceiones. ‘# Ejecucién. Se permiten accesos electra de instrueciones ‘¢ Bscritura. Se permiten accesos de escriturn. + Tamaio fijo o variable. En cl caso dle regiones de tamaio variable se suole distingui sila region rece hacia direcciones de inemoria mayores © wenores. Las regiones que presenta ol mapa inical del proceso se corresponden bésicamente con las secciones del ejecutable mas la pila inicial del proceso. Se debe considerar: = Codigo. se trata de una regidn compartida de lectura/ejecucién. Es de tamasio fjo. El soporte de esta region esta en la secci6n correspondiente del ejecutable. ‘= Datos con valor inicial. Se trata de una regién privada ya que cada proceso que ejecuta, ‘un determinado programa necesita una copia propia de las variables del mismo. Es de lectura/escritura y de tamaio fjo. El soporte de esta region esta en la seceién correspondiente del ejecutable. ‘= Datos sin valor inicial. Se trata de una regi6n privada, de lectura/escritura y de tamaiio fijo (el indicador en la cabecera del ejecutable). Esta region no tiene soporte en el ejecutable ya que su ‘contenido inicial es irrelevante. « Pila, Esta regién es privada, de lectura/escritura. Sirve de soporte para almacenat los registros de activacion de las amadas a funciones (las variables locales, os pardmetros, direccion de retomo, etc). Se trata por lo tanto de una regiéa de tamaio variable que crecer4 cuando se produzcan llamadas a funciones y decreceré cuando se retorno de las mismas. ‘Tipicamente esta regién crece hacia las direcciones més bajas del mapa de memoria. en el mapa inicial existe ya ‘esta region que contiene de forma tipica os argumentos espesificos en la invicacién del programa. ‘Los SO modernos ofrecen un modelo de memoria dinéinico en el que el mapa de un proceso esté, formado por un nilmero variable de rogiones que pueden aadirse o eliminarse durante la ejecucién del mismo. Ademds de las regioncs iniciales, durante la ejecucién del proceso pueden crearse muevas regiones relacionadas con otros aspectos tales como: ‘= Heap, La mayorfa de los lenguajes de alto nivel ofrecen la posibilidad de reservar espacio en tiempo de ejecucién. En el caso de C, se usa la funcién malloc para esto. Esta region sirve de soporte para la memoria dindmica que reserva el programa ea tiempo de ejecucién. Comienza picamente después de la region de datos sin valor inicial (de hecho, en algunos sistemas oe sidera parte de la misma) y cree en sentido contrario a la pila (hacia direccones crecientes). Se trata de una region privada de leetura/eacritura, sin soporte (¢e rellena inicialmente & FD, gue eee son el programa vaya reervando memoria dindmicay dcrce seg I vaya ‘Archives proyectados. Cuando se proyecta un archivo se crea una regién asociada al mismo. ‘Memoria compartida, Cuando se crea una zona de memoria compartida, y se proyecta se crea ‘una regién asociada a la misma. Se trata evidentemente de una region de cardcter compartido, ‘cuya proteccion Ia especifica el programa a la hora de proyectarla. Pilas de thread. Cada thread necesita una pila propia que normalmente corresponde con luna nueva regién en el mapa. Exte tipo de regién tiene Ins mismas caractertetiens que Ia correspondiente a la pila del proceso. Se debe resaltar que la carga de una biblioteca dindmica implica la creacién de un conjunto de regiones asociadas a ella, las que contendriun las serciones de la biblioteca (cBdigo y datoe globalea), 5. Asignacién contigua Un esquema simple y obsoleto, de gestion de meinoria consiste en asignar a cada proceso un zona contigua de memoria para que en cla se encuentre residiendo el mapa de memoria. Unos de estot Posibles esquemas es la gestion contigua basada en particiones dindmicas. Con esta estrategia cada ‘vez que se crea un proceso, ol sistema operativo busca un hueco en memoria de tamaiio suficiente para alojar el mapa de memoria del mismo. El sistema operativo reservard la parte del lueco nocesaria, creard on ella el mapa inicial dl proceso y estableceré una funcién de tradtucidn tal que las direeciones que genera el programa se correspondan con la zona asignada. Bste esquema requiere in hardware de memoria relativamente simple. Tipicamente el procesador tendré dos registros valle, tinicamente ‘accesibles de modo privlegiado, que usaré para tratar cada una de las direcciones que genera un programa: un registro Limite para comprebar que cada direccién que genera el proceso no es mayor ‘que el valor almacenado en este registro, un rogistro base, cuyo valor sumaré ala direccion obteniéndose con ello una direccién de memoria fisica resultante. Con esta estratogia, segin Se van ejecutando distintos proceses, van quedando “fragmentos” en la memoria que dado su pequefo tamao, no podrian ser asignades a ningin proceso. A este problema se Je denomina fragmentaciOn externa y conlleva una mala utiizacign de la memoria por la progresiva, fragmentacion del espacio de almmacenamniento. La fragmentacién externa ocurre cuando las zonas no ocupadas estén marcadas como libres por el sistema operativo La fragmeatacién interna ocurre cuando cexisten zonas no aprovechadas, pero estén marcadas como ocupadas. Esto ocurrer cuando por ejemplo asignamos usa partici fja de 10Kb para acomodar una demauda real de BK y por tanto queda un ‘nueco de 2K? inutiizable. Si no tratamos adecuadamente la fragmentacién, no aprovechamos eficazmente la memoria, disponible. Una soluciOu para la fragmentacion externa consiste en compactar los bloques de memoria, de manera que el resultado final dé un dnico bloque libre. Esta técnica tiene dos problemas: + En primer lugar puede consuinir bastante tiempo. «= En segundo lugar y més importante, al trasladar un bloque de memoria, puede ser que él programa que ocupa ese bloque ya no pueda funcionar, porque las direcciones con las que cree star trabajando han cambiado de lugar. Este Gltimo problema se puede resolver con mecanismos de hardware, 5.0.1. Gestion del espacio libre Para manejar de forma adecuada ls pati ‘i recurrir a. ‘A iciones de la memoria, el SO necesita estructuras de datos debe qué ae oe tia nl enact libre. Un problema a considerar ahora seria ;Cémo el SO Se ne res y cuales ocupadas?. oasis eaetce Setyactura (una tabla) que desriba las particones, en Ia cual se anote qué Sousa una lst de hase ne Petilon, donde comiena y termina, ee. Para gestonar el espacio Libre bits o una lista enlazsae ane’ due Puede implementarse de muchas maneras, por ejemplo un mapa de Be toa pene ttlacada. Ante una oid de espacio de memoria, cabe preguntarse jqut algo fea case abt llr hwo, Se rata de encontrar un lgortino eyo wsoencoicone eles if ‘mayor cantidad de peticiones sin necesidad de recurir a la com 7 Alpina das ee aver cia de peo sn meriad de eerie la compacta, + Peer ate (6). Dna pene gu ete que a mar ‘tamaiio solilcitado. a semes ve aa * Mejor ajuste (best fit). Devolvemos el hueco libre mis pequeio que stistaga a peticén. + Peor ajuste (worst ft). Devolveres el hueco més grand ‘Las téenicas de primer ajuste y mejor ajuste dan rendimientos similares, que son mejores que Ja de peor ajuste. De todas formas, existen politicas ms sofsticadas, como Ia de gemelos (buddies), que producen mucha meos fragmentacion y se usan ampliamnente an le sistemas operatives y bibliotecas de gestion de memoria. 5.0.2, Bibliotecas de enlace dintmico ‘Supongamos que un sistema multiprogramado como Windows, en el. que podemes estar ejecutando simulténeamente muchos programas. Cada una de las aplicaciones consume un espacio en la memoria, principal. Cada una de las aplicaciones est4 consumiendo un espacio de MP diferente al de las restantes. En muchos casos podemos abservar que muchos de los programas usan el mismo eédigo. Por ejemplo, todos los programas que trabajan cn la red usan unas subrutinas amdas “winsock”. Muchos Juegos usan una biblioteca lamada "DirectX", ete. En principio si tenemos varios programas que usen uno de estos médulos de uso general, ocurrird ‘que este médulo estaré copiado en memoria varias veces. Esto en realidad es un desperdicio de Para que ol ebdigo compartido no se copie varias veces, los SO usan las bibliotecas de enlace dindmico (dynamic lnk libraries, DDL). ‘Una DDL es una porcién de cédigo y datos que muchos programas van a necesitar. Cuando un programa se carga en memoria, las DDL necesrias para su ejecucidn se copian tambien en la memoria. Pero si mas adelante se ejecuta otro programa que necesita cédigo de una DDL que ya esta cargada, no se realiza una copia, sino quo se usa la DLL que ya esté cargada. El resultado es que varios programas pueden compartir una misma zona de memoria, con el ahorro consiguiente de recursos. 6. Memoria Virtual En pricticamente todos los SO modernos se usa la técnica de Memoria Virtual (MV). La Memoria en un sistema ge organiza jerérquicamente con niveles del almacenamiento entre os que se mueve Innformacién, dependiendo de la necesidad de a misma en un determinado instante. La tecnica de MY se ocupa de la transferencia de informacin entre la Memoria Principal (MP) y Secundara (MS). [a MS ext nomalmente sparta en un do partcn) as da ut iplenecia sor acién, se le denomina dispositive de pagin je rp. ben rediniento quem de rane det bsado enue ns pov presenta propia de posnied ds referencias, principal coke Propiedad permite que un proceso genere muy poco falls aunque tenga en memoria al solo una, parte de su imagen de ; ; eee MV es intent ‘imagen de memoria (conjunto residente). El objetivo del sistem: de trabajo) piers que est usando un poceo en un detorninado momento (cnjunto ue el conjun 00480 su conjunto de trabajo. Algunee ME Ose, sf conn redeate delprocte conten so * Se Produce un aumento del grado de maltipogramaca al no ser necesaio que todo el mapa de “eats de un prooso eat en momeria principal para poder ejecwtaro. Este aumento implica ‘ejora en el rendimiento del sistema Sin embargo, si el grado de maltiprogramaciin se hace * Se pueden ejecutar programas més grandes que la MP disponible. 7. Paginacion ‘Un esquema de paginacién implica que el mapa de memoria de cada proceso se considers dividido en péginas. A su vez, la MP del sistema se cousidera dividida en zonas del mismo tamafio que se deriominan marcos de pagina. ‘Un mareo de pagina contendré en un determinado instante una pagina de memoria de un proceso. 1g estrutara de dats que reason cada pagina on el marco que ets lmaomada ea tabla de Bl hardware de gestion de memoria (MMU, Memory Management Unit) usa esta tabla para, traducir todas las direcciones que genera un programa, Cada entrada de la tabla de paginas, ademds del nimero de marco que corresponde con esa pagina, contiene informacion adicional como la siguiente: + Informacion de proteccién: Un conjunto de bits que especifica qué tipo de accesoe estan ‘permitidos. Tipicamente se controla el acceso de lectura, de ejecucién y de escritura. 1 Indicacion de pagina vilida: Un bit que especifica si esa pigina es vilida, 0 sea, tiene una, ‘traduccion asociada. « Indicaci6n de pagina accedida (bit de referencia): La MMU activa este bit indicador cuando se ‘accede a una direccion logica que pertenece a esa pagina += Indicacion de pagina modificada: La MMU activa este bit indicador cuando se eseribe en una direceién légica que portenece a esa pégina. Ademés de las tablas de pagina, el SO debe usar una estructura para almacenar el estado de ocupacién de la MP. Se trata de la tabla de marcos de pagina, que permite conocer qué marcos estan libres y cuales ocupados. ‘Por altimo, es necesario que el SO almacene por cada proceso su tabla de regiones, la cual contiene las caracteristicas de cada region especificando qué rango de paginas pertenccen a la misma. Implementacién de la tabla de paginas El uso de una tabla de paginas para traducir las direcciones conlleva un problema de eficiencia y de consumo de espacio. FReaposa slop problemas defcienca, ete se debe a que la MMU al scaler a i psn de ‘memoria solicitada debe consultar la entrada correspondiente de la tabla de péginas. Esto produciré dos accesos a memoria por cada acceso real solcitado por el programa. Esta sobrecarga es intolerable ya que reduce a la mitad el rendimiento dal sistema. etproblemam, Ja MMU sacluyeintemamente una caché de traducciones lamada TLB ara solvents oP pager). Se trate do une pequeis memoria asociativa interna a la MMU que (areal Coacion sobre las za paginas accedidas. santo hay una referencia a memoria, la MMU primero busca la entrada de la tabla de piginas ean TLD, Sise encuentra (TLB hit), nos aborraruos un acceso a meruoria. Sino se encuentra (TLB miss), hay que buscar la entrada en MP. Si la frecuencia de aciertos de TLB(hits) es muy alta, el Gempo medio de acceso a memoria se mantendré en un nivel razonable. En sistemas reales se ha comprobado que una TLB con pocos registros (32 0 64) y una politica de cacht adecuada se pueden alcanzar aciertos mayores al 98%. @oey ‘Veamos un ejemplo, supongamos que el tiempo de acceso a memoria principal es de 4Onseg, que tiempo de acceso a la TLB es de 2nseg y la tasa de acirtos de la TLB es de 98%. Segin estos datas, el tiempo medio de secoso a memoria ser 98% « (2nseg + 40nseg) +2% + (2nseg + 40nseg + 40nse9) = 42,8nseg Gracias a la TLB, el hecio de usar memoria asignada solo provoca un aumento modio del 2,8/40 = 7% en el tiempo de acceso a la memoria. ‘Existen dos altemnativas en el diseio de una TLB dependiendo do si se almacenan identificadores de proceso 0 no. Bn ol caso de que no se almacenen, cada ver que hay wi cambio de proceso el SO debe invalidar la TLB ya que cada proesso tienesu propio mapa. Traficionalmente, la TLB ha sido {gestionada directamente por la MMU sin intervencién del $O. Sin embargos algunos procesadores tienen un disefio alternativo, en el que la TLB es gcstionadla por el SO (TLB gestionada por software). ‘Referente al consumo de espacio, una manera de aftontar el problerma del gasto de snemoria de las tablas de pagina es usar tablas de pagina multinivel. Con este esquema, en ver de tener una ‘inica tabla de paginas por proceso, hay una jerarquia de tablaa. Existe una Giniea tabla de paginas de primer nivel. Cada entrada de esta tabla apunta a tablas de paginas de segundo nivel. A su vez, aa tablas de pagina de segundo nivel apuntan a tablas de pégina de tercer nivel. Ast sucesivamente por cada nivel de la jerarquia. Las tablas de paginas del tltimo nivel apuntan directamente a marcos de pagina. La ventaja de este modelo es que si todas las entradas de de una tabla de piginas de cualqui nivel estan marcadas como invélidas, no es necesario almacenar esta tabla de péginas. ‘Ala hora de traducir una direccin lgica, el nimero de paginas contenido en la misma se considera dividio en tantas partes como niveles exstan. ‘Ademés existen otras propuestas para afrontar este problema de consumo de espacio como por ejemplo, las péeinas invertidas. 8.1. El papel del SO como hemos visto, un sistema paginado depende fuertemente de un hardware de traduccion de irecciones. ;Dénde esté el papel del SO?. Bésicamente en asignar y liberar marcos de pagina, asi ‘como rellenar correctamente las tablas de pagina. ‘Cuando ce carga un proceso en memoria, el SO ealoula cusintos marcos le hacen falta, los reserva ent 1a memoria principal, crea una tabla de péginas para el proceso y rellena dicha tabla con los ntimeres cde marco que ha escogido. A partir de ese momento el hardware se encargara de la traduccion de direcciones. 8.2. Proteccién de paginas La paginacién permite fécilmente garantizar que un proceso solo pueda avceder a su espacio de memoria. Cada proceso tiene su propia tabla de paginas y solo puede acceder a la memoria a través de esa cetructura. Asi qeu los marcos que no figuran en su tabla resultan inaceesibles para el proceso. Puede liber un riesgo de proteccién en el sistema y es que el proceso intente acceder a una pagina 10 ‘Getic mds allé de su espacio logico, es decir, mds allé del final desu tabla de paginas (por ejemplo ‘eceder ala pagina 12 en una tabla con cuatro entradas) Las mquinas con paginacién cuentan uo sal con la tabla de pgnas sino también con un registro limite que indica cutatas piginas logicas tiene exactamenteel proceso. De esta forma los accesos fuera ‘pacio logico del programa serdn intereeptados y abortados antes que se produzcan. ‘Muchos sistemas pagindesincorporan la pesiblidad de deni privilogios de acceso a las péginas {el proceso, En cada entrada de Ie tabla de pginas podemosindicar cou uns bits si una pga es e solo lectura, o de lectura/exeritura, 0 de ejecucidn. Cuando 2 produce un accis a la memoria, la MMU consultaré el tipo de acceso para asogurarse que es legal, en caso conraro, ispara una excepeton, 9. Segmentacion pura La segmentacién es una técnica hardware que intenta dar soporte directo a las regione. Para, ilo, considera el mapa de memoria de un proceso compuesto de miltiples segmentas. Cada regién se ‘almacenaré en un segmento. La MMU maneja una tabla de segmentos. ‘Coda entrada de esta tabla mantiene adomés de informaciéa de protection, el registro base y LUmite correspondientes a esa regién. Una direceién légica est formada por un nimero de segments yuna direceién dentro del sogmento. La traduccion consste en acceder al nimero de segmento 8 una direcciéa dentro del segmento. La traduccin consiste en acceder al nimero de segmento correspondionte y usar los registros base y limite almacenados en dicha entrada para detectar si 1 accoeso es correcto, y en enso afirmative reubicarlo. Dado que cada segmento se almacena en memoria de forma contigua, eate eequema presenta fragmentacién externa. Ademés, debido al tamalio variable de los segmentos, no facta la construccién dde un esquema de memoria virtual. Todas estas deficencias hacen que practicamente no se use en, sistemas reales, 10. Segmentacién paginada La segmentecién paginada intenta recoger lo mejor de las dos anteriores, La segmentaciéa proporciona soporte directo a las regiones del proceso y de la paginacién permite un mejor aprovechamiento de la memoria y una base para construir un esquerna de MV. Con esta técnica un segmento esté formado por un conjunto de pliginas y por tanto, no tione que ‘star contiguo en la memoria, La MMU usa una tabla de segmentes, de forma tal que cada entrada de la tabla apunta a una tabla de péginas. Es importante resaltar que aunque la segmentaciéa paginada offece més funcionalidad que la pagination, requiere hardware més complejo, ademis no esté presente en la mayorla de los procesadores, Por ello, la mayorfa de los SO estén construidos suponiendo que el procesador proporciona un esquema de paginacion 11. Paginacion por demanda La MV se construye goneralmente sobre un esquema de paginacién por demanda. Cuando un proceso necesita acceder & una pagina que uo esté en MP (a lo que denomina fallo de pégina), ‘dSO se encargard de transferisla desde la MS. Si al intentar traer la pégina desde MS, se detecta ‘que no hay espacio en la MP (no hay marcos libres), ser& necesario expulsar una pagina de la MP Y transferirla 8 MS. Por lo tanto, las transferencias desde la MP a 18. MS se realizan normalmente Expulein, El algoritmo para lagr qué pagina debe ser expulsada se denomina algoitmo de reemplazo. 2 eontinuacion se especiican los pasos Upicas en cl tratamiento de un fallo de pagina: u + La MMU produce una excepcién y tfpic ij ‘un regis =F lireccit atale ccepciéu y tipicamente deja en un registro especial la direccién que « Se activa el SO que comprueba trata de una direccién lie su 0 sis correspondiente a unt pégina ee? eae foe ‘con una pagina ausente de memoria. Si la pagina es invélida, oe abort . En caso contraro, se realizan los pasos que se destiben a ‘+ Se consulta la tabla de marcos para buscar uno libre. * Simo hay un marco lib s¢ aplica el all ic re, igoritmo de reemplazo para seleccionar una égina para expulsar. El marco seleecionado se desconectaré de la pégina a la que esté ‘sociado poniendo como invalids la entrada correspondiente, Sila pagina esta modifieada, Previamente hay que escribir su contenido als memoria secundaria. = Una ver que se obtiene el marco libre, ya sea directamente o después de una expulsién, se inicia Ja lectura de la nueva pégina sobre el marco y al terminar la operacién se rellena la entrada, correspondiente a la pagina para que esté mareada como vilida y apunte al marco utilizado En un sistema de MV basado en paginacién, hay bésicamente dos politicas que definen el funcionamiento del sistema de memoria: ' Politica de reemplazo. ' Politica de asignacién de espacio a los procesos. 12. Politica de reemplazo a politica de reemplaso determina qué pagina debe ser desplazada dela MP para dejar sitio ala ‘pagina entrante. Las estrategias de reemplazo se pueden clasificar en dos categorias: = Reemplazo Global. + Reemplazo Local. Con una politica de reemplazo global se puede sclecciouar para satisfacer al fallo de pégina de un proceso un marco que actualmente tenga asociada una pagina de otro proceso. La estratogia de reemplazo local requiere que para servir el fallo de pagina de un proceso sélo puedan usarse marcos cle paginas libres o marcos ya asociados al proceso, ‘Ahora se describirén los tres tipicos algoritmos de reemplazo (aplicables a politicas globales y locales): «= Algoritmo FIFO. «Algoritmo de segunda oportunidad «= Algoritino LRU. 12.1. Algoritmo FIFO El algoritmo FIFO selecciona para la sustitucion la pégina que leva més tiempo en memoria, La implementacién ¢s simple, sin embargo el rendimiento no ¢s siempre bueno. ‘La pagina que lleva més tiempo residente en memoria puede contener instrucciones 0 datos que se -acceden con frecuencia. Ademés en determinadas ocasiones este algoritmo presenta un comportamiento ‘conocido como la anomalia de Belady: ciertos patrones de referencias causan que este algoritmo tenga, més fallos de pagina con més marcos de pagina asignados.

Vous aimerez peut-être aussi