Anda di halaman 1dari 38

Manejo de la memoria

Capítulo 6, Stallings

Manejo de la memoria Sistemas Operativos 1


Manejo de la memoria

• Subdividir la memoria para acomodar varios


procesos
• La memoria necesita ser asignada eficientemente
para tener la mayor cantidad de procesos
posibles en memoria

Manejo de la memoria Sistemas Operativos 2


Requisitos para el manejo de la
memoria

• 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

Manejo de la memoria Sistemas Operativos 3


Requisitos para el manejo de la
memoria

• 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

Manejo de la memoria Sistemas Operativos 4


Requisitos para el manejo de la
memoria

• 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

Manejo de la memoria Sistemas Operativos 5


Requisitos para el manejo de la
memoria

• 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

Manejo de la memoria Sistemas Operativos 6


Requisitos para el manejo de la
memoria

• 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

Manejo de la memoria Sistemas Operativos 7


Particiones fijas

• Particiona la memoria disponible en regiones con


límites fijos
• Particiones de tamaño igual
– cualquier proceso cuyo tamaño sea menor o igual
al de la partición puede cargarse en una partición
disponible
– si todas las particiones están llenas, el SO puede
sacar un proceso fuera de una partición
– un programa puede no caber en una partición. El
programador debe diseñar el programa con
overlays

Manejo de la memoria Sistemas Operativos 8


Particiones fijas

• El uso de la memoria principal es ineficiente.


Cualquier programa, no importa que tan pequeño
sea, ocupa una partición completa. A esto se le
llama fragmentación interna.
Sistema Operativo
8M

8M

8M

8M

8M

Manejo de la memoria Sistemas Operativos 9


Particiones fijas

• Particiones de tamaño desigual


– reduce el problema de las particiones de tamaño
igual
Sistema Operativo
8M

2M
4M

6M

8M

8M

12 M

Manejo de la memoria Sistemas Operativos 10


Algoritmos de ubicación con
particiones

• Particiones de tamaño igual


– ya que todas las particiones son del mismo
tamaño, no importa que partición se use
• Particiones de tamaño desigual
– puede asignarse cada proceso a la partición más
pequeña en la que pueda caber
– una cola por cada partición
– los procesos son asignados de tal forma como
para minimizar memoria desperdiciada dentro de
una partición

Manejo de la memoria Sistemas Operativos 11


Una cola de procesos para cada
partición

Sistema
Operativo

Nuevos
Procesos

Manejo de la memoria Sistemas Operativos 12


Una cola de procesos para
todas las particiones

• Cuando es hora de cargar un proceso a memoria


principal se selecciona la partición disponible
más pequeña que pueda tener el proceso
Sistema
Operativo

Nuevos
Procesos

Manejo de la memoria Sistemas Operativos 13


Particiones dinámicas

• Las particiones son variables en tamaño y


número
• Un proceso se le asigna exactamente la memoria
que requiere
• Eventualmente se hacen huecos en la memoria. A
esto se le llama fragmentación externa
• Se debe usar compactación para desplazar
procesos tal que queden contiguos y toda la
memoria libre en un bloque

Manejo de la memoria Sistemas Operativos 14


Ejemplo de particiones
dinámicas

Sistema 128 K Sistema Sistema


Operativo Operativo Operativo

Proceso 1 320 K Proceso 1 320 K

Proceso 2 224 K
896 K

576 K
352 K

Manejo de la memoria Sistemas Operativos 15


Ejemplo de particiones
dinámicas

Sistema Sistema Sistema


Operativo Operativo Operativo

Proceso 1 320 K Proceso 1 320 K Proceso 1 320 K

224 K 224 K Proceso 4 128 K


Proceso 2
96 K

Proceso 3 288 K Proceso 3 288 K Proceso 3 288 K

64 K 64 K 64 K

Manejo de la memoria Sistemas Operativos 16


Ejemplo de particiones
dinámicas

Sistema Sistema
Operativo Operativo

320 K Proceso 2 224 k


96 K
Proceso 4 128 K Proceso 4 128 K
96 K 96 K

Proceso 3 288 K Proceso 3 288 K

64 K 64 K

Manejo de la memoria Sistemas Operativos 17


Partición dinámica, Algoritmos
de ubicación
8K 8K

12K Primer ajuste 12K

22K
6K
Mejor ajuste
Último
bloque 18K
asignado (14K) 2K

8K 8K

6K 6K

Bloque asignado

14K Bloque libre 14K


Siguiente ajuste

36K
20K

Antes
Después

Manejo de la memoria Sistemas Operativos 18

El SO debe decidir que bloque libre asignar a un proceso

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

Algoritmo del primer ajuste


•comienza recorriendo la memoria desde el inicio y selecciona el primer bloque
disponible que sea lo suficientemente grande
•el más rápido
•puede tener muchos procesos cargados en el principio de la memoria que
deben buscarse cuando se intente encontrar un bloque libre

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

• Cuando todos los procesos en memoria principal


están bloqueados, el SO debe escoger que
proceso debe reemplazar
– Un proceso debe ser expulsado (A un estado de
bloqueado-suspendido) y será remplazado por un
nuevo proceso o un proceso de la cola Listo-
suspendido
– ver memoria virtual

Manejo de la memoria Sistemas Operativos 19


Sistema compañero

Bloque de 1 Mb 1 Mb

Solicitud de 100 K A=128 K 128 K 256 K 512 K

Solicitud de 240 K A=128 K 128 K B=256 K 512 K

Solicitud de 64 K A=128 K C=64 K 64 K B=256 K 512 K

Solicitud de 256 K A=128 K C=64 K 64 K B=256 K D=256 K 256 K

Liberar B A=128 K C=64 K 64 K 256 K D=256 K 256 K

Liberar A 128 K C=64 K 64 K 256 K D=256 K 256 K

Solicitud de 75 K E=128 K C=64 K 64 K 256 K D=256 K 256 K

Liberar C E=128 K 128 K 256 K D=256 K 256 K

Liberar E 512 K D=256 K 256 K

Liberar D 1 Mb

Manejo de la memoria Sistemas Operativos 20

•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

•Comenzamos con el bloque completo de 2^{U}


•Cuando se hace una solicitud de tamaño S:
•Si 2^{U-1} < S <= 2^{U} entonces asignamos el bloque completo de tamaño 2^{U}
•Si no, dividimos el bloque en dos compañeros, cada uno de tamaño 2^{U-1}
•Si 2^{U-2} < S <= 2^{U-1} entonces asignamos uno de los dos compañeros
•De otra forma uno de los dos compañeros es dividido de nuevo

•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

•El SO mantiene varias listas de huecos


•La lista-i es la lista de huecos de tamaño 2^{i}
•Cuando un par de compañeros en la lista-i ocurre, son removidos de esta lista y
unidos en un solo hueco en la lista-(i+1)

•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

• En promedio, la fragmentación interna es 25%


– cada bloque de memoria es al menos ocupado en un 50 %
• Los programas no son movidos en memoria
– simplifica el manejo de la memoria
• Más eficiente cuando el tamaño M de memoria es
una potencia de 2
– M = 2^{U} “bytes” donde U es un entero
– entonces el tamaño de cada bloque es una potencia de 2
– El bloque más pequeño es de tamaño 1
– Ej: si M = 10, el bloque más pequeño sería de tamaño 5

Manejo de la memoria Sistemas Operativos 21


Recolocación

• Cuando se carga un programa en memoria se


determinan las posiciones de memoria
(absolutas)
• Un proceso puede ocupar diferentes particiones,
en las cuales diferentes posiciones de memoria
abosultas durante la ejecución (del intercambio)
• La compactación causará que un programa
ocupe una partición diferente la cual significa
diferentes posiciones absolutas de memoria

Manejo de la memoria Sistemas Operativos 22


Direcciones

• 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

Imagen del proceso


en memoria principal

Manejo de la memoria Sistemas Operativos 24

•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

• Particionar la memoria en fragmentos pequeños


del mismo tamaño y dividir cada proceso en
fragmentos del mismo tamaño
• Los fragmentos de un proceso se llaman páginas
y los fragmentos de memoria se llaman marcos.
• El SO mantiene una tabla de páginas por cada
proceso
– contiene la posición del marco por cada página en el
proceso
– las direcciones de memoria consisten en un número
de página y un desplazamiento dentro de la página

Manejo de la memoria Sistemas Operativos 25


Paginacíon

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

Manejo de la memoria Sistemas Operativos 26


Paginación

0 A.0 0 A.0 0 A.0


1 A.1 1 A.1 1 A.1
2 A.2 2 A.2 2 A.2
3 A.3 3 A.3 3 A.3
4 B.0 4 4 D.0
5 B.1 5 5 D.1
6 B.2 6 6 D.2
7 C.0 7 C.0 7 C.0
8 C.1 8 C.1 8 C.1
9 C.2 9 C.2 9 C.2
10 C.3 10 C.3 10 C.3
11 11 11 D.3
12 12 12 D.4
13 13 13
14 14 14

Manejo de la memoria Sistemas Operativos 27


Ejemplo de tablas de páginas

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

Manejo de la memoria Sistemas Operativos 28


Direccionamiento lógico usado
en la paginación

• Dentro de cada programa, cada dirección lógica


debe consistir de un numero de página y un
desplazamiento dentro de la página
• Un registro del CPU siempre tiene la dirección
física inicial de la tabla de páginas del proceso
que está en ejecución
• Dada una dirección lógica (número de página,
desplazamiento) el procesador emplea la tabla de
páginas para obtener la dirección física (número
de marco, desplazamiento)

Manejo de la memoria Sistemas Operativos 29


Direccionamiento lógico en la
paginación
• La dirección lógica es la misma que la dirección relativa
cuando el tamaño de la página es una potencia de 2
• Ejemplo:
– Si se usan direcciones de 16 bits y el tamaño de
página de = 1K
– 10 bits para el desplazamiento y 6 bits para el número
de página
P P P P P P d d d d d d d d d d

• La dirección de 16 bits es una posición relativa al inicio


del proceso

Manejo de la memoria Sistemas Operativos 30


Direccionamiento lógico en la
paginación
Dirección lógica = Pag# = 1, Offset = 478
000001 0111011110

Página 0
Página 1

478
Página 2

Fragmentaciín
Interna
(Tam de pag = 1K)

Manejo de la memoria Sistemas Operativos 31


Traducción de direcciones
lógicas a físicas en paginación
Dirección lógica de 16 bits

# de página de 6 bits Desplazamiento de 10 bits

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

Dirección física de 16 bits

Manejo de la memoria Sistemas Operativos 32

•Usando un tamaño de página de una potencia de 2, las páginas son


invisibles al programador, compilador/ensamblador, y encadenador

•La traducción de direcciones durante el tiempo de ejecución es


entonces facil de implementar por hardware
•dirección lógica (n,m) se traduce a la dirección física (k,m)
indexando la tabla de páginas y añadiendo el mismo
desplazamiento m al número de marco k
Segmentación

• Todos los segmentos de todos los programas no


tienen que ser de la misma longitud
• Hay un máximo en la longitud de segmento
• El direccionamiento consiste de dos partes, un
número de segmento y un desplazamiento
• Ya que los segmentos no son iguales, la
segmentación es similar al particionamiento
dinámico

Manejo de la memoria Sistemas Operativos 33


Segmentación simple

• En contraste con la paginación, la segmentación


es visible al programador
– Una comodidad para organizar lógicamente los
programas
• ejemplo: datos en un segmento, en otro código
– Se debe estar al pendiente del tamaño máximo de
los segmentos

Manejo de la memoria Sistemas Operativos 34


Segmentación simple

• El SO mantiene una tabla de segmentos para


cada proceso. Cada entrada contiene:
– La dirección física inicial de este segmento.
– La longitud del segmento por protección

Manejo de la memoria Sistemas Operativos 35


Traducción de direcciones
lógicas a físicas en la
segmentación
Dirección lógica de 16 bits

# de seg. 4 bits Desplazamiento de 12 bits

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

Dirección física de 16 bits

Manejo de la memoria Sistemas Operativos 36

•Cuando un proceso pasa al estado “ejecutando”, se carga la dirección


de su tabla de segmentos en un registro del CPU.
•Dada con una dirección lógica (número de segmento, desplazamiento)
= (n,m), el CPU indexa (con n) la tabla de segmentos para obtener la
dirección física inicial k y la lomgitud l de este segmento
•La dirección física se obtiene añadiendo m a k (en contraste con la
paginación)
•el hardware también compara el desplazamiento m con la
longitud l de este segmento para determinar si la dirección es
válida
Comparación entre
segmentación y paginación
• La segmentación
– requiere hardware más complejo para la traducción de
direcciones
– sufre de fragmentación externa
– es visible al programador cuando la paginación es
transparente
– puede verse como comodidad al programador organizar
lógicamente un programa en segmentos
• para usar diferentes tipos de protección
– ej. solo ejecución para el código, lectura y escritura para datos
– necesitamos usar bits de protección en las entradas de tabla de
segmentos

Manejo de la memoria Sistemas Operativos 37


Comparación entre
segmentación y paginación

• La paginación
– presume de tener poca fragmentación interna
– la paginación es transparente al programador

Manejo de la memoria Sistemas Operativos 38

Anda mungkin juga menyukai