[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: Programacion en Linux



> 	He estado leyendo el Linux Programmer's Guide, del Linux Documen-
> 	tation  Project y tengo algunas  consultas  acerca  de la programacion
> 	en Linux que seguramente alguien de la lista me podra responder:
> 
> 	a) Cual es la utilidad de utilizar colas de mensajes  o semaforos si 
> 	tenermos en cuenta que la memoria compartida (shared mem), hace 
> 	las mismas tareas y a mas alta velocidad?

Si utilizas directamente la memoria compartida, puedes llegar a necesitar
un mecanismo para la correcta sincronizacion de procesos, para que dos
procesos no escriban por error al mismo lugar, o para evitar situaciones
de bloqueo mutuo, en que (por ejemplo) dos procesos requieren dos
recursos, cada cual toma uno y espera indefinidamente a que el otro suelte
el otro. En estos casos, las soluciones mas aptas son los semaforos.

> 	b) Que son las se#ales o signals? Sospecho que tienen algo que ver
> 	con estos temas de la comunicacion entre procesos pero no son nom-
> 	bradas en el libro.

Hay una gran variedad de se&ales, y no te se decir para que sirve cada
una. El uso mas comun es para reiniciar, terminar o matar un proceso. Por
ejemplo, si yo modifique mi archivo httpd.conf, le doy un SIGHUP a httpd
para que vuelva a leer su configuracion. Si quiero terminar por alguna
razon un proceso, le puedo mandar un SIGTERM, para que este cierre de
inmediato sus buffers y se mate a si mismo - y si por alguna razon el
proceso no se quiere morir (por ejemplo, si esta bloqueado, o si esta
ignorando la se&al SIGTERM) le puedo mandar un SIGKILL, que no es
ignorable, y lo mata a la mala.

> 	c) Donde puedo encontrar mas informacion relacionada?

Te sugiero dos libros: El entorno de programacion Unix, por Robert Pike y 
Brian Kernighan, y Sistemas Operativos - Dise&o e implementacion, por
Andrew Tannenbaum.

> 	d) Que aplicaciones practicas usan la comunicacion entre proce-
> 	sos? Es decir, que programas las usan? Supongo que los que estan
> 	escritos en "estilo" cliente-servidor y en los daemons. Es asi? Yo
> 	veo muy clara la utilidad en aplicaciones de red, pero no tanto
> 	en aplicaciones "locales" (sera que en Linux todas las aplicaciones
> 	son de "red"?).

Con todo temor a equivocarme... De una manera o de otra, me parece que
todas las aplicaciones Unix piensan en funcion a red. De hecho, una manera
de lograr comunicacion entre procesos es por medio de sockets INET, pero
otra es por medio de sockets Unix - que para el programa se ven igual,
pero son implementados, en vez de especificando direcciones IP y puertos
origen/destino, por medio de un archivo en tu arbol.

> 	Espero que alguien pueda responderme estas consultas, y tengan
> 	en cuenta que recien estoy empezando a leer un poco sobre esto,
> 	y quiza algunas preguntas suenan un poco ilogicas. Muchas Gracias!

Espero haberle atinado a las respuestas ;)

-------------------------------------------------------------------
NOTA - La UNAM se va a paro. Por favor, hasta que quede resuelto
el asunto, quien me quiera escribir hagalo a gwolf en chmd edu mx
-------------------------------------------------------------------
 Gunnar Wolf	gwolf en campus iztacala unam mx	   tel. 5623-1118
     Universidad Nacional Autónoma de México, Campus Iztacala
  Jefatura de Sección de Admon. de Sistemas y Telecomunicaciones
-------------------------------------------------------------------



[Hilos de Discusión] [Fecha] [Tema] [Autor]