Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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...
Sistema operativo
en ROM
Programa
del usuario
Sistema operativo
en RAM
(a)
Programa
del usuario
Manejadores de
dispositivos em ROM
Programa
del usuario
Sistema operativo
en RAM
0
(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
(en porcentaje)
80
60
40
20
0
3 4 5 6 7 8 9
Grado de multiprogramacin
10
Anlisis de rendimiento
Minutos de
Tiempo
la CPU que
Trabajo de llegada se necesitan
10:00
CPU ociosa
.80
.64
.51
.41
10:10
CPU ocupada
.20
.36
.49
.59
10:15
CPU/proceso
.20
.18
.16
.15
10:20
(b)
(a)
Termina el trabajo 1
1
2.0
2
Trabajo
3
4
Inicia el trabajo 2
.9
.8
.3
.9
.8
.3
.9
.8
.3
.9
.3
.9
.1
.1
.7
0
10
15
20 22
27.6 28.2
Tiempo (relativo a la llegada del trabajo 1)
(c)
31.7
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
Sistema
operativo
Particin 1
100 K
Sistema
operativo
0
(a)
(b)
A
Sistema
operativo
(a)
Sistema
operativo
(b)
Sistema
operativo
(c)
Sistema
operativo
(d)
Sistema
operativo
Sistema
operativo
Sistema
operativo
(e)
(f)
(g)
Asignacin de espacio
Pila B
Espacio para el crecimiento
B
Realmente en uso
Programa B
Pila A
Espacio para el crecimiento
A
Sistema
operativo
(a)
Realmente en uso
Programa A
Sistema
operativo
(b)
Mapas de bits
A
16
24
(a)
1111 10 00
14 4
18 4
20 5
26 3
29 3
1111 11 11
11 00 11 11
1111 10 00
(b)
Proceso
Cavidad
Comienza
en 26
X
Longitud
(c)
El sistema compaero
128k
Memoria
384k
512k
256k
Cavidades
640k
768k
Solicitud 70
Solicitud 35
64
Solicitud 80
64
Retorno A
128
64
128
64
Solicitud 60
64
Retorno B
64
Retorno C
1M
1
Inicialmente
Retorno D
896k
256
128
256
512
256
512
128
512
128
512
128
512
128
512
128
512
1024
Memoria virtual
La CPU envia direcciones
virtuales a la MMU
Tarjeta de CPU
CPU
Memoria
MMU
Contolador
de disco
Paginacin
Espacio de
direccin virtual
0-4K
4K-8K
8K-12K
12K-16K
16K-20K
20K-24K
24K-28K
28K-32K
32K-36K
36K-40K
40K-44K
44K-48K
48K-52K
52K-56K
56K-60K
60K-64K
Direcciones de
la memoria fsica
0-4K
4K-8K
8K-12K
12K-16K
16K-20K
20K-24K
24K-28K
28K-32K
2
1
6
0
4
3
X
X
X
5
X
7
X
X
X
X
Cuadro de pgina
Pgina virtual
Tabla de
pginas
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1 0 0
0 0
0 0 0
0 0 0
1 0 0
Direccin virtual
entrante (8196)
Pgina virtual = 2
010
1 Bit presente/
ausente
001
1
110
000
100
011
000
000
000
101
000
111
000
000
000
000
1 1 0
1
1
1
1
0
0
0
1
0
1
0
0
0
0
0 0
110
Valor de compensacin
0 0 0
0 0 0
0 1 0
Direccin fsica
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
Pgina ms antigua
0 1 2 3
0 1 2
0 1
P P P P
0
3
2
P
1
0
3
P
4 4 4 2 3 3
1 1 1 4 2 2
0 0 0 1 4 4
P
P P
9 fallas de pgina
4
3
2
1
P
10 fallas de pgina
(a)
Pgina ms reciente
Pgina ms antigua
0 1 2 3
0 1 2
0 1
0
P P P P
3
2
1
0
3
2
1
0
(b)
0
4
3
2
P
1
0
4
3
P
2
1
0
4
P
3
2
1
0
P
3
3
2
1
P
0
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
Pgina
0 1 2 3
0
1
2
3
0
1
0
0
(a)
0
1
1
1
0
0
0
0
0
1
0
0
(f)
1
1
0
0
1
1
0
0
0
1
2
3
0
0
1
0
(b)
Pgina
0 1 2 3
0
1
2
3
0
0
0
0
Pgina
0 1 2 3
0
1
1
0
0
0
0
0
1
0
0
0
1
1
0
0
(g)
0
0
0
0
1
1
1
0
0
1
2
3
0
1
1
1
(c)
Pgina
0 1 2 3
0
1
2
3
0
0
1
0
Pgina
0 1 2 3
1
1
1
0
0
0
0
1
1
0
0
1
1
1
0
1
(h)
0
0
0
1
0
0
0
0
0
1
2
3
0
1
1
1
(d)
Pgina
0 1 2 3
0
1
2
3
0
0
1
1
Pgina
0 1 2 3
0
0
0
0
0
0
1
1
1
0
1
1
(i)
0
0
0
0
0
0
0
0
0
0
1
0
(e)
Pgina
0 1 2 3
0
1
2
3
0
0
1
1
0
0
1
0
Pgina
0 1 2 3
0
1
2
3
0
0
1
1
1
0
1
1
(i)
0
0
0
1
0
0
0
0
Bits R de la
pgina 0-5,
pulso de reloj 0
Bits R de la
pgina 0-5,
pulso de reloj 1
Bits R de la
pgina 0-5,
pulso de reloj 2
Bits R de la
pgina 0-5,
pulso de reloj 3
Bits R de la
pgina 0-5,
pulso de reloj 4
1 0 1 0 1 1
Pgina
0
10000000
1 1 0 0 1 0
1 1 0 1 0 1
1 0 0 0 1 0
0 1 1 0 0 0
11000000
11100000
11110000
01111000
00000000
10000000
11000000
01100000
10110000
10000000
01000000
00100000
00010000
10001000
00000000
00000000
10000000
01000000
00100000
10000000
11000000
01100000
10110000
01011000
10000000
01000000
10100000
01010000
00101000
(a)
(b)
(c)
(d)
(e)
Sustitucin de pginas
Edad
Sustitucin de
pginas local
contra global. (a)
Configuracin
original. (b)
Sustitucin de
pginas local. (c)
Sustitucin de
pginas global.
A0
A1
A2
A3
A4
A5
B0
B1
B2
B3
B4
B5
B6
C0
C1
C2
(a)
10
7
5
4
6
3
9
4
6
2
5
6
12
3
5
6
A0
A1
A2
A3
A4
A6
B0
B1
B2
B3
B4
B5
B6
C0
C1
C2
A0
A1
A2
A3
A4
A5
B0
B1
B2
A6
B4
B5
B6
C0
C1
C2
(b)
(c)
Fallas de pgina
Tasa de fallas de pgina como funcin del nmero de cuadros
de pgina asignados.
Fallas de
pginas/seg.
B
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
1002
1004
Cdigo de operacin
Primer oprerando
Segundo operando
Proceso
Proceso
Proceso
del usuario del usuario del usuario
...
Espacio del usuario
Adiminstrador
de la memoria
Tarea
del disco
Sistema
de archivo
Tarea
tty
Tarea
Tarea
del reloj del sistema
...
Kernel
(todas las tareas
enlazadas en un
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
MINIX
MINIX
MINIX
(a)
(b)
(c)
Total
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.
Asignacin de memoria
(a) Un proceso en la
memoria. (b) Su
representacin en la
memoria para un
espacio I y D no
separado. (c) Su
representacin en la
memoria para un
espacio separado para
I y D.
Direccin (Hex)
210K (0 X 34800)
Texto
0x3200
Datos
0x3200 0x1C0
Pila
Pila
0x200
208K (0 X 34000)
0x3400 0x80
(b)
207K (0 X 33C00)
Virtual Fsica Longitud
Datos
203K (0 X 32C00)
Texto
200K (0 X 32000)
Texto
0x3200 0xC0
Datos
0x32C0 0x100
Pila
0x200
0x3400 0x80
(c)
(a)
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
52
Espera
12
52
Salida
53
(a)
Zombie
(b)
53
continuacin
(a) Los arreglos
que se pasan a
execv. (b) La pila
construida por
execv. (c) La pila
despus de la
recolocacin
hecha por el adm.
de la memoria. (d)
La pila como
figura en main al
inicio de la
ejecucin.
retorno=/usr/ast
Arreglo de argumentos
0
(a)
g.c.
f.c.
-l
ls
\0
s
/
s
/
E
O
\0
.
\0
.
\0
s
t
a
r
u
=
M
H
c
g
c
f
l
\0
l
0
28
0
24
20
17
14
(b)
40
38
36
34
32
30
28
26
24
22
20
18
16
14
12
10
8
6
4
2
0
\0
s
/
s
/
E
O
\0
.
\0
.
\0
s
t
a
r
u
=
M
H
c
g
c
f
l
\0
l
0
5138
0
5134
5130
5127
5124
(c)
5150
5148
5146
5144
5142
5140
5138
5136
5134
5132
5130
5128
5126
5124
5122
5120
5118
5116
5114
5112
5110
envp
argv
argc
(d)
\0
s
/
s
/
E
O
\0
.
\0
.
\0
s
t
a
r
u
=
M
H
c
g
c
f
l
\0
l
0
5138
0
5134
5130
5127
5124
5120
5110
4
retorno
5150
5148
5146
5144
5142
5140
5138
5136
5134
5132
5130
5128
5126
5124
5122
5120
5118
5116
5114
5112
5110
5108
5106
5104
5102
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.