• Nenhum resultado encontrado

Os processos concorrentes necessitam muitas vezes de trocar dados entre si.uma das formas

N/A
N/A
Protected

Academic year: 2021

Share "Os processos concorrentes necessitam muitas vezes de trocar dados entre si.uma das formas"

Copied!
8
0
0

Texto

(1)

1

Conjunto de protocolos usados para manter a integridade do sistema e/ou controlar o acesso a

(2)

3

programador de forma a tirar partido do multiprocessamento.

• controlar o acesso a recursos partilhados

Exemplo

Considerem-se dois processos

concorrentes em que um faz a leitura

de um teclado e outro que envia

O Teclado cada vez que recebe um

caracter incrementa uma variavel

n=n+1;

caracter decrementa essa variavel

n=n-1

isto seria traduzido por

LOAD

R,n

INC

R

STORE n,R

e

LOAD

R,n

DEC

R

STORE n,R

(3)

5

uma

.

Uma

normalmente protege dados partilhados. Quando um processo

periodo de tempo, utiliza um recurso partilhado impedindo o

acesso qualquer outro processo .

recurso

dos processos em conflito

processos acederem ao recurso partilhado.

(4)

7

program mutex1;

type who = (proc1,proc2); var turn: who;

process p1;

begin

while true do begin

while turn = proc2 do {keeptesting}; critical_section; turn := proc2; other_p1_processing; end; end; process p2; begin

while true do begin

while turn = proc1 do {keeptesting}; critical_section; turn := proc1; other_p2_processing; end; end; begin turn:= …; initite p1,p2; end;

Exemplo 1

sim. Mas…. • restantes…

•Se um dos processos for mais lento na parte

other_??_processing

•Se um dos processos termina ou “estampa-se”

em tempo finito.”

program mutex2;

var p1using, p2using: boolean; process p1;

begin

while true do begin

while p2using do {keeptesting}; p1using :=true; critical_section; p1using:=false; other_p1_processing; end; end; process p2; begin

while true do begin

while p1using do {keeptesting}; p2using :=true; critical_section; p2using:=false; other_p2_processing; end; end; begin p1using:=false; p2using:=false; initiate p1,p2; program mutex3; var p1using,p2using:boolean; process p1; begin

while true do begin p1using:=true;

while p2using do {keeptesting}; critical_section; p1using:=false; end; end; process p2; begin

while true do begin p2using:=true;

while p1using do {keeptesting}; critical_section; p2using:=false; end; end; begin p1using:=false; p2using:=false; initate p1,p2;

Exemplo 2

Exemplo 3

(5)

9

#define FALSE 0 #define TRUE 1 #define N 2 int turn; int interested[N];

enter_region( int process) {

int other; other = 1 - process; interested[process] = TRUE; turn = process;

while (turn == process && interested [other] == TRUE); }

leave_region(int process){

interested[process]=FALSE; }

ser acedida e manipuladas por meio das primitivas SIGNAL e WAIT.

wait(s):

while (s==0) ;

s= s-1;

signal:

s=s+1;

(6)

11

/* smutex*/

semaphore mutex; /* binario */ p1(){ while (1) { wait(mutex); critical_section; signal(mutex); other_processing(); } } p2(){ while (1) { wait(mutex); critical_section; signal(mutex); other_processing(); } } p3(){ while (1) { wait(mutex); critical_section; signal(mutex); other_processing(); } } main(){ mutex = 1; /* livre */ inicia_processos(p1,p2,p3); }

utilizador.

contenciosos, o “nome” ou particularidades de cada um deles.

•Podem ser fornecidos como ferramente pelo S.O. sob a forma

se chamadas ao sistema tais como : CREATE_SEMAPHORE,

ATTACH_TO_SEMAPHORE, SIGNAL, WAIT,

(7)

13

Isto pode dar origem a “live locks” e processos “starved”.

tempo finito”.

(strong implementation of semaphores)

Isto vem contrariar a filosofia dos sistemas multiprogramados.

processos que usam esse recurso especifico.

(8)

15

Abordagens

1- Bloqueia tudo o que pode vir a interferir

2- Actua sobre a variavel

3- Desbloqueia

Controlo optimista

base nesse valor.

2- Compara o valor da variavel com o valor utilizado na

DI

EI

Resultado: Processo de prioridade baixa pode bloquear outros de prioridade elevada

DI

HALT

Alternativa

Referências

Documentos relacionados

Não é recomendado true e false são variáveis

De fato, uma onda revolucionária sacudia o planeta inteiro, mas desenvolvia- se segundo onda revolucionária sacudia o planeta inteiro, mas desenvolvia- se

(especificidade); npv – negative preditive value; fpr – false positive rate; fnr – false negative rate; frr – false rejection rate; fdr - false discovery rate; plr –

Sunny Cool Normal False Yes Rainy Mild Normal False Yes Sunny Mild Normal True Yes Overcast Mild High True Yes Overcast Hot Normal False Yes.. Rainy Mild High

Além disso, contém três vértices especiais, true, false, red, e cinco novos vértices por cláusula de φ.... Além disso, contém três vértices especiais, true, false, red, e

As expressões resultantes são do tipo boolean, gerando true ou false como resultado.

A estrutura do roteiro em um produto hipermidiático exige a percepção de mais dois mo- mentos além da descrição das imagens e do áudio, especificamente: o design de interface

Quais duas letras são colocadas no final de adjetivos curtos (com apenas 1