1. 1
Tema 11: Segmentación y
Paginación de la Memoria
Sistemas Operativos
(Tema 14 en apuntes prof. Rovayo)
2. 2
Índice:
1. Segmentación
2. Administración de memoria segmentada
3. Paginación
4. Administración de memoria paginada
5. Sistemas combinados
2
Tema
11:
Segmentación
y
paginación
de
la
memoria
3. 3
Índice:
1. Segmentación
2. Administración de memoria segmentada
3. Paginación
4. Administración de memoria paginada
5. Sistemas combinados
3
Tema
11:
Segmentación
y
paginación
de
la
memoria
4. 4
4
Tema
11:
Segmentación
y
paginación
de
la
memoria
1. Segmentación
Espacio lógico de direcciones es bidimensional
Direcciones lógicas constan de:
Indicador de segmento
Desplazamiento
Segmento = trozo de memoria consecutiva
Idea: dividir programa en trozos de memoria
independientes:
Código
Pila
Datos
….
desplazamiento
ind. seg.
Dirección Lógica
4
00…0
FF…F
Espacio Físico
de Direcciones
7. 7
Tema
11:
Segmentación
y
paginación
de
la
memoria
1.1 Traducción de direcciones segmentadas
desplazamiento
Dirección Lógica
00…0
FF…F
Segmento 2
Espacio Físico
de Direcciones
Segmento 1
Segmento 3
base tamaño …
…
…
…
… … …
ind. seg.
Tabla de descriptores de Segmentos
0
1
2
d<t +
ERROR
0A00
6F10
B100
4000
1000
2000
NO SI
11. 11
Tema
11:
Segmentación
y
paginación
de
la
memoria
1.3 Superposicion de segmentos
00…0
FF…F
base tamaño r w x …
0
1
2
Varios segmentos pueden estar parcial o totalmente
solapados en memoria
Una dirección física se puede corresponder con
múltiples direcciones lógicas
3
1000 4000 1 0 0
1 1 0
2000 4000
…
…
1000
2000
4000 5000 1 1 0 …
4000
4000 5000 1 0 0 …
1 0 0
1 1 0
1 1 0
A000
A000
13. 13
Tema
11:
Segmentación
y
paginación
de
la
memoria
1.4 Formas de usar los descriptores
¿Cuántos segmentos pueden haber en el sistema?
Cada proceso debe poder crear un número suficiente de
segmentos
Intel Pentium: 16.383 segmentos
¡Tabla de segmentos demasiado grande para MMU!
Tabla en memoria y MMU contiene su dirección
00…0
base tamaño r w x …
BASE
LIMITE
BASE LOCAL
LIMITE LOCAL
14. 14
Tema
11:
Segmentación
y
paginación
de
la
memoria
1.4 Formas de usar los descriptores
PROBLEMA: Tiempo de acceso se multiplica por dos
Primer acceso: tabla de descriptores
Segundo acceso: dirección efectiva
Soluciones (no excluyentes):
Uso de registros descriptores de segmento en MMU
Uso de memoria asociativa
15. 15
Tema
11:
Segmentación
y
paginación
de
la
memoria
1.4 Formas de usar los descriptores
Registros descriptores
En MMU: varios registros capaces de contener un
descriptor
Se puede copiar en ellos los descriptores que se
vayan a usar en el futuro inmediato
Dos tipos de registros:
de propósito general
especializados
16. 16
Tema
11:
Segmentación
y
paginación
de
la
memoria
1.4 Formas de usar los descriptores
Registros descriptores de propósito general
MMU contiene un conjunto de registros sobre los que
cargar próximos descriptores a usar, y…
Dos tipos de direcciones:
Las que hacen referencia a un descriptor de tabla en memoria
• necesitan más bits para hacer referencia al descriptor
Las que hacen referencia a un descriptor en MMU
• necesitan menos bits para referir al descriptor
BASE TAM PERM
0
BASE TAM PERM
1
BASE TAM PERM
2
BASE TAM PERM
3
BASE TAM PERM
4
…
…
…
…
17. 17
Tema
11:
Segmentación
y
paginación
de
la
memoria
1.4 Formas de usar los descriptores
Registros descriptores especializados
MMU contiene registros capaces de albergar un
descriptor, y
Dos tipos de direcciones:
Las que hacen referencia a un descriptor de tabla en memoria
Las que NO hacen referencia a ningún descriptor
• Emplean un descriptor de MMU, según el tipo de instrucción
BASE TAM PERM
DS
BASE TAM PERM
SS
BASE TAM PERM
CS
18. 18
Tema
11:
Segmentación
y
paginación
de
la
memoria
1.4 Formas de usar los descriptores
Descriptores en memoria asociativa
MMU contiene una memoria asociativa indexada por nº
de descriptor
Para cada acceso:
Se busca en memoria asociativa el nº de descriptor
• Si está: se emplea el descriptor guardado en mem. asociativa
• Si no está: se carga (es necesario acceso a tabla en memoria)
– Si se llena memoria asociativa: reemplazo
0A00 1000 1 0 0 …
6F10 4000 1 1 0 …
B190 2000 0 0 1 …
… … … …
5
2
14
…
desplazamiento
2
20. 20
Índice:
1. Segmentación
2. Administración de memoria segmentada
3. Paginación
4. Administración de memoria paginada
5. Sistemas combinados
20
Tema
11:
Segmentación
y
paginación
de
la
memoria
21. 21
Tema
11:
Segmentación
y
paginación
de
la
memoria
2. Administración de memoria segmentada
Gestión: particiones variables
Mapas de bits
Listas de control
Segmentación proporciona posibilidades adicionales:
Crecimiento de los procesos
Compartición de segmentos
Carga de segmentos a petición
Enlace dinámico
22. 22
Tema
11:
Segmentación
y
paginación
de
la
memoria
2. Administración memoria segmentada
Crecimiento de los procesos
Dos formas de crecimiento:
Asignando nuevos segmentos al proceso
Creciendo algún segmento asignado
base tamaño r w x …
1 1 0 …
2000 1000 0 0 1 …
… … … …
00…0
1000
2000
3000
4800
Crecible
True
False
…
1800
0
0
1
1800
3000 1000
1000
23. 23
Tema
11:
Segmentación
y
paginación
de
la
memoria
2. Administración memoria segmentada
Compartición de segmentos
Objetivos:
Optimización uso de memoria
Compartición de información
Ejemplo 1: si varios usuarios ejecutan un mismo
programa…
Pueden compartir código y constantes del programa: ¡sólo se
cargan una vez!
Si código usa librerías comunes: pueden compartirse
segmentos de librerías con otros programas
Ejemplo 2: procesos que comparten datos
Datos en segmento compartido
Gestión: tabla de segmentos compartidos
24. 24
Tema
11:
Segmentación
y
paginación
de
la
memoria
2. Administración memoria segmentada
Carga de segmentos a petición
Algunas MMU disponen de bit “presente” en descriptor:
Segmentos no presentes están definidos, pero no están en
memoria
Acceso a segmento no presente=fallo de segmento
Ante un fallo de segmento, SO es responsable de cargar
segmento
base tamaño r w x P
800 1 1 0
2000 1000 0 0 1 1
… … … …
00…0
3000
2000
400
0
0
1
3000
- 0
1
25. 25
Tema
11:
Segmentación
y
paginación
de
la
memoria
2. Administración memoria segmentada
Carga de segmentos a petición
Aplicación: cargar segmentos cuando son referidos por
primera vez
En archivo ejecutable hay información sobre segmentos
definidos por proceso:
• Identificación y localización en archivo
• Tipo
• Punto de entrada
• Tamaño
• Protección
Al cargar ejecutable, cargador sólo define segmentos
Al intentar ejecutar primera instrucción: primer fallo de
segmento
• SO carga segmentos conforme van siendo referidos
27. 27
Tema
11:
Segmentación
y
paginación
de
la
memoria
2. Administración memoria segmentada
Enlace dinámico
Enlace= construcción de ejecutable a partir de ficheros
compilados (ficheros objeto)
Objetivo: reducir trabajo de montador de enlaces
Tipos de enlace dinámico:
Durante la carga
En tiempo de ejecución
Enlace durante la carga:
En archivo ejecutable hay nombres simbólicos para
segmentos y objetos:
CALL [librería:rutina]
Cargador sustituye nombres por descriptores y direcciones
reales
29. 29
Índice:
1. Segmentación
2. Administración de memoria segmentada
3. Paginación
4. Administración de memoria paginada
5. Sistemas combinados
29
Tema
11:
Segmentación
y
paginación
de
la
memoria
30. 30
30
Tema
11:
Segmentación
y
paginación
de
la
memoria
3. Paginación
Espacio lógico de direcciones lineal
Dividido de forma transparente en trozos de igual
tamaño (páginas)
Traductor divide las direcciones lógicas en
nº de página
desplazamiento
00…0
FF…F
Espacio Físico
de Direcciones
desplazamiento
Página
Dirección Lógica
desplazamiento
Marco
Dirección Física
Traductor Dinámico
de Páginas
0
k
k+1
n
0
k
k+1
n
00…0
FF…F
Espacio Lógico
de Direcciones
…
} 2k
33. 33
33
Tema
11:
Segmentación
y
paginación
de
la
memoria
3.1 Traducción de direcciones paginadas
La traducción se lleva a cabo mediante una tabla de
páginas
Tabla de páginas se indexa por nº página y
proporciona nº de marco
desplazamiento
2
Dirección Lógica
desplazamiento
12
Dirección Física
Marco P …
8 1 …
1204 1 …
12 1 …
- 0 …
… … …
0
1
2
3
35. 35
35
Tema
11:
Segmentación
y
paginación
de
la
memoria
3.2 Organización de la tabla de páginas
Tamaño de la tabla de páginas: determinado por…
tamaño del espacio de direcciones
tamaño de la página
Si espacio de direcciones = 4Gb y tamaño de página
= 4K: ¡1M entradas!
Posibilidades:
Tabla de páginas en el traductor
Tabla de páginas en memoria
Tabla de páginas multinivel
Tablas de páginas para todo el sistema
Traductores sin tabla de páginas
36. 36
36
Tema
11:
Segmentación
y
paginación
de
la
memoria
3.2 Organización de la tabla de páginas
Tabla de páginas en el traductor
Sólo es viable si hay pocas páginas
En MMU: conjunto de registros indexados por nº de
página
Inconvenientes:
SO debe sustituir tabla de páginas cada vez que…
• Se conmuta de procesos
• Se transfiere control al SO
37. 37
37
Tema
11:
Segmentación
y
paginación
de
la
memoria
3.2 Organización de la tabla de páginas
Tabla de páginas en memoria
La tabla se saca del traductor y almacena en
memoria
Traductor sólo contiene
Dirección de primera entrada
Tamaño de la tabla
Inconvenientes:
Cada acceso a memoria: implica dos accesos
• Uno a tabla de páginas
• Otro a la dirección efectiva
Solución: memoria asociativa
38. 38
38
Tema
11:
Segmentación
y
paginación
de
la
memoria
3.2 Organización de la tabla de páginas
Tabla de páginas multinivel
Idea: paginar la tabla de páginas
Facilita manipulación y almacenamiento de la tabla
Ejemplo a dos niveles:
desplazamiento
pagina
Dirección Lógica
DP NP
Marco P …
8 1 …
1204 1 …
12 1 …
- 0 …
… …
0
1
2
3
Dirección
0AFF00
100700
108800
FFA100
…
0
1
2
3
Directorio
Tabla de páginas
desplazamiento
marco
Dirección Física
39. 39
39
Tema
11:
Segmentación
y
paginación
de
la
memoria
3.2 Organización de la tabla de páginas
Tabla de páginas multinivel
Ventajas:
Tabla de página no tiene por qué ser ocupar direcciones
consecutivas
Tabla de página no tiene por qué estar cargada completa en
memoria
Inconvenientes:
Tiempo de acceso se multiplica por tres
Solución: memoria asociativa
40. 40
40
Tema
11:
Segmentación
y
paginación
de
la
memoria
3.2 Organización de la tabla de páginas
Tabla de páginas para todo el sistema
Son también multinivel
MMU tiene dirección de una tabla que tiene una
entrada por proceso y contiene dirección de tabla de
páginas/directorio de dicho proceso:
desplazamiento
pagina
Marco P …
8 1 …
1204 1 …
12 1 …
- 0 …
… …
0
1
2
3
Dirección
0AFF00
100700
108800
FFA100
…
0
1
2
3
Tabla de procesos
Tabla de páginas
desplazamiento
marco
Dirección Física
dir t.procs.
PID
41. 41
41
Tema
11:
Segmentación
y
paginación
de
la
memoria
3.2 Organización de la tabla de páginas
Tabla de páginas para todo el sistema
Conmutar de tabla de proceso: cambiar PID
Inconvenientes:
Tiempo de acceso se multiplica por tres
Solución:
Memoria asociativa, indexada por PID + Nº de página
0A00 …
6F10 …
B190 …
… …
4 5
4 2
5 2
…
desplazamiento
PID:4 2
42. 42
42
Tema
11:
Segmentación
y
paginación
de
la
memoria
3.2 Organización de la tabla de páginas
Traductores sin tabla de páginas
Hardware no impone estructura de tabla de páginas
Hardware sólo dispone de memoria asociativa
Si no se encuentra página en memoria asociativa:
excepción
SO es responsable de:
determinar asociación entre nº de página y nº de marco
Actualizar la memoria asociativa
Ventajas:
Flexibilidad: hardware no impone la organización de la TP
Traductor se simplifica notablemente
Parte del ahorro en hardware del traductor se puede invertir
en aumentar el tamaño de la memoria asociativa
43. 43
Índice:
1. Segmentación
2. Administración de memoria segmentada
3. Paginación
4. Administración de memoria paginada
5. Sistemas combinados
43
Tema
11:
Segmentación
y
paginación
de
la
memoria
44. 44
44
Tema
11:
Segmentación
y
paginación
de
la
memoria
4. Administración de memoria paginada
Gestión: particiones variables, con importantes
simplificaciones:
Todos los marcos son iguales→ no hay que elegir
No importa que marcos libres no estén consecutivos
De especial interés:
Elementos de administración
Entrada/Salida y paginación
Carga de páginas a petición
45. 45
45
Tema
11:
Segmentación
y
paginación
de
la
memoria
4. Administración de la memoria paginada
Elementos de administración
Tabla de asignación de marcos a procesos
Una entrada por marco
En cada entrada:
• PID de proceso, si marco asignado
• 0, si marco libre
Ayuda: conservar la posición de la primera/próxima entrada
libre
Proceso
PID1
PID1
PID2
Libre
PID1
…
0
1
2
3
Siguiente libre
4
46. 46
46
Tema
11:
Segmentación
y
paginación
de
la
memoria
4. Administración de la memoria paginada
Elementos de administración
Listas de marcos asignados a procesos
Nº de marcos es fijo: listas implementadas mediante tabla
En cada entrada (una por marco):
• Siguiente marco en la lista
• -1, si marco es el último
En PCB: índices del primer y último marco asignados a
proceso
2
0
3
6
PID1
7
-1
…
0
1
2
3
primero
4
5
6
último
PCB proceso 1
primero
Libres
Proceso 1: marcos 0, 2, 3, y 6
Libres: demás marcos
47. 47
47
Tema
11:
Segmentación
y
paginación
de
la
memoria
4. Administración de la memoria paginada
Entrada/Salida y paginación
Problema: buffers de lectura o escritura
Ocupan direcciones lógicas consecutivas
Pero las direcciones físicas son distintas, incluso no
consecutivas
00…0
FF…F
Vamos a
hacer una
escriturita en
disco de estos
datos que
tengo yo
aquí…
00…0
FF…F
48. 48
48
Tema
11:
Segmentación
y
paginación
de
la
memoria
4. Administración de la memoria paginada
Entrada/Salida y paginación
Soluciones:
Dado que entrada/salida es responsabilidad de SO,
éste traduce y usa direcciones físicas
¿Y si el buffer ni siquiera ha quedado contiguo?
SO programa varias operaciones, una por cada trozo
de buffer en espacio físico
Puede ser problemático para dispositivos de bloque
Usar buffer contiguo en espacio de SO
Que el DMA vea direcciones lógicas
Será el caso si DMA y MMU integrados en CPU
49. 49
49
Tema
11:
Segmentación
y
paginación
de
la
memoria
4. Administración de la memoria paginada
Carga de páginas a petición
Mediante bit de página presente: las páginas se
pueden cargar cuando son referidas por primera vez
Para cargar una página, sólo hay que asignarle un
marco libre
Si no quedan marcos libres: memoria virtual
Elegir un marco que contenga una página que supongamos
no vaya a hacer falta en futuro inmediato
Sustituir dicha página por la recién referida
¿Memoria virtual segmentada o paginada?
Comparemos por…
• Tamaño de las transferencias
• Complejidad de administración
• Operaciones de entrada/salida
50. 50
50
Tema
11:
Segmentación
y
paginación
de
la
memoria
4. Administración de la memoria paginada
Carga de páginas a petición
MV segmentada vs paginada: tamaño de transferencias
Paginación:
Todas las transferencias de página del mismo tamaño
(típicamente en torno a 4K)
Segmentación:
Distinto tamaño cada segmento
Posibilidad de segmentos muy grandes
51. 51
51
Tema
11:
Segmentación
y
paginación
de
la
memoria
4. Administración de la memoria paginada
Carga de páginas a petición
MV segmentada vs paginada: complejidad administración
Paginación:
Todos los marcos son iguales → cualquiera vale para cualquier
página
Segmentación:
Hay que cargar el segmento en un hueco de tamaño suficiente
Fragmentación del espacio libre
52. 52
52
Tema
11:
Segmentación
y
paginación
de
la
memoria
4. Administración de la memoria paginada
Carga de páginas a petición
MV segmentada vs paginada: operaciones entrada/salida
Problema: si hay memoria virtual, es posible que el
segmento/página destino/fuente de una operación no
esté presente
Posible solución:
Bloquear en memoria las páginas/segmentos que contienen
los buffers de E/S
Paginación:
Las páginas bloqueadas son del orden de varios Kilobytes
Segmentación:
¿Y si buffer está en un segmento de datos muy grande?
53. 53
Índice:
1. Segmentación
2. Administración de memoria segmentada
3. Paginación
4. Administración de memoria paginada
5. Sistemas combinados
53
Tema
11:
Segmentación
y
paginación
de
la
memoria
54. 54
54
Tema
11:
Segmentación
y
paginación
de
la
memoria
5. Sistemas combinados
Segmentación: es útil para los procesos
Organización de datos, código…
Mecanismos de protección
Compartición de datos y código
Optimización del espacio ocupado
Paginación: es útil para el sistema operativo
Memoria virtual
Dispersión en memoria
¿Segmentación o paginación?
¡Ambos! Sistemas combinados:
Segmentación paginada
Segmentación y paginación independientes
55. 55
55
Tema
11:
Segmentación
y
paginación
de
la
memoria
5. Sistemas combinados
Segmentación paginada
Cada segmento dividido en páginas
En descriptor, en lugar de dirección base de segmento:
dirección de tabla de páginas del segmento.
desplazamiento
indicador página
Dirección Lógica
tabla tamaño r w x …
7FFF 800 1 1 0 …
2000 1000 0 0 1 …
… … … …
Marco P …
8 1 …
1204 1 …
12 1 …
- 0 …
… …
Tabla de segmentos
Tabla de páginas
desplazamiento
marco
Dirección Física
56. 56
Tema
11:
Segmentación
y
paginación
de
la
memoria
5. Sistemas combinados
Segmentación paginada
Inconvenientes:
Cada segmento debe empezar y acabar en frontera de página
Tamaño del segmento: múltiplo del tamaño de página
Segmentación y paginación independientes
La paginación es transparente
¿y si pusiéramos un sistema paginado bajo un sistema
segmentado?
57. 57
Tema
11:
Segmentación
y
paginación
de
la
memoria
5. Sistemas combinados
Segmentación y paginación independientes
Ejemplo: arquitectura IA32
desplazamiento
selector
Dirección Lógica Segmentada
0
31
Tabla de descriptores de segmentos
dirección intermedia
0
31
¿PG?
+
SI
NO
dirección física
0
31
directorio pagina desplazamiento
12
0
20
31
Directorio de páginas
Tabla de páginas
marco desplazamiento
12
31 0