Anda di halaman 1dari 2

PROGRAMACION CONCURRENTE

La idea de programacin concurrente siempre ha estado asociada a los sistemas


operativos: Un slo procesador de gran capacidad deba repartir su tiempo entre
muchos usuarios, esta se haca a bajo nivel (ensamblador). Posteriormente
aparecieron lenguajes de alto nivel con soporte para este tipo de programacin.
Cuando se habla de concurrencia en esta ocurren varios procesos de manera
contempornea, teniendo en cuenta tecinas de programacin que se usan para
expresar el paralelismo entre tareas y resolver los problemas de comunicacin y
sincronizacin entre procesos.
Una de las ventajas de esta programacin es la velocidad de ejecucin que al
subdividir un programa en procesos, estos se pueden asignar entre procesadores
o gestionar en nico procesador segn si nivel de importancia.
El principal problema de la programacin concurrente corresponde a no saber en
que orden se ejecutan los programas (en especial los programas que se
comunican). Se debe tener especial cuidado en que este orden no afecte el
resultado de los programas.
La ejecucin concurrente de los procesos la indicaremos mediante la estructura
cobegin/coend. La palabra cobegin indica el comienzo de la ejecucin concurrente
de los procesos que se sealan hasta la sentencia coend. Ej:
S1;
COBEGIN
S2;
S3;
COEND
S4;
Esto quiere decir que:
Primeramente se debe ejecutar S1, y no se puede ejecutar en paralelo con nada.
S2 y S3 se pueden ejecutar en paralelo, luego de ejecutado S1
S4 se ejecutar al terminar S2 y S3, y no se puede ejecutar en paralelo con
nada.
Aquellas partes de los procesos concurrentes que no pueden ejecutarse de forma
concurrente o, que desde otro proceso se ven como si fueran una nica
instruccin se le dice que es una seccin crtica. Esto quiere decir que si un
proceso entra a ejecutar una seccin crtica en la que se accede a unas variables

compartidas, entonces otro proceso no puede entrar a ejecutar una regin crtica
en la que acceda a variables compartidas con el anterior.
Los semforos se implementan con una cola de tareas a la cual se aaden los
procesos que estn en espera del recurso. Esta tcnica permite resolver la
mayora de los problemas de sincronizacin entre procesos y forma parte del
diseo de muchos sistemas operativos.
Dos son los grandes problemas a resolver en problemas de naturaleza
concurrente: el problema de la exclusin mutua y el problema de la condicin de
sincronizacin. Un programa concurrente ser correcto si, adems de contemplar
sus especificaciones funcionales donde irn implcitas condiciones de exclusin
mutua y de sincronizacin, es capaz de evitar que se produzcan situaciones de
interbloqueo y de inanicin de procesos.

Anda mungkin juga menyukai