Está en la página 1de 41

ADMINISTRACIN DE LA

MEMORIA

Sistemas Operativos
Hctor E. Medelln Anaya
Contenido
Administracin de la memoria sin intercambio ni
paginacin
Intercambio
Memoria virtual
Algoritmos de sustitucin de pginas
Aspectos de diseo para sistemas de paginacin
Panorama de administracin de memoria en MINIX
Introduccin
La ley de Parkinson dice que "los programas se expanden con el
fin de llenar la memoria disponible para contenerlos".
La parte del sistema operativo que se encarga de la memoria se
llama administrador de memoria.
Su labor es llevar el control de qu partes de la memoria estn
en uso y cules no lo estn, asignar memoria a los procesos
cuando la necesiten y retirrselas cuando terminen, y
administrar el intercambio entre la memoria central y el disco
cuando la memoria central no baste para contener todos los
procesos.
Direcciones fsicas y lgicas

Las direcciones lgicas o virtuales son las generadas por la


CPU.
Las direcciones fsicas son las que ve la unidad de memoria.
Carga dinmica

En la carga dinmica una rutina no es cargada hasta que es


llamada.
En enlace dinmico en lugar de posponer la carga hesta el
tiempo de ejecusin, el enlace es el que se pospone.
Monoprogramacin sin
intercambio ni paginacin
La memoria se divide entre el sistema operativo y un solo
proceso de usuario.
0XFFF...
Manejadores de
Sistema operativo
dispositivos em ROM
en ROM

Programa
Programa
del usuario Programa
del usuario
del usuario

Sistema operativo Sistema operativo


en RAM en RAM
0
(a) (b) (c)
Multiprogramacin y uso de la
memoria
Utilizacin de la unidad central de procesamiento como
funcin del nmero de procesos que hay en la memoria.

Espera de E/S del 20%


100
Utilizacin de la CPU Espera de E/S del 50%
(en porcentaje) 80

60 Espera de E/S del 80%

40

20

0 1 2 3 4 5 6 7 8 9 10
Grado de multiprogramacin
Anlisis de rendimiento
Minutos de
Tiempo la CPU que
Trabajo de llegada se necesitan 1 2 3 4
1 10:00 4 CPU ociosa .80 .64 .51 .41
2 10:10 3 CPU ocupada .20 .36 .49 .59
3 10:15 2 CPU/proceso .20 .18 .16 .15
4 10:20 2
(b)
(a)
Termina el trabajo 1
2.0 .9 .8 .3
1
.9 .8 .3 .9 .1
2
.8 .3 .9
Trabajo 3
Inicia el trabajo 2
.3 .9 .1 .7
4
0
10 15 20 22 27.6 28.2 31.7
Tiempo (relativo a la llegada del trabajo 1)
(c)
Particiones fijas
Lista de espera de
entrada multiples

Particin 4 Particin 4
700 K
Lista de espera de
entrada nica
Particin 3 Particin 3

400 K
Particin 2 Particin 2
200 K
Particin 1 Particin 1
100 K
Sistema Sistema
operativo operativo
0
(a) (b)
Intercambio: Multiprogramacin con
particiones variables
Tiempo

C C C C C

B B B B E

A A A
D D D
Sistema Sistema Sistema Sistema Sistema Sistema Sistema
operativo operativo operativo operativo operativo operativo operativo

(a) (b) (c) (d) (e) (f) (g)


Asignacin de espacio

Pila B
Espacio para el crecimiento
Espacio para el crecimiento
Datos B
B
Realmente en uso
Programa B

Pila A
Espacio para el crecimiento
Espacio para el crecimiento
Datos A
A
Realmente en uso
Programa A
Sistema Sistema
operativo operativo

(a) (b)
Mapas de bits

A B C D E

8 16 24

(a)

1111 10 00
P 0 5 H 5 3 P 8 6
1111 11 11
11 00 11 11
1111 10 00 P 14 4 H 18 4 P 20 5

(b)
P 26 3 H 29 3 X

Proceso Cavidad Comienza Longitud


en 26
(c)
Administracin con listas
enlazadas
Primer ajuste: el administrador ratrea la lista hasta hallar una
cavidad que sea lo suficientemente grande.
Siguiente ajuste: igual que el primer ajuste pero empezando en
donde se qued la vez anterior.
El que mejor ajusta: busca en toda la lista hasta encontrar la
cavidad que ajusta mejor.
El que peor ajusta: toma siempre la cavidad ms grande
disponible.
El sistema compaero
Cavidades
Memoria
128k 256k 384k 512k 640k 768k 896k 1M
Inicialmente 1
Solicitud 70 A 128 256 512 3
Solicitud 35 A B 64 256 512 3
Solicitud 80 A B 64 C 128 512 3
Retorno A 128 B 64 C 128 512 4
Solicitud 60 D 64 B 64 C 128 512 4
Retorno B D 64 128 C 128 512 4
Retorno D 256 C 128 512 3
Retorno C 1024 1
Memoria virtual
La CPU envia direcciones
virtuales a la MMU

Tarjeta de CPU

CPU
Contolador
Memoria
de disco

MMU

La MMU envia direcciones


fsicas a la memoria
Paginacin

Espacio de Direcciones de
direccin virtual
la memoria fsica
0-4K 2 0-4K
4K-8K 1 4K-8K
8K-12K 6 8K-12K
12K-16K 0 12K-16K
16K-20K 4 16K-20K
20K-24K 3 20K-24K
24K-28K X 24K-28K
28K-32K X 28K-32K
32K-36K X
36K-40K 5
40K-44K X Cuadro de pgina
44K-48K 7
48K-52K X
52K-56K X
56K-60K X Pgina virtual
60K-64K X
Operacin interna de la MMU
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 Direccin virtual
entrante (8196)
Pgina virtual = 2
0 010 1 Bit presente/
1 001 1 ausente
2 110 1 110
3 000 1
4 100 1
5 011 1 Valor de compensacin
6 000 0
7 000 0
Tabla de
8 000 0
pginas
9 101 1
10 000 0
11 111 1
12 000 0
13 000 0
14 000 0
15 000 0

Direccin fsica
1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 saliente (24580)
Algoritmos de sustitucin de
pginas
Sustitucin de pginas ptima
Se sustituye aquella pgina que se vaya a referenciar dentro del tiempo ms
largo posible.
Sustitucin de pgina no usada recientemente
Se mantiene dos bits R y M que indican si una pgina fue referenciada (R) y/o
modificada (M). Se clasifican la pginas en cuatro categoras de acuerdo:
Clase 0: no referido, no modificado
Clase 1: no referido, modificado
Clase 2: referido, no modificado
Clase 3: referido, modificado
Se retira una pgina elegida al azar de la clase no vaca con la numeracin
inferior.
Sustitucin de pginas
Sustitucin de pginas donde la primera que entra es la
primera que sale o FIFO
Se usa una cola ordenada en donde las ms antigua esta a la
cabeza y la de atrs es la ms reciente. Se pueden examinar
los bits R y M para eliminar la pgina ms antigua que no
haya sido modificada y referenciada primero. El algoritmo
continua buscando las ms antiguas de clase 1,2 y 3.
El FIFO de segunda oportunidad verifica el bit R, si es 1,
pone la pgina en la cola con el bit R a cero y continua la
bsqueda.
Anomala de Belady

Todos los cuadros de pgina estn vacios inicialmente

Pgina ms reciente 0 1 2 3 0 1 4 4 4 2 3 3
0 1 2 3 0 1 1 1 4 2 2
Pgina ms antigua 0 1 2 3 0 0 0 1 4 4
P P P P P P P P P 9 fallas de pgina
(a)

Pgina ms reciente 0 1 2 3 3 3 4 0 1 2 3 3
0 1 2 2 2 3 4 0 1 2 3
0 1 1 1 2 3 4 0 1 2
Pgina ms antigua 0 0 0 1 2 3 4 0 1
P P P P P P P P P P 10 fallas de pgina
(b)
Sustitucin de pginas usadas menos
recientemente (LRU)

Pgina Pgina Pgina Pgina Pgina


0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0
2 0 0 0 0 2 0 0 0 0 2 1 1 0 1 2 1 1 0 0 2 1 1 0 1
3 0 0 0 0 3 0 0 0 0 3 0 0 0 0 3 1 1 1 0 3 1 1 0 0

(a) (b) (c) (d) (e)

Pgina Pgina Pgina Pgina Pgina


0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0
1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0
2 1 0 0 1 2 0 0 0 1 2 0 0 0 0 2 1 1 0 1 2 1 1 0 0
3 1 0 0 0 3 0 0 0 0 3 1 1 1 0 3 1 1 0 0 3 1 1 1 0

(f) (g) (h) (i) (i)


Simulacin de la pgina usada menos
recientemente en software

Se puede simular LRU mediante un algoritmo llamado


algoritmo no usado frecuentemente o NFU. En cada
interrupcin de reloj, el sistema operativo rastrea todas las
pginas que estn en a memoria. Para cada pgina, el bit R, se
suma a un contador. Cuando ocurre una falla de pgina, se
elige la pgina con el contador ms pequeo para su
sustitucin.
Se puede optar por el mecanismo de la figura siguiente, en
esta, los bits se agregan despus de desplazar el contador un
bit a la derecha, a esto se le llama envejecimiento.
El algoritmo de envejecimiento simula LRU en software. Se muestran
seis pginas para cinco pulsos de reloj. Los cinco pulsos de reloj se
representan por los incisos de (a) a (e).

Bits R de la Bits R de la Bits R de la Bits R de la Bits R de la


pgina 0-5, pgina 0-5, pgina 0-5, pgina 0-5, pgina 0-5,
pulso de reloj 0 pulso de reloj 1 pulso de reloj 2 pulso de reloj 3 pulso de reloj 4
1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0
Pgina
0 10000000 11000000 11100000 11110000 01111000

1 00000000 10000000 11000000 01100000 10110000

2 10000000 01000000 00100000 00010000 10001000

3 00000000 00000000 10000000 01000000 00100000

4 10000000 11000000 01100000 10110000 01011000

5 10000000 01000000 10100000 01010000 00101000

(a) (b) (c) (d) (e)


Sustitucin de pginas
Edad
A0 10 A0 A0
Sustitucin de A1 7 A1 A1
A2 A2 A2
pginas local A3
5
4 A3 A3
contra global. (a) A4
A5
6 A4
A6
A4
A5
3
Configuracin B0 9 B0 B0
B1 4 B1 B1
original. (b) B2 6 B2 B2
B3 2 B3 A6
Sustitucin de B4 5 B4 B4
pginas local. (c) B5
B6
6
12
B5
B6
B5
B6
Sustitucin de C0
C1
3 C0
C1
C0
C1
5
pginas global. C2 6 C2 C2

(a)
(b) (c)
Fallas de pgina
Tasa de fallas de pgina como funcin del nmero de cuadros
de pgina asignados.

Fallas de
A
pginas/seg.

Nmero de cuadros de pgina asignados


Continuacin

Instruccin que puede causar una falla de pgina.

MOVE.L 6(A1),2(A0)
16 bits
1000 MOVE Cdigo de operacin
1002 6 Primer oprerando
1004 2
Segundo operando
Nivel del A.M. en MINIX

El administrador de la memoria se ejecuta fuera del kernel, en


el espacio del usuario.
Proceso Proceso Proceso
Inic ...
del usuario del usuario del usuario
Espacio del usuario
Adiminstrador Sistema
de la memoria de archivo

Tarea Tarea Tarea Tarea Kernel


...
del disco tty del reloj del sistema (todas las tareas
enlazadas en un
Manejo de los procesos programa objeto)
Esquema de la memoria
La memoria se asigna mediante dos mecanismos, cuando un
proceso se ramifica y mediante la llamada a exec.
640K

C
Proceso hijo de
A

B B B

A A A

MINIX MINIX MINIX


0
(a) (b) (c)
Esquema de la memoria interna
de un solo proceso

Pila

El segmento de pila crece hacia abajo

Total

El segmento de datos crece hacia arriba


(o hacia abajo) cuando se hacen llamadas a BRK.
Datos

Texto
Manejo de mensajes

Las llamadas siguientes estn relacionadas con la asignacin y


desasignacin de memoria: fork, exit, wait, brk, y exec.
Las siguientes pueden afectar el contenido de la memoria:
signal, kill, alarm y pause.
Las cinco llamadas a get/set no tiene nada que ver con la
administracin de la memoria en absoluto.
Estructuras de datos y algoritmos
que administran la memoria
El administrador de la memoria tiene dos estructuras de datos principales: la
tabla de procesos y la tabla de cavidades.
La ranura k de la tabla de procesos se refiere al mismo proceso que la ranura k
de la tabla del sistema de archivos y del kernel. Cuando se crea o se destruye
un proceso, las tres partes actualizan sus tablas para reflejar la nueva
situacin, con el fin de mantenerlas sincronizadas.
La tabla de procesos del administrador de memoria se llama mproc. El campo
ms importante es el arreglo mp_seg, el cual tiene tres captaciones, para los
segmentos de texto, datos y pila, respectivamente. Cada captacin es una
estructura que contiene la direccin virtual, la direccin fsica y la longitud
del segmento.
Asignacin de memoria
(a) Un proceso en la
memoria. (b) Su Direccin (Hex)
Virtual Fsica Longitud

representacin en la Texto 0 0x3200 0


210K (0 X 34800) Datos 0 0x3200 0x1C0
memoria para un Pila 0x200 0x3400 0x80
Pila
espacio I y D no 208K (0 X 34000)
(b)
separado. (c) Su 207K (0 X 33C00)
Virtual Fsica Longitud
representacin en la Datos
Texto 0 0x3200 0xC0
203K (0 X 32C00)
memoria para un Texto
Datos 0 0x32C0 0x100
Pila 0x200 0x3400 0x80
espacio separado para 200K (0 X 32000)
(c)
I y D.
(a)
Las llamadas al sistema fork,
exit y wait
La creacin de un proceso se efecta por fork, que se ejecuta como una serie de
pasos, como se muestra
1. Verificar si la tabla de procesos est repleta.
2. Intentar asignar memoria al proceso hijo.
3. Copiar la imagen del proceso padre en la memoria del proceso hijo.
4. Hallar una ranura del proceso libre y copiar la ranura del proceso padre en l.
5. Meter el mapa de memoria del derivado en la tabla del proceso.
6. Elegir un pid para el proceso hijo.
7. Indicar al kernel y al sistema de archivo acerca del proceso hijo.
8. Informar del mapa de la memoria del proceso hijo al kernel.
9. Enviar mensajes de contestacin al proceso padre y al proceso hijo.
Terminacin de un proceso

Un proceso termina por completo cuando ocurren dos eventos: (1) El proceso
mismo ha salido (o ha sido eliminado por una seal) y (2) su proceso padre ha
ejecutado una llamada al sistema wait para saber lo que sucedi. Un proceso
que ha salido o ha sido eliminado, pero cuyo padre todava no ha realizado
una llamada a wait por l, entra en un tipo de animacin suspendida, que
algunas veces se conoce como estado zombie. Se evita que ste se programe y
tiene desactivado su cronmetro de alarma (si estaba activado), pero no se
elimina de la tabla de procesos. Su memoria no se libera, aunque pudiera
haberse hecho. Cuando finalmente el proceso padre realiza una llamada a wait,
se libera la ranura de la tabla de procesos y la memoria, y se informa al
sistema de archivo y al kernel.
continuacin

(a) Situacin en la que el proceso 12 est a punto de salir. (b)


situacin despus de que ha salido.

Espera
INIT
INIT

6 7 8
6 7 8 52 53
Espera
12
Salida

52 53 Zombie

(a) (b)
La llamada al sistema exec
Esta ejecuta su trabajo en una serie de pasos, como se muestra
1. Verificar las autorizaciones (es ejecutable el archivo?)
2. Leer los encabezados para obtener los tamaos del segmento y del total.
3. Capturar los segmentos y el medio del solicitante.
4. Liberar la memoria anterior y asignar la nueva.
5. Copiar la pila en al nueva imagen de la memoria.
6. Copiar los segmentos de texto y datos en la nueva imagen de la memoria.
7. Verificar y manejar los bits setuid, setgid.
8. Fijar la captacin de la tabla de proceso.
9. Indicar al kernel que ahora el proceso es ejecutable
Ejemplo de llamada a exec

Cuando un usuario teclea


ls -l f.c g.c
al shell, ste hace la llamada
execve("/bin/ls", argv, envp);
continuacin
(a) Los arreglos \0
s
t
a
40 \0
s
t
a
5150 \0
s
t
a
5150
38 5148 5148
que se pasan a / r 36 / r 5146 / r 5146
s u 34 s u 5144 s u 5144
execv. (b) La pila / = 32 / = 5142 / = 5142
Arreglo del medio E M E M E M
construida por 0 O H
30
28 O H
5140
5138 O H
5140
5138
execv. (c) La pila \0
.
c
g
26 \0
.
c
g
5136 \0
.
c
g
5136
24 5134 5134
despus de la retorno=/usr/ast \0 c 22 \0 c 5132 \0 c 5132
. f 20 . f 5130 . f 5130
recolocacin \0 l 18 \0 l 5128 \0 l 5128
- \0 - \0 - \0
hecha por el adm. s l
16
14 s l
5126
5124 s l
5126
5124
Arreglo de argumentos
de la memoria. (d) 0
0
28
12 0
5138
5122 0
5138
5122
10 5120 5120
La pila como g.c.
f.c.
0 8 0 5118 0 5118
24 6 5134 5116 5134 5116
figura en main al -l 20 4 5130 5114 5130 5114
ls 17 5127 5127
inicio de la (a) 14
2
0 5124
5112
5110 5124
5112
5110
ejecucin. (b) (c) envp
argv
5120
5110
5108
5106
argc 4 5104
(d) retorno 5102
La llamada al sistema brk

Los procedimientos de biblioteca brk y sbrk se utilizan para


ajustar el lmite superior del segmento de datos. El primero toma
un tamao absoluto y llama a brk. El segundo toma un
incremento positivo o negativo al tamao corriente, determina el
tamao del nuevo segmento de datos y despus llama a brk.
La variable brksize, siempre contiene el tamao corriente tal que
sbrk pueda obtenerlo. La variable se inicializa a un smbolo
generado por el compilador que da el tamao inicial del texto
ms datos (I y D no separados) o simplemente datos (I y D
separados). El nombre y, de hecho, la existencia real de tal
smbolo dependen del compilador.
Manejo de seales
Las seales se pueden generar de dos formas: por medio de una
llamada al sistema kill y por medio del kernel. Las seales
originadas por el kernel que regularmente se implementan son
SIGINT, SIGQUIT y SIGALRM.
El administrador de la memoria procesa todas las seales de la
misma forma. Para cada proceso que deba sealarse, se hacen
varias verificaciones para ver si la seal es viable. Un proceso
puede sealar a otro si tienen el mismo uid y si se iniciaron
desde la misma terminal. Adems, no pueden sealarse ni los
zombies ni los procesos que hayan llamado explcitamente a
signal para ignorar la seal.
Otras llamadas al sistema

El administrador de la memoria tambin maneja algunas otras


llamadas al sistema simple: getpid, getuid, getgid, setuid y
setgid. Las tres primeras llamadas simplemente buscan y
entregan la informacin solicitada. getuid produce el uid efectivo
y el real. Dependiendo de si se llam a getuid o a geteuid, uno o
el otro se extrae del mensaje y se entrega al usuario. Lo mismo
sucede con gid. Estas cinco llamadas son las ms simples de
minix.

También podría gustarte