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.

UNIDAD 2 PROCESOS

Las computadoras de hoy en día pueden realizar varios procesos a la vez dentro de su procesador, internamente en las computadoras los programas se ejecutan a una gran velocidad entre un programa y otro al mismo tiempo, esta velocidad se da en milisegundos.

Los procesos son muy importantes para las computadoras sin estos procesos los programas y todos los recursos que se encuentran almacenados en ella se estarían ejecutándose al mismo tiempo y causaría un desorden, entonces la computadora no sabría que recurso ejecutar primero y en cambio con los procesos llevan un orden a la hora de ejecutarse.

El modelo de procesos

El modelo de procesos está organizado en una seria de procesos secuenciales o simplemente en un proceso, como ya sabemos un proceso es un programa que se está ejecutando, cada uno de los procesos tiene su propia CPU virtual.

El punto aquí es que un proceso es una actividad, todos los procesos tienen un programa, una entrada, un estado y una salida.

En la mayoría de los SO se necesita tener una aplicación para poder crear y eliminar a los procesos mientras sea necesario. En MINIX los procesos se ejecutan con la llamada al sistema mediante la sentencia FORK (bifucar). Lo que realiza esta sentencia es crear una copia del proceso que fue invocado.

Implementación de procesos

El SO mantiene una tabla, llamada tabla de procesos. En esta tabla muestra una entrada por cada proceso que se ejecuta. Esta entrada muestra la información necesaria de cada proceso que se está ejecutando, por ejemplo el estado de memoria que se esta utilizando, contador de programa, la situación de archivos abiertos, etc.

Hilos

Los hilos normalmente se manejan en el espacio de usuario. La actividad que realizan los hilos es que se está ejecutando un hilo y está a punto de bloquearse empieza a buscar un sucesor que va a ser ejecutado ya sea el mismo proceso o de uno distinto.