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