Ejercicios de Especificación Recursos...
Transcript of Ejercicios de Especificación Recursos...
![Page 1: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/1.jpg)
Ejercicios de Especificacion Recursos Compartidos
Guillermo Roman
ConcurrenciaGRADO EN INGENIERIA INFORMATICA/ GRADO EN MATEMATICAS E INFORMATICA/
DOBLE GRADO EN ING. INFORMATICA Y ADE
Universidad Politecnica de Madrid
http://babel.upm.es/teaching/concurrencia
Abril 2020
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 1 / 17
![Page 2: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/2.jpg)
Ejemplo: lectores/escritores
Con acceso explıcito a los elementos del tipo
C-TAD GestorLEOPERACIONESACCION IL, FL, IE, FE:
SEMANTICADOMINIO:TIPO: GestorLE = (l : N× e : N)INICIAL: self.l = 0 ∧ self.e = 0INVARIANTE: (self.l > 0⇒ self.e = 0) ∧ (self.e > 0⇒ self.e = 1 ∧ self.l = 0)CPRE: self.e = 0IL
POST: self.e = selfpre .e ∧ self.l = selfpre .l + 1CPRE: CiertoFL
POST: self = selfpre \ self.l = selfpre .l − 1CPRE: self.e = 0 ∧ self.l = 0IE
POST: self.l = 0 ∧ self.e = 1
CPRE: CiertoFE
POST: self.l = 0 ∧ self.e = 0Guillermo Roman (UPM) Especificacion Recursos Abril 2020 2 / 17
![Page 3: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/3.jpg)
Ejemplo: lectores/escritores
Usando pattern-matching para acceder al tipoC-TAD GestorLEOPERACIONESACCION IL, FL, IE, FE:
SEMANTICADOMINIO:TIPO: GestorLE = (l : N× e : N)INICIAL: self = (0, 0)INVARIANTE: (self.l > 0⇒ self.e = 0) ∧ (self.e > 0⇒ self.e = 1 ∧ self.l = 0)CPRE: self.e = 0IL
POST: selfpre = (lec , esc) ∧ self = (lec + 1, esc)CPRE: CiertoFL
POST: selfpre = (lec , esc) ∧ self = (lec − 1, esc)CPRE: self.e = 0 ∧ self.l = 0IE
POST: self = (0, 1)
CPRE: CiertoFE
POST: self = (0, 0)Guillermo Roman (UPM) Especificacion Recursos Abril 2020 3 / 17
![Page 4: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/4.jpg)
Ejercicio: Los nomadas que cantan
Se esta desarrollando una IA para competir en el campeonato del mundo del popular
juego de mesa Los nomadas que cantan. Los desarrolladores han ideado un recursocompartido para representar las materias primas que tiene el jugador, siendo estas
materias primas cereal, agua y madera.
Hay una operacion no bloqueante por cada materia prima para que el jugador coja esa
materia prima: cargarCereal, cargarAgua y cargarMadera. El jugador puede llevar a losumo una unidad de cada materia prima pero no puede llevar cereal y madera a la vez, si
carga una pierde la otra.
Por otro lado, hay dos operaciones que consumen materias primas: avanzar (consumecereal y agua) y reparar (consume agua y madera). Estas operaciones son bloqueanteshasta que se disponga de las materias primas necesarias.
Se pide: especificar el recurso compartido teniendo en cuenta que bastarıa un booleanopor cada materia prima para indicar que el jugador tiene dicha materia (porque la ha
cargado) o no tiene dicha materia (porque acaba de empezar el juego o la ha consumido
avanzando o reparando).
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 4 / 17
![Page 5: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/5.jpg)
Ejercicio: Los nomadas que cantan
C-TADMateriasPrimasOPERACIONESACCION cargarCereal, cargarAgua, cargarMadera, avanzar, reparar:
SEMANTICADOMINIO:TIPO:MateriasPrimas =INICIAL:INVARIANTE:CPRE:cargarCereal
POST:CPRE:cargarAgua
POST:CPRE:cargarMadera
POST:CPRE:avanzar
POST:CPRE:reparar
POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 5 / 17
![Page 6: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/6.jpg)
Ejercicio: Los nomadas que cantan
C-TADMateriasPrimasOPERACIONESACCION cargarCereal, cargarAgua, cargarMadera, avanzar, reparar:
SEMANTICADOMINIO:TIPO:MateriasPrimas = (cereal : B× agua : B×madera : B)INICIAL:INVARIANTE:CPRE:cargarCereal
POST:CPRE:cargarAgua
POST:CPRE:cargarMadera
POST:CPRE:avanzar
POST:CPRE:reparar
POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 5 / 17
![Page 7: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/7.jpg)
Ejercicio: Los nomadas que cantan
C-TADMateriasPrimasOPERACIONESACCION cargarCereal, cargarAgua, cargarMadera, avanzar, reparar:
SEMANTICADOMINIO:TIPO:MateriasPrimas = (cereal : B× agua : B×madera : B)INICIAL: self = (Falso,Falso,Falso)INVARIANTE:CPRE:cargarCereal
POST:CPRE:cargarAgua
POST:CPRE:cargarMadera
POST:CPRE:avanzar
POST:CPRE:reparar
POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 5 / 17
![Page 8: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/8.jpg)
Ejercicio: Los nomadas que cantan
C-TADMateriasPrimasOPERACIONESACCION cargarCereal, cargarAgua, cargarMadera, avanzar, reparar:
SEMANTICADOMINIO:TIPO:MateriasPrimas = (cereal : B× agua : B×madera : B)INICIAL: self = (Falso,Falso,Falso)INVARIANTE:CPRE: CiertocargarCereal
POST:CPRE: CiertocargarAgua
POST:CPRE: CiertocargarMadera
POST:CPRE:avanzar
POST:CPRE:reparar
POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 5 / 17
![Page 9: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/9.jpg)
Ejercicio: Los nomadas que cantan
C-TADMateriasPrimasOPERACIONESACCION cargarCereal, cargarAgua, cargarMadera, avanzar, reparar:
SEMANTICADOMINIO:TIPO:MateriasPrimas = (cereal : B× agua : B×madera : B)INICIAL: self = (Falso,Falso,Falso)INVARIANTE:CPRE: CiertocargarCereal
POST:CPRE: CiertocargarAgua
POST:CPRE: CiertocargarMadera
POST:CPRE: self.cereal ∧ self.aguaavanzar
POST:CPRE: self.madera ∧ self.aguareparar
POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 5 / 17
![Page 10: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/10.jpg)
Ejercicio: Los nomadas que cantan
C-TADMateriasPrimasOPERACIONESACCION cargarCereal, cargarAgua, cargarMadera, avanzar, reparar:
SEMANTICADOMINIO:TIPO:MateriasPrimas = (cereal : B× agua : B×madera : B)INICIAL: self = (Falso,Falso,Falso)INVARIANTE:CPRE: CiertocargarCereal
POST: self = (Cierto, selfpre .agua ,Falso)CPRE: CiertocargarAgua
POST:CPRE: CiertocargarMadera
POST:CPRE: self.cereal ∧ self.aguaavanzar
POST:CPRE: self.madera ∧ self.aguareparar
POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 5 / 17
![Page 11: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/11.jpg)
Ejercicio: Los nomadas que cantan
C-TADMateriasPrimasOPERACIONESACCION cargarCereal, cargarAgua, cargarMadera, avanzar, reparar:
SEMANTICADOMINIO:TIPO:MateriasPrimas = (cereal : B× agua : B×madera : B)INICIAL: self = (Falso,Falso,Falso)INVARIANTE:CPRE: CiertocargarCereal
POST: self = (Cierto, selfpre .agua ,Falso)CPRE: CiertocargarAgua
POST: self = (selfpre .cereal ,Cierto, selfpre .madera)CPRE: CiertocargarMadera
POST:CPRE: self.cereal ∧ self.aguaavanzar
POST:CPRE: self.madera ∧ self.aguareparar
POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 5 / 17
![Page 12: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/12.jpg)
Ejercicio: Los nomadas que cantan
C-TADMateriasPrimasOPERACIONESACCION cargarCereal, cargarAgua, cargarMadera, avanzar, reparar:
SEMANTICADOMINIO:TIPO:MateriasPrimas = (cereal : B× agua : B×madera : B)INICIAL: self = (Falso,Falso,Falso)INVARIANTE:CPRE: CiertocargarCereal
POST: self = (Cierto, selfpre .agua ,Falso)CPRE: CiertocargarAgua
POST: self = (selfpre .cereal ,Cierto, selfpre .madera)CPRE: CiertocargarMadera
POST: self = (Falso, selfpre .agua ,Cierto)CPRE: self.cereal ∧ self.aguaavanzar
POST:CPRE: self.madera ∧ self.aguareparar
POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 5 / 17
![Page 13: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/13.jpg)
Ejercicio: Los nomadas que cantan
C-TADMateriasPrimasOPERACIONESACCION cargarCereal, cargarAgua, cargarMadera, avanzar, reparar:
SEMANTICADOMINIO:TIPO:MateriasPrimas = (cereal : B× agua : B×madera : B)INICIAL: self = (Falso,Falso,Falso)INVARIANTE: ¬self.cereal ∨ ¬self.maderaCPRE: CiertocargarCereal
POST: self = (Cierto, selfpre .agua ,Falso)CPRE: CiertocargarAgua
POST: self = (selfpre .cereal ,Cierto, selfpre .madera)CPRE: CiertocargarMadera
POST: self = (Falso, selfpre .agua ,Cierto)CPRE: self.cereal ∧ self.aguaavanzar
POST: self = (Falso,Falso, selfpre .madera)CPRE: self.madera ∧ self.aguareparar
POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 5 / 17
![Page 14: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/14.jpg)
Ejercicio: Los nomadas que cantan
C-TADMateriasPrimasOPERACIONESACCION cargarCereal, cargarAgua, cargarMadera, avanzar, reparar:
SEMANTICADOMINIO:TIPO:MateriasPrimas = (cereal : B× agua : B×madera : B)INICIAL: self = (Falso,Falso,Falso)INVARIANTE: ¬self.cereal ∨ ¬self.maderaCPRE: CiertocargarCereal
POST: self = (Cierto, selfpre .agua ,Falso)CPRE: CiertocargarAgua
POST: self = (selfpre .cereal ,Cierto, selfpre .madera)CPRE: CiertocargarMadera
POST: self = (Falso, selfpre .agua ,Cierto)CPRE: self.cereal ∧ self.aguaavanzar
POST: self = (Falso,Falso, selfpre .madera)CPRE: self.madera ∧ self.aguareparar
POST: self = (selfpre .cereal ,Falso,Falso)
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 5 / 17
![Page 15: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/15.jpg)
Ejercicio: Dining Philisophers
Lo que veis a continuacion es la descripcion original de Edsger W. Dijkstra del problema de los
Dining Philosophers:La vida de un filosofo consiste en alternar pensar y comer en una especie de
bucle infinito. N filosofos, numerados del 0 al N−1, viven en una casa con una mesaen la que cada filosofo tiene su sitio asignado:
Su unico problema, al margen de los filosoficos, es que su menu consiste en un tipocomplicado de espagueti que es necesario comer con dos tenedores. Hay un unicotenedor a cada lado de cada plato. Eso no es un problema. Sin embargo, comoconsecuencia, no puede haber dos filosofos comiendo a la vez uno al lado del otro.
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 6 / 17
![Page 16: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/16.jpg)
Ejercicio: Dining Philisophers
Hemos decidido representar el problema en forma de un recurso compartidoMesa con:dos operaciones: mesa .cogerTenedores(i ) ymesa .soltarTenedores(i )Esas seran las operaciones que el filosofo i ejecutara antes y despues de comer:
I de forma que tendra que bloquear enmesa .cogerTenedores(i ) cuando alguno de lostenedores a los lados de su plato esten siendo usados (por el filosofo (i + 1) mod N o por elfilosofo (i − 1) mod N )
La operacionmesa .soltarTenedores(i ) no es bloqueanteNOTA: se sugiere que el dominio del recurso incluya una funcion parcial que hable de los
tenedores libres. Las funciones parciales formalizan las tablas
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 7 / 17
![Page 17: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/17.jpg)
Ejercicio: Dining Philisophers
C-TADMesaOPERACIONESACCION cogerTenedores: N[e]ACCION soltarTenedores: N[e]SEMANTICADOMINIO:TIPO:Mesa =TIPO: TipoFilosofo = {0, ..,N − 1}INVARIANTE:
INICIAL:
CPRE:cogerTenedores(i)POST:
CPRE:soltarTenedores(i)POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 8 / 17
![Page 18: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/18.jpg)
Ejercicio: Dining Philisophers
C-TADMesaOPERACIONESACCION cogerTenedores: N[e]ACCION soltarTenedores: N[e]SEMANTICADOMINIO:TIPO:Mesa = tenedores : TipoFilosofo 7→ BTIPO: TipoFilosofo = {0, ..,N − 1}INVARIANTE:
INICIAL:
CPRE:cogerTenedores(i)POST:
CPRE:soltarTenedores(i)POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 8 / 17
![Page 19: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/19.jpg)
Ejercicio: Dining Philisophers
C-TADMesaOPERACIONESACCION cogerTenedores: N[e]ACCION soltarTenedores: N[e]SEMANTICADOMINIO:TIPO:Mesa = tenedores : TipoFilosofo 7→ BTIPO: TipoFilosofo = {0, ..,N − 1}INVARIANTE:
INICIAL: ∀ i ∈ TipoFilosofo • ¬self.tenedores(i )CPRE:cogerTenedores(i)POST:
CPRE:soltarTenedores(i)POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 8 / 17
![Page 20: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/20.jpg)
Ejercicio: Dining Philisophers
C-TADMesaOPERACIONESACCION cogerTenedores: N[e]ACCION soltarTenedores: N[e]SEMANTICADOMINIO:TIPO:Mesa = tenedores : TipoFilosofo 7→ BTIPO: TipoFilosofo = {0, ..,N − 1}INVARIANTE:
INICIAL: ∀ i ∈ TipoFilosofo • ¬self.tenedores(i )CPRE: ¬self.tenedores(i ) ∧ ¬self.tenedores(i +N 1)cogerTenedores(i)POST:
CPRE:soltarTenedores(i)POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 8 / 17
![Page 21: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/21.jpg)
Ejercicio: Dining Philisophers
C-TADMesaOPERACIONESACCION cogerTenedores: N[e]ACCION soltarTenedores: N[e]SEMANTICADOMINIO:TIPO:Mesa = tenedores : TipoFilosofo 7→ BTIPO: TipoFilosofo = {0, ..,N − 1}INVARIANTE:
INICIAL: ∀ i ∈ TipoFilosofo • ¬self.tenedores(i )CPRE: ¬self.tenedores(i ) ∧ ¬self.tenedores(i +N 1)cogerTenedores(i)POST:
CPRE: CiertosoltarTenedores(i)POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 8 / 17
![Page 22: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/22.jpg)
Ejercicio: Dining Philisophers
C-TADMesaOPERACIONESACCION cogerTenedores: N[e]ACCION soltarTenedores: N[e]SEMANTICADOMINIO:TIPO:Mesa = tenedores : TipoFilosofo 7→ BTIPO: TipoFilosofo = {0, ..,N − 1}INVARIANTE:
INICIAL: ∀ i ∈ TipoFilosofo • ¬self.tenedores(i )CPRE: ¬self.tenedores(i ) ∧ ¬self.tenedores(i +N 1)cogerTenedores(i)POST: self.tenedores = selfpre .tenedores ⊕ {i 7→ Cierto, i +N 1 7→ Cierto}
CPRE: CiertosoltarTenedores(i)POST:
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 8 / 17
![Page 23: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/23.jpg)
Ejercicio: Dining Philisophers
C-TADMesaOPERACIONESACCION cogerTenedores: N[e]ACCION soltarTenedores: N[e]SEMANTICADOMINIO:TIPO:Mesa = tenedores : TipoFilosofo 7→ BTIPO: TipoFilosofo = {0, ..,N − 1}INVARIANTE:
INICIAL: ∀ i ∈ TipoFilosofo • ¬self.tenedores(i )CPRE: ¬self.tenedores(i ) ∧ ¬self.tenedores(i +N 1)cogerTenedores(i)POST: self.tenedores = selfpre .tenedores ⊕ {i 7→ Cierto, i +N 1 7→ Cierto}
CPRE: CiertosoltarTenedores(i)POST: self.tenedores = selfpre .tenedores ⊕ {i 7→ Falso, i +N 1 7→ Falso}
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 8 / 17
![Page 24: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/24.jpg)
Ejercicio: Dining Philisophers
C-TADMesaOPERACIONESACCION cogerTenedores: N[e]ACCION soltarTenedores: N[e]SEMANTICADOMINIO:TIPO:Mesa = tenedores : TipoFilosofo 7→ BTIPO: TipoFilosofo = {0, ..,N − 1}INVARIANTE: | {i ∈ TipoFilosofo • self .tenedores(i )} | mod2 = 0INICIAL: ∀ i ∈ TipoFilosofo • ¬self.tenedores(i )CPRE: ¬self.tenedores(i ) ∧ ¬self.tenedores(i +N 1)cogerTenedores(i)POST: self.tenedores = selfpre .tenedores ⊕ {i 7→ Cierto, i +N 1 7→ Cierto}
CPRE: CiertosoltarTenedores(i)POST: self.tenedores = selfpre .tenedores ⊕ {i 7→ Falso, i +N 1 7→ Falso}
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 8 / 17
![Page 25: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/25.jpg)
Ejercicio: Dining Philisophers
C-TADMesaOPERACIONESACCION cogerTenedores: N[e]ACCION soltarTenedores: N[e]SEMANTICADOMINIO:TIPO:Mesa = TipoFilosofo 7→ BTIPO: TipoFilosofo = {0, ..,N − 1}INVARIANTE: | {i ∈ TipoFilosofo • self (i )} | mod2 = 0INICIAL: ∀ i ∈ TipoFilosofo • ¬self(i )CPRE: ¬self(i ) ∧ ¬self(i +N 1)cogerTenedores(i)POST: self = selfpre ⊕ {i 7→ Cierto, i +N 1 7→ Cierto}
CPRE: CiertosoltarTenedores(i)POST: self = selfpre ⊕ {i 7→ Falso, i +N 1 7→ Falso}
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 9 / 17
![Page 26: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/26.jpg)
Ejercicios: Examen 18/19 Mayo
Dado el siguiente CTAD:
C-TADMiCTADTIPO:MiCTAD = Indice → BTIPO: Indice = {0, 1}INICIAL: ∀ i ∈ Indice • ¬self(i )INVARIANTE: ¬self(0) ∨ self(1)CPRE: ¬self(0) ∧ ¬self(1)uno()
POST: self = selfpre ⊕ {1 7→ Cierto}CPRE: ¬self(0) ∧ self(1)dos()
POST: self = selfpre ⊕ {0 7→ Cierto}CPRE: self(1)tres()
POST: self = selfpre ⊕ {0 7→ Falso} ⊕ {1 7→ Falso}
Asumiendo que tenemos tres procesos que invocan repetidamente las operaciones uno(),dos() y tres() del recurso compartido. Se pide marcar la afirmacion correcta:(a) El sistema podrıa quedarse bloqueado
(b) El sistema nunca quedara bloqueado y siempre se cumplira la invariante
(c) Podrıa llegar a violarse la invariante
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 10 / 17
![Page 27: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/27.jpg)
Ejercicios: Examen 18/19 Mayo
C-TADMiCTADTIPO:MiCTAD = Indice → BTIPO: Indice = {0, 1}INICIAL: ∀ i ∈ Indice • ¬self(i )INVARIANTE:¬self(0) ∨ self(1)
CPRE: ¬self(0) ∧ ¬self(1)uno()
POST: self = selfpre ⊕ {1 7→ Cierto}CPRE: ¬self(0) ∧ self(1)dos()
POST: self = selfpre ⊕ {0 7→ Cierto}CPRE: self(1)tres()
POST: self = selfpre ⊕ {0 7→ Falso} ⊕ {1 7→ Falso}
(F,F)
(T,T)
(T,F)
(F,T)
(a) El sistema podrıa quedarse bloqueado
(b) El sistema nunca quedara bloqueado y siempre se cumplira la invariante
(c) Podrıa llegar a violarse la invariante
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 11 / 17
![Page 28: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/28.jpg)
Ejercicios: Examen 18/19 Mayo
C-TADMiCTADTIPO:MiCTAD = Indice → BTIPO: Indice = {0, 1}INICIAL: ∀ i ∈ Indice • ¬self(i )INVARIANTE:¬self(0) ∨ self(1)
CPRE: ¬self(0) ∧ ¬self(1)uno()
POST: self = selfpre ⊕ {1 7→ Cierto}CPRE: ¬self(0) ∧ self(1)dos()
POST: self = selfpre ⊕ {0 7→ Cierto}CPRE: self(1)tres()
POST: self = selfpre ⊕ {0 7→ Falso} ⊕ {1 7→ Falso}
(F,F)
(T,T)
(T,F)
(F,T)
uno
(a) El sistema podrıa quedarse bloqueado
(b) El sistema nunca quedara bloqueado y siempre se cumplira la invariante
(c) Podrıa llegar a violarse la invariante
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 11 / 17
![Page 29: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/29.jpg)
Ejercicios: Examen 18/19 Mayo
C-TADMiCTADTIPO:MiCTAD = Indice → BTIPO: Indice = {0, 1}INICIAL: ∀ i ∈ Indice • ¬self(i )INVARIANTE:¬self(0) ∨ self(1)
CPRE: ¬self(0) ∧ ¬self(1)uno()
POST: self = selfpre ⊕ {1 7→ Cierto}CPRE: ¬self(0) ∧ self(1)dos()
POST: self = selfpre ⊕ {0 7→ Cierto}CPRE: self(1)tres()
POST: self = selfpre ⊕ {0 7→ Falso} ⊕ {1 7→ Falso}
(F,F)
(T,T)
(T,F)
(F,T)
uno
dos
(a) El sistema podrıa quedarse bloqueado
(b) El sistema nunca quedara bloqueado y siempre se cumplira la invariante
(c) Podrıa llegar a violarse la invariante
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 11 / 17
![Page 30: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/30.jpg)
Ejercicios: Examen 18/19 Mayo
C-TADMiCTADTIPO:MiCTAD = Indice → BTIPO: Indice = {0, 1}INICIAL: ∀ i ∈ Indice • ¬self(i )INVARIANTE:¬self(0) ∨ self(1)
CPRE: ¬self(0) ∧ ¬self(1)uno()
POST: self = selfpre ⊕ {1 7→ Cierto}CPRE: ¬self(0) ∧ self(1)dos()
POST: self = selfpre ⊕ {0 7→ Cierto}CPRE: self(1)tres()
POST: self = selfpre ⊕ {0 7→ Falso} ⊕ {1 7→ Falso}
(F,F)
(T,T)
(T,F)
(F,T)
uno
dos
tres
(a) El sistema podrıa quedarse bloqueado
(b) El sistema nunca quedara bloqueado y siempre se cumplira la invariante
(c) Podrıa llegar a violarse la invariante
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 11 / 17
![Page 31: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/31.jpg)
Ejercicios: Examen 18/19 Mayo
C-TADMiCTADTIPO:MiCTAD = Indice → BTIPO: Indice = {0, 1}INICIAL: ∀ i ∈ Indice • ¬self(i )INVARIANTE:¬self(0) ∨ self(1)
CPRE: ¬self(0) ∧ ¬self(1)uno()
POST: self = selfpre ⊕ {1 7→ Cierto}CPRE: ¬self(0) ∧ self(1)dos()
POST: self = selfpre ⊕ {0 7→ Cierto}CPRE: self(1)tres()
POST: self = selfpre ⊕ {0 7→ Falso} ⊕ {1 7→ Falso}
(F,F)
(T,T)
(T,F)
(F,T)
uno
dos
tres tres
(a) El sistema podrıa quedarse bloqueado
(b) El sistema nunca quedara bloqueado y siempre se cumplira la invariante
(c) Podrıa llegar a violarse la invariante
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 11 / 17
![Page 32: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/32.jpg)
Ejercicios: Examen 18/19 Mayo
Dado el siguiente programa
c l a s s Hi los {s t a t i c c l a s s MiHilo extends Thread {i n t n ;publ i c void run ( ) {for ( i n t i =0; i<100; i ++) {n ++;
}}}
publ i c void main ( S t r i ng [ ] args ) {Thread t = new MiHilo ( ) ;
t . s t a r t ( ) ;
t . run ( ) ;
hacerAlgo ( ) ; / / hace algo . . .t r y { t . j o i n ( ) ;}catch ( InterruptedExcept ion e ){}System . out . p r i n t l n ( t . n ) ;
}
¿Cual sera la salida por consola al ejecutar el main? Se pidemarcar la afirmacion correcta.
(a) 200
(b) No se puede saber porque podrıa haber condiciones de carrera.
(c) 100
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 12 / 17
![Page 33: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/33.jpg)
Ejercicios: Examen 18/19 Mayo
Dado el siguiente programa
c l a s s Hi los {s t a t i c c l a s s MiHilo extends Thread {i n t n ;publ i c void run ( ) {for ( i n t i =0; i<100; i ++) {n ++;
}}}
publ i c void main ( S t r i ng [ ] args ) {Thread t = new MiHilo ( ) ;
t . s t a r t ( ) ;
t . run ( ) ;
hacerAlgo ( ) ; / / hace algo . . .t r y { t . j o i n ( ) ;}catch ( InterruptedExcept ion e ){}System . out . p r i n t l n ( t . n ) ;
}
¿Cual sera la salida por consola al ejecutar el main? Se pidemarcar la afirmacion correcta.
(a) El numero maximo de procesos ejecutando a la vez sera 2 y el metodo main podraterminar antes que el thread t
(b) El numero maximo de procesos ejecutando a la vez sera 3 y el metodo main terminarasiempre despues que el thread t
(c) El numero maximo de procesos ejecutando a la vez sera 2 y el metodo main terminarasiempre despues que el thread t
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 13 / 17
![Page 34: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/34.jpg)
Ejercicios: Examen 18/19 Mayo
Dado un programa concurrente en la que tres threads instancias de las clases A, B y Ccomparten una variable n:
s t a t i c v o l a t i l e i n t n = 0 ;s t a t i c Semaphore s1 = new Semaphore ( 1 ) ;s t a t i c Semaphore s2 = new Semaphore ( 0 ) ;
c l a s s A extends Thread {publ i c void run ( ) {s2 . await ( ) ;
n = 2 ∗ n ;s1 . s i gna l ( ) ;
}}
c l a s s B extends Thread {publ i c void run ( ) {s1 . await ( ) ;
n = n ∗ n ;s2 . s i gna l ( ) ;
}}
c l a s s C extends Thread {publ i c void run ( ) {s1 . await ( ) ;
n = n + 2 ;
s2 . s i gna l ( ) ;
}}
¿Cual es el valor de n tras terminar los tres threads?
(a) 4
(b) 4 o 16
(c) 2 o 16
Si en el codigo anterior los semaforos s1 y s2 se inicializan a 1.
(a) No esta garantizada la exclusion mutua en el acceso a n(b) No esta garantizada la terminacion de las tres tareas
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 14 / 17
![Page 35: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/35.jpg)
Ejercicios: Examen 18/19 Mayo
Dada la siguiente implementacion de una solucion al problema de la exclusion mutua con
espera activa :s t a t i c v o l a t i l e boolean i nc qu iere = f a l s e ;s t a t i c v o l a t i l e boolean dec quiere = f a l s e ;s t a t i c v o l a t i l e i n t cont = 0 ;
c l a s s Incrementador extends Thread {publ i c void run ( ) {for ( i n t i = 0 ; i < N OPS ; i ++) {i nc qu iere = true ;while ( dec quiere ) {}cont ++; / / SCi nc qu iere = f a l s e ;
}}}
c l a s s Decrementador extends Thread {publ i c void run ( ) {for ( i n t i = 0 ; i < N OPS ; i ++) {dec quiere = true ;while ( i nc qu iere ) {}cont−−; / / SCdec quiere = f a l s e ;
}}}
Suponiendo que tenemos un proceso de tipo Incrementador y otro proceso Decrementador,se pidemarcar la afirmacion correcta.(a) El programa no garantiza la exclusion mutua en el acceso a la seccion crıtica (cont++ y
cont--)(b) El programa no garantiza la propiedad de ausencia de interbloqueo
(c) El programa no garantiza la ausencia de esperas innecesarias
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 15 / 17
![Page 36: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/36.jpg)
Ejercicio: Secuencias ordenadas de enteros
El recurso compartido OrdMezclamezcla dos secuencias ordenadas de numeros enteros paraformar una unica secuencia ordenada.
En este recurso interactuan tres procesos: dos productores que van pasando numeros de
sus secuencias de uno en uno y un consumidor que va extrayendo los numeros en orden
El recurso sera capaz de almacenar, como mucho, un dato de la secuencia que
llamaremos “izquierda” y un dato de la secuencia “derecha”
Cuando hay datos de ambas secuencias la operacion extraerMenor tomara el menor deambos y permitira que se anada un nuevo dato de la secuencia correspondiente
La operacion insertarIzda(d) inserta el dato d como parte de la secuencia izquierda ybloquea hasta que el hueco para el dato izquierdo esta disponible
La operacion insertarDcha es analoga por lo que no es necesario implementarla
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 16 / 17
![Page 37: Ejercicios de Especificación Recursos Compartidosbabel.ls.fi.upm.es/teaching/concurrencia/material/slides/groman/sesi… · Ejercicio:Losn´omadasquecantan C-TADMateriasPrimas OPERACIONES](https://reader033.fdocuments.ec/reader033/viewer/2022042417/5f3333b0edc1314e4658dc4c/html5/thumbnails/37.jpg)
Ejercicio: Secuencias Ordenadas de enteros
C-TAD OrdMezclaOPERACIONESACCION insertarIzda: Z[e]ACCION insertarDcha: Z[e]ACCION extraerMenor: Z[s]
SEMANTICADOMINIO:TIPO: OrdMezcla = 〈hayDato : Lado → B× dato : Lado → Z〉TIPO: Lado = Izda | DchaINICIAL: ∀ i ∈ Lado • ¬self .hayDato(i )CPRE: ¬self.hayDato(Izda)insertarIzda(d)
POST: self.hayDato = selfpre .hayDato ⊕ {Izda 7→ Cierto} ∧self.dato = selfpre .dato ⊕ {Izda 7→ d}
CPRE: self .hayDato(Izda) ∧ self .hayDato(Dcha)extraerMenor(min)
POST: (selfpre .dato(Izda) ≤ selfpre .dato(Dcha) ∧self.hayDato = selfpre .hayDato ⊕{Izda 7→ Falso} ∧ min = self pre .dato(Izda)) ∨(selfpre .dato(Dcha) ≤ selfpre .dato(Izda) ∧self.hayDato = selfpre .hayDato ⊕ {Dcha 7→ Falso} ∧ min = self pre .dato(Dcha))
Guillermo Roman (UPM) Especificacion Recursos Abril 2020 17 / 17