Los procesos son concurrentes si
existen simultaneamente. Los procesos concurrentes pueden funcionar en forma
totalmente independiente unos de otros, o pueden ser asincronos, lo cual
significa que en ocasiones requieren cierta sincronizacion o cooperacion.
Cuando dos o mas procesos llegan al
mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de
procesos. Es importante mencionar que para que dos o mas procesos sean
concurrentes , es necesario que tengan alguna relacion entre ellos como puede
ser la cooperacion para un determinado trabajo o el uso de informacion o
recursos compartidos, por ejemplo: en un sistema de un procesador , la
multiprogramacion es una condicion necesaria pero no suficiente para que
exista concurrencia, ya que los procesos pueden ejecutarse de forma
totalmente independiente.
Por otro lado en un sistema de varios
procesos se puede presentar la concurrencia siempre y cuando las actividades
necesiten actuar entre si ya sea para utilizar informacion en comun o para
cualquier otra cosa.
Existen tres formas modelos de computadora en los que se puede pueden ejecutar procesos concurrentes:
Multiprogramacion con un unico
procesador.
En este modelo todos los procesos
concurrentes ejecutan sobre un unico procesador. El sistema operativo se
encarga de ir repartiendo el tiempo del procesador entre los distintos
procesos, intercalando la ejecucion de los mismos para dar asi una apariencia
de ejecucion simultanea.
Multiprocesador.
Un multiprocesador es una maquina
formada por un conjunto de procesadores que comparten memoria principal. En
este tipo de arquitecturas, los procesos concurrentes no solo pueden
intercalar su ejecucion sino tambien superponerla. En este caso si existe una
verdadera ejecucion simultanea de procesos, al coincidir las fases de
procesamiento de distintos procesos. En un instante dado se pueden ejecutar
de forma simultanea tantos procesos como procesadores haya.
Multicomputadora.
Una multicomputadora es una maquina
de memoria distribuida, en contraposicion con el multiprocesador que es de
memoria compartida. Esta formada por una serie de computadoras completas con
su UCP, memoria principal y, en su caso, periferia. Cada uno de estos
procesadores completo se denomina nodo. Los nodos se encuentran conectados y
se comunican entre si a traves de una red de interconexion, empleando el
metodo de paso de mensajes. En este tipo de arquitecturas tambien es posible
la ejecucion simultanea de los procesos sobre los distintos procesadores.
En general la concurrencia sera aparente siempre que el numero de
procesos sea mayor que el de procesadores disponibles, es decir, cuando haya
mas de un proceso por procesador. La concurrencia sera real cuando haya un
proceso por procesador
|
|
Sincronización
de Procesos
|
|
En muchos casos, los procesos se
reunen para realizar tareas en conjunto, a este tipo de relacion se le llama
procesos cooperativos. Para lograr la comunicacion, los procesos deben
sincronizarse, de no ser asi pueden ocurrir problemas no deseados. La
sincronizacion es la transmision y recepcion de senales que tiene por objeto
llevar a cabo el trabajo de un grupo de procesos cooperativos.
Es la coordinacion y cooperacion de
un conjunto de procesos para asegurar la comparacion de recursos de computo.
La sincronizacion entre procesos es necesaria para prevenir y/o corregir
errores de sincronizacion debidos al acceso concurrente a recursos
compartidos, tales como estructuras de datos o dispositivos de E/S, de
procesos contendientes. La sincronizacion entre procesos tambien permite
intercambiar senales de tiempo (ARRANQUE/PARADA) entre procesos cooperantes
para garantizar las relaciones especificas de precedencia impuestas por el
problema que se resuelve.
Sin una sincronizacion adecuada entre
procesos, la actualizacion de variables compartidas puede inducir a errores
de tiempo relacionados con la concurrencia que son con frecuencia dificiles
de depurar. Una de las causas principales de este problema es que procesos
concurrentes puedan observar valores temporalmente inconsistentes de una
variable compartida mientras se actualizan. una aproximacion para resolver
este problema es realizar actualizaciones de variables compartidas de manera
mutuamente exclusiva. Se pueden mejorar permitiendo que a lo mas un proceso
entre a la vez en la seccion critica de codigo en la que se actualiza una
variable compartida o estructura de datos en particular.
Para que los procesos puedan
sincronizarse es necesario disponer de servicios que permitan bloquear o
suspender bajo determinadas circunstancias la ejecucion de un proceso. Los
principales mecanismos de sincronizacion que ofrecen los sistemas operativos
son:
|
No hay comentarios:
Publicar un comentario