Sistemas operativos modernos

lar. Con este algoritmo, la localización de un hueco del tamaño requerido es extremadamente rá­ pida, pero tiene la misma desventaja de todos los esquemas que ordenan por tamaño, es decir, cuando un proceso termina o se intercambia a disco resulta costoso localizar a sus vecinos para ver si puede haber una fusión o no. Si no hay fusión, la memoria pronto se fragmentará en un gran número de huecos pequeños en los que no cabe ningún proceso. 4.3 MEMORIA VIRTUAL Hace muchos años aparecieron los primeros programas que eran demasiado grandes para caber en la memoria disponible. La solución que se adoptaba comúnmente era dividir el programa en fragmentos, llamados superposiciones (overlays). La superposición O comenzaría a ejecutarse primero. Al terminar, invocaría a otra. Algunos sistemas de superposiciones eran muy comple­ jos y permitían tener varias superposiciones en memoria a la vez. Éstas se conservaban en dis­ co y el sistema operativo las intercambiaba entre el disco y la memoria, en forma dinámica, según se les necesitaba. Aunque el sistemas realizaba el trabajo real de intercambiar superposiciones, el programa­ dor tenía que encargarse de dividir en partes el programa. La división de programas grandes en pequeños fragmentos modulares era tardada y tediosa. No pasó mucho tiempo antes de que al­ guien pensara en una forma de dejar toda esa labor a la computadora. El método ideado (Fotheringham, 1961) se ahora conoce como memoria virtual. La idea básica de este esquema es que el tamaño combinado del programa, sus datos y su pila podría exceder la cantidad de memoria física que se le puede asignar. El sistema mantiene en la me­ moria principal las partes del programa que se están usando en ese momento, y el resto en el disco. Por ejemplo, un programa de 16 MB puede ejecutarse en una máquina de 4 MB si se es­ coge con cuidado cuáles 4 MB se tendrán en la memoria en cada instante, intercambiando frag­ mentos del programa entre el disco y la memoria, según sea necesario. La memoria virtual también puede funcionar en un sistema multiprogramado, con diver­ sos fragmentos de muchos programas en memoria a la vez. Mientras un programa espera que se traiga del disco una parte de sí mismo, está esperando E/S y no puede ejecutarse, así que la CPU puede asignarse a otro proceso, igual que en cualquier otro sistema con multipro­ gramación. 4.3.1 Paginación La mayoría de los sistemas con memoria virtual utiliza una técnica llamada paginación, que describiremos a continuación. En cualquier computadora existe un conjunto de direcciones de memoria que los programas pueden producir. Cuando un programa ejecuta una instrucción como

RkJQdWJsaXNoZXIy MjI4NDcx