A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Finite State Process 1° Exercício Comentários sobre a primeira prática (para os monitores): Inicialmente expliquem os três slides seguintes, após isto.

Apresentações semelhantes


Apresentação em tema: "Finite State Process 1° Exercício Comentários sobre a primeira prática (para os monitores): Inicialmente expliquem os três slides seguintes, após isto."— Transcrição da apresentação:

1 Finite State Process 1° Exercício Comentários sobre a primeira prática (para os monitores): Inicialmente expliquem os três slides seguintes, após isto descrevam o Problema da região crítica e peçam para que apresentem uma solução.

2 – Semáforos - Semáforos são usados para comunicação interprocessos em Sistemas Operacionais. Um semáforo s é uma variável inteira não negativa. down(s): if s >0 then decrement s else block execution of the calling process up(s): if processes blocked on s then awaken one of them else increment s As únicas operações permitidas sobre s são up(s) e down(s).

3 Modelando Semáforos const Max = 3 range Int = 0..Max SEMAPHORE(N=0) = SEMA[N], SEMA[v:Int] = (up->SEMA[v+1] |when(v>0) down->SEMA[v- 1] ), SEMA[Max+1] = ERROR. Para possibilitar a análise, modelamos os semáforos considerando um limite finito para o semáforo. Se este limite for ultrapassado gera-se um ERROR. N é o valor inicial.

4 Modelando Semáforos A ação down é aceita apenas quando os valores v of do semáforo for maior que 0. A ação up não é guardada. Trace para violação: up  up  up  up

5 Região Crítica Valor atual do semáforo thread 1 está executando a região crítica. thread 2 está bloqueado esperando. thread 3 está executando uma região não-crítica.

6 Região Crítica LOOP = (mutex.down->critical->mutex.up- >LOOP). ||SEMADEMO = (p[1..3]:LOOP ||{p[1..3]}::mutex:SEMAPHORE(1)). Três processos p[1..3] usam um semáforos mutex para garantir exclusão mútua no accesso (action critical ) a um recurso. Para obter-se exclusão mútua, o valor inicial do semáforo deve ser 1. Por quê? O estado ERROR é alcançado? É suficiente um semáforo binário (i.e. Max=1 ) ?

7 Região Crítica

8 Finite State Process 2° Exercício - Programas Multi-threaded - Comentários sobre a segunda prática (para os monitores): Descrevam o problema e como interpretar as entradas e saídas e peçam Para que apresentem uma especificação.

9 Programas Multi-threaded em Java Programas Multi-threaded em Java Concorrência em Java ocorre quando dois oum mais threads estão sendo executados. ThreadDemo tem dois threads que rotacionam os displays.

10 Modelo ThreadDemo Interprete run, pause, interrupt como entradas, rotate como saída. ROTATOR = PAUSED, PAUSED = (run->RUN | pause->PAUSED |interrupt->STOP), RUN = (pause->PAUSED |{run,rotate}->RUN |interrupt->STOP). ||THREAD_DEMO = (a:ROTATOR || b:ROTATOR) /{stop/{a,b}.interrupt}.


Carregar ppt "Finite State Process 1° Exercício Comentários sobre a primeira prática (para os monitores): Inicialmente expliquem os três slides seguintes, após isto."

Apresentações semelhantes


Anúncios Google