Comunicacion
Un proceso es justamente un programa en ejecución, incluyendo los
valores actuales del contador de programa, registros y variables. Conceptualmente cada proceso
tiene su propia CPU virtual.
la velocidad a la cual un proceso realiza su computación no es uniforme y probablemente ni siquiera es reproducible si los mismos procesos se ejecutan de nuevo.
COMUNICACIÓN ENTRE PROCESOSFrecuentemente los procesos necesitan comunicarse con otros procesos.
Muy brevemente, hay tres cuestiones aquí. Ya hemos aludido a la primera cuestión
anteriormente: cómo puede un proceso pasar información a otro. La segunda cuestión consiste
en asegurar que dos o más procesos no se interfieran mientras realizan tareas críticas (pensemos
en dos procesos que intentan apoderarse del últimomegabyte de memoria disponible). La
tercera cuestión tiene que ver con el secuenciamiento correcto cuando existen dependencias: si
el proceso A produce datos que el proceso B imprime, B tiene que esperar hasta que A produzca
algún dato antes de comenzar a imprimir.
1. Condiciones de Carrera
Se produce especialmente cuando un proceso A que se ejecuta previamente sufre una interrupcióndel reloj de la CPU pensando que ya este se ejecuto lo suficiente, por lo que conmuta el proceso B; ocasionando que procesos que
debían llevarse a acabo no se puedan ejecutar.
Esto ocurrió debido a que el proceso B comenzó a utilizar una de las variables compartidas antes de que el proceso A hubiera terminado con ella.
Situaciones como estas, donde dos o másprocesos están leyendo o escribiendo sobre
datos compartidos y el resultado final depende de quien se ejecute precisamente en cada
momento, se denominan condiciones de carrera.
2. Regiones Críticas
La parte del programa donde se accede a la memoria compartida se
denomina la región crítica o sección crítica. Si pudiéramos organizar las cosas de forma que nunca esténdos procesos a la vez en sus regiones críticas, podríamos evitar las condiciones de carrera.
Aunque ese requerimiento evita las condiciones de carrera, no es suficiente para
asegurar que los procesos concurrentes cooperan correcta y eficientemente utilizando datos compartidos. Deben cumplirse las cuatro condiciones siguientes para obtener una solución satisfactoria:
1.Ningún par de procesos pueden estar simultáneamente dentro de sus regiones críticas.
2. No debe hacerse ninguna suposición sobre la velocidad o el número de CPUs.
3. Ningún proceso fuera de su región crítica puede bloquear a otros procesos.
4. Ningún proceso deberá tener que esperar infinitamente para entrar en su región crítica.
3. Exclusión Mutua con Espera Activamientras un proceso esté ocupado actualizando la memoria compartida en
su región crítica, ningún otro proceso pueda entrar en su región crítica y provocar algún
problema.
a. Inhibición de Interrupciones
La solución más sencilla es hacer que cada proceso inhiba todas las interrupciones nada
más entrar en su región crítica y que las rehabilite nada más salir deella. Con las interrupciones
inhibidas, no puede ocurrir ninguna interrupción del reloj.
En general este enfoque no es demasiado atractivo debido a que es muy peligroso
conceder al usuario el poder de inhibir las interrupciones. Supongamos que uno de los procesos
inhibe las interrupciones y nunca vuelve a activarlas. Eso podría significar el final del sistema.
si el sistema es un sistemamultiprocesador, es decir cuenta con dos o más CPUs, la inhibición de las interrupciones por parte de un proceso afecta sólo a la CPU que ejecutó la instrucción disable. Por tanto, los demás procesos podrían perfectamente seguir ejecutándose
en las demás CPUs, y en particular acceder también a la memoria compartida.
b. Variables Cerrojo
Es una solución por software; Consideremos que...
Regístrate para leer el documento completo.