1. Instituto Tecnológico Superior
de El Mante
Sistemas Operativos
Unidad III: Administración de
memoria
ISC. Roberto Rangel Anguiano
Cd. Mante, Tamaulipas A 30 de Septiembre de 2013
2. Memoria
• La memoria es un recurso importante que se
debe administrar con cuidado.
• La parte del sistema operativo que administra
la jerarquía de memoria se denomina
administrador de memoria.
3. Programador
• Idealmente, lo que a todo programador le
gustaría es una memoria infinitamente grande
y rápida que además no sea volátil, es decir,
que no pierda su contenido cuando se
interrumpa la alimentación eléctrica.
4. Administración de la memoria en los sistemas monoprogramados
Programa de
usuario
Núcleo en RAM
OxFF…
Programa de
usuario
Núcleo en ROM
OxFF…
Programa de
usuario
Sistema Operativo
en RAM
OxFF…Controladores de
dispositivos en ROM
Tres formas de organización de la memoria RAM, con un sistema operativo y un proceso de usuario. Todo el
programa es cargado a memoria para su ejecución
Programa de
usuario
Sistema Operativo
Dirección del registro
limite
CPU
Registro
limite
Protección de la Memoria
PC de IBM
BIOS
5. Administración de la memoria en los sistemas multiprogramados
Núcleo del S.O
512
Proceso 1
Proceso 2
Proceso 3
Proceso n
d1
d2
d3
d4
dm
Los problemas que aparecen en los
sistemas multiprogramados y/o
multiusuarios son:
1. Llevar un recuento de las zonas de
memoria ocupadas por los procesos.
¿Qué proceso ocupa cual espacio?.
2. El momento de escribir un programa
no se sabe en qué zona de memoria
se ubicará, siendo posible que durante
la vida de un proceso éste cambie
varias veces de lugar.
3. La protección de las zonas de
memoria ocupadas por los procesos,
máxime en sistemas multiusuario
donde los procesos pueden pertenecer
a distintos usuarios.
Direcciones
de
memoria
6. Gestión de Memoria
Los requisitos que se intentan satisfacer en la gestión de la memoria en los
sistemas donde se emplea la multiprogramación o los sistemas multiusuarios
son:
1. Reubicación.
2. Protección.
3. Compartición.
4. Organización lógica.
5. Organización física.
Memoria Principal
Reubicación
Compartición
Protección,
organización física y lógica
Memoria Virtual
7. Asignación de memoria contigua
Núcleo del S.O
512
512 k
512 k
512 k
512 k
512 k
512 k
512 k
Particiones estáticas
Organización de la memoria:
La memoria se divide en regiones con
límites fijos, con dos alternativas:
1. particiones igual tamaño o
2. particiones de diferentes tamaños.
Núcleo del S.O
512
128 k
256 K
320 k
512 k
576 k
768 k
1 M
Asignación de procesos a la
memoria:
Se pueden tener dos esquemas de
asignación de memoria en particiones
estáticas utilizando colas de procesos:
1. Colas de planificación para cada
partición.
2. Una cola de planificación para la
memoria (mayor eficiencia)
8. Asignación de memoria contigua
Sistema operativo
512
512 k
512 k
512 k
512 k
512 k
512 k
512 k
Proceso A
128 K
Particiones
estáticas
Una vez introducido un proceso en una partición, permanece en ella hasta su finalización aunque se
encuentren libres otras particiones. Esto provoca una pérdida de eficiencia
Los trabajos se traducían mediante compiladores y ensambladores
absolutos, para ejecutarse en una partición específica
Proceso B
256 K
Proceso C
640 K
Listos
Bloqueados Ejecución
Espera
eventoTermina
evento
Interrupción
de reloj
384 k
256 k
384 k
Proceso del
S.O. 128 K
Solicitud
para entrar
al sistemas
Bloqueados
Suspendidos
Listos
Suspendidos
Interrupción
de reloj
Memoria
secundaria
¿Cuántos procesos
Pueden colocarse en
memoria secundaria?
1024 K
9. Asignación de memoria contigua
Particiones estáticas
Sistema operativo
Procesos
nuevos
Cuando un proceso se introduce en una partición, lo más probable es que su tamaño no
sea el mismo (es decir, sea algo menor) que el de la partición. Esto origina un problema
de desperdicio de memoria conocido como fragmentación interna.
Algunas colas estarán
saturadas por procesos que
tienen un tamaño similar a la
partición mientras que otras
estarán vacías o semivacías.
Sistema operativo
Procesos
nuevos
10. Asignación de memoria contigua
Particiones
estáticas
Se minimiza la partición interna porque cada proceso es
asignado a la partición más pequeña. Para ello se
supone que se conoce el tamaño de la cantidad de
memoria que ocupa un proceso lo cual no siempre es
cierto.
Procesos
nuevos
Sistema operativo
512
128 k
256 K
320 k
512 k
576 k
768 k
1 M
Procesos
nuevos
Sistema operativo
512
128 k
256 K
320 k
512 k
576 k
768 k
1 M
12. A A
F
A
B
C
D
C
E
C
E
Asignación de memoria contigua
Particiones dinámicas
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
G
Memoria Virtual
A, F, C o E
Pasar temporalmente un proceso para dar
oportunidad a un nuevo proceso para ejecutarse
No hay espacio
13. A A
F
A
B
C
D
C
E
C
E
Asignación de memoria contigua
Particiones dinámicas
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
El continuo ingreso y salida de los procesos
producen huecos en la memoria demasiado
pequeños para que un proceso pueda
colocarse. A este tipo de fragmentación se
le conoce como fragmentación externa.
La recuperación de los huecos de memoria
puede llevarse a cabo por medio de la técnica de
compactación donde los espacios disponibles de
memoria son colocados en la parte inferior y los
procesos en la parte superior. Sin embargo, este
proceso es demasiado lento y posiblemente no
justifique el consumo de recursos, debido a que
el sistema debe estar inactivo para poder
realizar la compactación.
14. A
F
G
C
E
Asignación de memoria contigua
Particiones dinámicas
H
Estrategias de colocación
Primer ajuste. Primera partición de memoria que
se encuentre libre.
Mejor ajuste. Busca y asigna la partición de
memoria que mejor se ajuste al
tamaño del proceso tratando de
dejar libre la menor cantidad de
memoria
Peor ajuste. Se busca y asigna la partición de
mayor tamaño para dejar libre la
mayor cantidad de memoria para
que pueda colocarse otro proceso
en ella.
15. Administración de memoria particiones estáticas
Partición estática.
Es suficiente con guardar en una tabla la
información sobre la partición que está libre o
que está ocupada y qué proceso se encuentra
en ella, así como la direcciones de comienzo y
fin de la partición.
¿Cómo se lleva el control de la memoria que se encuentra
disponible y aquella que esta ocupada?
No. de
partición
Libre/
ocupada
Id del
Proceso
Inicio de
la
partición
Fin de la
partición
Tabla de administración de la memoria
Partición dinámica pueden ser
implementada por
1. Mapa de bits.
2. Listas enlazadas.
3. Sistema de los asociados.
16. Administración de memoria particiones dinámicas
Mapas de bits
Se divide la memoria en bloques de
cierto tamaño y se mantiene en
memoria una tabla donde cada bit
se utiliza para identificar un bloque
ocupado (1) o libre (0).
Si las particiones son muy pequeñas
se tendrá un mapa de bits muy
grande y viceversa.
Listas enlazadas
La lista esta compuesta por los siguientes campos:
Bit que representa un proceso o una partición disponible.
Numero de bloque de inicio.
Numero de bloques utilizados.
Puntero al siguiente nodo en la lista.
Ventajas:
La actualización de la lista enlazada es directa.
Desventaja:
La búsqueda del un hueco que pueda satisfacer la solicitud de memoria para un proceso es
lento. La solución puede ser la creación de dos listas enlazadas, una para los procesos y otra
para los espacios libres. Esto provoca que se dé mantenimiento a dos listas cuando un
proceso termina y cuando se otorga memoria a otro proceso.
A B C D E
P 0 5 ● H 5 3 ● P 8 6 ● P 14 4 ●
H 18 2 ● P 20 6 ● P 26 3 ● H 29 3 XHueco o proceso
Inicio
Longitud
17. Administración de memoria particiones dinámicas
Sistemas asociados
Consiste en tener la memoria inicialmente
como un gran espacio libre que se irá
particionando en múltiplos de potencia de 2
cada vez que un proceso haga la solicitud de
memoria.
P
B
1 MB
512 KB
256 KB
128 KB
P
56 K
512 K 512 K
256 K 256 K256 K 256 K
128 K 128 K 128 K 128 K 128 K 128 K 128 K 128 K
64
K
64
K
64
K
64
K
64
K
64
K
64
K
64
K
64
K
64
K
64
K
64
K
64
K
64
K
64
K
64
K
1 M
18. Bloque de control
de Proceso
Código
Datos
Pila
Dirección Relativa o
lógica
Sumador
Comparador
Registro
Base
Registro
Límite
Interrupción al Sistema
Operativo
Dirección
Absoluta,
física o real
Imagen de un
Proceso en
Memoria Principal
Soporte del Hardware para la reubicación.
AcumuladorMemoryManagementUnit
Para el intercambio de procesos
entre la memoria real y la memoria
virtual se requiere un mecanismo
que reubique los procesos sin perder
las referencias que se hacen dentro
de él. Los programas que emplean
direcciones relativas se cargan
mediante cargadores dinámicos
durante la ejecución.
La Unidad Manejadora de Memoria
(MMU) realiza la traducción de las
direcciones relativas en direcciones
físicas en la memoria principal.
19. Palabra 0
Palabra z
Palabra 0
Palabra z
Palabra 0
Página 0
Palabra z
Página 1
Palabra 1
Palabra z
Página n-1
Programa
XYZ
1 11 0 1 1 10 1 0 1 1 10 1 1
1 2
Los ordenadores modernos normalmente tienen un
tamaño de palabra de 16, 32 ó 64 bits.
3 4 5 6 7 8 9 10 11 12 13 14 15 16
palabra
Marco n-1
Página 0
Página n-1
Página
Marco 0
Página
Memoria
Programa
XYZ
1. Cada página
consiste en z
palabras contiguas
2. Un espacio de direcciones N de un
programa consiste de n páginas
(0,1,2,3…n-1) (n*z direcciones virtuales)
3. el espacio de memoria consiste de m
marcos de paginas (0,z,2z,…,(m-
1)z)(m*z posiciones)
La técnica de paginación simple es
similar a la partición estática.
Las diferencias están en que, con
paginación las particiones son más
pequeñas, un programa puede
ocupar más de una partición y
éstas no tienen por qué estar
contiguas.
Memoria virtual
Paginación
21. Una dirección virtual a es equivalente a una dirección dada como una dupla (p, d), en la cual p es el
número de la página y d el número de la palabra dentro de la página
Palabra 0
Palabra z
Palabra 0
Palabra z
Palabra 0
Página 0
Palabra z
Página 1
Palabra 1
Palabra z
Página n-1
),(a = dp
Marco 0
Palabra de 16 bits
0000010111011110
Página de
1024 bits = 1
K
0 10 0 0 0 10 1 1 0 1 11 1 0
Dirección lógica de bits
No. de página
de 6 bits
000101
000110
000101
0
1
2
0 10 0 0 1 01 1 1 0 1 11 1 0
Desplazamiento de 10 bits
Dirección física de 16 bits
22. Memoria
Asociativa
En la práctica es necesario que la
mayoría de los accesos a memoria no
impliquen una consulta a la tabla de
páginas, sino que únicamente requieran
el acceso a la posición solicitada. Esto
se logra mediante el uso de una
memoria asociativa interna en la MMU
que mantiene información sobre las
últimas páginas accedidas.
Esta memoria asociativa es considerada
memoria cache especial de alta
velocidad.
23. Páginas
compartidas
Otra ventaja de la paginación es la
posibilidad de compartir programas de
uso común. Esta técnica resulta
sumamente importante en un entorno de
tiempo compartido. Se pueden compartir
desde editores como compiladores,
ensambladores y sistemas de base de
datos. Para que sean compartibles, el
código debe ser reentrante (no
automodificable), es decir, el código es
sólo de búsqueda o sólo lectura.
ed1
ed1
ed1
Datos 1
ed1
ed1
ed1
Datos 1
ed1
ed1
ed1
Datos 1
3
4
6
1
3
4
6
7
3
4
6
2
Proceso
P1
Proceso
P2
Proceso
P3
Tabla de
Páginas P1
Tabla de
Páginas P2
Tabla de
Páginas P3
Datos 1
Datos 3
ed1
ed2
ed3
Datos 2
0
1
2
3
4
5
6
7
8
9
10
24. Memoria virtual
Segmentación subrutina
pila
Tabla de
símbolos
Programa
principal
Sqrt
Segmento 0
Segmento 1
Segmento 2
Segmento 4
Segmento 3
Límite
1000
400
400
1100
1000
Base
1400
6300
4300
3200
4700
0
1
2
3
4
Tabla de segmentos
Segmento 0
Segmento 3
Segmento 2
Segmento 4
Segmento 1
1400
2400
3200
6700
6300
5700
4700
4300
La segmentación es un esquema de
administración de la memoria que soporta
la visión que el usuario tiene de la misma.
Un espacio de direcciones lógicas es una
colección de segmentos. Cada segmento
tiene un nombre y una longitud.
Las direcciones especifican tanto el
nombre del segmento como el
desplazamiento dentro del segmento. Por
lo tanto, el usuario especifica cada
dirección mediante dos cantidades: un
nombre de segmento y un desplazamiento.
25. Memoria virtual
Segmentación
La segmentación simple siempre hace uso
de una tabla de segmentos para cada
proceso y una tabla de segmentos en la
memoria principal. La tabla de segmentos
para un proceso contiene la dirección física
de comienzo del segmento y la longitud
máxima de éste (como medida de
protección, para evitar referencias a
segmentos que no corresponda).
Tabla de
segmentos
Limite Bases d
CPU
< +
Memoria
interrupción
sí
no
s
26. 0
1 00 0 0 1 00 1 1 1 1 00 0 0
Dirección lógica de 16 bits
No. de
página
de 4 bits
Desplazamiento de 12 bits
001011101110
011110011110
0
1
0 1 10 1 0 00 0 0 0 1 00 0 0
0000010000000000
0010000000100000 +
Longitud Base
Tabla de segmentos del proceso
En forma análoga a la paginación, el proceso
de traducción de direcciones en la
segmentación, consiste en los siguientes
pasos:
1. Extraer el número de segmentos de los n
bits más significativos de la dirección
lógica.
2. Emplear el número de segmentos como
índice en la tabla de segmentos del
proceso para obtener la dirección física
de comienzo del segmento.
3. Comparar el desplazamiento expresado
en los m bits menos significativos de la
dirección lógica con la longitud del
segmento, si es mayor, la dirección no es
válida.
4. La dirección física buscada es la suma de
la dirección física del inicio del segmento
más el desplazamiento.
Cuando un proceso se introduce en memoria, se cargan
todos sus segmentos en regiones de memoria libres y se
crea la tabla de segmentos.
27. 1. Generalmente, el programador no conoce realmente el tamaño que
utilizará una estructura de datos, luego si ésta tiene asignado un segmento
podrá ser expandido o reducido según sus necesidades.
2. Los programas pueden ser compilados de manera independiente aunque
sean módulos de otros programas.
3. Varios procesos pueden compartir segmentos, por si desean compartir
datos.
4. Se pueden proteger los programas o datos asignando privilegios de acceso
a los segmentos.
Ventajas de la segmentación
28. Combinación entre paginación y segmentación
Las combinaciones entre paginación y segmentación son las
siguientes:
1.Memoria no segmentada y no paginación: La dirección virtual es la
misma que la dirección física.
2.Memoria paginada no segmentada: La memoria es un espacio de
direcciones paginado.
3.Memoria segmentada no paginada: La memoria es un conjunto de
direcciones lógicas.
4.Memoria segmentada paginada: La segmentación define
particiones lógicas de memoria y la paginación gestiona la
asignación de memoria dentro de las particiones.