Concurrencia

Páginas: 8 (1966 palabras) Publicado: 25 de abril de 2012
7. Programación Concurrente
1. ¿Qué es la programación concurrente? Se conoce por programación concurrente a la rama de la informática que trata de las técnicas de programación que se usan para expresar el paralelismo entre tareas y para resolver los problemas de comunicación y sincronización entre procesos. El principal problema de la programación concurrente corresponde a no saber en que ordense 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. 2. Cobegin y Coend. La ejecución concurrente de los procesos la indicaremos mediante la estructura cobegin/coend. La palabra cobegin indica el comienzo de la ejecución concurrente de los procesos que se señalan hasta la sentencia coend.Veamos un ejemplo: 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. Veamos un ejemplo de un programa no consistente: el orden de ejecución de las sentencias afecta elresultado. J= 10; COBEGIN Print J; J = 1000; COEND Print J; Si se ejecutara primero la sentencia Print J entonces se imprimiría “10 1000”. Pero si se ejecutara primero la sentencia J=1000 entonces se imprimiría “1000 10”. El resultado no es el mismo, por lo cual el programa es inconsistente.

1

3. Sección crítica y mutua exclusión El método más sencillo de comunicación entre los procesos deun programa concurrente es el uso común de unas variables de datos. Esta forma tan sencilla de comunicación puede llevar, no obstante, a errores en el programa ya que el acceso concurrente puede hacer que la acción de un proceso interfiera en las acciones de otro de una forma no adecuada. Para evitar este tipo de errores se pueden identificar aquellas regiones de los procesos que acceden avariables compartidas y dotarlas de la posibilidad de ejecución como si fueran una única instrucción. Se denomina Sección Crítica a aquellas partes de los procesos concurrentes que no pueden ejecutarse de forma concurrente o, también, que desde otro proceso se ven como si fueran una única instrucción. Esto quiere decir que si un proceso entra a ejecutar una sección crítica en la que se accede a unasvariables compartidas, entonces otro proceso no puede entrar a ejecutar una región crítica en la que acceda a variables compartidas con el anterior. Las secciones críticas se pueden mutuo excluir. Para conseguir dicha exclusión se deben implementar protocolos software que impidan o el acceso a una sección crítica mientras está siendo utilizada por un proceso. 4. Semáforos: Concepto

Dijkstra dio en1968 una solución al problema de la exclusión mutua con la introducción del concepto de semáforo binario. Está técnica permite resolver la mayoría de los problemas de sincronización entre procesos y forma parte del diseño de muchos sistemas operativos. Un semáforo binario es un indicador (S) de condición que registra si un recurso está disponible o no. Un semáforo binario sólo puede tomar dosvalores: 0 y 1. Si, para un semáforo binario, S = 1 entonces el recurso está disponible y la tarea lo puede utilizar; si S = 0 el recurso no está disponible y el proceso debe esperar. Los semáforos se implementan con una cola de tareas a la cual se añaden los procesos que están en espera del recurso. Así pues, un semáforo binario se puede definir como un tipo de datos especial que sólo puede tomar losvalores 0 y 1, con una cola de tareas asociada y con sólo tres operaciones para actuar sobre él: • INIT (S, val): inicializa al semáforo en el valor val (0 ó 1) • P(S): if S = 1 then S := 0 else Suspender la tarea que hace la llamada y ponerla en la cola de tareas if la cola de tareas está vacía then S := 1 else Reanudar la primera tarea de la cola de tareas 2



V(S):

La operación...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Concurrencia
  • Concurrente
  • concurrencia
  • Concurrencia
  • Concurrente
  • Concurrencia
  • CONCURRENCIA
  • Concurrencia

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS