6.2.
1 Diseño de Software de Arquitectura Multiprocesador
Un sistema multiproceso o multitarea es aquel que permite ejecutar varios
procesos de forma concurrente, la razón es porque actualmente la mayoría de las
CPU’s sólo pueden ejecutar un proceso cada vez. La única forma de que se
ejecuten de forma simultánea varios procesos es tener varias CPU’s (ya sea en una
máquina o en varias, en un sistema distribuido.
La ventaja de un sistema multiproceso reside en la operación llamada cambio de
contexto. Esta operación consiste en quitar a un proceso de la CPU, ejecutar otro
proceso y volver a colocar el primero sin que se entere de nada.
El multiproceso no es algo difícil de entender: más procesadores significa más
potencia computacional. Un conjunto de tareas puede ser completado más
rápidamente si hay varias unidades de proceso ejecutándolas en paralelo. Esa es
la teoría, pero otra historia es la práctica, como hacer funcionar el multiproceso, lo
que requiere unos profundos conocimientos tanto del hardware como del software.
Es necesario conocer ampliamente como están interconectados dichos
procesadores, y la forma en que el código que se ejecuta en los mismos ha sido
escrito para escribir aplicaciones y software que aproveche al máximo sus
prestaciones.
Para lograrlo, es necesario modificar varias facetas del sistema operativo, la
organización del código de las propias aplicaciones, así como los lenguajes de
programación.
Se configuran dos computadoras de gran capacidad interconectados
electrónicamente entre si. Esta configuración recibe el nombre de multiproceso y
se caracteriza porque permite proceso de datos continuo aún en el caso de que
surjan problemas de funcionamiento en alguno de las computadoras.
Un ejemplo de este tipo de sistema se muestra en la figura 6.3. Éste es un modelo
sencillo de un sistema de control de tráfico aéreo. Un conjunto de sensores
distribuidos recolecta la información del flujo de tráfico y la procesa localmente
antes de enviarla al cuarto de control. Los operadores toman decisiones utilizando
esta información y dan instrucciones a un proceso de control de diversas luces de
tráfico. En este ejemplo existen varios procesos lógicos para administrar los
sensores, el cuarto de control y las luces de tráfico. Estos procesos lógicos son
procesos sencillos a un grupo de procesos. En este ejemplo se ejecutan en
procesadores diferentes.
Los sistemas de software compuestos de procesos múltiples no necesariamente
son sistemas distribuidos. Si más de un procesador está disponible, entonces se
puede implementar la distribución, pero los diseñadores del sistema no siempre
consideran lo puntos de distribución durante el proceso de diseño. El enfoque de
diseño para este tipo de sistemas es esencialmente el mismo que para los de
tiempo real.
Ventajas
• Es económica.
• El uso de componentes comúnmente disponibles, en grandes cantidades, permite
ofrecer mayor rendimiento, a un precio menor que el de máquinas con
procesadores especialmente diseñados (como por ejemplo las máquinas de
procesadores vectoriales y de propósito específico).
• Adicionalmente, las computadoras paralelas son inherentemente escalables,
permitiendo actualizarlas para adecuarlas a una necesidad creciente.
• Las arquitecturas “tradicionales” se actualizan haciendo los procesadores
existentes obsoletos por la introducción de nueva tecnología a un costo
posiblemente elevado. Por otro lado, una arquitectura paralela se puede actualizar
en términos de rendimiento simplemente agregando más procesadores.
Desventajas
• En ocasiones se menciona también la limitante física; existen factores que
limitan la velocidad máxima de un procesador, independientemente del factor
económico.
• Barreras físicas infranqueables, tales como la velocidad de la luz, efectos
cuánticos al reducir el tamaño de los elementos de los procesadores, y problemas
causados por fenómenos eléctricos a pequeñas escalas, restringen la capacidad
máxima de un sistema uniprocesador, dejando la opción obvia de colocar muchos
procesadores para realizar cálculos cooperativamente.