2. L.C.I. Horacio J. Tacubeño Crúz
Concurrencia
Procesamiento concurrente: base de los sistemas
operativos modernos (multiprogramados):
- Un conjunto de procesos que potencialmente
pueden ejecutarse concurrentemente (a la vez).
3. L.C.I. Horacio J. Tacubeño Crúz
Concurrencia
Problemática:
- Podemos querer que dos o más procesos
cooperen.
- Que accedan a datos comunes.
Se debe proporcionar:
- Mecanismos de sincronización y comunicación
entre procesos.
- Ejecución ordenada
4. Concurrencia
Problema básico:
Dos o más procesos quieren llevar a cabo una
determinada tarea concurrentemente.
- Pueden llegar a resultados incorrectos.
Debido a que no sabemos el orden de
ejecución.
• No sabemos cuando serán
interrumpidos y su alternancia en la CPU.
L.C.I. Horacio J. Tacubeño Crúz
5. Concurrencia
Ejemplo: Productor-Consumidor ejecutado concurrentemente.
Productor: Genera información y la acumula en un buffer.
Consumidor: Accede al buffer y usa la información.
Caso de:
Programa de impresión que produce caracteres y consume
el manejador de la impresora.
Compilador produce código ensamblador y consume el
ensamblador.
L.C.I. Horacio J. Tacubeño Crúz
6. Condiciones de competencia
• Los procesos que están colaborando
podrían compartir cierto almacenamiento
común en el que ambos pueden leer y
escribir. El almacenamiento compartido
puede estar en la memoria principal o puede
ser un archivo compartido; la ubicación de la
memoria compartida no altera la naturaleza
de la comunicación ni los problemas que
surgen.
L.C.I. Horacio J. Tacubeño Crúz
7. Condiciones de competencia
• Imagine que nuestro directorio de spooler tiene un número
elevado de ranuras, numeradas 0. 1.2.....cada una con
capacidad para un nombre de archivo. Imagine además que
hay dos variables compartidas, out, que apuntan al
siguiente archivo por imprimir, e in. que apunta a la
siguiente ranura libre del directorio.
L.C.I. Horacio J. Tacubeño Crúz
RanuraLibre=??
El error surgió en las
variables compartidas,
Dos procesos entran a
la región critica
8. Región Critica - Competencia
• Los procesos acceden a la memoria
compartida se denomina región crítica o
sección crítica. Si pudiéramos organizar las
cosas de modo que dos procesos nunca
pudieran estar en sus regiones críticas al
mismo tiempo, podríamos evitar las
condiciones
L.C.I. Horacio J. Tacubeño Crúz
9. Evitar condiciones de competencia
Evitar condiciones de competencia
1. Dos procesos nunca pueden estar
simultáneamente dentro de sus regiones críticas.
2. No puede suponerse nada acerca de las
velocidades o el número de las CPU.
3. Ningún proceso que se ejecute fuera de su
región crítica puede bloquear a otros procesos.
4. Ningún proceso deberá tener que esperar
indefinidamente para entrar en su región crítica.
L.C.I. Horacio J. Tacubeño Crúz
10. Exclusión Mutua
• Un proceso que esté ocupado actualizando
la memoria compartida en su región crítica,
ningún otro proceso entre en su región
crítica y cause problemas.
L.C.I. Horacio J. Tacubeño Crúz
11. Inhabilitación de interrupciones
• Cada proceso inhabilite las interrupciones justo
después de ingresar en su región crítica y vuelva a
habilitarlas justo antes de salir de ella. Por lo tanto
ocurrir interrupciones de reloj, con las
interrupciones desactivadas la CPU no se
conmutará a ningún otro proceso.
L.C.I. Horacio J. Tacubeño Crúz
12. Inhabilitación de interrupciones
• Así. una vez que un proceso ha inhabilitado las
interrupciones, puede examinar y actualizar la
memoria compartida sin temor a que otro proceso
intervenga.
L.C.I. Horacio J. Tacubeño Crúz
14. Variables Candado
• Supongamos que tenemos una sola variable (de
candado) compartida cuyo valor inicial es 0.
Cuando un proceso quiere entrar en su región
crítica, lo primero que hace es probar el candado.
L.C.I. Horacio J. Tacubeño Crúz
15. Variables Candado
• Si el candado es 0 el proceso le asigna 1 y entra
en su región crítica: si es 1 el proceso espera hasta
que el candado vuelve a ser 0. Así. 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.
L.C.I. Horacio J. Tacubeño Crúz
16. Variables Candado
• ¿Qué problema surge al utilizar variables
candado?
L.C.I. Horacio J. Tacubeño Crúz
17. Alternancia estricta (61)
• La variable interna turn que inicialmente es 0 indica
a quién le toca entrar en la región crítica y
examinar o actualizar la memoria compartida. En
un principio, el proceso 0 inspecciona turn ve que
es 0 y entra en su región crítica. El proceso 1
también ve que turn es 0 y se mantiene en un ciclo
corto probando turn continuamente para detectar el
momento en que cambia a 1.
L.C.I. Horacio J. Tacubeño Crúz