Você está na página 1de 5

Comunicacin entre procesos - Wikipedia, la enciclopedia libre

Pgina 1

Comunicacin entre procesos


De Wikipedia, la enciclopedia libre La comunicacin entre procesos (comnmente IPC, del ingls Inter-Process Communication ) es una funcin bsica de los sistemas operativos. Los procesos pueden comunicarse entre s a travs de compartir espacios de memoria, ya sean variables compartidas o buffers, o a travs de las herramientas provistas por las rutinas de IPC. La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre s, normalmente a travs de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente. La comunicacin se establece siguiendo una serie de reglas (protocolos de comunicacin). Los protocolos desarrollados para internet son los mayormente usados: IP (capa de red), protocolo de control de transmisin (capa de transporte) y protocolo de transferencia de archivos , protocolo de transferencia de hipertexto (capa de aplicacin). Los procesos pueden estar ejecutndose en una o ms computadoras conectadas a una red. Las tcnicas de IPC estn divididas dentro de mtodos para: paso de mensajes, sincronizacin, memoria compartida y llamadas de procediemientos remotos (RPC). El mtodo de IPC usado puede variar dependiendo del ancho de banda y latencia (el tiempo desde el pedido de informacin y el comienzo del envo de la misma) de la comunicacin entre procesos, y del tipo de datos que estn siendo comunicados.

ndice
1 Conceptos bsicos 2 Tipos de comunicacin 2.1 Sncrona 2.2 Asncrona 2.3 Persistente 2.4 Momentnea (transient) 2.5 Directa 2.6 Indirecta 2.7 Simtrica 2.8 Asimtrica 2.9 Uso de buffers automtico 3 RPC 3.1 Paso de parmetros 3.2 Invocacin remota de mtodos (RMI) 4 Comunicacin orientada a mensajes 4.1 Mensajes momentneos vs. mensajes persistentes 4.1.1 Sockets Berkeley 4.1.2 Message-passing interface (MPI) 5 Implementaciones 5.1 Message-oriented middleware o Message-queuing systems 6 Comunicacin orientada a streams 7 Comunicacin entre procesos Linux 8 Comunicacin multicast 9 Tabla de mtodos de IPC 10 Referencias

Conceptos bsicos
El sistema operativo provee mnimamente dos primitivas, enviar y recibir, normalmente llamadas send y receive . Asimismo, debe implementarse un enlace de comunicacin entre los procesos de la comunicacin. Este enlace puede ser unidireccional o multidireccional segn permita la comunicacin en solo uno o en varios sentidos.

Tipos de comunicacin
La comunicacin puede ser: Sncrona o asncrona Persistente (persistent) o momentnea (transient) Directa o indirecta Simtrica o asimtrica Con uso de buffers explcito o automtico

http://es.wikipedia.org/wiki/Comunicaci%C3%B3n_entre_procesos

13/02/2013 11:06:59 p.m.

Comunicacin entre procesos - Wikipedia, la enciclopedia libre Envo por copia del mensaje o por referencia Mensajes de tamao fijo o variable

Pgina 2

Sncrona
Quien enva permanece bloqueado esperando a que llegue una respuesta del receptor antes de realizar cualquier otro ejercicio.

Asncrona
Quien enva contina con su ejecucin inmediatamente despus de enviar el mensaje al receptor.

Persistente
El receptor no tiene que estar operativo al mismo tiempo que se realiza la comunicacin, el mensaje se almacena tanto tiempo como sea necesario para poder ser entregado (Ej.: e-Mail).

Momentnea (transient)
El mensaje se descarta si el receptor no est operativo al tiempo que se realiza la comunicacin. Por lo tanto no ser entregado.

Directa
Las primitivas enviar y recibir explicitan el nombre del proceso con el que se comunican. Ejemplo: enviar (mensaje, A) enva un mensaje al proceso A Es decir se debe especificar cual va a ser el proceso fuente y cual va a ser el proceso Destino. Las operaciones bsicas Send y Receive se definen de la siguiente manera: Send (P, mensaje); enva un mensaje al proceso P (P es el proceso destino). Receive (Q, mensaje); espera la recepcin de un mensaje por parte del proceso Q (Q es el proceso fuente). Nota: Receive puede esperar de un proceso cualquiera, un mensaje, pero el Send s debe especificar a quin va dirigido y cul es el mensaje.

Indirecta
La comunicacin Indirecta: Es aquella donde la comunicacin est basada en una herramienta o instrumento ya que el emisor y el receptor estn a distancia.

Simtrica
Todos los procesos pueden enviar o recibir. Tambin llamada bidireccional para el caso de dos procesos.

Asimtrica
Un proceso puede enviar, los dems procesos solo reciben. Tambin llamada unidireccional. Suele usarse para hospedar servidores en Internet.

Uso de buffers automtico


El transmisor se bloquea hasta que el receptor recibe el mensaje (capacidad cero).

RPC
(Remote Procedure Call / llamada a un procedimiento remoto) Permitir que los programas realicen llamadas a funciones localizadas en otras mquinas. Los programadores no se tienen que preocupar por los detalles de la programacin de la red. Conceptualmente simple. Desde el punto de vista de un programador la llamada a una funcin remota es y funciona de la misma manera que lo hara si la llamada fuese local. En este sentido, se logra transparencia. Cada funcin pasa a tener dos partes: cliente, la mquina local donde se implementa la interface (prototipo de una funcin) para invocar las funciones remotas. Servidor, implementacin de las funciones propiamente dichas.

http://es.wikipedia.org/wiki/Comunicaci%C3%B3n_entre_procesos

13/02/2013 11:06:59 p.m.

Comunicacin entre procesos - Wikipedia, la enciclopedia libre

Pgina 3

Paso de parmetros
No debera de existir ningn problema si dos mquinas son homogneas, sin embargo la realidad no suele ser sta. Pueden surgir problemas de diferentes codificacin de caracteres (ej.: mainframe IBM: EBCDIC, IBM PC: ASCII) o diferentes tipos de ordenacin de bytes (ej.: Intel: little endian, Sun SPARC: big endian). Como solucin a estos problemas es importante lograr un acuerdo del protocolo usado. La parte encargada de generar los mensajes no debe de presuponer el uso de un lenguaje de programacin especfico.

Invocacin remota de mtodos (RMI)


Es un mecanismo de expansin de RPC cuyo objetivo es dar soporte a sistemas orientado a objetos. La idea es tener objetos distribuidos. Para acceder al estado de un objeto slo se realiza a travs de mtodos definidos por un objeto interface. Un objeto ofrece mltiples interfaces. Una interface puede ser implementada por mltiples objetos.

Comunicacin orientada a mensajes


Las comunicaciones RPC se basan en la idea que el receptor est operativo para poder invocar una cierta funcin, no podemos suponer que el receptor siempre estar operativo y esperando a comunicarse. La solucin es definir la comunicacin en trmino de paso de mensajes.

Mensajes momentneos vs. mensajes persistentes


Momentneos: no soportan el envo de mensajes persistentes. (1) Sockets, (2) Message-passing interface (MPI). Sockets Berkeley Sistema fuertemente acoplado a las redes TCP/IP Sockets API: 1. 2. 3. 4. 5. 6. 7. 8. socket: crea una nueva comunicacin. bind: aade la direccin local al socket. listen: queda en espera de conexiones. accept: queda bloqueado hasta la llegada de un pedido de conexin. connect: pedido de establecimiento de conexin. send: enviar datos por la conexin. receive: recibir datos por la conexin. close: desvincula el socket la direccin local.

Message-passing interface (MPI) Diseado para aplicaciones paralelas crea un nivel de abstraccin ms alto que el provisto por sockets. Provee una interface con primitivas ms avanzadas. Por el contrario cuenta con una gran cantidad de implementaciones (librera y protocolos) propietarias lo que genera la necesidad de una interface standard. MPI API: 1. 2. 3. 4. 5. 6. 7. 8. MPI_bsend: vincula la salida de mensajes con el buffer de salida local. MPI_send: enva un mensaje y espera hasta que es copiado al buffer. MPI_ssend: enva un mensae y espera hasta que el receptor inicie. MPI_sendrecv: enva un mensaje y espera respuesta. MPI_isend: pasa la referencia de un mensaje y contina. MPI_issend: para la referencia de un mensaje y espera hasta que el receptor inicie. MPI_recv: recibe un mensaje; se bloquea en el caso de no haberlo. MPI_irecv: verifica si hay mensajes entrantes; no se bloquea.

Persistentes: el mensaje se encola y se entrega cuando se pide. (1) Message-oriented middleware (MOM)

Implementaciones
Hay un nmero de APIs que pueden ser usadas por IPC. Un nmero de plataformas independientes de APIs incluidas las siguientes: Tuberas Annimas y con nombre Common Object Request Broker Architecture (CORBA)

http://es.wikipedia.org/wiki/Comunicaci%C3%B3n_entre_procesos

13/02/2013 11:06:59 p.m.

Comunicacin entre procesos - Wikipedia, la enciclopedia libre Distributed Computing Environment (DCE) Message Bus (MBUS) (especificado en RFC 3259) ONC RPC Sockets XML XML-RPC or SOAP ZeroC's Internet Communications Engine (ICE) Las siguienteas son plataformas especficas de APIs:

Pgina 4

Apple Computer's Apple events (previamente conocido como Interapplication Communications (IAC)). Freedesktop.org's D-Bus KDE's Desktop Communications Protocol (DCOP) Libt2n parar C++ solamente, manejos de objetos y excepciones complejos. The Mach kernel's Mach Ports Microsoft's ActiveX, Component Object Model (COM), Distributed Component Object Model (DCOM), Dynamic Data Exchange (DDE), Object Linking and Embedding (OLE), anonymous pipes, named pipes, Local Procedure Call Novell's SPX POSIX mmap, message queues, semaphores, and Shared memory RISC OS's messages Solaris's Doors System V's message queues, semaphores, and Shared memory Message-oriented middleware o Message-queuing systems Aparece un tercer componente de la conexin que realiza tareas de almacenamiento de mensajes. Esto permite que el emisor y el receptor estn inactivos. Permite comunicaciones persistentes asncronas. Transferencia de mensajes que duren minutos a comparacin de segundos o milisegundos. La aplicacin ms conocida que utiliza dicho modelo es el correo electrnico (e-Mail). La idea bsica consiste en insertar (putting) o quitar (taking) mensajes en una cola. Al emisor slo se le puede garantizar que el mensaje ha sido insertado correctamente en la cola. No existen garantas de cundo ser ledo dicho mensaje. No est ligado a ningn tipo especfico de modelo de red. Message-queuing system API: 1. 2. 3. 4. put: aadir un mensaje a una cola. get: bloquear hasta que la cola no est vaca, luego quitar el primer elemento. poll: verificar si hay mensaje, quitar el primero. Nunca se bloquea. notify: instalar en la cola un dispositivo que avisar cuando un nuevo mensaje se inserte en la cola.

Comunicacin orientada a streams


Los modelos RPC, RMI y MOM realizan comunicaciones independientes del tiempo. Existen tambin sistemas donde el tiempo es crucial en la comunicacin, o los resultados de salida sern incorrecto; es as el caso de trasmisin de audio, video, sensor de datos, etc. (comunicacin continua de datos) donde cortes de comunicacin generan retardos no deseados.

Comunicacin entre procesos Linux


La comunicacin puede simplemente ser cuestin de dejar que otro proceso sepa que ha ocurrido algn evento, o puede implicar la transferencia de datos de un proceso a otro. Seales El mecanismo estndar para informar a un proceso que ha ocurrido un evento es la seal. Se pueden enviar seales de un proceso a otro pero sin enviar informacin. Las seales no necesitan ser generadas por otro proceso, tambin puede ser generada por el kernel. Linux tambin implementa un mecanismo de semforos. Un proceso puede esperar un semforo tan fcilmente como espera una seal. Paso de datos entre procesos El mecanismo de tubera (pipe) estndar permite a un proceso hijo heredar un canal de comunicacin con su padre; los datos que se escriben en un extremo de la tubera se leen en el otro. Tambin define un conjunto de servicios para trabajo en red que pueden enviar flujos de datos tanto a procesos locales como remotos.

http://es.wikipedia.org/wiki/Comunicaci%C3%B3n_entre_procesos

13/02/2013 11:06:59 p.m.

Comunicacin entre procesos - Wikipedia, la enciclopedia libre

Pgina 5

Hay otro mtodo que es la memoria compartida que ofrece una forma extremadamente rpida de comunicar cantidades grandes o pequeas de datos; cualquier dato escrito por un proceso en una region de memoria compartida puede ser ledo por cualquier otro proceso que haya mapeado dicha region en su espacio de direcciones. Freedesktop Para comunicacin entre aplicaciones grficas existe D-Bus, usado por GNOME y KDE entre otros. Permite fcilmente comunicar unas aplicaciones con otras o controlar cualquier elemento de una interfaz grfica desde consola a con un programa hecho al efecto.

Comunicacin multicast
Es la abstraccin de diseminacin de datos. Utilizando el soporte de difusin (broadcast) en las redes locales para realizar tareas como protocolos epidmicos.

Tabla de mtodos de IPC


Mtodo Archivo Seal Socket Tubera / Pipes Named pipe Semforo Memoria compartida Mensajes Mapa Memoria Cola Mensajes puertos de de Todos los sistemas operativos. La mayora de los Sistemas Operativos; algunos, como Windows, solo implementan seales en las libreras de C run-time de C y actualmente no proveen soportes paro su uso como tcnica de IPC. La mayora de los sistemas operativos. Todos los sistemas POSIX. Todos los sistemas POSIX. Todos los sistemas POSIX. Todos los sistemas POSIX. Usado en el paradigma MPI, Java RMI, CORBA y otros. Todos los sistemas POSIX. Windows tambin es apto para esta tcnica, las APIs usadas son especficas de esta plataforma. La mayora de los Sistemas Operativos. Algunos Sistemas Operativos. Provisto por (sistema operativo u otro ambiente )

Referencias
Sistemas Operativos:ISBN 968-444-310-2 Autores: Siverschatz - Galvin Sistemas Operativos:ISBN 84-205-4462-0 Autor: Stallings daaa. Obtenido de http://es.wikipedia.org/w/index.php?title=Comunicacin_entre_procesos&oldid=62987082 Categora: Sistemas operativos Esta pgina fue modificada por ltima vez el 15 ene 2013, a las 01:40. El texto est disponible bajo la Licencia Creative Commons Atribucin Compartir Igual 3.0; podran ser aplicables clusulas adicionales. Lanse los trminos de uso para ms informacin. Wikipedia es una marca registrada de la Fundacin Wikimedia, Inc., una organizacin sin nimo de lucro.

http://es.wikipedia.org/wiki/Comunicaci%C3%B3n_entre_procesos

13/02/2013 11:06:59 p.m.

Você também pode gostar