Sistemas operativos

Transcripción

Sistemas operativos
Sistemas operativos
Tema 5: Comunicación entre
procesos
Concurrencia de procesos
► Conceptos
de concurrencia y exclusión
mutua.
► Herramientas de sincronización.
► Comunicación entre procesos.
Comunicación entre procesos
►
Ficheros.
ƒ
ƒ
ƒ
►
Ineficientes: lectura y escritura en disco.
Necesitan un mecanismo de sincronización externo.
Sólo para procesos con acceso a un mismo sistema de ficheros.
Memoria compartida.
ƒ Necesitan un mecanismo de sincronización externo.
ƒ Sólo para procesos que corren en la misma máquina.
►
Tuberías (pipes).
ƒ Flujos de bytes unidireccionales, en memoria y gestionados por el
SO.
ƒ Generalmente, para comunicación 1:1.
ƒ Difíciles de utilizar sistemáticamente en aplicaciones complejas.
Comunicación entre procesos
► Paso
de mensajes.
ƒ Enlace lógico entre procesos.
una zona de memoria, un bus de hardware o una red de
comunicaciones.
► Sobre
ƒ Intercambio de unidades de información definidas por
las aplicaciones (en vez de bytes, mensajes).
ƒ La responsabilidad de la comunicación y la
sincronización recae sobre el SO.
ƒ Dos primitivas básicas: enviar y recibir.
► Bloqueantes
o no bloqueantes.
ƒ Comunicación directa o indirecta.
Comunicación directa
►
Se nombran explícitamente los procesos que intercambian
información.
ƒ Direccionamiento simétrico: se nombran el destino y el
origen:
► P:
enviar(Q,men);
► Q: recibir(P,&men);
ƒ Direccionamiento asimétrico: se nombra sólo el destino:
► P:
enviar(Q,men);
► Q: recibir(&id_proc,&men);
►
►
►
El enlace lógico es implícito entre cada par de procesos.
Entre cada par de procesos existe un único enlace.
Un enlace está asociado sólo a dos procesos, y es
bidireccional.
Comunicación indirecta
►
No se nombran explícitamente los procesos que intercambian
información.
ƒ Abstracción de buzón: unos procesos introducen mensajes y otros los
retiran.
ƒ El SO proporciona llamadas para la manipulación de buzones:
►
►
►
►
id_buzón = crear_buzón(llave);
id_buzón = capturar_buzón(llave);
enviar(id_buzón,men);
recibir(id_buzón,&men);
Entre dos procesos existe un enlace lógico sólo si comparten un buzón.
Un enlace puede asociarse a más de dos procesos.
Dos procesos pueden compartir varios enlaces, unidireccionales o
bidireccionales (permisos de L/E).
► Se desacoplan emisores y receptores: compilación independiente.
►
►
►
Comunicación indirecta
► Distintos
ƒ
ƒ
ƒ
ƒ
modelos de comunicación:
1:1 Æ enlace privado
1:N Æ difusión
M:1 Æ cliente-servidor
M:N Æ productor/consumidor
► Disciplinas
de entrega de mensajes:
ƒ FCFS: se entrega el mensaje más antiguo al primer
proceso que invoque la primitiva recibir.
ƒ Mensajes con tipo: se entrega el mensaje más antiguo
cuyo tipo sea el indicado en la primitiva recibir.
► Si no se indica tipo Æ FCFS pura.
► Se puede utilizar el tipo para identificar
destino.
procesos origen o
Capacidad del enlace lógico
► Número
de mensajes que pueden permanecer en
el enlace.
ƒ Capacidad 0:
► Llamadas
bloqueantes.
► Sincronización total en la comunicación.
ƒ Capacidad N:
► Espacio
de almacenamiento intermedio gestionado por el SO.
► Posibilidad de comunicación asíncrona.
► Un emisor no tiene constancia de la entrega de sus mensajes.
ƒ Capacidad ilimitada:
► Asunción
válida si los emisores nunca tienen que esperar y no
se pierden mensajes.
Fin

Documentos relacionados