Title: Tema 3: Coordinacin y Sincronizacin de Procesos
1Tema 3 Coordinación y Sincronización de Procesos
- 1. Introducción
- 1.1. Principios de Concurrencia
- 1.2. Problemas que introduce la Concurrencia
- 1.3. Interacción entre Procesos
- 2. El Problema de la Exclusión Mutua
- 2.1. Presentación del Problema
- 2.2. Requisitos para las Soluciones
- 3. Soluciones Hardware
- 3.1. Deshabilitación de Interrupciones
- 3.2. Instrucciones Especiales de la Máquina
TestSet - 3.3. Instrucciones Especiales de la Máquina Swap
- 3.4. Propiedades de estas Soluciones
- 4. Soluciones Software
- 4.1. Algoritmo de Dekker
- 4.2. Algoritmo de Peterson
- 5. Mecanismos del Sistema Operativo y del
Lenguaje - 6. Problemas Clásicos de Sincronización
- 7. Interbloqueo e Inanición
- 8. Modelos de Representación
21.1. Principios de Concurrencia
- Conceptos fundamentales en SO modernos
relacionados con gestión de procesos e hilos - Multiprogramación Varios procesos ejecutándose
simultáneamente en un único procesador - No paralelismo real, sobrecarga en cambios de
proceso - Eficiencia
- Multiproceso Varios procesos en sistema
multiprocesador - Procesamiento Distribuido Procesos que se
ejecutan en sistemas de computadoras múltiples y
remotas. - Definición de Concurrencia y de Procesos
Concurrentes - Procesos concurrentes ? Aquellos que intercalan
y/o superponen su ejecución - Gestión Concurrencia ? gestión de varios procesos
o hilos
Tiempo
P1
P2
P3
a) Intercalación
P1
P2
P3
b) Intercalación y superposición
31.2. Problemas que introduce la Concurrencia
- Multiprogramación, multiproceso y procesamiento
distribuido presentan los mismos problemas
independientemente del número de procesadores. - Problemas para compartir recursos globales no
compartibles - Procedimiento echo ()
- Entrada(x)
- salx
- Salida(sal)
- End.
- Problemas de sincronización en la coordinación de
procesos - Proceso P1 Proceso P2
- i1 i1
- ..... ...
- ix iy
- Sincronización Sincronización
- Resto Resto
- Dificultad de asignar los recursos de forma
óptima ? Uso ineficiente de los recursos.
Problemas? Solución?
41.3. Interacción entre Procesos
- Ejecución concurrente procesos ? Interacción
- Contención Procesos que compiten por el mismo
recurso - Comunicación Procesos que necesitan comunicarse
provocando el intercambio de información. - Interacción entre procesos
- Se consideran las secuencias de instrucciones
ejecutadas por cada proceso - Se ignora la velocidad del procesador y el tiempo
de llegada de señales - Garantizar corrección de la ejecución de procesos
concurrentes bajo cualquier secuencia de
intercalado de instrucciones - Si cambia hardware o secuencia llegada señales ?
distinto intercalado de instrucciones pero
programa sigue siendo correcto. - Dadas dos instrucciones I1 y I2 de dos procesos
P1 y P2, podemos distinguir dos casos - fin(I1) ? comienzo (I2) ? Ejecución Secuencial
- comienzo (I2) lt fin (I1) ? Hay que garantizar que
el resultado es cualquiera de las dos posibles
secuencias obtenidas por la ejecución de una
instrucción tras la otra
51.3. Interacción entre Procesos
- Procesos independientes ? Competencia de procesos
- Proceso independiente ? No afecta ni es afectado
por la ejecución de otros procesos en el sistema - Conflicto ? compiten por el uso de los recursos.
- Acceso Exclusivo a Recursos no Compartibles
- Varios procesos usan recurso no compartible ?
sólo uno accede al recurso en un momento
determinado - Sistema Operativo
- Asigna recursos garantizando su uso exclusivo
- Ofrece mecanismos para que los procesos puedan
expresar la forma de acceso a los recursos - Bloqueo de procesos. Ejemplo
- Espera indefinida. Ejemplo
- Procesos que cooperan
- Procesos que cooperan ? Comparten datos con otros
y, por tanto, su ejecución afecta o puede ser
afectada por la ejecución de los otros. - No son independientes sino que se conocen en
cierta medida. - Cooperan compartiendo recursos (memoria global,
) - Comunicación más directa ? primitiva de paso de
mensajes - Se requieren mecanismos que permitan a los
procesos comunicarse y sincronizarse.
61.3. Interacción entre Procesos
- Cooperación de Procesos por Compartición de
Recursos - Procesos no tienen un conocimiento explÃcito de
los otros - Cooperan gracias al acceso a datos compartidos
- Son conscientes de que los otros pueden acceder a
los mismos datos - Cooperación
- Hay que asegurar la gestión correcta de los datos
compartidos - Sistema Operativo debe proporcionar mecanismos de
control que ayuden a garantizar la integridad de
tales datos - Ejemplo
- Datos a y b que deben cumplir a b
- P1 P2
- a a 1 b b 2
- b b 1 a a 2
- Acceso exclusivo al recurso compartido, para
garantizar coherencia e integridad de datos,
Bloqueo de procesos y Espera Indefinida - Cooperación de Procesos por Comunicación
- Procesos participan en una labor común para todos
los procesos. - Comunicación es una forma de coordinar o
sincronizar las distintas actividades
Supóngase ahora la secuencia de ejecución
siguiente i11, i21, i12, i22
72. El Problema de la Exclusión Mutua
- 2.1. Presentación del Problema
- P1, P1, ...Pn que ejecutan el siguiente código
sobre R1, ...Rm - Código inicial Pi
- Repeat
- Sección crÃtica de Pi para usar Rj
- Código que no es sección crÃtica
- ...
- Sección crÃtica de Pi para usar Rk
- Código que no es sección crÃtica
- Forever
- Procesos ejecutan Sección CrÃtica
- Código de acceso a recursos compartidos no
compartibles - Hay que garantizar que cuando P está en su
sección crÃtica usando el recurso R, ningún Q
puede estar ejecutando sus secciones crÃticas
para el recurso R - Ejecución de las secciones crÃticas de los
procesos es mutuamente exclusiva en el tiempo - Ejemplo R1 y R2 y P1, P2 y P3 con el
siguiente comportamiento
82.1. Presentación del Problema de la Exclusión
Mutua
- Problema Sección CrÃtica ? Encontrar un protocolo
que permita la cooperación de los procesos. - Protocolo
- Sección de entrada
- Proceso pide permiso para entrar en la sección
crÃtica - Lo consigue ? ejecuta las instrucciones de la
sección crÃtica - Cualquier otro proceso debe esperar
- Sección de salida
- El proceso abandona la sección crÃtica
permitiendo a otro entrar. - Estructura tÃpica de un proceso
- Código inicial
- repeat
- Sección de Entrada
- Sección crÃtica
- Sección de Salida
- Resto del código que no es sección crÃtica
- forever
9- 2.2. Requisitos para las Soluciones
- Exclusión Mutua De los procesos con SC para
acceder a un recurso, sólo uno gana el permiso
para entrar en ella en un instante dado - Progreso Procesos que no están en su SC ni
tienen interés en entrar, no pueden evitar que
otros procesos que sà quieren entrar lo hagan. - Espera limitada Cuando un proceso quiere entrar
en su SC, es necesario asegurar que lo haga en un
tiempo finito. - No se puede suponer nada de la velocidad relativa
de los procesos excepto que es no nula - 2.3. Problemas Derivados de la Exclusión Mutua
- Interbloqueo
- Inanición
103. Soluciones Hardware
- Ayuda hardware facilita solución del problema y
es eficiente - 3.1. Deshabilitación de interrupciones
- Máquina monoprocesador ? Intercalación de
instrucciones - Proceso continua ejecución hasta que termine o le
interrumpan - Garantizar exclusión mutua ? impedir interrupción
proceso - Protocolo
- Repeat
- Inhabilitar interrupciones
- Sección crÃtica
- Habilitar interrupciones
- Resto
- Forever
- Exclusión Mutua Garantizada
- Rendimiento
- Inadecuada para arquitecturas multiprocesador
113.2. Instrucciones especiales de la máquina test
and set
- Hardware garantiza accesos exclusivo a una
posición de memoria - Solución a la exclusión mutua ? desarrollo de
instrucciones máquina que realicen varias
acciones atómicamente. - Implementación
- TestandSet (var origenboolean)boolean
- begin
- Test_and_setorigen
- origen true
- end.
- Esta instrucción se ejecuta atómicamente
- Protocolo
- Se define una variable booleana lock a false.
- Repeat
- while (TestandSet(lock))do nada
- Sección crÃtica
- lockfalse
123.3. Instrucciones especiales de la máquina swap
- También se ejecuta atómicamente.
- Implementación
- Swap(var a, b boolean)
- var tempboolean
- Begin
- tempa
- ab
- btemp
- End.
- Protocolo para solucionar la exclusión mutua
- Variable global lock false variable privada
key - Repeat
- keytrue
- repeat Swap(lock, key) until keyfalse
- Sección crÃtica
- lock false
13- 3.4. Propiedades de las soluciones con
instrucciones máquina - Son soluciones aplicables a cualquier número de
procesos en sistemas con memoria compartida,
tanto en mono como en multiprocesadores - Simple y fácil de verificar
- Puede usarse para disponer de varias secciones
crÃticas ya que cada sección crÃtica puede
definirse con su propia variable. - Se produce espera activa
- Puede producirse inanición. Cuando un proceso
abandona su sección crÃtica y es necesario elegir
al siguiente, la selección es arbitraria.
144. Soluciones Software
- Se basan en exclusión mutua por hardware en el
acceso a memoria - 4.1. Algoritmo de Dekker
- Primer Intento
- P0 y P1 comparten variable global turno con valor
inicial 0 - P0 P1
- .... .....
- while turno ? 0 do nada while turno ? 1 do
nada - sección crÃtica sección crÃtica
- turno 1 turno 0
- resto código resto código
- Garantiza la exclusión mutua
- No satisface la condición de progreso
- Segundo Intento
- Variable global compartida señal array0..1 of
boolean / falso / - P0 P1
Qué ocurre si intercambiamos el orden de poner a
cierto la señal y el bucle while?
15- Tercer Intento.
- Variable global señal array0..1 of boolean
/ valor inicial falso / - P0 P1
- .... ....
- señal0cierto señal1cierto
- while señal1 do begin while señal0 do begin
- señal0falso señal1falso
- espera(tiempo) espera(tiempo)
- señal0cierto señal1cierto
- end end
- sección crÃtica sección crÃtica
- señal0 falso señal1 falso
- resto resto
- Se garantiza la exclusión mutua
- Hay alguna condición que no se cumple
- Algoritmo de Dekker
16- Algoritmo de Peterson
- Variables compartidas señal array0..1 of
boolean / falso / y turno0..1 su valor
inicial no tiene relevancia - P0 P1
- .... ....
- señal0cierto señal1cierto
- turno 1 turno 0
- while (señal1 while (señal0
- y turno 1) do nada y turno 0) do nada
- sección crÃtica sección crÃtica
- señal0falso señal1falso
- resto código resto código
- Garantiza la exclusión mutua.
- Satisface también el requerimiento de progreso y
de espera limitada - Problema soluciones software
- DifÃciles de generalizar para cualquier número de
procesos o para problemas muy complejos.
17- Algoritmo de la PanaderÃa
- Atención en tiendas Cliente coge nº, dependiente
atiende primero al que tenga un número más bajo. - Problema Garantizar que dos clientes no reciben
el mismo nº - Empate ? Atender 1º al proceso con menor
identificador. - Implementación
- elección vector de n posiciones booleanas /
falso / - número vector de n posiciones enteras / ceros
/ - Estructura de cada proceso, Procesoi
- repeat
- eleccióni? verdadero
- númeroi? max(número0?,..., númeron-1?) 1
- / max(a0, a1, ..., an-1) es un número k tal
que k ? ai para i 0, 1, ..., n-1 / - eleccióni? falso
- for j0 to n-1 do
- begin
- while elecciónj? do nada
- while (númeroj? ? 0) y
- (númeroj?, j) lt (númeroi?, i) do
nada
Garantiza la exclusión mutua?
185. Mecanismos del Sistema Operativo y del Lenguaje
- 5.1. Construcciones para indicar la concurrencia
- Expresar la concurrencia dentro del lenguaje de
programación - División ejecución secuencial en varias
secuencias paralelas - Fusión varias secuencias paralelas en una
secuencia secuencial - parbegin/parend o cobegin/coend para expresar el
comienzo y fin de un conjunto de enunciados que
deben ejecutarse paralelamente - parbegin
- enunciado1
- enunciado2
- .......
- enunciadox
- parend
- Ejemplo x (-b (b?2 - 4?a?c) ?5)/(2?a)
- Procesador Secuencial Procesador Paralelo
- 1 b?2 1 parbegin
- 2 4?a temp1 -b
- 3 4?a?c temp2 b ? 2
- 4 b?2-4?a?c temp3 4 ? a
195.2. Semáforos
- 5.2.1 Definición
- Cooperación de procesos mediante intercambio de
señales - Proceso debe detenerse en una posición
determinada hasta que reciba una señal
especÃfica. - Para señalizar se usan variables especiales
llamadas semáforos - Semáforo Variable entera accesible sólo por
operaciones de inicialización y operaciones
atómicas wait y signal o P y V. - Definición de P(S) y V(S)
- P decrementa valor S si pasa a ser negativo,
bloquea proceso - V libera el semáforo incrementando valor S. Si el
valor no es positivo, se desbloquea un proceso
bloqueado por una operación P. - Semáforos binarios y de cuenta
- Semáforo Binario 0?(valor semáforo) ? 1
- Semáforo de Cuenta puede tomar valores enteros
positivos - 5.2.2 Implementación
- Spinlock
- P(S) while Slt0 do nada V(S) S S1
- S S-1
- Requiere Operaciones de Modificación semáforo
atómicamente - Operación test y modificación también
atómicamente - Espera Activa ? Baja Eficiencia
205.2. Semáforos
- 5.2.2. Implementación Sin Espera Activa
- Definición de semáforo utilizando colas de
procesos (de sus PCB) - Cambio de estado de los procesos
- Type semaphore record
- Value integer
- L List of process
- End
- P(S) V(S)
- S.valueS.value-1 S.valueS.value1
- if S.value lt 0 if S.value lt 0
- then begin then begin
- process ? S.L process ? S.L.
- Block(process) Wakeup(Process)
- end end
- Lista procesos espera ? Lista enlazada de los PCB
de los procesos - La lista puede utilizar cualquier estrategia de
cola (fifo, etc.).
215.2. Semáforos
- 5.2.3. Uso
- Solución al problema de la sección crÃtica de
n-procesos. - Procesos comparten un semáforo llamado mutex con
valor inicial 1 - Proceso
- Repeat
- Wait(mutex)
- Sección crÃtica
- Signal(mutex)
- Resto
- Until false
- Solucionar varios problemas de sincronización.
- P1 y P2 con sentencias S1 y S2 ? Ejecución S2
sólo después de S1 - Procesos comparten semáforo sinc con valor
inicial 0 - P1 P2
- S1 P(Sinc)
- V(sinc) S2
225.3. Monitores
- 5.3.1. Definición
- Construcciones sincronización alto nivel ?
datosoperaciones definidas por el
programador - Acceso a Datos ? Operaciones
- 1 proceso activo en el monitor
- Type nombre-monitor monitor
- Declaración de variables
- Procedure entry P1(...)
- Begin ... end
- ...
- Procedure entry Pn(...)
- Begin ... end
- Begin
- Código inicialización
- End.
- 5.3.2. Variables de condición
- Condición c Operaciones wait( c)
- o signal(c )
235.3. Monitores
- 5.3.3 Monitores tipo Mesa/Hoare
- Proceso Q espera en condición x, P ejecuta
x.signal ? Q se reanuda - P y Q ejecutándose en el monitor ? P o Q se
suspende - 5.3.4. Implementación de los monitores usando
semáforos - Para cada monitor, se usa un semáforo mutex con
valor inicial 1 - Antes de entrar al monitor ? proceso ejecuta
wait(mutex) - Después de salir ? signal(mutex)
- Semáforo next, valor inicial 0
- procesos que hacen signal pueden suspenderse a sÃ
mismos - Variable next-count indica nº procesos parados en
next. - Procedimiento F wait(mutex)
- ...
- cuerpo de F
- ...
- if next-countgt0 then signal(next)
- else signal(mutex)
- 5.3.5. Implementación de condiciones usando
semáforos
24- 5.4. Regiones crÃticas
- Construcciones de sincronización de alto nivel
que solucionan algunos problemas planteados por
uso incorrecto de semáforos - Requieren variable v tipo T compartida entre
todos los procesos - Var v shared T
- B expresión booleana que gestiona el acceso a la
región crÃtica - Acceso a v sólo dentro de la sentencia region de
la forma region v when B do S - Modo de funcionamiento
- Mientras se ejecuta S, ningún otro proceso puede
acceder a v - Evaluación de B cuando proceso intenta entrar en
región crÃtica - Si es cierta, se ejecuta S
- Si no, proceso libera exclusión mutua y espera B
cierta y ningún otro proceso esté en la región
asociada a v - Ejemplo
- 5.5. Paso de mensaje
- Procesos que cooperan ? necesitan intercambiar
información - Paso de mensajes También puede servir para
sincronizar procesos. - Mecanismo apto para mono, multiprocesador y
sistemas distribuidos - Primitivas
- Send(destino, mensaje)
256. Problemas Clásicos de Sincronización
- 6.1. El problema de los Lectores / Escritores
- Procesos lectores leen buffer ? permitido acceso
simultáneo al buffer - Procesos escritores escriben ? necesario
exclusión con lectores y con otros escritores - Solución
- Semáforo mutex (1) exclusión mutua actualizando
lect - Semáforo escr (1) exclusión mutua para
escritores y 1er. o último lector que entra o
sale de sección crÃtica, para evitar que,
mientras se esté leyendo, entre un proceso
escritor. - Variable lect nº de procesos leyendo en el
buffer - Proceso lector Proceso escritor
- P(mutex) P(escr)
- lectlect1 ...
- if lect1 then P(escr) Escribir
- V(mutex) ...
- Leer V(escr)
- P(mutex)
- lectlect-1
- if lect 0 then V(escr)
- V(mutex)
266.2. Problema General de varios Lectores /
Escritores
- Semáforos de cuenta R y W con valores iniciales 0
y N - Protocolo acceso a buffer compartido
- Lectores Escritores
- P(R) P(W)
- Coger una entrada Coger una entrada
- leer de la entrada Escribir en la entrada
- soltar la entrada Soltar la entrada
- V(W) V(R)
- Coger y Soltar entrada buffer ? array de
semáforos binarios que permite acceso exclusivo a
una entrada buffer con valor inicial 1 - Variables compartidas i 0 a N-1, mutex1, n0,
n10 ne0 - Lectores Escritores
- P(R) P(W)
- P(mutex) P(mutex)
27- Solución con semáforos de cuenta
- n inicializado a 0 y s inicializado a 1
- Productor Consumidor
- repeat repeat
- producir x wait(n)
- wait(s) wait(s)
- bufferentx ybuffersal
- signal(s) signal(s)
- signal(n) consumir y
- forever forever
286.3. Problema de los Filósofos Comilones
- Filósofo come si tiene ambos palillos
- Palillos ? Array de semáforos binarios valor
inicial 1 - filósofoi
- repeat P(palilloi?) P(palillo(i1) mod 5?)
- comer
- V(palilloi?) V(palillo(i1) mod 5?)
- pensar
- until falso
- Inanición
- 6.4. Problema de los Filósofos comilones con
Monitores - var estadoarray0..4 of (pensando, hambriento,
comiendo) ? filósofoi pone estadoi comiendo
si estadoi4mod5?comiendo y estadoi1mod5?comi
endo - Var self array0..4 of condition ? filósofoi
puede retrasarse cuando está hambriento pero no
puede conseguir ambos palillos. - Monitor fc controla la distribución de los
palillos - Filósofo, antes de empezar a comer, invoca coger
que puede resultar la suspensión del proceso
filósofo y después de comer invoca soltar
296.3. Problema de los Filósofos Comilones con
Monitores
- Type filósofos-comilones monitor
- var
- estadoarray0..4 of (pensando, comiendo,
hambriento) - self array0..4 of condition
- Procedure entry coger(i0..4)
- begin
- estadoihambriento
- test(i)
- if estadoi ? comiendo then selfi.wait
- end
- Procedure entry soltar(i0..4)
- begin
- estadoipensando
- Test(i4 mod 5)
- Test(i1 mod 5)
- end
- Procedure test(k0..4)
307. Interbloqueo e Inanición
- 7.1. Principios de interbloqueo.
- Sistema multiprogramado ? varios procesos
compiten por uso de varios recursos - Cada recurso puede consistir en varias unidades
idénticas. - Proceso pide recurso? Vale cualquier ejemplar
disponible - Protocolo uso recurso
- Solicitud Recurso solicitado no puede concederse
inmediatamente ? proceso espera - Uso Proceso utiliza el recurso
- Liberación.
- Procesos P1, P2, y dos recursos R1, R2 P1 pide
(R1) pide(R2) - P2 pide(R2) pide(R1)
- Interbloqueo Situación en que varios procesos se
quedan bloqueados y no terminan su ejecución - Inanición Proceso espera indefinidamente
concesión de recurso que siempre se concede a
otro que también lo está esperando ? Depende de
la gestión que se haga de los recursos cuando se
liberan - 7.2. Condiciones de deadlock
- Condiciones sine qua non (simultáneas)
- Exclusión mutua Solo un proceso en cada momento
puede usar el recurso. Otro proceso lo quiere ?
espera a que lo liberen - Mantener y espera Debe ? proceso que mantenga un
recurso y que espere recursos adicionales
mantenidos por otros procesos. - No requisamiento los recursos no pueden ser
requisados - Espera circular debe ? procesos esperando de
forma circular.
318. Modelos de Representación
- Modelo Estructura de datos que representa lo
relevante del sistema en relación con los
Interbloqueos Procesos, Tipos de Recursos y
Unidades, Recursos retenidos y Peticiones
pendientes, etc. - 8.1. El Modelo Gráfico.
- Grafos de Asignación de Recursos, grafos
dirigidos no simples - G(V,A,f), donde Vp1,...,pn r1,...,rm,
Aristas - f A?P?R?R?P
- f(a)(pi,rj) ? petición pi está a la espera de
una unidad de rj. - Si f(a)(rj,pi) ? asignación pi tiene retenida
una unidad de rj. - Grafo con ciclos ? puede haber interbloqueo
- 1 unidad de cada recurso ? ciclo ? interbloqueo.
En cualquier caso procesos bloqueados forman
parte de algún ciclo - Ejemplo anterior añadimos arco (p3,r2)
328.2. Modelo Matricial
- Consiste en representar el estado del sistema a
través de una serie de matrices, por ejemplo las
siguientes - Pp1,...,pn. Procesos que hay en el sistema.
- Rr1,...,rm. Tipos de recursos.
- M. Utilización o Necesidades máximas de recursos.
Mij es el número máximo de unidades de rj que
puede necesitar simultáneamente pi. - C. Recursos retenidos. Cij es el número de
unidades de rj que tiene retenidas en un instante
pi. - N. Necesidades Futuras máximas. NM-C.
- T. Cantidad de recursos totales. Tjunidades del
recurso rj. - A. Cantidad de recursos disponibles. AjTj-SiCij.
- Q. Peticiones pendientes. Qij es el número de
unidades de rj por las que espera pi.
339. Mecanismos de Gestión del Interbloqueo
- Estrategias básicas para tratar el problema.
- Detectarlo y hacer una recuperación del sistema.
- Protocolo acceso a recursos Prevenir y Evitar
- 9.1. Prevenir Interbloqueos
- Restringe la forma de solicitar los recursos
- Evitar una de las 4 condiciones necesarias para
interbloqueo - Exclusión mutua Recursos intrÃnsecamente no
compartibles - Holdwait ? P pide recurso ? no puede tener otro
recurso Protocolos - P pide y se le asignan todos los recursos que
necesite antes de comenzar su ejecución - P solo puede pedir recursos sólo cuando no tiene
ninguno - Baja reutilización de recursos y posibilidad de
starvation - No requisamiento Protocolos
- P tiene recurso y pide otro no asignable
inmediatamente ? Requisar los recursos
actualmente asignados - Mirar disponibilidad recuros solicitados
- No ? asignados a algún proceso que espere por
otros? - Si ? requisar recursos solicitados y asignarlos a
P - Recursos no disponibles ni cogidos por proceso en
espera ? P debe esperar y le pueden requisar
recursos - Espera circular Ordenar tipos de recursos y
obligar solicitud en orden ascendente - P solicita rj ? no puede retener
349.2. Evitar Interbloqueos
- Mantener el sistema en estado seguro
- Requiere información adicional de cómo se
solicitan recursos - Petición ? sistema examina recursos disponibles,
asignados y peticiones y liberaciones futuras de
cada proceso y decide si la petición actual puede
ser satisfecha sin riesgo - Algoritmos difieren en cantidad y tipo
información solicitada - 9.2.1 Estado estable o seguro
- Sistema en estado seguro ? sistema puede asignar
recursos a cada proceso en algún orden y sigue
libre de deadlock - Secuencia ltPk1,...,Pkpgt, Pki?P, ki?kj si i ? j,
es estable o segura - Nk1Mk1-Ck1?A y
- NkjMkj-Ckj ? A?(kk1,kj-1)Ck, (j2,...,p)
- Necesidades futuras de P pueden atenderse con
recursos disponibles recursos retenidos por
procesos anteriores en la secuencia - 9.2.2 El algoritmo de Habermann o del banquero
- Mantener continuamente al sistema en estado
estable - Petición recursos se atiende solo si estado
resultante es estable - P entra al sistema ? declarar nº máximo de
instancias de cada recurso que puede necesitar
(n) y n?total recursos en sistema - P requiere recursos ? sistema determina si
asignar recursos deja al sistema en estado
estable(se asignan) o no (no). - Usa representación matricial del sistema P, R,
M, N, C, A y T.
359.2.2. El algoritmo de Habermann o del Banquero
- Algoritmo estado-estable es
- WApara i de 1 a n hacer
- Fifalso
- finparamientras ?i/Fifalso y Ni?W hacer
- Ficierto Se elige Pi para ser el sgte. en
la secuencia WWCi Se acumulan sus
recursos en W - finmientrassi Ficierto ?i?hay secuencia
estable con todos los P - estado-estable(no ?i/Fifalso)
- fin.
- Algoritmo de solicitud de recursos
- Algoritmo de Habermann es
- El estado es estable y hay una petición ?Cj
- si ?CjgtNj ó ?CjgtA
- entonces
- petición no atendida
- En el primer caso es un ERROR
- En el segundo, es necesario ESPERAR
- sino CjCj ?Cj
369.2.2. El algoritmo de Habermann o del Banquero
- Ejemplo Pp1,,p5, Rr1,r2,r3, T(10 5 7)
- Sistema en estado estable?
- ?C2(1 0 2) puede ser atendida?
- En el estado resultante de b)
- atendemos ?C5(3 3 0) y ?C1(0 2 0)?
379.3. Detectar Interbloqueos
- Examinar estado sistema para determinar si hubo
deadlock - Proporcionar algoritmo para recuperarse del
mismo. - Algoritmo de Shoshani y Coffman
- Estrategia matricial (A,C,Q,P,R) que considera
peticiones pendientes - Secuencia de todos los Procesos ltPk1,...,Pkngt,
Pki?P, ki?kj si i?j, que cumpla Qk1?A y Qkj ?
A?(kk1,kj-1)Ck, (j2,...,n). - Atender peticiones pendientes de P con recursos
disponibles los retenidos por procesos
anteriores - Algoritmo de Shoshani-Coffman es
- WA
- para i de 1 a n hacer
- Fi(Ci0)
- P que no retienen recursos se ponen los últimos,
asà - tendrán disponibles todos los recursos
- finpara
- mientras ?i/Fifalso y Qi?W hacer
- Ficierto Elegir Pi para sgte. en la
secuencia - WWCi Se acumulan sus recursos en W
- finmientras
- si Ficierto ?i?hay secuencia con todos los P
389.3. Detectar Interbloqueos
- Ejemplo Sean Pp1,p2,p3,p4,p5, Rr1,r2,r3,
T(7 2 6), - Interbloqueo?
- Atender ?C3(0 0 1) ?
- Bloqueo de todos menos p1?
Con qué frecuencia debemos detectar
interbloqueos?
399.4. Recuperar
- Detección interbloqueo, Qué hacer?
- Informar al operador y dejar que este lo
gestione. - Recuperar sistema automáticamente
- Terminar procesos
- Requisar recursos
- 9.4.1. Terminación de procesos
- Abortar todos los procesos en deadlock
- Se rompe el ciclo de deadlock
- Coste muy alto porque se pierde toda la
computación que los procesos hubiesen hecho hasta
ese momento. - Abortar procesos en deadlock uno a uno hasta que
desaparezca - Sobrecarga considerable
- 9.4.2. Requisamiento de recursos
- Se requisan de forma sucesiva recursos de
procesos y dándoselos a otros hasta romper ciclo
de interbloqueo.
- Seleccionar una vÃctima Qué recursos y qué
procesos se requisan? - Rollback si se le quita un recurso a un proceso,
qué se hace con ese proceso? - Starvation Cómo se asegura que no se producirá
starvation?.