You are on page 1of 3

¿Qué es un sistema paralelo?

Un proceso paralelo es aquel que se realiza al mismo tiempo que otro, siendo ejecutados ambos
de modo simultáneo. Cuando hablamos de procesos paralelos en un ordenador, nos referimos a
aquellos procesos que se ejecutan y/o procesan a la vez, anteponiéndose a los procesos lineales o
secuenciales, que serán ejecutados de uno en uno.

El proceso paralelo sólo es posible si disponemos de varias unidades de proceso, generalmente


núcleos o procesadores. Esto se debe a que los procesadores son secuenciales, esto es, ejecutan
las órdenes una por una, y por tanto no pueden ejecutar dos a la vez. Para solucionar esto se han
inventado diversas fórmulas, como añadirles coprocesadores, derivar las operaciones a otros
equipos conectados entre si, disponer de múltiples núcleos... etc. Vamos, en definitiva tener un
sistema con una estructura capaz de trabajar junta y compartir tareas, lo que se llama un proceso
cooperativo.

El proceso en paralelo tiene muchas ventajas sobre el sistema secuencial clásico. Permite salvar el
llamado cuello de botella, algo que sucede en los atascos y también en el ordenador: si un proceso
funciona lentamente, los demás deben esperar a que se termine para ejecutarse, con lo cual el
rendimiento del ordenador se verá afectado en gran medida. Con un sistema en paralelo, aunque
un proceso sea lento, el resto continúan ejecutándose, lo que permite evitar este efecto. Sin
embargo, el proceso en paralelo tiene un gran inconveniente: es mucho más complejo,
básicamente porque para que un sistema trabaje en paralelo debes indicarle a donde derivar cada
proceso, y esta tarea requiere ser hecha de antemano, o al menos tomar decisiones en el
momento previo a ejecutar los procesos. Esto puede ralentizar el inicio de las tareas, al requierir
cálculos previos. Además algunas tareas pueden no ser divisibles, o el programa haber sido
diseñado para que los pasos se hagan uno a uno, con lo cual el procesamiento paralelo lejos de
ayudar puede entorpecer la ejecución.

Existen varios métodos para hacerlo: uno es descomponiendo cada proceso en procesos más
pequeños de los cuales se encargará cada núcleo individualmente (esto es, dividir las tareas en
otras más pequeñas) y otro sería derivar los procesos según el tipo que sean hacia la unidad más
adecuada para ejecutarlos. Pongamos un ejemplo en donde se verá bien esto último: un programa
que va a realizar dos tareas, tocar música y hacer unos cálculos. Si disponemos de una tarjeta de
sonido, la música irá a ella para que se ejecute y los cálculos al coprocesador matemático. Cada
tarea viaja entonces a un sistema que las procesará muy eficientemente pues ha sido diseñado
con ese fin.

Como vemos, el proceso en paralelo es algo que se puede dar dentro de un ordenador con un solo
procesador, o bien en un ordenador con múltiples procesadores, e incluso en múltiples
ordenadores conectados entre si por medio de una red. En este sentido, ya existen en Internet
desde hace tiempo redes de ordenadores interconectados que emplean los procesos paralelos
para ahorrar tiempo y costes en proyectos de gran envergadura.

Seguramente muchos de vosotros habéis leído o escuchado acerca de la capacidad Multitarea que
tiene un sistema operativo, siendo este concepto utilizado quizá en forma intuitiva por los
usuarios, y que consiste en que podamos realizar más de una operación a la vez en el ordenador,
teniendo esta función brindada por el Software en sí.

Esta aptitud permite por ejemplo que tengamos una Ventana Activa en la que por ejemplo
estemos viendo un Archivo de Video, mientras que existen por otro lado las denominadas como
aplicaciones En Segundo Plano, que se encuentran minimizadas, no visibles en el equipo, y que
estén corriendo distintos Procesos en paralelo a lo que estemos realizando.

Un concepto que está estrechamente ligado a esta funcionalidad es justamente el de


Multiprocesamiento, también llamado Multiproceso, en el cual tenemos la acción de dos o más
Unidades de Procesamiento en las cuales están abocados, en cada una de ellas, una cantidad
determinada de procesos, realizando cada una de ellas una parte o un todo del mismo.

Conocemos entonces al Multiproceso, tal como su nombre lo indica, a la aptitud para hacer uso de
dos o más procesos que concurren en un mismo sistema, diferenciándose lógicamente de aquellos
sistemas en los que solamente pueden realizar un proceso único en un instante específico.

La capacidad de Multitarea permite entonces hacer que una Unidad Central de Procesamiento
pueda ser compartida por una gran cantidad de procesos que estén corriendo al mismo tiempo,
mientras que en las últimas tecnologías propuestas, donde tenemos Múltiples CPU, podemos
contar con la realización de distintas etapas del mismo proceso dividiéndose estas tareas en cada
uno de los núcleos que se posean.

La tarea de Multiproceso raramente sea aplicada a los usos generales del sistema, ya que existen
una gran variedad de aplicaciones que realizan un manejo de Estado o Contexto (es decir, Datos
Internos) en una variable cantidad al mismo tiempo, considerándose que cada uno de estos datos
son incorruptibles y no pueden ser duplicados o alterados durante el proceso.

Sin embargo, es posible que esta alteración ocurra en caso de realizarse dos o más copias de un
mismo Proceso, en el caso de que los núcleos del Procesador intenten escribir o leer su Contexto
al mismo tiempo.

Para evitar esta corrupción de datos es necesario que en el momento de la Programación (es decir,
el diseño del Software que ordenará la ejecución de los Procesos) existan herramientas de
comprobación y bloqueo, de modo tal que solamente se admita a una copia del Procedimiento
con la aptitud de poder modificar sus valores.
Motivación y Aspectos de la Progr. Paralela

 Computador paralelo: Capaz de ejecutar varias instrucciones simultáneamente.


 Computación Paralela: Uso de variosprocesadores trabajando juntos para resolver una
tarea común:
o Cada procesador trabaja en una porción del
problema
o Los procesos/hebras pueden intercambiar
datos, a través de la direcciones de memoria
compartidas o mediante una red de
interconexión

 Programación Paralela: Aborda los aspectos conceptuales y las particularidades físicas de


la computación paralela.
o Objetivo: Mejorar las prestaciones mediante un buen aprovechamiento de la
ejecución simultánea.

You might also like