Administración de Memoria

Anuncio
TEMA 7 ADMINISTRACIÓN DE LA MEMORIA
JERARQUÍA DE ALMACENAMIENTO
Cuando el diseñador se plantea lo que es la gestión de memoria del sistema debe tener en cuenta que la
memoria es unos de los recursos críticos del sistema, es crítica porque un programa al ejecutarse debe estar
cargado en M. entonces cuanta más memoria tengamos o mejora la optimicemos más programas podremos
guardar en ella.
¿Qué quiere un diseñador?Que sea barata, gran capacidad y muy rápida.
Pero no se pueden conseguir las tres cosas.
A mayor capacidad el tiempo de acceso es mucho mayor, es más lenta.
Se observa que ha mayor capacidad menor coste por bit, comparamos Módulo de memoria y disco duro, no
cuesta lo mismo un disco duro de 8 gigas que 8 gigas de memoria Ram.
A menor tiempo de acceso, si queremos memoria más rápida, el coste se nos dispara.
Los diseñadores del sistema no pueden tener un solo tipo de memoria donde alojar todoas las memorias, existe
una jerarquía de memoria.
Esa jerarquía intenta solucionar esos inconvenientes a la hora de diseñar el esquema de memoria.
Registros
Jerarquía tradicional de memoria
Caché
Memoria principal
Disco Magnético
Cinta Magnética
Registros
Caché
Volátil
Caché de disco
No volatil
Cinta Magnética
Cinta mgnética
Memoria principal
Interna
Disco Magnético
Externa
Disco óptico Jerarquía moderna de memoria
En esa jerarquía podemos ver que se cumplen una seria de condiciones:
• Al bajar de nivel aumenta la capacidad de la memoria.
• Al bajar de nivel disminuye el coste por bit.
• El registro es el más caro, luego la cache...
• Al bajar de nivel se observa que el tiempo de acceso aumenta. Acceder a un disco óptico es más lento
que a un disco magnético.
• Si seguimos bajando de nivel, disminuye la frecuencia de acceso:no es lo mismo que el tiempo que es
el tiempo que trae el dato, es el nº de veces que accede a esa memoria.
1
Esta es la clave del funcionamiento de la jerarquía de memoria, esa disminución de frecuencia se debe sobre
todo a lo que se llama como principio de localidad o cercanía de referencia.
Sin embargo ese conjunto va cambiando a lo largo del tiempo.
Ese principio lo que establece es que un proceso durante su funcionamiento hacer referencia a muchas
funciones, pero durante un breve espacio de tiempo el proceso hace referencia a un pequeño grupo de
referencias.
La caché va a intentar que el tiempo de acceso sea mucho más rapido para no tener que acceder a disco o Mp,
distinguimos entre M.interna y M.externa, normalmente lo que es el disco magnético se le suele conocer como
M.secundaria.
Vamos a ver los pasos que hay que realizar para la carga de un programa en M.p:
Programa
fuente
Compilador
otros o ensamblador
módulos biblioteca
objeto Módulo del
objeto sistema
Enlazador
biblioteca Módulo
del sistema de carga
cargada
dinámicamente
Cargador
Imagen del proceso
en memoria
Tenemos un programa fuente, cuando lo compilamos obtenemos un módulo objeto que luego necesita ser
enlazado con el resto del los módulos objetos que tenga el sistema, para formar un módulo de carga que es el
que finalmente se introduce en memoria, una vez cargado de memoria es cuando verdaderamente podemos
decir que es un proceso, entonces tenemos toda la imagen del proceso.
Una vez cargado en memoria se puede enlazar con bibliotecas del sistema de forma dinámica.
2
Esas son las fases por las que pasa el programa para convertirse en proceso.
El proceso está definido por la imagen que si recordamos tenía:
• El Bloque de control de procesos
• Datos relativas
• Instrucciones Referencias a datos fisicas
Referencias a intrucciones: lógicas o simbólicas:
• La Pilas
Si se observa, consta de datos e intrucciones que tienen referencias a memoria, referencias a datos y
referencias a sus propias instrucciones.
Esas referencias, o direcciones, en realidad pueden ser de tres tipos:
Lógicas, relativas o absolutas.
Direcciones
Direcciones
Direcciones
simbólicas
PROGRAM
relativas
PROGRAM
absolutas
PROGRAM
1024
0
i
j
JUMP 1424
JUMp 400
JUMP I
1424
400
LOAD 2224
LOAD 1200
LOAD J
2224
1200
DATA
DATA
DATA
Dir simbólicas: no tienen nada que ver con la posterior ubicación física de ese dato, son normalmente las
direcciones que emplea el programador.
Dir relativa: vienen expresadas respecto a un conjunto determinado, normalmente al principio del programa.
Estas direciones normalmente son las que utiliza el cargador y el enlazador.
JUMP 400: desde el principio saltar 400.
Dir. absolutas o físicas: son las que realmente ocupan de memoria real, de memoria física.
Son las que realmente se usan en ejecución, el programa solo entiende de direciones físicas, para ellos
necesitamos hacer una traducción de las simbólicas y relativas a las físicas.
Esa traducción de direcciones, también conocida como ligadura de direcciones se puede hacer en distintos
instantes, en cualquiera de las fases que hemos vistos, por las que pasa el programa a proceso.
• Tiempo de compilación
• Tiempo de carga
• Tiempo de ejecución.
Traducción en tiempo de compilación
3
En tiempo de compilación o enlazado, observar que lo que tenemos que hacer es generar ya un módulo de
carga con direcciones físicas, eso implica que el programador, el cargador o el enlazador tenga que tener
conocimiento de la gestión de memoria, qué partes están libres y qué partes están ocupadas.
Por otro lado, el modo de carga que se genera, solamente se puede ejecutar en la zona que se haya
especificado, no puede cambiar de lugar, si varía de zona tiene que volver a compilarlo de nuevo.
Si un proceso sale de memoria y luego entra de nuevo debe ser en la misma zona de memoria.
Para solventar esos problemas la otra manera es que se realice en tiempo de carga.
Traducción en tiempo de carga
En tiempo de carga por un lado elimina que el programador conozca como se está gestionando la memoria.
En este caso la gestión de memoria la va a realizar el cargador que decide donde va a ubicar el proceso, pero
estamos en lo mismo de antes. Puede que yo introduzca el programa en memoria física, y ya tenga las
direcciones físicas, por lo que no puedo cambiarlo de sitio.
Si un proceso se suspende, cuando se vuelve a activar se situa en la misma zona de memoria.
Traducción en tiempo de ejecución
En el último momento.
Cuando yo vaya a ejecutar la instrucción es cuando se va a traducir la dirección.
Este esquema es un método muy flexible, porque el proceso puede estar ubicado en cualquier parte, ya que es
justo cuando voy a ejecutarlo es cuando lo traduzco.
Esa traducción necesita la ayuda del hardware, y tampoo es un hardware muy complejo, el criterio concedía el
hardware necesario para realizar esa traducción en tiempo de ejecución.
dirección base límite
dirección dirección
relativa absoluta si
CPU + <= Memoria
no
error de direccionamiento
El programa que está hubicado en memoria sólo tiene direcciones relativas, entonces las CPU va generando
todas la direcciones relativas, y nosotros le sumamos el contenido de un registro hardware que contiene el
inicio donde está ubicado el proceso, entonces obtenemos la dirección absoluta, posteriormente podemos
comparar esa dir absoluta con otro registro hardware que lo que contiene es el límite de la zona de memoria
ocupada por el proceso, si está dentro del límite podremos acceder a memoira, si está fuera del límite
provocaremos un error de direccionamiento.
4
Observar que con dos registros hardware y una suma y comparación podemos realizar la traducción
Proporciona un mecanismo de protección de la memoria porque si se pasa del límite que tiene cada proceso
daríamos un error de direccionamiento.
Con este esquema el proceso lo puedo poner en cualquier parte de la memoria, porque la traducción la hago
justo cuando lo voy a ejecutar.
Cada vez que cambiemos de proceso o de contesto, esos registros límite y base deben actualizarse, y deben
almacenarse en el BCP para que cada vez que cambiemos de proceso tengamos un valor válido.
FUNCIONES DEL ADMINISTRADOR DE MEMORIA
Debe conocer:
Qué zonas de la memoria están libres y qué zonas ocupadas.
Introducir los procesos en memoria.
Se encarga de asignar y desasignar memoria a los procesos conforme vayan necesitando y liberando.
Debe controlar el intercambio entre Mp y Ms.
Además de esas funciones, el administrador de memoria debe cumplir 3 requisitos:
Protección:
No solo debe proteger la zona de memoria del proceso, sino de la memoria del sistema operativo u otro
proceso.
Compartición de memoria:
cuando se ejecutan dos procesos iguales, debe permitir que dos procesos compartan la memoria.
Reubicacion:
Un proceso puede cambiar de zona de memoria durante su ejecución.
Este requisito tiene sentido evidentemente es sistema multiprogramado.
En un sistema monoprogramado no tiene sentido porque si solo hay un proceso, ¿para qué lo voy a cambiar de
sitio.
Distintos esquemas de asignación de memoria
Esquemas de gestión de memoria
◊ Asignación completa y contigua: el proceso se ejectua en una zona continua
• Máquina desnuda
• Monoprogramación
• Particiones mútiples:
◊ Particiones fijas
5
◊ Sistema compañero
◊ Particiones variables.
◊ Asignación completa y no contigua:
• Paginación
• Segmentación
• Segmentación−paginación
◊ Asignación parical y no contigua:
• Memoria Virtual
Asignación completa y contigua:
El proceso se ejectua en una zona continua
Máquina desnuda:Es un sistema donde no hay S.O y no hay gestor de Memoria, quien lleva la cuenta es
el propio programador.
Suelen ser pequeños microprocesadores, señales de humo, dedicados a una sola cosa.
Monoprogramación: La Memoria. dividida en dos partes:
Una parte en el S.O. en un exremos de la memoria, zona alta o baja, y el resto se deja para procesos de
usuarios, ejMSDOS.
La elección de donde se debe encontrar el S.O. vendrá dada por donde se encuentra el vector de
interrupciones, lo normal es situarlo junto al vector de interrupciones, parte alta o baja, algunos sitemas
prefieren separarlo.
Es un sistema simple que requiere de una protección del S.O, que el proceso de usuario no pueda acceder al
S.O. Para ello necesita un registro hardware, ya sea un único registro o dos registros.
¿qué le pasa al MS−DOS? no hay registro límite y cualquier proceso puede cargarse el S.O facilmente,
observar que la proecci´´on tampoco es muy complicada, las direcciones que se generan se recuperan con el
registro límite.
Ej. IBM1120 y Spectrum : zona baja y 2115B: zona alta
Particiones mútiples:
Particiones fijas
Sistema compañero
Particiones variables.
Sistema
Operativo
Sistema
Usuario
Operativo
+
Usuario
Usuario
Vector de
Registro
límite
Límite
Superior
Registro
Límite
inferior
6
interrupciones
Límite
Libre
Sistema
Operativo
Libre
+
Vector de
Vector de
interrupciones
Interrupciones
Libre
Zona baja Zona Alta Sin vector de interrupciones
MULTIPROGRAMACIÓN CON PARTICIONES FIJAS
Es la estrategia más simple, consiste en dividir la memoria en una serie de particiones, en cada una de esas
particiones se aloja un proceso.
El nº y tamaño de esas particiones se caracteriza porque es un número fijo que se establece en la fase de
generación del sistema.
Selección del tamaño de la partición
El diseñador del sistema antes de implementar el sistema debe establecer los valores.
Hay que tener en cuenta:
• el nº de particiones va a determinar el grado de multiprogramación del sistema, ya que si en cada
particion hay un proceso y hay 3 particiones solo podré tener 3 procesos simultaneamen−te, si quiero
un grado de multiprogramación elevado necesitaré muchas particiones.
• el tamaño determina dos aspectos:
♦ el tamaño máximo de un proceso, para que se pueda ejecutar un proceso necesito asignarlo a
una partición, por lo tanto el tamaño máximo de un proceso es el tamaño máximo de la
partición.
♦ el tamaño tb va a afectar a la cantidad de memoria que asigne a un proceso, es decir, una vez
que establezca las particiones cuando tengo el proceso le asigno un proceso, y ese proceso
puede o no ocuparla entera, si no ocupa toda la partición, hay un desperdicio de memoria que
se conoce como fragmentación interna.
Tenemos 2 alternativas:
Todas las particiones del mismo tamaño: Es una estrategia más simple, pero es poco flexible,
Particiones de distinto tamaño
ALGORITMOS DE COLOCACIÓN
Yo tengo una serie de procesos, ¿dónde ubico cada proceso?
Estos algoritmos dependen de la particion que hayamos elegido.
7
Particiones iguales: es trivial el algoritmo, se mete en cualquier partición de forma automática.
Particiones distintas: hay varias alternativas.
Una cola de procesos por partición: llega el proceso y lo sitúo en la cola donde menor fragmentación interna
genere. Cuando la partición queda libre seleciono el primero de la cola
Inconveniente: puede haber particiones libres con procesos esperando en otra cola porque su partición está
ocupada
Sistema Operativo
Procesos
Nuevos
Otra alternativa es tener una única cola de procesos:
Sistema Operativo
Procesos nuevos
Llega un proceso y lo situo en la cola, cuando una partición queda libre tendré que selecciónar que proceso de
la cola va en esa partición, es digamos la selección de un proceso.
Para seleccionar ese proceso hay diversos algoritmos, los que más se suelen emplear son:
Mejor ajuste: Cuando una partición queda libre, elegimos el proceso que menor fragmenta−ción interna
produzca.
Primer ajuste: Vamos recorriendo la cola hasta encontrar el primer proceso que quepa en la partición.
Si se observa, toda esta función de colocar procesos en memoria, en una partición determinar es en hacer que
un proceso sea aceptado en el sistema, que pase de ese estado de nuevo a un estado de listo, esa transición de
nuevo a listo es del planificador a largo plazo.
Todos estos algoritmos es el planificador a largo plazo.
Protección entre particiones: debo evitar que un proceso acceda a zonas de memoria fuera de su partición:
Hay dos alternativas:
dos registros límites, zona superior y zona inferior de la partición: parto de una dirección absoluta.
límite inferior límite superior
dir. absoluta
CPU >= < si Memoria
no no
8
error de direccionamiento
partimos de una dirección absoluta, y a hay que comprobar que la dirección se encuentre entre los dos límites
Dos registros,un registro base y otro longitud:
longitud base
dir. relativa dir. absoluta
CPU <= + Memoria
Si Sí
no
error de direccionamiento
Partimos de una dirección relativa, se compara con la longitud, si está dentro de la partición se puede acceder
a el.
¿Cuál es mejor?El de base y longitud: Al ejecutarse direcciones relativas la traducción de direcciones se
produce en el momento de ejecución, por lo cual el proceso es reubicable y puede cambiar de partición,
mientras que con uno de registro límite la traducción debe ser previa a la ejecución del proceso.
Con el registro longitud y base, la ventaja que tiene es que al partir de una dirección relativa mientras realiza
la protección hace la traducción direcciones en tiempo de ejecución y con eso se puede reubicar el proceso en
otra partición.
El otro aspecto son los elementos de control que necesitamos para llevar a cabo el control de la memoria, qué
zona de la memoria están libres y qué zonas están ocupadas.
En este caso el único elemento que necesitamos en usa tabla de particiones, que tiene una entrada por
particion, y contiene la dirección base de la partición el tamaño y como se encuentra.
Número de la partición
0
1
2
3
4
5
Base de la partición
0K
100K
400K
500K
750K
900K
Tamaño de la partición
100K
300K
100K
250K
150K
100K
Estado de la partición
ASIGNADA
LIBRE
ASIGNADA
ASIGNADA
ASIGNADA
LIBRE
Esa tabla es la que se crea en el momento de la generación del sistema.
Inconvenientes: Por un lado, presenta fragmentación interna, si el proceso no ocupa toda la partición se
desperdicia espacio.
El tamaño de la partición es fijo. Si quiero cambiar el tamaño tengo que volver a generar el sistema, esto
implica que el grado de multiprogramación del sistema sea también fijo.
9
El tamaño del proceso está limitado a la máxima partición.
Sistema que lo usan:
IBM
OS/MFT (Operative System Multiprograming with a Fixed Number o Task)
MULTIPROGRAMACIÓN CON PARTICIONES VARIABLES O DINÁMICAS
El sistema IBM o OS/MUT,
Intenta vencer los inconvenientes anteriores.
Usa la memoria que él necesite, se va creando lo que necesita.
Si un sistema se suspende o bloquea se va de memoria y deja ese espacio para otro proceso.
Con este esquema las particiones en nº y tamaño van cambiando a lo largo del tiempo.
Los procesos son reubicables.
Sistema
128k
Operativo
Sistema
128k
Operativo
Sistema
128k
Operativo
Sistema
128k
Operativo
320k
320k
320k
Espacio
de
procesos
896k
Proceso1
Proceso1
Proceso1
10
Descargar