Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Gestin de Memoria
Procesador
El procesador lee de memoria una instruccin para ejecutarla y toma los datos que necesita para una vez tratados, depositar el resultado en memoria.
Es ilgico mantener los programas cargados en memoria. Los dispositivos rpidos de almacenamiento permiten almacenar programas y datos, transfirindolos a memoria cuando se van a ejecutar. Desde los aos 60 existen memorias mucho ms rpidas que las magnticas - cach (tambin ms caras) que permiten almacenar los programas y datos ms utilizados mejorando el funcionamiento del sistema.
Memoria cache
Programas y datos utilizados directamente por el procesador
MEMORIA PRINCIPAL
Memoria secundaria
La memoria fsica se puede ver como una sucesin de bytes o palabras, cada una con su direccin, accediendo a ellas de forma directa indicando la direccin.
1 2 3 4
....
2n -1 2n Memoria Principal como sucesin de palabras
Gestin Memoria.
Memoria lgica
Conceptos bsicos
Memoria lgica / memoria virtual: rango de direcciones de un proceso tal como lo concibe el compilador. MMU. Unidad de manejo de memoria:
la CPU emite direcciones lgicas, la memoria recibe direcciones fsicas. La MMU es un circuito de soporte que se intercala entre CPU y la memoria. Convierte las direcciones lgicas en fsicas ( mapas de memoria). Protege algunas zonas de memoria frente a determinados accesos. Provoca excepciones en caso de que el proceso no 8 respete la restriccin anterior.
Asignacin de memoria
En qu direcciones se debe cargar un programa? El programador define: sentencia de inicio - marca el comienzo de sus
instrucciones. el resto del programa. El compilador lo traduce a lenguaje mquina y asigna a instrucciones y variables un desplazamiento respecto a la sentencia inicial (0 relativo). Asignacin de direcciones relativas al programa. Enlazado el programa (link), el cargador lo coloca en memoria asignndole al 0 relativo una direccin real. Transformacin de direcciones relativas en absolutas o reales. 10
11
Gestin de memoria. Monoprogramacin. Memoria dedicada: sistema utilizado con la primera generacin de maquinas en las que el programador accede directamente al hardware gestionando la memoria desde sus programas.
i Requera
12
Este reparto introduce nuevos problemas: proteccin (independencia de las zonas) como asegurar que los programas de usuario no se vean afectados por esta divisin de memoria.
13
Proteccin de memoria: se trata de impedir el acceso por parte del programa a la zona del SO. Se establece una direccin frontera que limita la zona del SO. (esta direccin suele ser variable permitiendo que el sistema evolucione). Este control se realiza directamente por hardware mediante uno de sus registros. Este control aumenta el tiempo de acceso a memoria, pero mejora el rendimiento.
Registro frontera procesador
direccin
?
no
Error
si
Memoria principal
14
reasignacin dinmica: se realiza durante la ejecucin del programa. Un dispositivo especial de hardware intercepta cada
Registro frontera
direccin lgica generada por el programa + < registro frontera> = direccin real
procesador
Direccin relativa
Memoria principal
Direccin absoluta
El usuario slo maneja en su programa direcciones relativas que irn de 0 a la mxima permitida por el sistema = espacio lgico de direcciones 15
Permite el acceso de varios procesos simultneamente al procesador repartiendo el tiempo entre ellos, para ello se necesita tenerlos en memoria principal. Divide la memoria en trozos: particiones o regiones donde se cargan diferentes procesos. El n de particiones indicar el grado de multiprogramacin del sistema.
16
Gestin Memoria. Problemas Reubicacin: un proceso debe poder ejecutarse en diferentes ubicaciones de la memoria fsica. Escasez: los procesos pueden requerir una cantidad de memoria para ejecutarse superior a la memoria fsica disponible. Proteccin: los espacios de direcciones lgicas de los procesos son independientes entre s; por tanto, la zona de memoria fsica asignada a cada proceso debe ser privada y no debe poder ser invadida por otros procesos. Asignacin: la memoria fsica debe ser repartida entre los distintos procesos que se encuentran en 17 ejecucin.
Los procesos pueden ser cargados por el SO en posiciones de memoria que dependen de la configuracin de memoria de un equipo concreto y del estado de la memoria. Un proceso debe poder ejecutarse en cualquier ubicacin de la memoria fsica que le asigne el SO. Implica que las referencias a memoria que existen en el cdigo del programa, tienen que ser concretadas en posiciones de memoria fsica.
18
Puede resolverse en las siguientes fases: Compilacin (montaje): programas no reubicables. Carga Ejecucin
19
20
21
Bibliotecas dinmicas.
Permiten ahorrar memoria ya que pueden ser compartidas por varios procesos. El compilador genera un stub (sustituto) por cada punto de entrada de la biblioteca que llama a una tabla de funciones de biblioteca en una direccin fija de la memoria lgica.
La 1 vez que se invoca una rutina, la tabla de funciones de biblioteca contiene la direccin de una rutina introducida por el cargador. La rutina introducida por el cargador llama al SO para que cargue la biblioteca dinmica correspondiente. El SO mira si la biblioteca est en memoria. Si no lo est, la carga, y si est, modifica los mapas de memoria para mapearla en el nuevo proceso (compartirla). La rutina introducida por el cargador cambia la tabla de funciones de biblioteca para que pase a apuntar a la biblioteca dinmica. 23
Puede deberse a: los requerimientos de memoria de los procesos tienden a superar la cantidad de memoria fsica disponible. El grado de multiprogramacin es alto Tcnicas para solucionarlo:
superposiciones (Overlays) Intercambios (Swapping). Memoria virtual. Bibliotecas dinmicas.
24
Un proceso puede fragmentarse en partes que pueden ejecutarse de manera independiente, denominadas superposiciones (Overlays). Esta tcnica consiste en mantener en memoria uno de los overlays. (ejemplo: compilador en 2 pasadas). presenta el inconveniente de que debe ser estructurado por el diseador del programa.
25
Sistema operativo Memoria secundaria programa en ejecucin programa cargndose Intercambio solapado procesador
memoria principal
Intercambio de almacenamiento
26
Un programa cargado en memoria espera una nueva orden, el SO lo descarga (swap-out) en dispositivos rpidos, permitiendo carga un programa de otro usuario (swap-in), trado de dichos dispositivos.
27
Memoria virtual: memoria principal que acta como una cach del disco, guarda los fragmentos de procesos ms recientemente utilizados.
Requiere:
tcnicas de intercambio. tcnicas de gestin de memoria virtual: que permitan la divisin del espacio de direcciones del proceso y su asignacin a zonas de memoria fsica no contiguas. reubicabilidad de los segmentos mediante traduccin de direcciones por hardware.
Estas tcnicas suelen recurrir a la carga por demanda para incrementar su eficiencia.
Carga por demanda: los fragmentos de un proceso no se cargan todos inicialmente, slo cuando son referenciados. 28
Multiprogramacin. Proteccin de memoria Cuando existen varios procesos simultneamente hay que proteger sus particiones contra accesos no deseados. Esta proteccin ha de actuar sobre cada referencia de memoria generada. Ha de hacerse con gran rapidez, para ello utiliza registros hardware. Cada particin utiliza 2 registros lmite apuntando a su zona superior e inferior. Cada direccin generada en el proceso a tratar debe estar entre dichos lmites. Exige que las direcciones generadas por los procesos sean absolutas, asignadas durante la compilacin o carga. Se trata de una asignacin esttica.
29
Multiprogramacin. Proteccin de
memoria
Cada proceso tiene su propio espacio de direcciones lgico (independiente de los dems procesos) que se mapea sobre un espacio de direcciones fsicas. Los procesos slo deben poder acceder a su propio espacio de direcciones fsicas, salvo en los casos que el sistema permite compartir zonas de memoria.
30
procesador
Multiprogramacin. Particiones
Al entrar un programa en ejecucin, el SO lo asigna a una cola de acuerdo con la memoria que solicita.
Su eficacia est condicionada por las exigencias de memoria de los programas y su orden de llegada
Multiprogramacin. Particiones
El planificador de trabajos es el encargado de seleccionar el programa a cargar y en qu particin. El planificador puede hacer la seleccin de varias formas: FIFO -por orden de llegada. Fcil de programar, pero infrautiliza la memoria. Seleccionando por tamao adecuado a la particin libre, Best Fit. Analiza la cola de espera y elige el ms adecuado. Seleccionar el primer trabajo en la particin disponible, first fit....
34
Multiprogramacin. Particiones Se mejora el rendimiento combinando: gestin de particiones con tcnicas de intercambio. Su eficacia queda condicionada por la eleccin de tamao y n de particiones.
S.O. Fragmentacin externa 100 k 140k 100k 130k 130 k Fragmentacin interna
Memoria principal
Fragmentacin de memoria 35
Multiprogramacin. Particiones
Compactacin: consiste en recolocar cada cierto tiempo las zonas de memoria utilizadas para conseguir un nico hueco de memoria disponible. Existen distintas formas de recolocar varios programas en memoria. Es necesario que los programas sean reubicables para poder cambiar de zona de memoria principal.
SO T5 (100 K)
T6 (50 K)
T4 (200 K)
Multiprogramacin. Particiones Particiones contiguas de tamao fijo: el n y tamao se define al inicializar el sistema y no se pueden modificar. Al cargarse un programa, el SO le asigna una particin que pueda contenerlo, es necesario que el programa declare sus necesidades de memoria.
37
Multiprogramacin. Particiones
Particiones contiguas de tamao variable:
A medida que aparecen trabajos en la cola, el gestor de memoria les asigna dinmicamente memoria de acuerdo con su tamao, hasta completar la memoria.
T3 T2 T1 Memoria principal S.O. T1 (130 K) T2 (100 K) T3 (140 k) 142 K libre
El SO mantiene una tabla interna donde registra las zonas de memoria disponible (huecos), asignando a cada trabajo una particin del tamao solicitado. A medida que terminan los trabajos, el planificador sustituye un programa por otro, apareciendo huecos libres distribuidos entre zonas ocupadas. Cuando aparecen huecos contiguos, el gestor de memoria tiende a unificarlos, nunca existirn dos particiones contiguas vacas. La memoria sufre un constante proceso de fragmentacin.
38
Multiprogramacin. Paginacin
La paginacin es una forma de asignar direcciones dinmicamente.
El sistema analiza cada nuevo trabajo que se disponga a entrar para conocer el n de pginas que ocupa y busca en su lista de frames libres un n igual de ellos. Si existen, carga en ellos las pginas del programa y construye la correspondiente tabla de pginas, actualizando la lista de frames libres. Cada trabajo en memoria tiene su propia tabla de pginas apuntada por el PCB. Consigue evitar la fragmentacin externa ya que cualquier frame libre es asignable a un trabajo que lo necesite. Continua la fragmentacin interna que se reduce cuando las pginas tienen un tamao pequeo.
39
Multiprogramacin. Paginacin
Rendimiento. Memoria cach. Registros asociativos.
Para agilizar la conversin de direcciones, el sistema mantiene en memoria la tabla de pginas de cada uno de los trabajos activos y utiliza un registro especial: registro base, para indicar la direccin de la tabla de pginas del trabajo en ejecucin en ese momento. Cuando se conmuta de un trabajo a otro, se restaura la direccin de la tabla de pginas correspondientes. Para transformar cada direccin lgica (p, d) en su direccin real, el sistema accede a la tabla de pginas correspondiente (registro base`+ p) y posteriormente a la direccin real (frame + d). Cada direccin provoca 2 accesos a memoria duplicandose los tiempos de ejecucin. Se mejora la utilizacin de memoria pero se aumenta la duracin de los procesos. Para resolver el problema se recurre a memorias pequeas de gran rapidez: cach, reduciendo el tiempo de acceso. En sistemas pequeos pueden utilizarse registros asociativos. 40
Multiprogramacin. Paginacin
Tcnica de gestin que permite asignar memoria de forma discontinua. Se divide la memoria en trozos de tamao fijo: armazones o frames. La memoria lgica en bloques de igual tamao: pginas
Memoria lgica P1 Pginas P2 P3 P4 1 2 3 4 Tabla de pginas F1 F4 F3 F7 F0 F1 F2 F3 F4 F5 F6 F7 P3 P2 Memoria fsica
Frames
P1
Paginacin
P4
41
Multiprogramacin. Paginacin
Pginas compartidas
la tcnica de paginacin permite que varios procesos o usuarios compartan pginas cargadas en memoria.
Ejem: un sistema con 20 usuarios utilizando un editor de tectos: se carga una vez el programa y es utilizado por todos los usuarios con datos propios de cada uno. Para ello cada usuario contiene en su tabla de pginas las entradas correspondientes al editor apuntando todas ellas a los mismos frames y a distintos para los datos.
En las pginas que se desean compartir no se debe alterar ningn valor interno durante su ejecucin (cdigo reentrante). Para evitar que el contenido de pginas compartidas sea modificable se necesita un sistema de proteccin de las pginas, para ello se aade a las entradas de la tabla de pginas una serie de bits de proteccin, complementado con otro bit por entrada de la tabla de pginas denominado bit de validez.
El usuario desarrolla un programa considerando la memoria como algo contiguo, pero este se carga troceado (paginado) en zonas discontinuas de memoria real. El encargado de corresponder el espacio lgico (continuo)
Multiprogramacin. Paginacin
Cada direccin que genera el procesador es interceptada y dividida en 2 componentes:
n de pgina (p) y un desplazamiento en la pgina (d).
Utilizando p como ndice, el gestor de memoria recorre la tabla de pginas hasta localizar dicha pgina y suma d a la direccin de carga correspondiente, obteniendo la direccin real. Cada programa se divide en pginas que se cargan en frames libres que no tienen por qu ser contiguos. Un frame suele tener un tamao potencia de 2 y se establece en el diseo de la arquitectura de la mquina.
procesador P d f d Memoria fsica
Multiprogramacin. Segmentacin
Tcnica de gestin de memoria que pretende acercarse al punto de vista del usuario.
Los programas se desarrollan en torno a un ncleo central (principal) desde el que se bifurca a otras partes (rutinas) o se accede a zonas de datos (tablas, pilas, etc). Un programa es un conjunto de componentes lgicos de tamao variable o un conjunto de segmentos ( el espacio lgico de direcciones se considera como un conjunto de segmentos, cada uno definido por su tamao y un n segmentos.
La segmentacin la realiza el compilador y en ella cada direccin lgica se expresa mediante 2 valores: n de segmento (s) y desplazamiento dentro del segmento (d). Es necesario transformar cada direccin lgica (s, d) en una direccin real (r). Esta conversin la realiza un dispositivo hardware especial que consulta la tabla de segmentos. Permite reducir la fragmentacin interna ya que asigna a cada programa la cantidad de memoria que requiere.
Proceso Principal Rutinas de errores CONTADORES
.......
Tabla de datos 44
Multiprogramacin.Sistemas combinados
Para evitar el problema de la fragmentacin externa en segmentacin pura, y para evitar el tener cargada una tabla de pginas demasiado grande en paginacin, aparecen sistemas que combinan paginacin y segmentacin. Se denominan sistemas de segmentacin paginada (o segmentado-paginados) o de paginacin segmentada (o paginado-segmentados), segn se entienda que los segmentos se dividen en pginas o que la tabla de pginas se segmenta, respectivamente4. La direccin lgica se divide en tres partes: nmero de segmento, de pgina y desplazamiento dentro de la pgina.
45