Académique Documents
Professionnel Documents
Culture Documents
Indice
Problemas con semforos Definicin de las regiones crticas Implementacin de las regiones crticas Regiones Crticas condicionales Algunos problemas con Regiones Crticas condicionales
Interbloqueo
Una forma de declarar las variables que deben ser accedidas bajo exclusin mutua
var V: compartida T;
donde V es el nombre de la variable y T es el tipo. Una nueva estructura que se usa para codificar la operacin a realizar sobre la variable
region V hacer S
donde V es el nombre de la variable a ser accedida en la regin crtica y S implementa la accin requerida.
Ejemplo
Las RCs se pueden anidar, pero debe tenerse en cuenta que las RCs no se deben anidar en orden inverso en los procesos, de lo contrario podra producirse un interbloqueo.
P y Q se quedan esperando Las regiones crticas resuelven la exclusin mutua pero no la sincronizacin en general.
RCC
Supngase que un proceso quiere acceder a una variable compartida x pero slo si se cumple la condicin B(x). Una forma simple de implementar la espera condicional pero que implica una espera activa es la siguiente:
RCC
A principios de los 70 Hoare y Brinch Hansen propusieron un mecanismo de alto nivel que permite realizar la espera condicional de forma pasiva: la regin crtica condicional (RCC). Una RCC slo se diferencia de una RC en que dentro de la RCC existe una sentencia espera_a_que B. Dicha primitiva slo puede estar dentro de una RC. Si existen varias RCs anidadas, espera_a_que se asocia con la ms prxima. Esta sentencia produce una espera pasiva. Su semntica es la siguiente: 1. Si la condicin B es cierta el proceso contina por la siguiente sentencia a la espera_a_que. 2. Si la condicin B es falsa el proceso detiene su ejecucin, abandona la RC para permitir a otros procesos entrar en ella y pasa a una cola Qs de espera asociada con la RC.
10
RCC
Qv que es donde espera un proceso cuando quiere entrar a una RC que est ocupada. Constituye la cola de entrada a la RC. Qs que es donde esperan los procesos que evaluaron la condicin de la sentencia espera_a_que a falso.
11
12
Ejemplo 1.
En un hotel hay 10 vehculos automticos pequeos y otros 10 grandes. Todos ellos estn controlados por un programa con procesos concurrentes (uno por vehculo). Estamos interesados en la parte del programa que controla la entrada en un montacargas en el que cogen hasta 4 vehculos pequeos o 2 vehculos pequeos y 1 grande
Ejemplo 1.
Ejemplo 1.
Ejemplo 2.
Supngase que existen 4 montones de papeles y que hay que coger uno de cada montn y grapar los cuatro juntos. El proceso debe repetirse hasta que se acaben los montones (que contienen el mismo nmero de papeles).
Ejemplo 2.
Ejemplo 2.
Ejemplo 3.
Sea una carretera por la que circulan coches en los dos sentidos. La carretera cruza un ro donde slo es posible la circulacin de coches en un sentido (ver figura). Sobre el puente pueden estar varios coches del mismo sentido. Se pide disear un protocolo que permita circular a los coches sobre el puente y realizar un programa siguiendo tal protocolo. En este programa cada coche estar representado por un proceso. Se debe conseguir que: a) No haya interbloqueos. Dos coches de diferentes sentidos no pueden bloquearse en medio del puente. b) El protocolo que permite el paso de los coches sobre el puente sea justo. No se puede favorecer a los coches de algn sentido a costa de perjudicar a los otros.
El protocolo ser el siguiente: 1. El puente ser una variable compartida por los procesos. Cada vehculo (proceso) deber indicar el sentido de circulacin (Norte>Sur Sur->Norte). As, programando el acceso al puente como RC se evitaran los interbloqueos si se controla el nmero de vehculos de cada sentido dentro del puente. 2. Cada 10 vehculos que pasen en un sentido (cada cierto tiempo) se invertir el sentido que tiene preferencia de paso por el puente. Habr que controlar, por tanto, el nmero de vehculos de cada sentido que pasan el puente. Este nmero debe incrementarse cada vez que un vehculo entra en el puente, pues en caso contrario el nmero de vehculos que cruzan el puente entre dos cambios consecutivos del sentido de preferencia de paso dependera de la longitud del puente. 3. Un vehculo que llega al puente en el sentido que no tiene preferencia, podr cruzarlo si dentro del puente no hay ningn vehculo en el sentido preferente (contrario) y si no hay ningn vehculo de dicho sentido esperando entrar al puente.
Ejemplo 3.
Ejemplo 3.
Ejemplo 3.
y consumidor*)
24
process Consumidor; var local : char; begin repeat region Buffer when Buffer.Cuantos <> 0 do SacarDeBuffer(local); write(local); until local = z; writeln end;
25
28
Pueden estar dispersas en el texto del programa La integridad de una estructura de datos compartida es facilmente daada Dificiles de implementar eficientemente
29