Diferencia entre revisiones de «Mensajería»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
Línea 17: Línea 17:
 
** Se emplea un elemento intermediario.  
 
** Se emplea un elemento intermediario.  
 
** Recurso compartido especial en el sistema: BUZÓN.
 
** Recurso compartido especial en el sistema: BUZÓN.
 +
** Habiendo intermediarios, hay que comprobar las identidades pues pueden ser falsas/erróneas
  
 
== Formas de transmisión ==
 
== Formas de transmisión ==
Línea 22: Línea 23:
 
* '''Transmisión por copia'''  
 
* '''Transmisión por copia'''  
 
** ''Directa'': el mensaje se copia de espacio de emisor a espacio de receptor)
 
** ''Directa'': el mensaje se copia de espacio de emisor a espacio de receptor)
** ''Indirecta'': el mensaje se copia de espacio de emisor a espacio de SO, y de ahí a espacio de receptor.
+
** ''Indirecta'': el mensaje se copia de espacio de emisor a espacio (buzón) de SO, y de ahí a espacio de receptor.
  
 
* '''Transmisión por referencia'''
 
* '''Transmisión por referencia'''
Línea 29: Línea 30:
  
 
* '''Transmisión por copia de escritura''': el mensaje sólo se copia si se modifica por emisor o receptor.
 
* '''Transmisión por copia de escritura''': el mensaje sólo se copia si se modifica por emisor o receptor.
 +
 +
== Formas de comunicación ==
 +
 +
* Comportamiento del send()
 +
**Sincronía: el proceso emisor que realiza el send() queda bloqueado hasta que el receptor llama a recv()
 +
**Asicrona: suponemos capacidad de almacenamiento en el destinatario o en el buzón. Allí acumulamos los mensajes entrantes y el receptor irá leyendo cuando pueda. Es más ágil pero el destinatario/buzón necesita capacidad de almacenamiento, la cual será limitada y los mensajes posteriores pueden caer en saco roto
 +
 +
 +
* Comportamiento del recv()
 +
** Bloqueante: un recv() sin mensajes a procesar pasa a estado bloqueado. Si se hace un send() vuelve a estado preparado
 +
** No bloqueante: recv() sin mensajes a procesar devuelve un "prueba más tarde"

Revisión del 22:06 6 abr 2011

Es una unidad de información que se intercambia entre dos o más procesos.

Mediante los mensajes podemos transmitir información y sincronizar procesos (mediante la espera de un cierto mensaje).

Primitivas:

  • send(mensaje): envía mensaje
  • receive(mensaje): recibir mensaje

Destino y fuente

  • Denominación Directa
    • Se emplea ID para identificar al destinatario.
    • Valores especiales: BROADCAST (a todos), MULTICAST (a un grupo).
  • Denominación Indirecta
    • Se emplea un elemento intermediario.
    • Recurso compartido especial en el sistema: BUZÓN.
    • Habiendo intermediarios, hay que comprobar las identidades pues pueden ser falsas/erróneas

Formas de transmisión

  • Transmisión por copia
    • Directa: el mensaje se copia de espacio de emisor a espacio de receptor)
    • Indirecta: el mensaje se copia de espacio de emisor a espacio (buzón) de SO, y de ahí a espacio de receptor.
  • Transmisión por referencia
    • Directa: lo que se copia es un puntero al mensaje
    • Global: el emisor crea mensaje en espacio de SO, y se copia a espacio de receptor un puntero al mismo.
  • Transmisión por copia de escritura: el mensaje sólo se copia si se modifica por emisor o receptor.

Formas de comunicación

  • Comportamiento del send()
    • Sincronía: el proceso emisor que realiza el send() queda bloqueado hasta que el receptor llama a recv()
    • Asicrona: suponemos capacidad de almacenamiento en el destinatario o en el buzón. Allí acumulamos los mensajes entrantes y el receptor irá leyendo cuando pueda. Es más ágil pero el destinatario/buzón necesita capacidad de almacenamiento, la cual será limitada y los mensajes posteriores pueden caer en saco roto


  • Comportamiento del recv()
    • Bloqueante: un recv() sin mensajes a procesar pasa a estado bloqueado. Si se hace un send() vuelve a estado preparado
    • No bloqueante: recv() sin mensajes a procesar devuelve un "prueba más tarde"