La
granularidad de sincronización, o frecuencia, entre procesos en el sistema, es
una buena manera de caracterizar multiprocesadores y ubicarlos en un contexto
con otras arquitecturas. Se pueden distinguir cinco categorías de paralelismo
que difieren en el grado de granularidad. Estas categorías se encuentran
resumidas en la tabla 10.1.

Tabla 10.1
Pocesos y granularidad de la sincronización
Ø
Paralelismo de Grano Fino:
El paralelismo de grado fino representa un uso mucho más complejo del
paralelismo que es encontrado en el uso de hebras. Aunque muchos trabajos han sido hechos
en aplicaciones altamente
paralelas, es un área especializada y fragmentada, con muchos enfoques
diferentes.
Ø
Paralelismo de Grano Medio:
Una aplicación puede ser efectivamente implementada como una colección de
hebras con un paralelismo simple.
En este caso, el paralelismo potencial de una aplicación debe ser explícitamente
especificado por el programador. Generalmente
se necesitará un alto grado de coordinación e interacción entre las
hebras de una aplicación, levando a un nivel medio de sincronización.
Mientras que el paralelismo independiente, de gran grueso y de grano muy
grueso puedan verse respaldados tanto en un monoprocesador
multiprogramado como en un multiprocesador con poco o ningún impacto
sobre la función de planificación, se debe revisar la planificación cuando se
trata de la planificación de hilos. Puesto que los diversos hilos de una
planificación interactúan de forma muy frecuente, las decisiones de
planificación que involucran a un hilo pueden afectar al rendimiento de la
aplicación completa.
Ø
Paralelismo de Grano Grueso y muy grueso:
Con esta clase de paralelismo existe sincronización entre procesos pero a nivel
muy grosero. Esta clase de situación es fácilmente entendible como un grupo de
procesos concurrentes ejecutándose
en un monoprocesador multiprogramado y puede ser soportado en un multiprocesador
con un pequeño o no cambio al software del usuario.
Un ejemplo simple de una aplicación que puede aprovechar la presencia de
un microprocesador. Los autores han desarrollado un programa que recibe una
especificación de los archivos que necesitan ser recopilados para reconstruir
una parte del software y determinan cuales de estas compilaciones (normalmente
todas) pueden ejecutarse simultáneamente el programa crea entonces un proceso
para cada compilación paralela. Los resultados indican que la aceleración en
un multiprocesador supera la que
realmente la que podría esperarse añadiendo simplemente el número de
procesadores usados, debido a las sinergias en las caches del disco y compartir
el código del compilador, que se carga en la memoria solo una vez.
En general, cualquier conjunto de procesos concurrentes que necesiten
comunicarse o sincronizarse puede aprovechar el uso de las arquitecturas
de los multiprocesadores. Un sistema distribuido puede ofrecer un soporte
adecuado en caso de interacciones poco frecuentes entre los procesos. Sin
embargo, si la interacción es algo más frecuente, la sobrecargo de
comunicaciones a través de la red puede anular parte de la posible aceleración.
En este caso, la organización del multiprocesador ofrece el soporte más
efectivo.
Ø
Paralelismo Independiente: Entre
los procesos no existe una sincronización explícita. Cada uno representa una
separación, una aplicación independiente. El uso típico de este tipo de
paralelismo es en los sistemas de tiempo compartido.
Cada usuario está
ejecutando una aplicación en particular, como un procesador de textos o una
hoja de cálculo. El multiprocesador ofrece el mismo servicio que un procesador
multiprogramado. Como hay más de un procesador disponible, el tiempo medio de
respuesta a los usuarios será menor.
Es posible alcanzar un
aumento similar de rendimiento proporcionado a cada usuario un computador
personal o una estación de trabajo. Si van a compartirse archivos o alguna
información, entonces se deben conectar los sistemas individuales
en un sistema distribuido soportado por una red. Por otro lado, un único
sistema multiprocesador ofrece, en muchos casos, un coste mejor que un sistema
distribuido, pudiendo así mejorar los discos y otros periféricos.