Está en la página 1de 27

Paginación

Asignación no contigua de memoria


Paginación

• La paginación es una técnica de gestión que


permite asignar memoria en forma discontinua.
• La memoria lógica, se divide en bloques del mismo
tamaño denominado pagina.
• La memoria física se divide en bloques del mismo
tamaño denominado marcos de pagina o celdas
• Cuando hay que ejecutar un programa, se cargan
sus páginas en cualquier celda disponible y se
define la tabla de página para traducir las paginas
de usuario en celdas de memoria.
Asignación no contigua de memoria
Paginación

• En un instante dado, algunos de los marcos de memoria están en uso y


otras están libres, el SO mantiene una lista de marcos libres
• El tamaño de pagina viene definido por el hardware y es una potencia de 2
que varia entre 512 y 8192 bytes.
• Elimina la fragmentación externa solo permanece la fragmentación
interna.
Paginación
Marco de
pagina

Pagina 0
0
0 1
1 Pagina 0
Pagina1 1 4
2
Pagina2 pagina 2 3 marco
3 Pagina 2
3 7 4 Pagina 1
Pagina3
Tabla de
5 Lista de
Memoria pagina marcos
6 libres
lógica

Elimina fragmentación externa 7 Pagina 3


Memoria
física
Fragmentación interna marco
Hardware de paginación

• Cada pagina generada por la CPU se divide en dos


partes:
- Un número de pagina (np)
- Un desplazamiento (d)
• El número de pagina se emplea como un índice en
la tabla de pagina
• La tabla de pagina contiene la dirección base de
cada pagina (f), en la memoria física, esta base se
combina con el desplazamiento de la pagina para
obtener la dirección física de la memoria
Hardware de paginación

• La dirección física se obtiene: R=f+d


R = dirección física

• Calculo del tamaño de celdas de pagina


FI= tamaño de la memoria física / tamaño de pagina
Hardware de paginación
Dirección
lógica

CPU np d f d

Tabla de Memoria
pagina física
tp
Asignación no contigua de memoria
Tamaños de pagina

Computadora Tamaño de la pagina

Familia IBM 370 2048 0 4096


Familia vax 4096
IBM AS/400 512
Intel 486 (IBM PC) 4096
Macintosh 4096
Estructura de direcciones

Dirección lógica (DL)

np d • np: número de pagina


• d: desplazamiento (offset)
• f : número de marco
• p: tamaño de la pagina
traducción
Calculo del número de pagina
np = DL div p

f d Calculo del desplazamiento


Dirección física d = DL mod p
Asignación no contigua de memoria
Paginación

• La tabla de pagina tiene una entrada para cada


pagina, con el dato np, podemos acceder a la entrada
número np de la tabla de pagina para obtener el
número tp[np] del marco de pagina correspondiente
• Calculo de la dirección física:
R = tp[np] * p + d
Ejemplo de direcciones
Supongamos
Tamaño de dirección lógica: 2m bits
Tamaño de paginas: 2n bits

Dirección lógica
m bits

np d

m - n bits n bits
Asignación no contigua de memoria

• A modo de ejemplo consideremos la memoria de la siguiente figura,


utilizando un tamaño de pagina de 4 palabras y una memoria física de 32
palabras.
• Calculamos:
Fi= 32/ 4 = 8
Asignación no contigua de memoria

0
f0
0 A 4
1 B f1
2 C
8
3
4
D
E
0 5 f2
5
12
6
F
G 1 6 f3
7 H 16
8 I 2 1 f4
9 J 20 A
10 K
3 2 f5
B
C
11 L D
12 M Tabla de pagina
24 E
13 N
F
14 O f6 G
15 P
H
28
Memoria lógica f7 31
Memoria física
Asignación no contigua de memoria

¿Dirección lógica 4 le corresponde la dirección física?


DL = 4
p= 4
• Calculo del número de pagina: np = DL div p = 4 / 4 = 1
• Calculo del desplazamiento: d = DL mod p = 4 % 4 = 0
• Calculo de la dirección física:
R = tp[np] * p + d
Entonces : R = tp[1] * 4 + 0 = 6 * 4 + 0 = 24
Asignación no contigua de memoria
Paginas compartidas

• Una ventaja de la paginación es la posibilidad de compartir


programas de uso corriente.
• Esto es particularmente importante en un sistema de tiempo
compartido.
• Consideremos un sistema que soporta 40 usuarios, cada uno
de los cuales utiliza un editor de texto.
• Si el editor de texto consiste de 30k de código y 5k de espacio
para datos, necesitamos 1400k para soportar a los 40
usuarios.
• Tan solo hace falta mantener una copia del editor de texto en
la M.F, cada tabla de página del usuario hace referencia a la
misma copia física del editor, pero las páginas de los datos lo
hacen en celdas diferentes.
Paginas compartidas

• Entonces para soportar a los 40 usuarios precisamos


solamente una copia del editor (30k) mas 40 copias de
espacio de 5k de usuario.
• El espacio total requerido ahora es de 230k en lugar de 1400k,
un ahorro significativo.
• También pueden utilizarse otros programas muy utilizados:
compiladores, ensambladores, sistema de B.D, etc.
Paginas compartidas

Ed1 Ed1 3 0
3
Ed2 4 Ed2
4 1 Datos 1
Ed3 6 Ed3
6 2 Datos 3
Datos 1 1
Datos 2
7 3 Ed1
Trabajo 1 tp 1

Trabajo 2 tp 2 4 Ed2
5
Ed1 3
Ed2 4 6 Ed 3
Ed3 6 7 Datos 2
Datos 3 2
Trabajo 3 tp 3
8
Memoria física
Asignación no contigua de memoria
segmentación

• Otro modo de dividir el programa es la segmentación, en este caso


un programa y sus datos asociados se dividen en un conjunto de
segmentos.
• No es necesario que todos los programas tengan la misma longitud,
aunque existe una longitud máxima del segmento.
• Como en la paginación, una dirección lógica segmentada consta de
dos partes:
- Un número de segmento (s)
- Desplazamiento dentro de ese segmento (d)
Segmentación

• El número de segmento se utiliza como un índice en la tabla de


segmento.
• El desplazamiento (d) de la dirección lógica debe de estar
entre 0 y la longitud del segmento. De no ser así, se ocasiona
un error de direccionamiento (intento de direccionamiento
lógico mas allá del fin de segmento)
• Si este desplazamiento es legal, se agrega a la base del
segmento para producir la dirección en la memoria física del
byte deseado.
Hardware de segmentación

Dirección
s d lógica CPU

Tabla de segmento
Base limite

si d< limite
+
no
Error de direccionamiento
Memoria
Dirección física física
Ejemplo de direcciones
Supongamos
Tamaño de dirección lógica: 2m bits
Tamaño de segmento: 2n bits

Dirección lógica
m bits
s d

m - n bits n bits
Asignación no contigua de memoria

Ejemplo: sean 5 segmentos numerados del 0 al 4, los segmentos están


almacenados en la memoria física como se indica

1400
limite base Segmento 0
Subrutina 1 datos 2400
Segmento 0 Segmento 4 0 1000 1400
3200
Subrutina 2
Programa
principal 1 400 6300 Segmento 3
Segmento 1 Segmento 2
2 400 4300 4300
Segmento 2
pila 3 1100 3200 4700
Segmento 4
Segmento 3
4 1000 4700 5700

6300 Segmento 1
6700
Segmentación

• Una referencia a la palabra 53 del segmento 2 (2,53) se transforma en


DF = base del segmento + desplazamiento = 4300 + 53 = 4355
• Una referencia a la palabra 852 del segmento 3 (3,852) se transforma
en
DF = base del segmento + desplazamiento = 3200 + 852 = 4052
• Una referencia a la palabra 1222 del segmento 0 (0,1222) ocasiona un
error de direccionamiento ya que el segmento 0 tiene una longitud de
1000 palabras.
Compartir Segmentos

• La compartición se realiza a nivel de segmento, por tanto,


cualquier información puede compartirse definiéndose como
un segmento.
• Pueden compartirse varios segmentos, de modo que es
posible compartir un programa compuesto de varios
segmentos.
COMPARTIR SEGMENTOS

limite Base 43062


Editor Editor
Segmento 0
25286 43062
Datos 1 68348
Segmento 1
4425 68348 datos1
Tabla de
memoria lógica segmento 72773
(usr1) (usr1)

Editor limite Base


Segmento
0 25286 43062 90003
Datos 2 Datos 2
8550 90003
Segmento
1 Tabla de 98553
memoria lógica segmento
(usr2) (usr2)
CONTINUA!!

También podría gustarte