Está en la página 1de 12

Comunicación entre procesos

• Con frecuencia, los procesos necesitan comunicarse con otros


procesos. Por ejemplo, en una canalización del shell, la salida del
primer proceso se debe pasar al segundo proceso y así sucesivamente.
Condiciones de carrera
En algunos sistemas operativos, los procesos que trabajan en conjunto
pueden compartir cierto espacio de almacenamiento en el que pueden
leer y escribir datos. El almacenamiento compartido puede estar en la
memoria principal (posiblemente en una estructura de datos del kernel)
o puede ser un archivo compartido; la ubicación de la memoria
compartida no cambia la naturaleza de la comunicación o los problemas
que surgen. Memoria
0
Ejemplo: Proceso A y el proceso B.
1000

5000
Regiones críticas (secciones críticas)
• ¿Cómo evitamos las condiciones de carrera? La clave para evitar
problemas aquí y en muchas otras situaciones en las que se involucran
la memoria compartida, los archivos compartidos y todo lo demás
compartido es buscar alguna manera de prohibir que más de un
proceso lea y escriba los datos compartidos al mismo tiempo.
Memoria
0
Proceso A y el proceso B.
1000

5000
Regiones críticas (secciones críticas)
Esa parte del programa en la que se accede a la memoria compartida se conoce
como región crítica o sección crítica.
Proceso A Proceso B Memoria
Instruccion1 Instruccion10
. . .
. . .
Instruccion20 Instruccion20 Instruccion20
Instruccion21 Instruccion21 Instruccion21
instruccion22 instruccion22 instruccion22

Si pudiéramos ordenar las cosas de manera que dos procesos nunca estuvieran
en sus regiones críticas al mismo tiempo, podríamos evitar las carreras.
Regiones críticas (secciones críticas)
Exclusión mutua
La exclusión mutua se da cuando dos o mas procesos no acceden a la
vez a su región crítica.

Ejemplo de región critica:


Proceso A Proceso B
-
- .
int x, int y, int z; .
. Int x, int a, int b;
. .
x =15; .
x= a ;
Ejercicio
Hacer una presentación en power point sobre: condición de carrera,
recursos compartidos, región crítica y exclusión mutua.
Exclusión mutua con espera activa

En esta sección examinaremos varias proposiciones para lograr la


exclusión mutua, de manera que mientras un proceso esté ocupado
actualizando la memoria compartida en su región crítica, ningún otro
proceso puede entrar a su región crítica y ocasionar problemas.
• Deshabilitando interrupciones
• Variables de candado
Exclusión mutua con espera activa

• Variables de candado
• Como segundo intento, busquemos una solución de software.
Considere tener una sola variable compartida (de candado), que al
principio es 0. Cuando un proceso desea entrar a su región crítica
primero evalúa el candado. Si este candado es 0, el proceso lo fija en 1
y entra a la región crítica. Si el candado ya es 1 sólo espera hasta que
el candado se haga 0. Por ende, un 0 significa que ningún proceso está
en su región crítica y un 1 significa que algún proceso está en su
región crítica.
Exclusión mutua con espera activa

• Alternancia estricta. Si turno =0 entra a la sección critica.


Exclusión mutua con espera activa

• Alternancia estricta. Si turno =0 entra a la sección critica.


• En la figura 2-23, la variable entera turno (que al principio es 0) lleva
la cuenta acerca de a qué proceso le toca entrar a su región crítica y
examinar o actualizar la memoria compartida. Al principio, el proceso
0 inspecciona turno, descubre que es 0 y entra a su región crítica. El
proceso 1 también descubre que es 0 y por lo tanto se queda en un
ciclo estrecho, evaluando turno en forma continua para ver cuándo se
convierte en 1.
Exclusión mutua con espera activa

• Dormir y despertar
• Veamos ahora ciertas primitivas de comunicación entre procesos que
bloquean en vez de desperdiciar tiempo de la CPU cuando no pueden
entrar a sus regiones críticas. Una de las más simples es el par sleep
(dormir) y wakeup (despertar). Sleep es una llamada al sistema que hace
que el proceso que llama se bloquee o desactive, es decir, que se
suspenda hasta que otro proceso lo despierte. La llamada wakeup tiene
un parámetro, el proceso que se va a despertar o activar. De manera
alternativa, tanto sleep como wakeup tienen un parámetro, una dirección
de memoria que se utiliza para asociar las llamadas a sleep con las
llamadas a wakeup.

También podría gustarte