Sistemas operativos modernos

Página Figura 10-17. Linux emplea tablas de páginas de tres niveles. Además, Linux maneja módulos que se cargan en forma dinámica y, por lo regular, son con­ troladores de dispositivos. Su tamaño puede ser arbitrario y a cada uno se le debe asignar un área de memoria de kemel contigua. Debido a estos requisitos, Linux administra la memoria fí­ sica de tal forma que pueda obtener un trozo de memoria de tamaño arbitrario cuando quiera. El algoritmo que usa se conoce como algoritmo del amigo (buddy), el cual se describe a continuación. La idea básica para administrar un trozo de memoria es la siguiente. En un principio, la memoria consiste en una sola pieza contigua, de 64 páginas en el sencillo ejemplo de la figura 10-18a. Cuando llega una solicitud de memoria, primero se redondea a una potencia de 2, diga­ mos ocho páginas. Luego toda la memoria se divide a la mitad, como se muestra en (b). Puesto que cada uno de estos fragmentos aún es demasiado grande, el fragmento inferior se divide otra vez a la mitad (c), y luego otra vez (d). Ahora tenemos un trozo del tamaño correcto, así que lo asignamos al invocador, lo cual se indica con sombreado en (d). 64 32 32 32 16 16 (a) (b) (c) 32 16 (d) 32 (h) 32 16 Figura 10-18. Funcionamiento del algoritmo del amigo. Supongamos que ahora llega una segunda solicitud de ocho páginas. Ya es posible satisfa­ cerla directamente (e). Ahora llega una tercera solicitud de cuatro páginas. El trozo más peque­ ño disponible se parte a la mitad (f) y una de las mitades se ocupa (g). Ahora se libera el segundo de los trozos de ocho páginas (h). Por último, se libera el otro trozo de ocho páginas. Puesto que

RkJQdWJsaXNoZXIy MjI4NDcx