Resumen sobre la concurrencia y la exclusion en el diseno de sistemas operativos

Solo disponible en BuenasTareas
  • Páginas : 5 (1033 palabras )
  • Descarga(s) : 0
  • Publicado : 1 de octubre de 2010
Leer documento completo
Vista previa del texto
CONCURRENCIA Y EXCLUSION MUTUA

Direccionamiento send(destino, mensaje),receive (origen, mensaje)

Los distintos esquemas para hacer referencia a los procesos en las primitivas send y receive se encuadran dentro de dos categorías: direccionamiento directo e indirecto.Con el direccionamiento directo, la primitiva send incluye una identificación específica del proceso destino. Con eldireccionamiento directo, la primitiva send incluye una identificación específica del proceso destino. La primitiva receive se puede gestionar de dos formas: Una posibilidad requiere que el proceso designe explícitamente un proceso emisor.En Otras es imposible especificar el proceso de origen por anticipado.

El direccionamiento indirecto. En este caso, los mensajes no se envían directamente del emisor alreceptor, sino a una estructura de datos compartida formada por colas que pueden guardar los mensajes temporalmente. Estas colas se denominan generalmente buzones (mailboxes). De este modo, para que dos procesos se comuniquen, uno envía mensajes al buzón apropiado y el otro los coge del buzón.

Una ventaja del direccionamiento indirecto es que se desacopla a emisor y receptor, permitiendo unamayor flexibilidad en el uso de los mensajes. La relación entre emisores y receptores puede ser uno a uno, de muchos a uno (ideal para cliente servidor, aquí el buzón es puerto), de uno a muchos o de muchos a muchos.

Cuando hay varios emisores, la asociación de un emisor a un buzón puede realizarse dinámicamente. Se pueden usar primitivas como conectar y desconectar con este propósito.Formato de mensajes

Los mensajes dependen de los objetivos del servicio de mensajería y de si el servicio ejecuta en un ordenador independiente o en un sistema distribuido. Una solución más flexible es permitir mensajes de longitud variable.

El mensaje se divide en dos partes: una cabecera, que alberga información sobre el mensaje y un cuerpo, que alberga el contenido real del mensaje.

[pic]Disciplina de cola

Una alternativa es permitir la especificación de prioridades de los mensajes, en función del tipo de mensaje o por designación del emisor. Otra alternativa es permitir al receptor examinar la cola de mensajes y seleccionar el mensaje a recibir a continuación.

Exclusión mutua

Supóngase que se usan primitivas receive bloqueantes y send no bloqueantes. Un conjunto deprocesos concurrentes comparten un buzón, exmut, que puede ser usado por todos los procesos para enviar y recibir. El buzón contiene inicialmente un único mensaje, de contenido nulo. Un proceso que desea entrar en su sección critica intenta primero recibir el mensaje. Si el buzón está vacío, el proceso se bloquea. Una vez que un proceso ha conseguido el mensaje, ejecuta su sección crítica y, después,devuelve el mensaje al buzón. De este modo, el mensaje funciona como un testigo (token) que se pasa de un proceso a otro. Esta técnica supone que si hay más de un proceso ejecutando la acción receive concurrentemente, entonces:
• Si hay un mensaje, se entrega solo a uno de los procesos y los otros se bloquean.
• Si el buzón está vacío, todos los procesos se bloquean. Cuando haya un mensajedisponi-ble, solo se activa y toma el mensaje uno de los procesos bloqueados.

PROGRAMA EXCLUSION MUTUA

program exclusión_mutua;
const n = ...; (*número de procesos*);
procedure P(i: entero);
var msj: mensaje;
begin repeat
receive (exmut, msj);
< sección crítica >;
send (exmut, msj);
< resto >
forever
end;
begin (*programa principal*) crear_buzón (exmut);
send (exmut, nuil);
parbeginP(l);
P(2);
...
P(n)
parend
end.
PROGRAMA DE BUFFER ACOTADO
program buffer_acotado
const
capacidad = ...; {capacidad del buffer}
null = ...; {mensaje vacío}
var i: entero;
procedure productor;
var msjp: mensaje;
begin
while cierto do begin
receive (puede_producir, msjp);
msjp := producir;
send (puede _ consumir, msjp)
end
end;
procedure consumidor;
var msjp: mensaje;
begin...
tracking img