TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
tercera unidad :3
1.
2. El Administrador De Memoria se refiere a los distintos métodos y operaciones que se encargan de obtener la
máxima utilidad de la memoria, organizando los procesos y programas que se ejecutan de manera tal que se
aproveche de la mejor manera posible el espacio disponible.
Para poder lograrlo, la operación principal que realiza es la de trasladar la información que deberá ser
ejecutada por el procesador, a la memoria principal. Actualmente esta administración se conoce como
Memoria Virtual ya que no es la memoria física del procesador sino una memoria virtual que la representa.
Entre algunas ventajas, esta memoria permite que el sistema cuente con una memoria más extensa teniendo la
misma memoria real, con lo que esta se puede utilizar de manera más eficiente. Y por supuesto, que los
programas que son utilizados no ocupen lugar innecesario.
Las técnicas que existen para la carga de programas en la memoria son: partición fija, que es la división de la
memoria libre en varias partes (de igual o distinto tamaño) y la partición dinámica, que son las particiones de
la memoria en tamaños que pueden ser variables, según la cantidad de memoria que necesita cada proceso.
Entre las principales operaciones que desarrolla la administración de memoria se encuentran la reubicación,
que consiste en trasladar procesos activos dentro y fuera e la memoria principal para maximizar la utilización
del procesador; la protección, mecanismos que protegen los procesos que se ejecutan de interferencias de
otros procesos; uso compartido de códigos y datos, con lo que el mecanismo de protección permite que ciertos
procesos de un mismo programa que comparten una tarea tengan memoria en común.
3. Características de la memoria real o física y de la memoria virtual
Memoria real o física:
Capacidad, que representa el volumen global de información (en bits) que la memoria puede
almacenar.
Tiempo de acceso, que corresponde al intervalo de tiempo entre la solicitud de
lectura/escritura y la disponibilidad de los datos.
Tiempo de ciclo, que representa el intervalo de tiempo mínimo entre dos
accesos sucesivos.
Rendimiento, que define el volumen de información intercambiado por unidad de tiempo,
expresado en bits por segundo.
No volatilidad, que caracteriza la capacidad de una memoria para almacenar
datos cuando no recibe más electricidad.
Existen dos tipos de memorias RAM: SRAM Y DRAM.
4. Memoria virtual:
Es una combinación entre hardware especial y el sistema operativo hace uso de la memoria
principal y la secundaria para hacer parecer que el ordenador tiene mucha más memoria
principal (RAM) que la que realmente posee. Aunque la memoria virtual podría estar
implementada por el software del sistema operativo, en la práctica casi siempre se usa una
combinación de hardware y software, dado el esfuerzo extra que implicaría para el procesador.
Este método es invisible a los procesos.
Debido a que sólo la parte de memoria virtual que está almacenada en la memoria principal, es
accesible a la CPU.
La memoria virtual ha llegado a ser un componente esencial de la mayoría de los S.O actuales.
Y como en un instante dado, en la memoria sólo se tienen unos pocos fragmentos de un proceso
dado, se pueden mantener más procesos en la memoria. Es más, se ahorra tiempo, porque los
fragmentos que no se usan no se cargan ni se descargan de la memoria. Sin embargo, el S.O
debe saber cómo gestionar este esquema.
La memoria virtual también simplifica la carga del programa para su ejecución llamado
reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición
de la memoria física.
La cantidad de memoria máxima que se puede hacer ver que hay tiene que ver con las
características del procesador. Por ejemplo, en un sistema de 32 bits, el máximo es 232, lo
que da 4096 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de
aplicaciones mucho más fácil, al poder ignorar completamente la necesidad de mover datos
entre los distintos espacios de memoria.
5.
6. 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.
7. 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.
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.
8. Direcciones
simbólicas
Direcciones
relativas
Direcciones
absolutas
i
j
PROGRAM
JUMP I
LOAD J
DATA
0
400
1200
PROGRAM
JUMp 400
LOAD 1200
DATA
1024
1424
2224
PROGRAM
JUMP 1424
LOAD 2224
DATA
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 instrucciones: lógicas o simbólicas:
La Pilas
Si se observa, consta de datos e instrucciones 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.
9. 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 direcciones 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.
10. Traducción en tiempo de compilación
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.
11. 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 tampoco 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
12. El programa que está ubicado 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 memoria, si está fuera del
límite provocaremos un error de direccionamiento.
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.
13. 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.
Reubicación:
Un proceso puede cambiar de zona de memoria durante su ejecución.
Este requisito tiene sentido evidentemente es sistema multiprogramado.
En un sistema mono programado no tiene sentido porque si solo hay un proceso, ¿para qué lo voy a cambiar de
sitio.
14. Distintos esquemas de asignación de memoria
Esquemas de gestión de memoria
∞Asignación completa y contigua: el proceso se ejecuta en una zona continua
Máquina desnuda
Mono programación
∞Particiones múltiples:
Particiones fijas
Sistema compañero
Particiones variables.
∞Asignación completa y no contigua:
Paginación
Segmentación
Segmentación-paginación
∞Asignación parcial y no contigua:
Memoria Virtual
15. ∞ Asignación completa y contigua:
El proceso se ejecuta 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.
∞ Mono programación: La Memoria. dividida en dos partes:
Una parte en el S.O. en un extremos de la memoria, zona alta o baja, y el resto se
deja para procesos de usuarios, ejemplos dos.
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 sistemas 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.
16. La paginación es uno de los esquemas de manejo de memoria en donde un computador
puede almacenar y recuperar datos de un dispositivo de almacenamiento secundario
para su uso en la memoria principal. En el esquema de manejo de memoria de
paginación, el sistema operativo recupera datos desde un dispositivo de almacenamiento
secundario en bloques de un mismo tamaño llamados páginas. La principal ventaja de
paginación sobre la segmentación de memoria es que permite al espacio de dirección
física de un proceso ser no contiguo. Antes de la paginación, los sistemas debían poner
programas en almacenamiento de forma contigua, lo que causaba varios problemas de
almacenamiento y fragmentación.
17. El método básico para implementar paginación consiste en dividir la memoria física en bloques
de tamaño fijo llamados frames (marcos) y dividir la memoria lógica en bloques de mismo
tamaño llamados Pagés (páginas). Cuando un proceso se va a ejecutar, sus páginas son
cargadas en cualquier marco de la memoria de almacenamiento secundario. Este esta dividido
en bloques de tamaño fijo del mismo tamaño de los marcos en memoria.
Hardware de Paginación.
El tamaño de pagina (como el marco de página) es definido por hardware. El tamaño de una
pagina es típicamente una potencia de 2, variando entre 512 B y 16 MB por pagina,
dependiendo de la arquitectura del computador. La selección de una potencia de 2 como
tamaño de página hace la traducción de una dirección lógica a un número de pagina y offset
de página algo fácil. Si el tamaño del espacio de dirección lógica es 2^m y el tamaño de
página 2^n unidades de dirección (bytes o palabras), entonces los m-n bits de mayor orden
de la dirección lógica designan el número de pagina, y los n bits de menor orden designan el
offset de página.
Esquema Hardware de paginación.
Cualquier dirección generada por la CPU es divida en dos partes: un número de página (p) y
un offset de página (d). El número de pagina es usado como índice en una tabla de página. La
tabla de página contiene las direcciones base de cada pagina en la memoria física. Esta
dirección base es combinada con el offset de página para definir la dirección de memoria
física que es enviada a la unidad de memoria.