Otros Problemas de Comunicación Entre Procesos
Otros Problemas de Comunicación Entre Procesos
Otros Problemas de Comunicación Entre Procesos
SISTEMAS OPERATIVOS
PROBLEMAS DE COMUNICACIÓN ENTRE
PROCESOS
RESUMEN
La comunicación entre procesos (IPC, del inglés Inter-Process Communication) es una
función básica de los sistemas operativos. Los procesos pueden comunicarse entre sí a través
de compartir espacios de memoria, ya sean variables compartidas o buffers, o a través 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 través de un sistema de bajo nivel
de paso de mensajes que ofrece la red subyacente.
La comunicación se establece siguiendo una serie de reglas (protocolos de comunicación). Los
protocolos desarrollados para internet son los mayormente usados: IP (capa de red), protocolo
de control de transmisión (capa de transporte) y protocolo de transferencia de
archivos , protocolo de transferencia de hipertexto (capa de aplicación).
Los procesos pueden estar ejecutándose en una o más computadoras conectadas a una red. Las
técnicas de IPC están divididas dentro de métodos para: paso de mensajes, sincronización,
memoria compartida y llamadas de procedimientos remotos (RPC). El método de IPC usado
puede variar dependiendo del ancho de banda y latencia (el tiempo desde el pedido de
información y el comienzo del envío de la misma) de la comunicación entre procesos, y del tipo
de datos que están siendo comunicados.
1
Computólogo es aquella persona que abarca el estudio de las bases teóricas de la información y la computación,
así como su aplicación en sistemas computacionales
espera(mutex);
cuentalect := cuentalect + 1;
if cuentalect = 1then espera(escr);
señal(mutex);
…
se realiza la lectura
…
espera(mutex);
cuentalect := cuentalect - l;
if cuenta/ect = O then
señal(escr); señal(mutex);
repeat
espera(palillo[ i]);
espera(palillo[i+ 1 mod 5]);
…
Comer
…
señal (palillo[i]);
señal(palillo[i+ 1 mod 5]);
…
Pensar
…
until false;
Varios turnos
Se establecen varios turnos. Para hacerlo más claro supongamos que cada filósofo que
puede comer (es su turno) tiene una ficha que después pasa a la derecha. Si por ejemplo
hay 7 comensales podemos poner 3 fichas en posiciones alternas (entre dos de las fichas
quedarían dos filósofos).
Se establecen turnos de tiempo fijo. Por ejemplo cada 5 minutos se pasan las fichas (y
los turnos) a la derecha.
En base al tiempo que suelen tardar los filósofos en comer y en volver a tener hambre,
el tiempo de turno establecido puede hacer que sea peor solución que la anterior. Si el
tiempo de turno se aproxima al tiempo medio que tarda un filósofo en comer esta
variante da muy buenos resultados. Si además el tiempo medio de comer es similar al
tiempo medio en volver a tener hambre la solución se aproxima al óptimo.
2
Inanición estado de extrema debilidad
Colas de tenedores
Cuando un filósofo quiere comer se pone en la cola de los dos tenedores que necesita.
Cuando un tenedor está libre lo toma. Cuando toma los dos tenedores, come y deja libre
los tenedores.
Visto desde el otro lado, cada tenedor sólo puede tener dos filósofos en cola, siempre
los mismos.
Esto crea el problema comentado de que si todos quieren comer a la vez y todos
empiezan tomando el tenedor de su derecha se bloquea el sistema (deadlock).
repeat
espera(llenos);
espera(mutex);
…
quitar un elemento de buffer y ponerlo en sigc
señal(mutex);
señal(vacíos);
…
consumir el elemento que está en sigc
until false;
Distinguimos entre estos dos tipos de procesos llamando lectores a los que
sólo están interesados en leer, y escritores a los demás. Obviamente, si dos
lectores acceden al objeto de datos compartido simultáneamente, no pasará
nada malo. Sin embargo, si un escritor y algún otro proceso (sea lector o
escritor) acceden al objeto compartido simultáneamente, el resultado puede
ser un caos. [6]
Es evidente que una solución a cualquiera de estos problemas puede dar lugar a
inanición. En el primer caso, los escritores podrían sufrir inanición; en el
segundo, los lectores serían las víctimas. Por esta razón, se han propuesto otras
variantes del problema. En esta sección presentaremos una solución al primer
problema de lectores y escritores. [8]
En la solución al primer problema de lectores y escritores, los procesos lectores
comparten las estructuras de datos siguientes:
Fig 5
espera( eser);
…
se realiza la escritura
…
señal(escr);
Figura 6: Estructura de un proceso escritor
espera(mutex);
cuentalect := cuentalect + 1;
if cuentalect = 1then
espera(escr); señal(mutex);
…
se realiza la lectura
…
espera(mutex);
cuentalect := cuentalect - l;
if cuenta/ect = O then señal(escr);
señal(mutex);
IMPLEMENTACIÓN
4. COMUNICACIÓN CLIENTE-SERVIDOR
CONCLUSIÓNES
Los procesos son creados y destruidos por el sistema operativo, así como también este se
debe hacer cargo de la comunicación entre procesos.
El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación.
El sistema operativo es el responsable de determinar las pautas de intercalado y asignación
de recursos a cada proceso.
Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente
mantener varias colas de procesos listos, una para cada nivel de prioridad, lo que ayuda a
determinar cuál es el proceso que más conviene ejecutar a continuación.
[1]http://lsi.vc.ehu.es/pablogn/docencia/manuales/SO/TemasSOuJaen/CONCURREN
CIA/4ProblemasClasicosdeComunicacionentreProcesos.htm
[5] Joaquín Aranda, Alamansa M, Antonia Canto Díaz, Jesús Manuel de la Cruz
García, Sebastián Dormido Bencomo, Carolina Mañoso Hierro. SISTEMAS
OPERATIVOS - TEORÍA Y PROBLEMAS. EDITORIAL SANZ Y
TORRES, S.L. Pinos Alta, 49 - 28029 Madrid. Pág. 101 - 167
http://prezi.com/buwzgisi-v3d/peluquero-dormilon/
http://fermat.usach.cl/~fmoreno/SOE/07-vi25.04.2008-conceptos-procesos.pdf
https://sopes1usac.wordpress.com/2012/11/05/5-2-problemas-clasicos-semaforos/
http://lml.ls.fi.upm.es/pc/Anteriores/Examenes/1993sep/node4.html.
http://es.wikipedia.org/wiki/Problema_de_la_cena_de_los_fil%C3%B3sofos
http://www.arcos.inf.uc3m.es/~ssoo-va/ssoo-prac/libro/cap04.pdf