IPC vs Threads

IPC vs Threads

de Andres Bello Ureta -
Número de respuestas: 1
Tengo duda en cuanto a los temas de como funciona la sincronización cuando se utiliza IPC ó Threads. Lo que yo entendí fue:

El IPC es un mecanismo brindado por el SO para que dos o más procesos se puedan comunicar y sincronizarse, ya sea a través de un pasaje de mensajes o compartiendo una región de memoria. Para ello el so debe brindar funciones especificas para su uso.

En el caso de los threads, como comparten la memoria y los recursos del proceso al cual estan asignados, no es necesario que el SO brinde un IPC ya que se pueden sincronizar mediante los threads.

*Ahora, si los threads estan asignados a procesos distintos y estos necesitan comunicarse, se hace mediante el IPC?
*Cuando se habla de IPC siempre se habla de comunicación entre procesos distintos, mientras que cuando se habla de sincronización de threads se habla de distintas áreas de un proceso que se están ejecutando en simultaneo?
*En cuanto a la sincronización hay diferencias entre los user-threads  y los kernel-threads?



En respuesta a Andres Bello Ureta

Re: IPC vs Threads

de Jorge Merlino -

Si bien los threads comparten la memoria y por lo tanto no precisan de un servicio de memoria compartida si podrían usar algún servicio de sincronización del sistema operativo (por ejemplo para tener una región crítica entre threads). El concepto de IPC no es necesariamente excluyente con el uso de threads.

Si hay dos procesos distintos que quieren comunicarse deben usar alguno de los servicios de IPC del sistema operativo, no importa si ellos mismos usan threads o no.

Los threads de usuario no pueden sincronizarse usando servicios de IPC del sistema operativo porque si un thread se bloquea esperando por otro va a quedar en deadlock el proceso entero dado que todos los threads del proceso se bloquean juntos. En ese caso la biblioteca de threads a nivel de usuario va a atener que brindar algún servicio de sincronización entre los threads en caso de que sea necesario.