Академический Документы
Профессиональный Документы
Культура Документы
Capítulo 6, Stallings
• Relocalización
– el programador no sabe en que parte de la
memoria se cargará el programa cuando se
ejecute
– mientras se ejecuta el programa, puede salir a
disco y regresar a memoria principal en una
posición diferente
– las referencias a memoria deben traducirse en el
código a la dirección de memoria física
• Protección
– los procesos no deben poder referenciar
posiciones de memoria en otro proceso sin
permiso
– es imposible checar direcciones en programas ya
que el programa podría moverse en memoria
– deben checarse durante la ejecución
• Compartición
– permitir que varios procesos accesen la misma
porción de memoria
– mejor permitir a cada proceso (persona) accesar
la misma copia del programa en vez de que
tengan su propia copia separada
• Organización lógica
– los programas están escritos en módulos
– diferentes grados de protección dados a
diferentes módulos (solo lectura, solo ejecución)
– compartir módulos
• Organización física
– la memoria disponible para un programa mas sus
datos puede ser insuficiente
• overlaying permite que varios módulos sean
asignados a la misma región de memoria
– la memoria secundaria es más barata, de mayor
capacidad, y permanente
8M
8M
8M
8M
2M
4M
6M
8M
8M
12 M
Sistema
Operativo
Nuevos
Procesos
Nuevos
Procesos
Proceso 2 224 K
896 K
576 K
352 K
64 K 64 K 64 K
Sistema Sistema
Operativo Operativo
64 K 64 K
22K
6K
Mejor ajuste
Último
bloque 18K
asignado (14K) 2K
8K 8K
6K 6K
Bloque asignado
36K
20K
Antes
Después
El mejor ajuste
•escoje el bloque que está lo más cerca en tamaño al solicitado
•en conjunto el peor rendimiento
•ya que se encuentra el bloque más pequeño por proceso, queda la menor
cantidad de fragmentación, se debe compactar más seguido
Siguiente ajuste
•inicia recorriendo la memoria desde la posición de la última asignación y
selecciona el siguiente bloque disponible que sea lo suficientemente grande
•es más común que se asigne un bloque al final de la memoria donde se
encuentra el bloque más grande
•el bloque más grande de memoria se parte en bloques más pequeños
•se requiere compactación para obtener un bloque grande al final de la
memoria
Algoritmos de reemplazo
Bloque de 1 Mb 1 Mb
Liberar D 1 Mb
•Un acuerdo para superar las desventajas de los sistemas de partición fija y variable
•Se usa una forma modificada en Unix SVR4 para la asignación de memoria del kernel
•Los bloques de memoria están disponibles en tamaños de 2^{K} donde L <= K <= U y donde
•2^{L} = es el bloque más pequeño
•2^{U} = es el bloque más grande
•generalmente, toda la memoria disponible
•Este proceso se repite mientras el bloque más pequeño mayor o igual a S sea generado
•Se unen dos compañeros siempre y cuando dos de ellos no sean asignados
•Presentado con una solicitud para una asignación de tamaño k tal que 2^{i-1} < k <= 2^{i}:
•la lista-i es primero examinada
•Si la lista-i está vacía, entonces la lista-(i+1) es examinada.
Comentarios del sistema
compañero
• Lógica
– referencía a una posición de memoria
independiente de la actual asignación de datos a
memoria
– se debe hacer traducción a la dirección física
• Relativa
– la dirección se expresa como una posición relativa
a un punto conocido
• Física
– la dirección absoluta o posición actual
Manejo de la memoria Sistemas Operativos 23
Soporte del hardware para la
recolocación
Dirección relativa
Bloque de control
Registro base del proceso
Sumador
Programa
Dirección
absoluta
Registro límite Comparador
Datos
Interrupción
al Sistema Operativo
Stack
•Registro base
•dirección inicial del proceso
•Registro límite
•posición final del proceso
•Estos valores se establecen cuando el proceso se carga y cuando el proceso se trae
de un intercambio
•El valor del registro base se suma a la dirección relativa para producir una dirección
absoluta
•La dirección resultante se compara con el valor del regsitro límite
•Si la dirección no está dentro de los límites, se genera una interrupción al SO
Paginación
Número
de marco
0 0 A.0 0 A.0
1 1 A.1 1 A.1
2 2 A.2 2 A.2
3 3 A.3 3 A.3
4 4 4 B.0
5 5 5 B.1
6 6 6 B.2
7 7 7
8 8 8
9 9 9
10 10 10
11 11 11
12 12 12
13 13 13
14 14 14
0 0 0 --- 0 7 0 4 13
1 1 1 --- 1 8 1 5 14
2 2 2 --- 2 9 2 6
3 3 3 10 3 11 Lista de marcos
Proceso B libres
4 12
Proceso C
Proceso A Proceso D
Página 0
Página 1
478
Página 2
Fragmentaciín
Interna
(Tam de pag = 1K)
0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 0
0 000101
1 000110
011001
2
Tabla de páginas
del proceso
0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0
0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0
Longitud Base
0 001011101110 0000010000000000
1 011110011110 0010000000100000 +
Tabla de segmentos del proceso
0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0
• La paginación
– presume de tener poca fragmentación interna
– la paginación es transparente al programador