Contenido Manejo de Memoria Asignación de Particiones Variables • Particiones Variables • Algoritmos de Colocación – Best Fit – First Fit – Next Fit • Manejo de posiciones libres – Bit Maps – Linked Lists • Alternativa a los esquemas de partición fijos y dinámicos: Buddy System M. B. Ibáñez M. B. Ibáñez Particiones Variables Ejemplo • El número, la localidad y el tamaño de las particiones varía dinámicamente a medida que los procesos se ejecutan • Mejora la utilización de la memoria. A los procesos se les asigna casi exactamente la cantidad de memoria que requieren • El número y el tamaño de los procesos en memoria varía dinámicamente • La asignación y desasignación de memoria es M. B. Ibáñez complicada OS 128 K OS Process 1 320 K Process 1 OS OS process 5 process 5 process 9 process 9 process 10 process 2 process 2 process 2 process 2 M. B. Ibáñez Solución: Compactación OS 320 K Process 2 896 K OS process 5 process 8 Problema de fragmentación externa OS OS process 5 576 K Process 1 320 K Process 2 224 K Process 3 288 K OS OS Process 1 320 K Process 4 128 K Process 1 320 K Process 4 128 K 64 K OS OS OS Process 1 320 K Process 1 320 K Process 1 224 K Process 4 128 K 96 K Process 3 288 K Process 3 288 K 64 K 64 K M. B. Ibáñez Process 3 OS 320 K 96 K Process 1 320 K 224 K Process 4 128 K 96 K 288 K Process 3 288 K 64 K 288 K Process 3 288 K Process 3 Process 5 64 K 100K 60K 64 K M. B. Ibáñez 1 Contenido Algoritmos de Colocación • Best-fit • Particiones Variables • Algoritmos de Colocación – Escoge el bloque cuyo tamaño es el más cercano al tamaño requerido – Exhibe el peor desempeño – Dado que se escoge el bloque más pequeño, se deja la menor fragmentación y se debe compactar más frecuentemente – Best Fit – First Fit – Next Fit • Manejo de posiciones libres – Bit Maps – Linked Lists • Alternativa a los esquemas de partición fijos y dinámicos: Buddy System M. B. Ibáñez M. B. Ibáñez Ejemplo Ejemplo 100K 100K USED USED 500K 500K USED USED 200K 200K USED 212K USED 212K 300K 88K USED USED 600K 600K M. B. Ibáñez M. B. Ibáñez Ejemplo Ejemplo 100K 100K USED USED 417K 500K 83K USED USED 200K 417K 200K USED USED 212K 212K 88K 88K USED USED 600K M. B. Ibáñez 600K M. B. Ibáñez 2 Ejemplo Ejemplo 120K 120K 417K 417K 83K 83K USED USED 112K 200K 200K USED USED 212K 212K 88K 88K USED USED 600K 600K M. B. Ibáñez M. B. Ibáñez Ejemplo Ejemplo 112K 112K 8K 8K 417K 417K 83K USED 303K 200K USED USED 212K 212K 88K 88K USED USED 600K 600K M. B. Ibáñez M. B. Ibáñez Ejemplo Ejemplo 112K 112K 8K 8K 417K 417K 300K 303K 3K 300K USED USED 212K 212K 88K 88K USED USED 600K M. B. Ibáñez 600K M. B. Ibáñez 3 Ejemplo Ejemplo 112K 112K 8K 417K 417K 300K 300K USED 212K 3K 650K USED USED 212K 650K 88K USED 49K 600K M. B. Ibáñez M. B. Ibáñez Algoritmos de Colocación Ejemplo • First-fit 100K USED – Comienza a examinar la memoria desde el comienzo y escoge el primer bloque que es lo suficientemente grande – El más rápido 500K USED 200K USED 212K 300K USED 600K M. B. Ibáñez M. B. Ibáñez Ejemplo Ejemplo 100K 100K USED USED 212K 212K 288K 288K USED USED 200K 200K 417K USED USED 300K 300K USED USED 600K M. B. Ibáñez 600K M. B. Ibáñez 4 Ejemplo Ejemplo 100K 120K USED 212K 212K 288K 288K USED USED 200K 200K USED USED 300K 300K USED USED 417K 417K 183K 183K M. B. Ibáñez M. B. Ibáñez Ejemplo Ejemplo 112K 120K 8K 212K 212K 288K 288K USED USED 112K 200K 200K USED USED 300K 300K USED USED 417K 417K 183K 183K M. B. Ibáñez M. B. Ibáñez Ejemplo Ejemplo 112K 112K 8K 8K 212K 212K 300K 508K 208K 300K USED USED 300K 300K USED USED 417K 417K 183K M. B. Ibáñez 183K M. B. Ibáñez 5 Ejemplo Ejemplo 112K 112K 8K 212K 212K 300K 300K USED USED 208K 650K 417K USED 650K 300K 49K USED 417K 183K M. B. Ibáñez M. B. Ibáñez Ejemplo Algoritmos de Colocación 112K • Next-fit 212K 300K USED USED 417K 650K 49K – Comienza a buscar en memoria desde la localidad en donde se realizó la última colocación y escoge, a partir de ahí, el bloque disponible que es lo suficientemente grande – El mayor bloque de memoria es partido en bloques más pequeños – Compactación se requiere para obtener un bloque más grande al final de la memoria M. B. Ibáñez M. B. Ibáñez Ejemplo Ejemplo 100K 100K USED USED 212K 500K 288K USED USED 200K 200K USED 212K USED 300K 300K USED USED 600K M. B. Ibáñez 600K M. B. Ibáñez 6 Ejemplo Ejemplo 100K 100K USED USED 212K 212K 288K 288K USED USED 200K 417K 200K USED USED 300K 300K USED USED 417K 600K 183K M. B. Ibáñez M. B. Ibáñez Ejemplo Ejemplo 120K 120K 212K 212K 288K 288K USED USED 112K 200K 200K USED USED 300K 300K USED USED 417K 417K 183K 183K M. B. Ibáñez M. B. Ibáñez Ejemplo Ejemplo 120K 120K 212K 212K 288K USED 508K 200K USED USED 300K 300K USED USED 417K 417K 112K 112K 71K M. B. Ibáñez 71K M. B. Ibáñez 7 Ejemplo Ejemplo 120K 120K 212K 212K 300K 508K 208K 300K USED USED 300K 300K USED USED 417K 417K 112K 112K 71K 71K M. B. Ibáñez M. B. Ibáñez Ejemplo Ejemplo 212K 120K 300K 212K USED USED 300K 417K 112K 208K 650K 650K USED 300K 691K USED 417K 112K 71K M. B. Ibáñez M. B. Ibáñez Ejemplo Ejemplo 8K 212K 8K 12K First Fit 12K 300K 22K USED USED Best Fit Last allocated 18K block (14K) 417K 6K 2K 112K 8K 8K 6K 650K 6K Allocated block Free block 14K 49K 36K M. B. Ibáñez 14K N ext Fit 20K Before M. B. Ibáñez After 8 Contenido • Particiones Variables • Algoritmos de Colocación – Best Fit – First Fit – Next Fit • Manejo de posiciones libres – Bit Maps – Linked Lists • Alternativa a los esquemas de partición fijos y dinámicos: Buddy System M. B. Ibáñez Manejo de Memoria con Bit Maps A B D 16 8 11111000 11111111 11001111 11111000 ... C E Manejo de Memoria con Bit Maps • La memoria se divide en unidades, tan pequeñas como unas pocas palabras o tan grandes como varios kilobytes • A cada unidad se le asigna un bit en el bit map, que es 0 si la unidad está libre o 1 si está ocupada • Un bit map provee una manera simple de saber qué posiciones de memoria están libres o utilizadas M. B. Ibáñez Manejo de Memoria con Linked Lists • Mantener una lista enlazada de los segmentos que están libres y asignados 24 bit map M. B. Ibáñez M. B. Ibáñez Manejo de Memoria con Linked Lists Contenido A B C D 16 8 E 24 P 0 5 H5 3 P 8 6 P 14 4 H18 2 P 20 6 P 26 3 H 29 3 X • Particiones Variables • Algoritmos de Colocación – Best Fit – First Fit – Next Fit • Manejo de posiciones libres M. B. Ibáñez – Bit Maps – Linked Lists • Alternativa a los esquemas de partición fijos y dinámicos: Buddy System M. B. Ibáñez 9 Buddy System Buddy System Bloques disponibles de tamaño: 2^k, L≤ k ≤U • 2^L el bloque más pequeño que es asignado • 2^U el bloque más grande que es asignado • Al comienzo, el espacio para ser asignado es tratado como un único 1M bloque de tamaño 2^U • Si una petición de tamaño s tal que 2^(U-1) < s ≤ 2^U es solicitada, entonces el bloque completo es asignado • De otro modo, el bloque se parte en dos pedazos de tamaño 2^(U -1). (El proceso es repetido si es necesario) M. B. Ibáñez M. B. Ibáñez Buddy System Buddy System 1M 512K A:: Request 100K 256K 512K A:: Request 100K M. B. Ibáñez M. B. Ibáñez Buddy System Buddy System 256K 512K A:: Request 100K 128K 128K 256K 512K A:: Request 100K M. B. Ibáñez M. B. Ibáñez 10 Buddy System A 128K 256K 512K A:: Request 100K A A 128K 256K 512K B:: Request 240K M. B. Ibáñez M. B. Ibáñez Buddy System Buddy System 128K B 512K B:: Request 240K A Buddy System A 128K B 512K C:: Request 64K M. B. Ibáñez M. B. Ibáñez Buddy System Buddy System 64K 64K B 512K C:: Request 64K A C 64K B 512K C:: Request 64K M. B. Ibáñez M. B. Ibáñez 11 Buddy System A B C 64K Buddy System 512K A D:: Request 256K A M. B. Ibáñez M. B. Ibáñez Buddy System Buddy System B C 64K C 64K 256K 256K D:: Request 256K D 256K D:: Request 256K A B C 64K A C 64K B D 256K Release B M. B. Ibáñez M. B. Ibáñez Buddy System Buddy System 256K D Release B 256K A C 64K 256K D 256K Release A M. B. Ibáñez M. B. Ibáñez 12 Buddy System 128K 256K C 64K D Buddy System 256K Release A 128K C 64K 256K D 256K E: Request 75K M. B. Ibáñez M. B. Ibáñez Buddy System E C 64K 256K D 256K E: Request 75K M. B. Ibáñez 13