Publicado el 8 de Mayo del 2019
954 visualizaciones desde el 8 de Mayo del 2019
1,6 MB
111 paginas
Creado hace 16a (30/09/2008)
4
Memoria
Memoria
• Conceptos generales: hard / soft
• Esquemas contiguos de asignación:
– Fragmentación
– Compactación
• Esquemas no contiguos:
– Paginación
– Segmentación
– Segmentación paginada
Memoria Virtual: paginación por
demanda
SOI
1
Conceptos generales
Conceptos generales
hardware
hardware
Jerarquía de
memoria:
Las cachés.
Tiempo efectivo
de acceso.
SOI
2
Jerarquía de Memoria
Jerarquía de Memoria
Los computadores usan una jerarquía de
memoria similar a la que muestra la figura.
Almacén
Auxiliar
Memoria
Principal
CPU
Caché
Hardware
Registros
Caché(s)
Hardware
Bus de memoria
Bus de E/S
+ rápida en tiempo acceso –
– Tamaño +
SOI
3
Cachés
Cachés
Caché –contiene copia de instrucción/dato
que son accedidos +rápido que el original.
Hacer los casos frecuentes eficientes, los
caminos infrecuentes no importan tanto.
Denominamos:
• Acierto de caché:
item en caché.
CPU
• Fallo de caché:
no está en caché
operación completa.
Memoria
Acierto
I/D
Fallo
Caché
SOI
4
Localidad
Localidad
Las cachés “funcionan” porque explotan las
localidad de las referencias del código,
datos, y pila de los programas.
Tipos de localidad:
Espacial: si un item es referenciado, las
direcciones próximas a él tienden
también a ser referenciadas.
Temporal: si un item referenciado, tiende
de nuevo a ser referenciado en breve.
SOI
5
Tiempo de Acceso
Tiempo de Acceso
Efectivo
Efectivo
Cuando usamos cachés ¿Cuánto no cuesta
acceder a memoria? Denominamos …
Tiempo efectivo de acceso (TAE) al tiempo
medio de acceso a una celda de memoria:
TAE = p*ta + (1-p)*tf
TAE = p*ta + (1-p)*tf
= probabilidad de acierto.
= tiempo de acceso si hay acierto.
Donde: p
ta
1-p = probabilidad de fallo.
tf
= tiempo de acceso si hay fallo.
SOI
6
Conceptos generales
Conceptos generales
software
software
Requisitos de la gestión de
memoria.
Niveles de gestión de
memoria.
Compilación de programas:
Enlace y carga.
Espacios de direcciones:
lógico y físico:
Traducción de direcciones
Apoyo hardware a la
traducción: la MMU
SOI
7
Requisitos de la gestión
Requisitos de la gestión
de memoria (i)
de memoria (i)
El SO asigna memoria a los procesos para su
ejecución, garantizando:
Protección:
Un proceso no accede a memoria de otro.
Diferentes módulos del programa deben
tener diferentes permisos de acceso.
Compartición:
De datos/código entre procesos.
Permite el ahorro de memoria.
Reubicación: En sists. multiprogramados,
un programa debe poder cargarse en
diferentes zonas de memoria.
s
o
t
s
e
u
p
a
r
t
n
o
C
SOI
8
Requisitos de la gestión
Requisitos de la gestión
de memoria (y ii)
de memoria (y ii)
El SO debe esconder la
organización física (jerarquía de niveles,
estructura no lineal) de la memoria
física.
para que el usuario tenga una visión
lógica de la memoria como una matriz
lineal. Además permita la
estructuración de un programa en
módulos.
SOI
9
Niveles de gestión
Niveles de gestión
de memoria
de memoria
Existen dos niveles:
Nuestro
objetivo
Gestor de memoria
del SO -asigna
porciones de
memoria al proceso
Gestor de memoria
del proceso -gestiona
estas porciones (p. ej.
a través de malloc y
free).
Proceso
Gestor de
memoria del
proceso
brk
Gestor de
memoria
del SO
SO
SOI
10
Procesamiento
Procesamiento
de un programa
de un programa
Etapas por las que pasa un programa
antes de cargarse en memoria.
Bibliotecas
de sistema
dinámicas
Programa
Ejecutable
Programa
Absoluto
Cargador
11
Módulos
Fuentes
Traductor
Módulos
Objetos
Editor de
Enlaces
Bibliotecas
de sistema
SOI
Compiladores, enlazadores
Compiladores, enlazadores
y cargadores
y cargadores
Compiladores y ensambladores: Sus
salidas contienen direcciones reubicables
y referencias externas.
Enlazadores: resuelven las referencias
externas de las subrutinas compiladas o
ensambladas por separado.
Cargadores: ligan direcciones reubicables
a direcciones absolutas.
SOI
12
Ligadura de direcciones
Ligadura de direcciones
Ligadura de direcciones - correspondencia
entre direcciones, de instrucciones y datos,
de nuestro programa con las direcciones
de memoria.
Es un esquema de designación; una
función: T: INT -> INT
Memoria
física
Espacio de
direcciones
ligadura
main()
{
…
int i;
…
i=0;
}
SOI
celda i-ésima
13
Enlazado y carga
Enlazado y carga
Módulos objeto (.o)
Enlazado
Carga
Cabecera
Código
Datos inicializados
Tabla de símbolos
Info. reubicación
Cabecera
Código
Datos inicializados
Tabla de símbolos
Info. reubicación
Módulo de carga
Cabecera
Tamaño del código,
datos inicianizados
y no inicializados
Código
Datos
Bibliotecas
Biblioteca estática
Biblioteca dinámica
(carga o ejecución)
Proceso en memoria
Código
Datos
Inicializados
Datos no
inicializados
Heap
Pila
14
o
c
s
D
i
SOI
¿Cuándo realizar
¿Cuándo realizar
la ligadura? (i)
la ligadura? (i)
Tiempo de compilación:
El compilador genera código absoluto.
Para ello debemos conocer las
direcciones de memoria donde se va a
cargar el programa.
ß Hay que recompilar el programa si se
cambia en dirección de inicio.
SOI
15
Cuando hacer ligadura (ii)
Cuando hacer ligadura (ii)
Tiempo de carga:
Se genera código reubicable si no se
conoce la ubicación en memoria en
tiempo de compilación.
El procesador debe disponer al menos
de un registro de reubicación, que
contendrá la dirección de inicio del
programa. El SO carga el programa en
memoria y ajusta el registro de
reubicación.
SOI
16
Cuando hacer ligadura (iii)
Cuando hacer ligadura (iii)
Tiempo de ejecución:
Si la ligadura se retrasa hasta la
ejecución del proceso, este puede
moverse durante su ejecución de una
zona de memoria a otra.
Necesitamos soporte hardware para la
correspondencia de direcciones. Lo
veremos para el caso de segmentación
y paginación.
SOI
17
Ligaduras dinámicas
Ligaduras dinámicas
Para programas con mucho código, el
módulo de carga presenta dos problemas:
Su tamaño en disco es grande.
Su tiempo de carga es elevado.
El SO mitiga el problema mediante las
ligaduras dinámicas. Para ello:
Retrasa la carga de un módulo hasta
que este es necesario – carga dinámica
(o enlace dinámico en tiempo de carga).
Retrasar el propio enlace hasta la
ejecución – enlace dinámico (o enlace
dinámico en tiempo de ejecución).
SOI
18
Ligaduras dinámica (y ii)
Ligaduras dinámica (y ii)
Carga dinámica:
Mejor uso del espacio
de memoria. Las
rutinas no usadas no
se cargan.
No necesita soporte
especial del SO;
implementado en el
diseño del programa o
biblioteca.
No solventa el
problema del tiempo
de carga.
Enlace dinámico:
El enlazador inserta
tocones (stubs) para
localizar la biblioteca
residente adecuada.
El SO comprueba que la
rutina está en el
espacio de direcciones
del proceso.
Más costosa que la
carga estática pero
ahorra espacio y el
arranque más rápido.
SOI
19
Espacio lógico y
Espacio lógico y
espacio físico
espacio físico
La necesidad de poder reubicar un
programa en memoria, hace necesario
separar el espacio de direcciones generadas
por el compilador, espacio lógico o virtual,
del espacio físico en el que se carga, el
espacio de direcciones físicas.
Denominamos:
Dirección lógica - la generada por la
CPU; también conocida como virtual.
Dirección física - dirección que se pasa
al controlador de memoria.
SOI
20
Traducción de
Traducción de
direcciones
direcciones
La separación de espacios me obliga a
realizar una traducción de direcciones:
Dirección lógica
Dirección física
Caché
virtual
CPU
Caja de
Traducción
(MMU)
Caché
real
Memoria
Física
L/E datos
(sin traducir)
SOI
21
Unidad de Gestión
Unidad de Gestión
de Memoria
de Memoria
MMU (Memory Management Unit) – disposi-
tivo hardware que traduce direcciones
virtuales en direcciones físicas. También
implementa protección.
El hardware determina la forma en la que el
SO gestiona la MMU.
En el esquema MMU más simple, el valor del
registro de reubicación se añade a cada
dirección generada por el proceso de usuario
al mismo tiempo que es enviado a memoria.
SOI
22
MMUMMU
Memoria
Controlador
de memoria
Microprocesador
CPU
Dirección
virtual
MMU
“Violación de
acceso”:
- No presente
- Usuario/kernel
- Escritura
- Lectura
- Ejecución
Dirección
física
Excepción
Bus instrucciones/datos
SOI
23
Esquemas simples de
Esquemas simples de
asignación
asignación
Gestión de memoria en
sists. multiprogramados:
Asignación estática.
Asignación dinámica.
Intercambio
Fragmentación
Compactación
SOI
24
Organización contigua
Organización contigua
del almacenamiento
del almacenamiento
En este apartado veremos esquemas de
asignación contigua, es decir, la memoria
principal asignada a un proceso es un
único bloque de memoria contigua.
En el tema siguiente, veremos esquemas
de asignación no contigua, es decir,
permitimos que el programa este dividido
en bloques, o segmentos, que se pueden
colocar en zonas no necesariamente
contiguas de memoria principal.
SOI
25
Particiones
Particiones
Dividimos la memoria en particiones:
El SO ocupa permanentemente una región
de memoria.
El resto de la memoria se particiona entre
los procesos de forma:
Estática – número fijo de particiones;
pueden ser de igual o diferente tamaño.
Dinámica – particiones de diferente
tamaño y número.
El SO mantiene información sobre las
particiones asignadas y las libres (huecos).
SOI
26
Asignación en sists. de
Asignación en sists. de
particiones variables
particiones variables
Para cargar proceso en memoria se le
asigna un hueco suficientemente grande
como para albergarlo.
¿Cómo satisfacer una petición de tamaño
n ? Asignar según:
Primer encaje – Asignar el primer hueco
lo bastante grande.
Mejor encaje – Asignar el hueco más
pequeño lo bastante grande; produce el
hueco sobrante menor.
SOI
27
El Primer encaje y
El Pr
Comentarios de: Gestión de Memoria (0)
No hay comentarios