domingo, 10 de octubre de 2010

2.2 Comunicación entre Procesos

Los procesos necesitan estar comunicado con otros procesos.

Condiciones de competencia

Los procesos que se encuentran en el SO pueden compartir ciertas características comunes como en que ambos pueden leer y escribir. Por ejemplo cuando un proceso desea imprimir un archivo, introduce el nombre de ese archivo que se va a imprimir en un directorio especial, mientras otro proceso llamado demonio de impresión empieza a revisar en cierto directorio para ver si hay archivos por imprimir y si los encuentra los imprime y luego borra los nombres del directorio para poder introducir nuevos nombres.

En las secciones críticas la idea aquí es que un proceso esta realizando una tarea especifica y entonces es mismo proceso esta accediendo a memoria, entonces el nuevo proceso comenzó a utilizar variables antes de que el proceso anterior terminara de usarlas. La parte en la que se accede a la memoria compartida de denomina región critica o sección critica.

Exclusión mutua con espera activa

Si un procesos se encuentra ocupado actualizando su memoria compartida en la parte de su región critica, entonces no debemos dejar que entre otro proceso en su región critica y cause problemas, lo que debemos hacer es esperar a que el primer proceso termine de actualizar su región para luego ejecutar un nuevo proceso y asi no cause problema.

Dormir y despertar

Semáforos es un nuevo tipo de variable, donde un semáforo puede tener el valor de 0 si no hay señales de despertar y un valor positivo si hay una o mas señales de despertar en espera. Los procesos tienen que esperar a que otro proceso se ejecute. Si un proceso se esta ejecutando y otro proceso se quiere ejecutar tiene que entrar en modo de reposo hasta que el proceso que se ejecuto primero termine su ejecución. Una vez terminado el primero el segundo proceso se despierta para ser ejecutado.

La transferencia de mensaje no es otra cosa mas que recibir y enviar mensajes entre procesos. Primero se tiene que enviar un mensaje a un destino x, ese mensaje se recibe de un origen x. Si no hay un mensaje disponible, el receptor puede ponerse en estado bloqueado hasta le llegue un mensaje y cambiar su estado a activo. Si no le llega el mensaje el receptor puede mandar un código de error a su emisor de que no le ha llegado el mensaje.

No hay comentarios:

Publicar un comentario