Modelo cliente servidor

Proceso

cliente

Proceso

cliente

Sevidor de memoria

Servidor de ficheros

Servidor de red

......

Modo usuario

       wpe4.jpg (1926 bytes)             Núcleo

Modo núcleo

Los procesos de usuario (procesos clientes) mediante mensajes solicitan servicios a un servidor, el cual realiza el trabajo y envía una respuesta. El núcleo se encarga del transporte de los mensajes.

La comunicación entre procesos se realiza, intercambiando mensajes, utilizando tres primitivas de los procedimientos de librería en C.

- send (destino, &mensaje); Para enviar un mensaje al proceso destino

- receive (fuente, &mensaje); Para recibir un mensaje del proceso fuente (o cualquiera)

- send_rec(src_dst, &mensaje); Para enviar un mensaje a un proceso y esperar una respuesta del mismo. La respuesta se sobrescribe en el mensaje original.

&mensaje - es la dirección local de los datos del mensaje. El tamaño del mensaje viene fijado por el tamaño de la estructura message, que es una unión de seis formatos de mensajes.

m_source

m_source

m_source

m_source

m_source

m_source

m_type

m_type

m_type

m_type

m_type

m_type

m1_i1

m2_i1

m3_i1

m4_l1

m5_c2

m5_c1

m6_i1

m1_i2

m2_i2

m3_i2

m4_l2

m5_i1

m6_i2

m1_i3

m2_i3

m3_p1

m4_l3

m5_i2

m6_i3

m1_p1

m2_l1

m3_ca1

m4_l4

m5_l1

m6_l1

m1_p2

m2_l2

 

m4_l5

m5_l2

m6_f1

m1_p3

m2_p1

 

m5_l3

 

m_source - quien envia el mensaje; m_type - el tipo de función a realizar (ejem. para disco read, write); resto son campos de datos

Los procesos se pueden comunicar por mensajes siempre que estén en la misma capa, o contigua. Un proceso de usuario (cap4) no puede comunicar directamente con una tarea de I/O (capa2).

Cuando un proceso envía un mensaje a otro proceso, se bloquea, hasta que el destino hace un receive, esto es MINIX utiliza el método RENDEZVOUS o de cita. Este método es más sencillo por no utilizar buffers.