Bloques a la medida, huecos sueltos
Dar a cada parte del programa justo lo que pide evita el desperdicio interno, pero deja huecos. Al terminar sabrás por qué y cómo se arreglan.
Primero, la idea completa
Mira el video entero o salta a la parte que quieras repasar. Después, cada idea tiene su propia escena para tocarla.
Qué es la segmentación
La paginación cumple la relocalización, la protección y la compartición, pero tiene fragmentación interna. Además, quien programa no piensa la memoria en páginas, sino en bloques con significado: el código, los datos, la pila…
La segmentación funciona igual que la paginación, con una diferencia importante: el tamaño. Cada segmento es un bloque de tamaño variable, justo del tamaño pedido. Así desaparece la fragmentación interna.
02 · Segmento y desplazamientoCómo se traduce
- La dirección lógica tiene número de segmento y desplazamiento.
- La tabla de segmentos guarda, para cada segmento, su base y su tamaño.
- El registro apuntador a la tabla de segmentos indica la tabla del proceso en ejecución.
Al acceder, la MMU busca el segmento en la tabla, verifica que el desplazamiento no supere el tamaño del segmento y, si todo está bien, suma el desplazamiento a la base.
El primer dígito hexadecimal es el segmento y los tres siguientes, el desplazamiento. Prueba estas cinco direcciones.
Fragmentación externa
La segmentación elimina la fragmentación interna, pero trae la fragmentación externa: con el ir y venir de pedidos y liberaciones, quedan pequeños huecos libres repartidos entre los bloques ocupados. Aunque la suma de los huecos sea grande, el sistema no puede atender un pedido de ese tamaño, ni siquiera uno menor, porque no hay un hueco seguido que alcance.
La solución es la compactación: mover todos los bloques ocupados hacia un extremo y dejar un solo hueco libre en el otro. Funciona, pero mientras se hace, los procesos del usuario y del sistema deben detenerse, y eso afecta directamente el rendimiento.
Tres procesos de 14, 18 y 18 MB, y tres huecos de 6, 6 y 4 MB: 16 MB libres en total. Llega un pedido de 7 MB.
Sistemas híbridos y paginación multinivel
Los segmentos de tamaño variable complican además el manejo de la memoria virtual. Por eso surgieron los sistemas híbridos: un primer nivel de segmentos y un segundo nivel de páginas. Quien programa pide segmentos y, sin notarlo, cada segmento se divide en páginas. La dirección lógica tiene tres partes: segmento, página y desplazamiento. La tabla de segmentos ya no guarda la base del segmento, sino la dirección de su tabla de páginas. Puede haber fragmentación interna, pero solo en la última página de cada segmento.
La misma idea se extiende a la paginación multinivel: una jerarquía de tablas de páginas y, al final, el desplazamiento. Es más eficiente cuando un proceso usa solo una parte de su rango de direcciones, porque las tablas de los niveles inferiores se crean solo cuando hacen falta.
Sigue una dirección lógica por cada esquema.
Antes de leer la respuesta
En la segmentación,
pide recibe el tamaño en hexadecimal: pide 3000 pide un segmento de 0x3000 bytes. compacta junta todos los bloques al inicio.Tu turno: segmentos y huecos
El proceso X tiene cinco segmentos y el proceso Y otros cinco, repartidos por la memoria de 64 KB. Traduce direcciones de X, provoca un error de tamaño y trata de conseguir un segmento grande para X.
Comprueba lo que entendiste
Cada respuesta incorrecta explica por qué parece correcta y en qué falla.