Você está na 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...
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

Espera de E/S del 50%

60

Espera de E/S del 80%

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)

Intercambio: Multiprogramacin con


particiones variables
Tiempo

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

Espacio para el crecimiento


Datos B

Realmente en uso

Programa B

Pila A
Espacio para el crecimiento
A
Sistema
operativo
(a)

Espacio para el crecimiento


Datos 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)

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
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

La MMU envia direcciones


fsicas a la memoria

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

Operacin interna de la MMU


0 0

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

Sustitucin de pginas usadas menos


recientemente (LRU)
Pgina
0 1 2 3
0
1
2
3

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

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
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

Nivel del A.M. en MINIX


El administrador de la memoria se ejecuta fuera del kernel, en
el espacio del usuario.
Inic

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

Manejo de los procesos

...

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)

Esquema de la memoria interna


de un solo proceso
Pila
El segmento de pila crece hacia abajo

Total

Datos

Texto

El segmento de datos crece hacia arriba


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

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
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.

Virtual Fsica Longitud

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)

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

52

Espera
12
52

Salida
53

(a)

Zombie
(b)

53

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
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.

Arreglo del medio


0

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

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.

Você também pode gostar