Sistemas operativos modernos

8.1 MULTIPROCESADORES Un multiprocesador de memoria compartida (que llamaremos simplemente multiprocesador de aquí en adelante) es un sistema de cómputo en el que dos o más CPUs comparten pleno ac­ ceso a una RAM común. Un programa que se ejecuta en cualquiera de las CPUs ve un espacio de direcciones virtual normal (por lo regular paginado). La única propiedad inusitada de este sis­ tema es que la CPU puede escribir algún valor en una palabra de la memoria, leer después esa palabra y obtener un valor distinto (porque otra CPU lo modificó). Con la organización correc­ ta, esta propiedad consdtuye la base de la comunicación entre procesadores: una CPU escribe datos en la memoria y otra los lee. En esencia, los sistemas operativos para multiprocesador son sistemas operativos norma­ les: manejan llamadas al sistema, administran la memoria, proporcionan un sistema de archi­ vos y administran dispositivos de E/S. No obstante, hay ciertas áreas en las que tienen características únicas. Éstas incluyen la sincronización de procesos, la administración de recur­ sos y la calendarización. A continuación daremos un vistazo al hardware de multiprocesador y luego analizaremos los aspectos del sistema operativo. 8.1.1 Hardware de multiprocesador Aunque todos los multiprocesadores tienen la propiedad de que todas las CPUs pueden direc­ cionar toda la memoria, algunos multiprocesadores tienen la propiedad adicional de que todas las palabras de la memoria pueden leerse con la misma rapidez. Estas máquinas se denominan multiprocesadores de acceso uniforme a la memoria (UMA; Uniform Memory Access). En contraste, los multiprocesadores de acceso no uniforme a la memoria (NUMA; Nonuniform Memory Access) carecen de esta propiedad. Más adelante quedará claro por qué existe esta di­ ferencia. Primero examinaremos los multiprocesadores UMA y luego pasaremos a los NUMA. Arquitecturas SMP UMA basadas en un bus Los multiprocesadores más sencillos se basan en un solo bus, como se ilustra en la figura 8-2a. Dos o más CPUs y uno o más módulos de memoria utilizan el mismo bus para la comunicación. Cuando una CPU quiere leer una palabra de la memoria, primero verifica si el bus está ocupado o no. Si está libre, la CPU coloca allí la dirección de la palabra que desea, emite unas cuantas seña­ les de control y espera hasta que la memoria coloque la palabra deseada en e! bus. Si el bus está ocupado cuando una CPU quiere leer o escribir en la memoria, la CPU tan sólo espera hasta que se desocupe. Es aquí donde radica el problema de este diseño. Con dos o tres CPUs, la competencia por el bus es manejable; con 32 o 64 es insoportable. El sistema quedará limitado por completo por el ancho de banda del bus y casi todas las CPUs estarán inacfivas la mayor parte del tiempo. La solución de este problema es añadir un caché a cada CPU, como se muestra en la figu­ ra 8-2b. El caché puede estar dentro del chip de la CPU, junto a él, en la taijeta del procesador

RkJQdWJsaXNoZXIy MjI4NDcx