Está en la página 1de 45

SO.

Gestin de Memoria

Gestin de memoria. Conceptos Bsicos


Toda la informacin ha de estar en memoria antes de iniciar su fase de ejecucin. A menor memoria fsica, mayor el n de accesos para obtener informacin. Tiempo de acceso a memoria: tiempo que tarda el ordenador en obtener la informacin desde que se inicia una operacin de lectura o escritura hasta que acaba. Tiempo de ciclo de memoria: el transcurrido entre la peticin de 2 rdenes consecutivas. Aunque el procesador sea rpido, si la velocidad de acceso a memoria es lenta, el rendimiento de dicho ordenador es bajo.
2

Gestin de memoria.Conceptos Bsicos


La memoria hay que gestionarla de la forma ms eficiente por tratarse de un recurso:
limitado. caro. determinante en el rendimiento general de un ordenador.

De ah que el SO dedique parte de su software a esta gestin.


3

Gestin de memoria.Conceptos Bsicos


Memoria principal Dispositivos E/S

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.

Gestin de memoria.Conceptos Bsicos.


Con el desarrollo del hardware se define el esquema de direccionamiento y configuracin de su memoria:
con 16 bits = 216 espacio mximo direccionable.

Segn tamao de memoria a la que se accede :


direccionables por byte direccionables por palabra

Gestin de memoria.Conceptos Bsicos


Jerarqua de almacenamiento

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

Programas y datos deben transferirse a MP antes de ser tratados

Memoria secundaria

Gestin de memoria.Conceptos Bsicos.


Memoria Fsica
posicin 0 Byte o palabra

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

Acceso directo por direccin

....
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.

Gestin Memoria.Conceptos bsicos


El problema de gestin de memoria:
Distintos procesos compiten por obtener memoria fsica. El SO asigna y mapea sus memorias lgicas en memoria fsica.
*

Esta asignacin puede ser:


Dispersa: las direcciones de memoria fsica de un proceso no tienen por qu ser contiguas. El rango asignado consta de varios intervalos. Dinmica: cambia con el tiempo.
9

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

Gestin de memoria. Monoprogramacin


Modo de trabajo en el que slo un programa utiliza el procesador y la memoria principal hasta que termine, cediendo despus el control al procesador para que sea cargado el siguiente programa.

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

un profundo conocimiento del hardware, desviando el objetivo principal: proceso de la informacin.


Programa de usuario zona no utilizada

12

Gestin de memoria. Monoprogramacin.


Particin nica. Divisin de memoria es la introduccin de SO para gestionar mejor el hardware, divide la memoria en 2 zonas: una utilizable por el usuario y otra reservada para la parte residente del propio SO, denominada monitor residente, encargado entre otras funciones, de gestionar la memoria.
Monitor residente Programa de usuario Zona no utilizada

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

Gestin de memoria. Monoprogramacin.

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

Gestin de memoria. Monoprogramacin.


Reasignacin de direcciones: inicializado el sistema, el contenido del registro frontera indica a partir de donde puede cargarse el programa de usuario. Para ello es necesario reasignar las direcciones del programa en funcin de la frontera. Hay 2 formas: reasignacin esttica: se hace en la compilacin o durante la carga del prog. en memoria, (cualquier cambio en el tamao del SO exige compilar o
cargar de nuevo el programa).Fcil

pero demasiado rgida.

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

Gestin de memoria. Multiprogramacin

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.

Gestin Memoria. Problema de reubicacin

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

Gestin Memoria. Problema de reubicacin

Puede resolverse en las siguientes fases: Compilacin (montaje): programas no reubicables. Carga Ejecucin

19

Gestin memoria. El problema de reubicacin.

Ubicacin en tiempo de compilacin


El compilador /montador genera las referencias a posiciones de memoria fsica. Se asume que no existe hardware de memoria virtual (MMU). Existen 2 opciones:
programas no reubicables: se utilizan direcciones con direccionamiento absoluto. Es necesario conocer donde va a estar ubicado el proceso. ( call 4000). Programas reubicables: todas las instrucciones con referencia s a memoria utilizan direccionamiento relativo. ( callr +4000).

20

Gestin memoria. El problema de reubicacin.

Reubicacin en tiempo de carga.


El compilador genera un fichero objeto donde deja referencias sin resolver y las marca como tales. El cargador busca una posicin de memoria libre donde ubicar el programa y resuelve las referencias en funcin de esta ubicacin. En el caso ms sencillo suma el origen de la memoria libre a las posiciones no resueltas

21

Gestin memoria. El problema de reubicacin.

Reubicacin en tiempo de ejecucin.


Las referencias a memoria se resuelven en tiempo de ejecucin. Existen dos casos importantes de reubicacin:
Traduccin de direcciones mediante MMU.
Ejemplo de MMU utilizando registro base

Bibliotecas dinmicas. (.dll en Win, .so en Linux).


Bibliotecas cuyo cdigo no se encuentra en el fichero de un ejecutable: se cargan por demanda en tiempo ejecucin. Pueden ser compartidas en memoria por varios procesos. Ahorro de memoria fsica. Ejecutables ms reducidos.
22

Gestin memoria. El problema de reubicacin.


Reubicacin en tiempo de ejecucin:

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

Gestin de Memoria. Problema de escasez.

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

Gestin de Memoria. Problemas de escasez. Tcnicas de superposiciones (Overlays)

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

Gestin de Memoria. Problemas de escasez. Mtodo de intercambios (swapping)


Intercambio de almacenamiento: el desarrollo de dispositivos rpidos de almacenamiento secundario, mejora la utilizacin de memoria. Esta tcnica conocida como swapping surge de la necesidad de atender a varios usuarios (tiempo compartido). Tcnica que permite ejecutar concurrentemente ms procesos que los que caben en memoria fsica.
Sistema operativo
Memoria secundaria

Sistema operativo Memoria secundaria programa en ejecucin programa cargndose Intercambio solapado procesador

memoria principal

Intercambio de almacenamiento

26

Gestin de Memoria. Problemas de escasez. Mtodo de intercambios (swapping)


Utiliza el disco para almacenar la imagen de memoria de los procesos que no caben. Operaciones bsicas:
swap in: la imagen del proceso se carga en memoria primaria. swap out: la imagen del proceso se transfiere a memoria secundaria.

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

Gestin de Memoria. Problemas de escasez. Tcnica de memoria virtual


A medida que el tamao de los procesos crecen, resulta ms costosa la tcnica de intercambio. Existe la alternativa de intercambiar fragmentos de los procesos.

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

Multiprogramacin . Proteccin de memoria


Otra solucin ms flexible: carga un registro con la direccin de inicio de la particin, registro base. otro con el tamao de la particin, registro lmite. Es posible la asignacin dinmica de direcciones actualizando el contenido del registro base. cada direccin generada por el proceso debe ser menor que el registro lmite.
registro lmite + registro base = direccin absoluta correspondiente
R. limite direccin ? no Error 31 si + Memoria principal R. base

procesador

Multiprogramacin. Asignacin de memoria


Mtodos de asignacin: asignacin contigua: el espacio de direcciones lgicas de un proceso se mapea sobre una nica zona de memoria fsica: las direcciones de memoria son contiguas. Particiones fijas. Particiones variables asignacin dispersa: la memoria lgica se divide en fragmentos (pginas, segmentos), que se mapean sobre zonas de memoria fsica no contiguas. Paginacin. Segmentacin.
32

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

Particiones gestionadas con colas de espera 33

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....

Particiones con cola de espera nica

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)

SO T5 T6 T4 (100 K) (50 K) (200 K)

T4 (200 K)

162 k Memoria principal. Compactacin de trabajos 36

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)

y el espacio fsico de direcciones (discontinuo), es el hardware de traslacin dinmica de direcciones.


42

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

f Hardware de paginacin Tabla de pginas 43

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

También podría gustarte