39
Concurrencia Paso de Mensajes Control de Recursos Deadlock

Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

Concurrencia

Paso de Mensajes

Control de Recursos

Deadlock

Page 2: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

2

Sincronizacion y comunicación basada en mensajes

El envío de mensajes se usa tanto para sincronizar como para comunicar.

Se necesita un proceso emisor y uno receptor. Información para intercambiar. Operaciones básicas son:

– Enviar (mensaje, [dest])– Recibir (mensaje, [fuente])

Page 3: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

3

Paso de mensajes

Se debe establecer un enlace entre receptor y emisor:– Modelo de sincronización.– Cómo nombrar los procesos.– Estructura del mensaje.– Confiabilidad

Page 4: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

4

Modelo de sincronización

Sincronización implícita: un proceso no puede recibir un mensaje antes que el emisor lo haya emitido.– El receptor puede leer una variable que no

haya sido escrita por el emisor.– Un proceso que ejecuta una recepción de

mensaje incondicional cuando no existe ningún mensaje, permanecerá suspendido hasta que llegue el mensaje.

Page 5: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

5

Modelo de sincronización de procesos

Operación envía (send):

– Asíncrona: el emisor continúa trabajando sin saber si el mensaje llegó o no (o se envió completamente o no).

– Síncrona: el emisor continúa trabajando sólo cuando se recibió el mensaje (o cuando se envió completamente).

– Invocación remota: el emisor continúa sólo cuando se recibió una respuesta desde el receptor.

Page 6: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

6

Primitivas con o sin bloqueo

send síncrono o con bloqueo: mientras se envía el mensaje, el proceso emisor se bloquea (la instrucción siguiente se ejecuta una vez que el mensaje se haya enviado en su totalidad).

send asíncrono o sin bloqueo: ¿Cuándo vuelve a estar disponible el búffer?

Page 7: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

7

Primitivas con o sin bloqueo

send con bloqueo (CPU inactivo durante la

transmisión de los mensajes).

send sin bloqueo, con copia (se desperdicia el

tiempo del CPU para la copia adicional).

send sin bloqueo, con interrupción (dificulta la

programación).

Page 8: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

8

Nombrado de procesos

Dirección:

nombrado directo:

envía <msj> <proceso>

nombrado indirecto:

envía <msj> <buzón>

Simetría:

simétrico: si el emisor y el receptor se nombran entre sí

envía <msj> <proceso>

espera <msj> <proceso>

asimétrico: acepta mensajes de cualquier proceso

espera <msj>

Page 9: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

9

Nombrado de procesos

Una dirección se refiere a un proceso específico (primitiva sin almacenamiento en buffers).

Una dirección se refiere a un buzón - mailbox - (primitiva con almacenamiento en buffers)– Una llamada a receive elimina un mensaje del

buzón o se bloquea.

Page 10: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

10

Estructura del mensaje

Idealmente: cualquier objeto. Cada lenguaje ha impuesto sus restricciones.

Page 11: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

11

Primitivas confiables vs. no confiables

Los mensajes se pueden perder. Si send es no confiable el sistema no garantiza la

entrega (se deja en manos de los usuarios). Se puede exigir al sistema del receptor enviar un

acuse de recibo (acknowledgement). Se puede utilizar la respuesta del servidor como

acuse de recibo.

Page 12: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

12

Primitivas confiables vs. no confiables

Page 13: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

13

Control de recursos

Muchos recursos sólo pueden ser utilizados por un proceso a la vez. En muchas aplicaciones, un proceso necesita acceso exclusivo no a un recurso, sino a varios. La secuencia de eventos necesarios para utilizar un recurso es:

– Petición del recurso– Utilización – Liberación

Page 14: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

14

Control de recursos

Consideremos, por ejemplo, una compañía de marketing que se especializa en preparar mapas demográficos con un plotter. La información demográfica proviene de los CD que contienen datos censales y de otro tipo. Supongamos que el proceso A solicita la unidad de CD y la obtiene. Un momento después, el proceso B solicita el plotter y también lo obtiene. Ahora el proceso A solicita el plotter y se bloquea esperándolo. Por último, el proceso B solicita la unidad de CD y también se bloquea. En este punto ambos procesos quedan bloqueados y permanecen así eternamente. Esta situación se denomina bloqueo mutuo.

Page 15: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

15

Interbloqueo

También llamado deadlock, bloqueo mutuo, abrazo mortal.

Los bloqueos mutuos pueden ocurrir en muchas situaciones: por ej. en sistemas de base de datos.

Los bloqueos mutuos pueden ocurrir con recursos de hardware o de software.

Page 16: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

16

Interbloqueo

Nos referiremos a los objetos otorgados como recursos.

Los recursos son de dos tipos: apropiables (preemptivos) y no apropiables (no preemptivos).

Un recurso apropiable es uno que se le puede quitar (de prepo) al proceso que lo tiene (ej. memoria).

Page 17: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

17

Interbloqueo: Definición

Un conjunto de procesos se intrebloquea si cada proceso del conjunto espera un evento que sólo puede ser provocado por otro proceso del conjunto.

Page 18: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

18

Interbloqueo: Condiciones

Coffman et al. (1971) demostraron que deben cumplirse cuatro condiciones para que haya un bloqueo mutuo.

Deben estar presentes estas cuatro condiciones para que ocurra un bloqueo. Si una o más de estas condiciones está ausente, no puede haber interbloqueo.

Page 19: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

19

Interbloqueo: Condiciones

1. Condición de exclusión mutua.

2. Condición de posesión y espera.

3. Condicion de no apropiacion.

4. Condición de espera circular.

Page 20: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

20

Interbloqueo: Condiciones

1. Condición de exclusión mutua. Cada recurso está asignado a un único proceso o está disponible.

2. Condición de posesión y espera. Los procesos que tienen en un momento dado recursos asignados con anterioridad pueden solicitar nuevos recursos.

Page 21: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

21

Interbloqueo: Condiciones

3. Condicion de no apropiacion. No es posible quitarle por la fuerza a un proceso los recursos que le fueron otorgados previamente. El proceso que los posee debe liberarlos en forma explícita.

4. Condición de espera circular. Debe existir una cadena circular de dos o más procesos, cada uno de los cuales espera un recurso poseído por el siguiente miembro de la cadena.

Page 22: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

22

Grafos

HoIt (1972) mostró cómo pueden modelarse estas cuatro condiciones usando grafos dirigidos.

Los grafos tienen dos clases de nodos: – procesos, que se indican con círculos, y – recursos, que se indican con cuadrados.

Page 23: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

23

Grafos

Un arco que va de un nodo de recurso (cuadrado) a uno de proceso (círculo) indica que el recurso fue solicitado previamente por el proceso, le fue concedido, y actualmente está en su poder.

Un arco de un proceso a un recurso indica que el proceso está bloqueado esperando ese recurso.

Page 24: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

24

Grafos

Un ciclo en el grafo implica que hay un bloqueo mutuo en el que intervienen los procesos y recursos del ciclo. En este ejemplo, el ciclo es C-T-D-U-C.

Page 25: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

25

Grafos

Page 26: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

26

Interbloqueo: Estrategias

1. Simplemente ignorar el problema.

2. Detección y recuperación.

3. Evitarlo de manera dinámica, mediante una asignación cuidadosa de los recursos.

4. Prevención, negando estructuralmente una de las cuatro condiciones necesarias.

Page 27: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

27

Interbloqueo: Estrategias

1. El algoritmo del avestruz La estrategia más sencilla es el algoritmo del avestruz: meter la cabeza en la arena y hacer de cuenta que el

problema no existe. 2. Detección y recuperación El sistema vigila

las peticiones y liberaciones de recursos.

Cada vez que un recurso se solicita o libera, se actualiza el grafo de recursos, y se determina si contiene algún ciclo.

Page 28: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

28

Interbloqueo: Estrategias

2. Detección y recuperación (cont.) Si se encuentra uno, se termina uno de los procesos del ciclo. Si esto no rompe el bloqueo mutuo, se termina otro proceso, continuando así hasta romper el ciclo.

Otro método consiste en no mantener el grafo de recursos, y en vez de ello verificar periódicamente si hay procesos que hayan estado bloqueados continuamente durante más de, digamos, una hora. A continuación se terminan esos procesos. La detección y recuperación es la estrategia que a menudo se usa en los sistemas por lotes, en los que terminar y luego reiniciar un proceso suele ser aceptable.

Sin embargo, se debe tener cuidado de restaurar todos los archivos modificados a su estado original, y revertir todos los demás efectos secundarios que pudieran haber ocurrido.

Page 29: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

29

Interbloqueo: Estrategias

3. Evasión de bloqueos Se pueden evitar deadlocks, pero sólo en el caso de disponer previamente de cierta información.

Se utilizan distintas estrategias: – Trayectorias de Recursos.– Estados seguros e inseguros.– El algoritmo del banquero.

Page 30: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

Trayectoria de Recursos

Se debe establecer como sección

crítica la región con

sombreado doble

Page 31: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

Estados seguros e inseguros

Page 32: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

Algoritmo del banquero

El banquero sabe que no todos sus clientes necesitan el monto completo del préstamo inmediatamente.

El algoritmo del banquero considera cada requerimiento en el momento que ocurre y evalúa si su satisfacción lo deja en un estado seguro. En tal caso asigna lo solicitado.

En caso contrario pospone el requerimiento.

Page 33: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

33

Interbloqueo: Estrategias

4. Prevención del bloqueo mutuo

Imponer restricciones apropiadas a los procesos de modo que el bloqueo mutuo sea estructuralmente imposible.

1. Ataquemos primero la condición de exclusión mutua. Si ningún recurso se asignara de manera exclusiva a un solo proceso, jamás tendríamos bloqueo mutuo. Sin embargo, es igualmente obvio que permitir a dos procesos escribir en la impresora al mismo tiempo conduciría al caos.

Page 34: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

34

Interbloqueo: Estrategias

2. Si podemos evitar que los procesos que retienen recursos esperen para obtener más recursos, podremos eliminar los bloqueos mutuos. Una forma de lograr este objetivo es exigir que todos los procesos soliciten todos sus recursos antes de iniciar su ejecución. Si todo está disponible, se asignará al proceso todo lo que necesita y éste podrá ejecutarse hasta finalizar.

Page 35: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

35

Interbloqueo: Estrategias

2. (cont.) Si uno o más recursos están ocupados, no se asignará nada y el proceso simplemente esperará. Un problema inmediato de esta estrategia es que muchos procesos no saben cuántos recursos van a necesitar antes de iniciar su ejecución. Otro problema es que los recursos no se aprovecharán de manera óptima.

Page 36: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

36

Interbloqueo: Estrategias

2. (cont.) Una forma un poco distinta de romper la condición de retener y esperar es exigir que un proceso que solicita un recurso libere primero temporalmente todos los recursos que está reteniendo en ese momento.

Sólo si la petición tiene éxito podrá el proceso recibir de vuelta los recursos originales.

Page 37: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

37

Interbloqueo: Estrategias

3. Atacar no apropiación: Si a un proceso se le asignó la impresora y apenas ha imprimido la mitad de sus salidas, quitarle forzosamente la impresora porque un plotter que se necesita no está disponible daría lugar a un desastre.

Page 38: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

38

Interbloqueo: Estrategias

4. Se puede eliminar la espera circular de varias formas: – Crear una numeración global de todos los recursos.

Ahora la regla es ésta: los procesos pueden solicitar recursos cuando quieran, pero todas las peticiones deben hacerse en orden numérico. Un proceso puede solicitar primero una impresora y después una unidad de cinta, pero no puede solicitar primero un plotter y luego una impresora.

Page 39: Sistemas en tiempo real - UNR · Sistemas en tiempo real Author: estela Created Date: 5/7/2013 2:35:03 PM

39

Interbloqueo: Estrategias

4. (cont.) Con esta regla, el grafo de asignación de

recursos nunca puede tener ciclos. Aunque el ordenamiento numérico de los

recursos elimina el problema de los bloqueos mutuos, puede ser imposible encontrar un ordenamiento que satisfaga todas las restricciones.