Vous êtes sur la page 1sur 29

Sistemas Operativos

GSyC
nemo@gsyc.escet.urjc.es

2000

Gestión de Memoria

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos


Reparto de memoria 2

Reparto de memoria

 Los programas suelen acaparar toda la que pueden.

 Hace falta gestionarla:


– Ver qué partes están libres y cuales ocupadas.
– Asignar y revocar memoria.
– Paginar/Swapping: llevar cosas sin usar a disco y traer cosas a
memoria.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria

Swapping 3

Swapping

 Cuando falta memoria: se usa disco.

 Hay intercambio de procesos entre memoria y disco.

 Los PCB se mantienen.

Pero. . .

 Prácticamente no se usa ) la memoria es barata.

 Se suele “paginar” (swapping con “trozos”, no con procesos).

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria


Swapping (cont.) 4

Implicaciones

 Un nuevo estado “swapped-out” para los procesos.

 Otro scheduler (“swapper”) para decidir quién está en memoria.

 Una sección de disco: área de swap.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria

Swapping (cont.) 5

En la prehistoria

 Memoria cara: se reparte entre todos los procesos.

 Muchos procesos pasan a disco “enteros”.


Hoy

 Memoria barata: gestión más simple.

 Casi nunca se hace swapping.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria


Monoprogramación 6

Monoprogramación

 Un proceso usa toda la memoria.

 Cada proceso lleva pegado el SO.

 Sólo un proceso a la vez.

 El procesador parado mientras se hace E/S.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria

Multiprogramación 7

Multiprogramación

 Ejecutar otro proceso mientras hacemos E/S.


) varios procesos en memoria.

 Imprescindible para Time sharing.

 Aprovecha más la CPU.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria


Multiprogramación (cont.) 8

Modelización

 La podeis estudiar, pero. . .


– El modelo no representa la situación del sistema.
– Depende de la carga real que pongamos en el sistema.
– Mejor medir empíricamente las propiedades que interesen.

 Intuitivamente:
Más memoria ) más procesos ) major uso de CPU.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria

Particiones fijas 9

Particiones fijas

 Dividimos en trozos la memoria en arranque.

 Asignamos los trozos a procesos.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria


Particiones fijas (cont.) 10

Alternativas

 Varias colas: desaprovecho memoria.

 Una cola:
– FIFO: puedo desaprovechar memoria.
– otra: puedo penalizar a determinados procesos.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria

Particiones fijas (cont.) 11

Multiple
input queues
Partition 4 Partition 4
700K

Partition 3 Single Partition 3


input queue

400K

Partition 2 Partition 2

Partition 1 Partition 1
100K
Operating Operating
system system
0
(a) (b)

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria


Particiones fijas (cont.) 12

Carga y protección

El Compilador y el SO han de cooperar.

 Hay que saber dónde están las direcciones y reajustarlas.

 Protección:
– Bits extra de “contexto” en la memoria.
– Segmentos: base+límite.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria

Particiones fijas (cont.) 13

Fragmentación

Interna dentro de los fragmentos.

Externa fragmentos inútiles.

Podemos usar compactación.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria


Particiones fijas (cont.) 14

????
????
??
(3K) (3K)
Segment 4 Segment 4
(7K) (7K) Segment 5 Segment 5 (10K)
(4K) (4K)
(4K)
Segment 3 Segment 3 Segment 3
(8K) (8K) (8K) Segment 5
Segment 6
(4K)
(4K)
Segment 6
? Segment 2 Segment 2 Segment 2 Segment 2 (4K)
(5K) (5K) (5K) (5K)
Segment 2
(3K) (3K) (3K) (5K)
Segment 1
(8K) Segment 7 Segment 7 Segment 7 Segment 7
(5K) (5K) (5K) (5K)
Segment 0 Segment 0 Segment 0 Segment 0 Segment 0
(4K) (4K) (4K) (4K) (4K)
(a) (b) (c) (d) (e)

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria

Particiones variables 15

Particiones variables

 Como la memoria dinámica en el RT de un lenguaje.

 Ventaja: podemos aprovechar más la memoria.

 Desventaja: fragmentación y complejidad.


) los CDC usaban hw para defragmentar.

Ejemplos:

 Applets en Java: protección con los tipos.

 Tareas en PalmOS.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria


Particiones variables (cont.) 16

Consideraciones

 ¿Cuánta memoria asignamos inicialmente?

 ¿Qué pasa si el proceso crece?


– Asignamos más inicialmente
– Usamos el truco de pasarlo por disco.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria

Asignación 17

Asignación

Varias formas:

 bitmaps bloques

 Listas fragmentos

 Sistemas Buddy

Para cualquier recurso enumerable: area de swap, memoria, bloques de


disco, etc.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria


Asignación (cont.) 18

???
?
??
A B C D E
8 16 24
?

?
(a)

11111000 P 0 5 H 5 3 P 8 6 P 14 4
11111111
11001111
H 18 2 P 20 6 P 26 3 H 29 3 X
11111000

Hole Starts Length Process


at 18 2
(b) (c)

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria

Asignación (cont.) 19

Detalles prácticos

 Todas las listas son doblemente enlazadas ¿Por qué?

 El disco hoy dia queda más lejos que la memoria del vecino. . .
) ¿Por qué no se hace swapping allí?

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria


Asignación (cont.) 20

Asginación con listas

first fit Elegimos el primer hueco válido

next fit Elegimos el siguiente hueco válido.

best fit Elegimos el mejor hueco.

worst fit Elegimos el peor huecho (evitar framentación).

quick fit Cuando no sabemos mejorarlo, hacemos caching.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria

Asignación (cont.) 21

Práctica, práctica, práctica

 first fit es simple.

 worst fit es más complejo.

 Simulaciones muestran que worst fit no mejora mucho.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria


Asignación (cont.) 22

Optimizaciones

 Dividir en lista de usados y libres.

 Ordenar por tamaño para mejorar first-fist.


) ¿Tendría sentido next fit?

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria

Buddy system 23

Buddy system

Dividir por la mitad, de forma recursiva.

 Mejorar fragmentación (externa).

 Empeora la interna.

 Facilidad de recombinación.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Gestión de Memoria


Buddy system (cont.) 24

Memoria Virtual

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

¿Qué es esto? 25

¿Qué es esto?

 Procesos más grandes que la memoria disponible

 Más procesos que los que caben en memoria.

 Automatización de overlays.

 Utilizamos disco como una memoria muy lenta.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


¿Qué es esto? (cont.) 26

Las cosas cambian

 Nautilus no usa su área de swap. . .

 Pero su VM resuelve problemas de protección y fragmentación.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Paginación 27

Paginación

 La forma actual de implementar memoria virtual.

 Casi ha eliminado el swapping


) si estamos muy pillaos. . .

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


Paginación (cont.) 28

Conceptos

 Espacio virtual de direcciones.

 Memoria virtual ) memoria física

 Páginas ) marcos de página

 Tabla de páginas

 Paginación

Intercambiamos páginas, no procesos.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Paginación (cont.) 29

Implementación

Engañamos al procesador.
The CPU sends virtual
CPU addresses to the MMU
card

CPU
Memory Disk
management Memory
controller
unit

Bus

The MMU sends physical


addresses to the memory

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


Paginación (cont.) 30

Virtual
address
space
60K-64K x
56K-60K X Virtual page
52K-56K X
48K-52K X
44K-48K 7
40K-44K X
Physical
36K-40K 5 memory
32K-36K X address
28K-32K X 28K-32K
24K-28K X 24K-28K
20K-24K 3 20K-24K
16K-20K 4 16K-20K
12K-16K 0 12K-16K
8K-12K 6 8K-12K
4K-8K 1 4K-8K
0K-4K 2 0K-4K

Page frame

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Paginación (cont.) 31

Fallo de página

 Acceso a páginas ausentes


– PageFault Trap
– El SO trae la página hacia un marco libre.
– Lo libera si no lo hay.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


Paginación (cont.) 32

MMU

 dirección = número-de-página + offset.

 Indexamos en la TP con número-de-página y obtenemos número-de-


marco.

 Entradas en la tabla:
– Número de marco
– Los bits de offset ) Presente/Ausente,. . .

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Paginación (cont.) 33

MMU

 La TP suele tener varios niveles


¿Qué ganamos?, ¿Qué perdemos?

 Alpha: 3 niveles

 Intel: 2 niveles
– 32 bits: 10+10+12
– Páginas de 4K
– Superpáginas de 4M
– 1024 entradas por tabla

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


Paginación (cont.) 34

Second-level
page tables

Page
table for
the top
4M of
memory

Top-level
page table
1023

6
Bits 10 10 12
5
PT1 PT2 Offset 4
3
(a) 2
1
0

1023

6
5
4
3 To
pages
2
1
0

(b)

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Paginación (cont.) 35

Entradas en la TP

 Número de marco

 Presente

 Protección (RWX, WX, . . . )

 M (modificado)

 R (referenciado)

 no-cache

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


Paginación (cont.) 36

TLB

 Una cache de la TP en memoria asociativa.

 Lo único que hay en algunas arquitecturas.

 Hay que limpiarla en el cambio de contexto.


) ¿En algún otro caso?

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Paginación (cont.) 37

TP invertida

 Tabla hash de páginas.

 Se usan con TLB

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


Paginación (cont.) 38

Algoritmos de reemplazamiento

Óptimo la que tarde más en usarse.

NRU utilizando los bits R y M.

FIFO ordenadas según llegada.


) problema con las viejas que se usan.

2da oportunidad FIFO con reciclado.

Clock Implementación eficiente de la 2da op.

LRU Menos recientemente usada: matrices. . .

NFU No usada recientemente. (Sumar R a contadores)

Aging Envejecimiento. (Sumas y desplazamientos con R)

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Paginación (cont.) 39

Detalles prácticos

 Una política simple y eficaz.

 Paging-ahead. Page clustering.

 Más importante reducir el número de fallos que el tiempo en procesar-


los.

 Aunque si los hay, a lo mejor falta memoria. . .

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


Paginación (cont.) 40

Anomalía de Belady

 Más memoria no supone menos fallos de página.

 Con FIFO: 3 marcos mejor que 4 para


0,1,2,3,0,1,4,0,1,2,3,4

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Paginación (cont.) 41

Conjunto de trabajo

Para ver cuanta memoria asignamos

 Paginación por demanda.

 Localidad de referencia.

 Si el WS está en memoria, no hay fallos de página.

 Si lo hacemos mal ) thrashing

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


Paginación (cont.) 42

Políticas de asignación

Local a los procesos.

Global en el nodo. Sigue el modelo del WS.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Paginación (cont.) 43

Problemas

 ¿En qué estado queda el procesador en el PF?

 ¿Y si un dispositivo está haciendo DMA?


) solución: copyin, copyout
) problema: copia dos veces y has muerto.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


Paginación (cont.) 44

Páginas compartidas

 Las RO

 Las que son compartidas.

 Las que no lo son (COW).

 Memoria virtual del kernel.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Paginación (cont.) 45

Paging daemon

 Usa el algoritmo de reemplazamiento.

 Las modificadas las salva a disco


) no tan rápito: ficheros temporales.
) aunque ahorra tiempo

 Interactúa con una cache de páginas

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


Segmentación 46

Segmentación

 Un proceso tiene segmentos.

 Dirección:desplazamiento:protección

 Una tabla o registros para los descriptores.

 Se puede combinar con la paginación (MULTICS, Intel)

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Segmentación (cont.) 47

Paginación con Segmentación

 MULTICS, Intel.
) Direcciones virtuales, lineales, y físicas.

 Normalmente, se anula la segmentación.

 Aunque se puede emplear para “cambiar de TP”.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


Segmentación (cont.) 48

PAGINACIÓN SEGMENTACIÓN
Visión del programador No Si
Espacios de direcciones 1 varios
M. Virt. > M. física Si Si
Protección. Código != datos Si Si
Crecimiento No Si
Compartición Si Si
Objetivo Espacio lineal de direc- Visión del usuario, protec-
ciones ción
Fragmentación Interna Externa

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Segmentación (cont.) 49

Detalle práctico

 Puede usarse la segmentación para compartir páginas


) reducir fragmentación interna.

 No se usa

 ¿Por qué?

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


MV en UNIX 50

MV en UNIX

Segmentos “virtuales”

void *mmap(start,len,prot,SHRjPRIV,fd,off) Añadir un segmento.

munmap(start,len) Eliminar un segmento.

mprotect(start,len,prot) Cambiar protección.

brk(end) Aumentar el tamaño del segmento de datos.

sync() Sincronizar memoria con disco.

mlock(addr,len) Cerrar memoria virtual en memoria física.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

MV en UNIX (cont.) 51
???
Imagen típica

Stack
?

Stack segment grows downward


Symbols Total Gap
memory Data segment grows upward
Size Data
use (or downward) when BRK
of disk Data + bss
file Text calls are made.

Header Text

(a) (b)

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


MV en UNIX (cont.) 52

Segmentos compartidos

 Texto

 Librerías dinámicas

 MSHARED

 Ficheros proyectados

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

MV en UNIX (cont.) 53

Más segmentos

 Cuando hay threads necesitamos mas pilas


– Creadas por el usuario
– Creadas por el kernel

 Librerías compartidas

 Ficheros proyectados

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


MV en UNIX (cont.) 54

Estructuras

Vm Vm
segment descriptors segment descriptors

pages
shared
segment

page table

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

MV en UNIX (cont.) 55

COW

 Inicialmente para mejorar latencia en fork+exec.

 Reducción artificial de permisos


) tambíen se emplea en DSMs

 Requiere estructuras adicionales.

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual


MV en UNIX (cont.) 56

Vm Vm
segment descriptors segment descriptors

COW segment

pages pages

modified shared pages


page

c 2000 Francisco Ballesteros hnemo@gsyc.escet.urjc.esi Sistemas Operativos: Memoria Virtual

Vous aimerez peut-être aussi