Sistemas operativos modernos
control de los procesos listos. Cuando una CPU se queda sin trabajo, pide al sistema operativo un proceso que ejecutar, y se le asigna uno. Así, nunca puede suceder que una CPU esté inactiva mientras otra está sobrecargada. De forma similar, pueden asignarse páginas en forma dinámica entre todos los procesos y sólo hay un caché de búfer, así que nunca se presentan inconsistencias. El problema con este modelo es que si hay muchas CPUs, el amo se convertirá en un cuello de botella. Después de todo, tiene que manejar todas las llamadas al sistema de todas las CPUs. Por ejemplo, si se dedica 10% del tiempo, a manejar llamadas al sistema, entonces diez CPUs práctica mente saturarán al amo, y con 20, el amo estará sobrecargado por completo. Por tanto, este mode lo es sencillo y práctico en multiprocesadores pequeños, pero falla en los grandes. Multiprocesadores simétricos Nuestro tercer modelo, el multiprocesador simétrico (SMP; Symmetric MultiProcessor), eU- mina esta asimetría. Hay una copia del sistema operativo en la memoria, pero cualquier CPU puede ejecutarla. Cuando se emite una llamada al sistema, la CPU en la que se emitió salta al kemel y procesa dicha llamada. En la figura 8-9 se ilustra el modelo SMP. CPU 1 CPU 2 CPU 3 CPU 4 Memoria E/S Figura 8-9. El modelo de multiprocesador SMP. Este modelo balancea los procesos y la memoria en forma dinámica, puesto que sólo hay un conjunto de tablas del sistema operativo. También elimina el cuello de botella del procesa dor amo, ya que no existe el amo, pero introduce sus propios problemas. En particular, si dos o más CPUs están ejecutando código del sistema operafivo al mismo tiempo, el resultado será un desastre. Imaginemos que dos CPUs escogen en forma simultánea el mismo proceso para que se ejecute, o que se adueñan al mismo tiempo de la misma página de memoria libre. La forma más senciUa de resolver estos problemas es asociar un mutex (o sea, un bloqueo) al sis tema operativo, convirtiendo así a todo el sistema en una gran región crítica. Cuando una CPU quiera ejecutar código del sistema operativo, primero deberá adquirir el mutex. Si el mutex es tá bloqueado, la CPU tan sólo esperará. Así, cualquier CPU podrá ejecutar el sistema operati vo, pero no será posible que dos lo hagan al mismo tiempo. Este modelo funciona, pero es casi tan malo como el de amo-esclavo. Una vez más, supon gamos que 10% de todo el fiempo de ejecución se pasa dentro del sistema operativo. Con 20
RkJQdWJsaXNoZXIy MjI4NDcx