|
Modelo cliente servidor
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 - 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.
|