Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Procesos concurrentes
Recursos críticos y sección critica.
Candados
Algoritmo de Dekker, Peterson, Round Robin.
Soluciones por hardware al problema de exclusión
mutua.
Semáforos, Mutex.
Monitores.
Comunicación entre procesos.
Mensajes.
Procesos – Hilos y Candados
Tuberías.
Señales.
Servicios Posix y Win32 para la coordinación entre
procesos.
Procesos concurrentes
En un equipo con un solo procesador, se
ejecutan procesos en un instante de tiempo,
dichos procesos toman un pequeño espacio del
procesador (slice) se ejecutan y dan paso a otro
procesos, esto crea la idea de que varios
procesos se están ejecutando en simultaneo,
eso se llama concurrencia.
Para la ejecución optima la concurrencia plantea
la exclusión mutua que es el hecho de que un
proceso respete que otro proceso se ejecute por
un tiempo determinado sobre el procesador.
Procesos concurrentes
Tiempo
Proceso A Proceso A
Equipo con un solo procesador
En sistemas con un solo procesador podemos ver en la figura que los procesos interactuan
en el procesador pero no varios al mismo tiempo.
Procesos concurrentes
Tiempo
Proceso A
Procesos Proceso A
Proceso B
Procesos Proceso B
Proceso D
En sistemas con mas de un procesador podemos observar como los procesos se
superponen en el tiempo.
Procesos concurrentes
regiones críticas (interbloqueo)
¿Como podríamos solucionar el problema de la competencia de
procesos por el procesador?, una de las soluciones son las regiones
críticas tratando de hacer respetar la exclusión mutua. Pero esto puede
traer el problema de que haya interbloqueo ósea un recurso nunca es
liberado por un proceso que lo esta usando (mas adelante en deadlocks
hablaremos de eso)
Proceso A A está en la región crítica
Región crítica
Región crítica de B
Si B trata de entrar
Proceso B en región crítica de A
B es bloqueado
T1 T2 T3 T4
Procesos concurrentes,
regiones críticas (inanición)
Otro problema es la inanición,hay 3 procesos A, B y C, el proceso A
esta usando su región crítica, antes de vencerse su tiempo en el
procesador se le concede el procesador al proceso B, esto genera un
lazo o un deadlock y esto hace que el proceso C nunca entre al
procesador.
Proceso A A está en la región crítica
Región crítica
Proceso B
B también está en la región
crítica
Proceso c T1 T2 T3
Deadlocks o candados
Este comportamiento atípico de los procesos al
manejar recursos (incluso el procesador), puede
provocar lo que se conoce como candados, así
como el interbloqueo o la inanición. A continuación,
ahondamos en candados para verificar como se
comportan, inicialmente analizando su teoría,
tocando incluso el tema de grafos y luego como
evitarlos, mediante el uso de semáforos, mutexs,
monitores, etc. En el laboratorio los vemos afectando
una maquina y como solucionarlos.
Deadlocks o candados
Definición: Un conjunto de procesos se
encuentra en deadlock si cada proceso
del conjunto está esperando por un
evento que sólo puede ser producido por
otro proceso del mismo conjunto.
Ej. Dos procesos cada uno esperando
por el otro ya sea para:
1) Poner una bandera en verdadero o
falso.
2) Envió de un mensaje.
3) Entrega de un recurso.
Candados
Estar en presencia de un candado implica que en el
tiempo de un proceso:
Nunca pueda hacer lo que esta tratando de hacer o
• Nunca tome lo que esta tratando de tener.
• Retiene lo que posee e insiste en adquirir lo que desea y
• Existe una posibilidad de que el evento pudiera suceder.
Un caso típico de candados
Equipo A realiza una
petición por
escaner y este es
bloqueado hasta que
equipo B desbloquee Equipo B realiza petición de
el uso del escaner uso del escaner y le fue
otorgada la petición.
Equipo A efectúa
petición por
impresora y le
fue dada.
Equipo B realiza
petición ahora por la
impresora pero esta
siendo usada por el
equipo A, el proceso
es bloqueado.
A este punto las dos peticiones están
bloqueadas de forma indefinida esto es un
candado.
Candados y recursos
Expropiativos (Preemptable) y
No expropiativos
(Nonpreemtable)
Expropiativo: Aquellos recursos que
pueden ser extraídos del proceso
propietario sin que esto afecte a otro
proceso.
NoExpropiativo: Es un recurso que no
puede dejar de ejecutarse de su
propietario actual sin causar un fallo de
computación.
Candados
Un recurso excluyente puede ser resuelto
realojando recursos de un lado (recurso) a
otro.
Nuestro enfoque será a nonpreemptable
(noexpropiativos).
Candados, petición de recursos
El manejo de recursos en candados es
como sigue:
1. Se realiza la petición del recurso.
2. Se usa el recurso.
3. Se libera el recurso.
Estrategias para lidiar con candados:
1. Ignorar el problema.
2. Detectar y recuperar.
3. Evitar candados en forma dinámica mediante
asignación de recursos cuidadosamente.
4. Prevenir mediante la negación de cualquiera
de las cuatro condiciones necesarias para la
ocurrencia de un candado.
Modelado de candados
El proceso es representado por círculos, el recurso
por cuadros.
En (a) El recurso R esta asignado al proceso A.
En (b) el proceso B esta solicitando el recurso S.
En (c) hay una situación de candado, T y U están
asignados por siempre a D y a C.
Modelado de candados(2)
A A A B B B B
R S R S R S R S
R S T
R S T R S T R S T
A B c A B c A B c
R S T R S T R S T
La estrategia más sencilla es el algoritmo del avestruz: tal cual
como reacciona un avestruz cuando se siente amenazado.
Los matemáticos consideran que es inaceptable y argumentan
que los interbloqueos se deben evitar a toda costa.
Los ingenieros se interrogan sobre la frecuencia del problema,
la frecuencia con el que el sistema puede sufrir un candado por
otras causas y la importancia de la ocurrencia de los candados.
Si éstos se presentan de una vez cada cinco años, y los
sistemas se ven impactados una vez al mes por errores en el
hardware, en el compilador o en el sistema operativo.
Dos ejemplos clásicos
El algoritmo inicia una lista en al que coloca recursos y procesos, si
en algún momento en el chequeo de esta lista se detecta un lazo
infinito se detiene el algoritmo para liberar el recurso y el proceso
que lo esta ejecutando.
Detectar y recuperar en una
matriz de ejemplo
Para cumplir el algoritmo recordemos que:
Observar por un proceso desmarcado, Pi, para el cual la iava fila de R es menor o
igual a A.
Si tal proceso es encontrado añadir la iava fila de C en A y volver al paso anterior.
Si no existe el proceso el algoritmo termina.
Otras formas de evitar candados,
por estados seguros e inseguros.
Como garantizar que no se
genere un candado
P(1) Señal (1) FALSO, turno es
P(0) Señal (0) cierto, turno es
colocado en (0)
colocado en (1)
P(1) Señal (1) cierto, turno es P(0) Señal (0) falso, turno es
colocado en (0) colocado en (1)
Exclusión mutua, soluciones
por software, desventajas
block(S) provoca la suspensión del proceso que la invoca.
wakeup(S) provoca que un proceso bloqueado siga con su
ejecución.
Semáforos
Los procesos siguen una política de FIFO,
el proceso que mas tiempo tenga en la
cola se debe liberar. La ejecución debe ser
atómica (se ejecuta hasta que finaliza).
Productoresconsumidores
El problema:
Dos procesos comparten un buffer de
tamaño fijo.
El productor coloca procesos en el buffer.
El consumidor los extrae.
El problema radica cuando el productor
quiere colocar un proceso en el buffer pero
este esta full o el consumidor quiere
extraer un proceso pero el buffer esta
vacío.
Semáforo, una solución
simulada.
http://wwwdi.ujaen.es/~lina/TemasSO/CONCURRENCIA/Produc
torConsumidor/problema_del_productor_consumidor_resuelto_c
on_semaforos.html
Mutexs
Cuando la disponibilidad de un contador en
un semáforo no es necesario, un mutexs
puede ser habilitado, es útil en
programación hilada, el mutex puede estar
bloqueado o desbloqueado.
Mutex
El mutex tiene dos estados posibles: bloqueado y
desbloqueado, se usa el valor 0 para representar
desbloqueado y el valor 1 o cualquier entero para
bloqueado.
Cuando un proceso o hilo necesita ser ejecutado
este llama al procedimiento mutex_lock, este
verifica si el mutex esta desbloqueado, de ser así
el proceso es pasado a la región crítica.
Como funciona mutex (cont)
Si el mutex esta ya bloqueado entonces el
proceso es bloqueado hasta que el hilo
termine de ejecutarse, en ese momento se
llamara a mutex_unlock, si múltiples
procesos están bloqueados en el mutex
uno de ellos es seleccionado
aleatoriamente y ejecutado.
Consideraciones importantes
con mutex
Todo es basado en una conexión:
socket: crea una nueva comunicación.
bind: Enlaza al socket.
listen: queda a la escucha para nuevas conexiones.
accept: se bloque hasta que se realice una conexión
connect: Realiza petición para conexión.
send: envia datos.
receive: recibe datos.
close: cierra la conexión.
Tuberías
http://es.wikipedia.org