Você está na página 1de 19

Sistemas Operacionais Introduo a Sincronizao de Processos ca ca

Francisco Jos da Silva e Silva e


Laboratrio de Sistemas Distribu o dos (LSD) Departamento de Informtica / UFMA a http://www.lsd.ufma.br

19 de agosto de 2010

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

1 / 19

Agenda

Excluso Mtua e Sincronizao Condicional a u ca

Implementao das Primitivas de Excluso Mtua ca a u

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

2 / 19

Excluso Mtua e Sincronizao Condicional a u ca

Excluso Mtua e Sincronizao a u ca Condicional

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

3 / 19

Excluso Mtua e Sincronizao Condicional a u ca

Programao Concorrente ca

Um programa concorrente especica dois ou mais processos que cooperam na realizao de uma determinada tarefa; ca Cada processo um programa seqencial que executa uma seqncia e u ue de comandos; Os processos cooperam se comunicando; eles se comunicam usando variveis compartilhadas ou atravs de envio de mensagens; a e Quando variveis compartilhadas so utilizadas, um processo escreve a a em uma varivel que lida por outro; a e Quando troca de mensagens so utilizadas, um processo envia uma a mensagem que recebida por outro processo. e

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

4 / 19

Excluso Mtua e Sincronizao Condicional a u ca

Exemplos do Uso de Programao Concorrente ca

SOs: com o advento das controladoras independentes de dispositivos nos anos 60, tornou-se natural a organizao do SO como um ca programa concorrente, com processos gerenciando dispositivos e a execuo de tarefas de usurios; ca a Sistemas de janelas em computadores pessoais ou estaes de co trabalho; Processamento de transaes em SGBDs multiusurios; co a Computao cient ca ca que manipula grandes vetores de dados.

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

5 / 19

Excluso Mtua e Sincronizao Condicional a u ca

Concorrncia Paralelismo e

Programao concorrente o nome dado as notaes e tcnicas de ca e co e programao para a expresso de paralelismo potencial e a resoluo ca a ca dos problemas resultantes da execuo de processos concorrentes; ca A implementao de paralelismo um tpico que independente da ca e o e programao concorrente. ca

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

6 / 19

Excluso Mtua e Sincronizao Condicional a u ca

Sincronizao de Processos Concorrentes ca


Excluso mtua: diz respeito a garantia de que sees cr a u co ticas de comandos que acessam objetos compartilhados no sejam executadas a ao mesmo tempo; Sincronizao condicional: relacionada a garantia de que um ca e processo espera (delay) se for necessrio at que uma dada condio a e ca seja verdadeira. Exemplo: Produtores e Consumidores:
A excluso mtua usada para garantir que um produtor e um a u e consumidor no acessem o buer ao mesmo tempo. a Sincronizao condicional usada para garantir que uma mensagem ca e no lida pelo processo consumidor antes que tenha sido escrita pelo a e produtor e que tambm no seja sobreposta antes de ser lida pelo e a processo consumidor.

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

7 / 19

Excluso Mtua e Sincronizao Condicional a u ca

Problema de Excluso Mtua: Condioes de Disputa a u c


Suponha que desejamos saber quantas linhas so entradas pelos usurios e a a que existe um processo do SO para monitorar cada terminal. Cada processo ter o seguinte cdigo: a o
LOAD ADD STORE LINHASENTRADAS 1 LINHASENTRADAS

Esta comunicao envolve o acesso a variveis comuns; ca a Este acesso pode gerar resultados imprevis veis ! Ex: O primeiro processo executa o LOAD e ADD quando e interrompido. O prximo processo realiza todas as operaes e o o co controle devolvido ao primeiro, o que provocar um erro ! e a

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

8 / 19

Excluso Mtua e Sincronizao Condicional a u ca

Problema de Excluso Mtua: Condioes de Disputa a u c


Spooler directory

4 Process A 5 6 7 Process B

abc prog.c prog.n

out = 4

in = 7

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

9 / 19

Excluso Mtua e Sincronizao Condicional a u ca

Soluo do Problema de Excluso Mtua: Propriedades ca a u Desejveis a

Excluso Mtua: no mximo um processo por vez pode estar a u a executando sua RC; Ausncia de bloqueio perptuo: se dois ou mais processos esto e e a tentando entrar em suas RCs, pelo menos um deve ser bem sucedido; Ausncia de espera desnecessria: se um processo est tentando e a a entrar em sua RC e outros processos esto executando suas sees a co no cr a ticas ou tiverem terminado, o primeiro processo no a e impedido (postergado) de entrar na RC; Entrada eventual: um processo que estiver tentando entrar em sua RC eventualmente ser bem sucedido. a

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

10 / 19

Excluso Mtua e Sincronizao Condicional a u ca

Excluso Mtua Usando Regies Cr a u o ticas

A enters critical region

A leaves critical region

Process A

B attempts to enter critical region Process B B blocked T1 T2 Time T3

B enters critical region

B leaves critical region

T4

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

11 / 19

Excluso Mtua e Sincronizao Condicional a u ca

Primitivas de Excluso Mtua a u

program mutualexclusion; var linesentered: integer; procedure processone; while true do begin getnextlinefromterminal; entermutualexclusion; linesentered := linesentered + 1; exitmutualexclusion; processtheline; end;

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

12 / 19

Excluso Mtua e Sincronizao Condicional a u ca

Primitivas de Excluso Mtua a u


procedure processtwo; while true do begin getnextlinefromterminal; entermutualexclusion; linesentered := linesentered + 1; exitmutualexclusion; processtheline; end; begin linesentered := 0; parbegin processone; processtwo; parend end.
Francisco Silva (UFMA/LSD) Sincronizao de Processos ca 19 de agosto de 2010 13 / 19

Implementao das Primitivas de Excluso Mtua ca a u

Implementao das Primitivas de ca Excluso Mtua a u Soluoes com Espera Ociosa c

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

14 / 19

Implementao das Primitivas de Excluso Mtua ca a u

Desabilitando Interrupoes c

Cada processo desabilitaria as interrupes antes de entrar na regio co a cr tica e as reabilitaria imediatamente aps sair da mesma; o No prudente dar aos processos dos usurios este poder: o processo a e a pode eventualmente nunca religar as interrupes; co Em sistemas multiprocessados desabilitar as interrupes afetar co a apenas a UCP que executar a instruo disable; ca Apesar de no ser conveniente aos processos dos usurios, as vezes a a convm ao prprio ncleo desabilitar interrupes. e o u co

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

15 / 19

Implementao das Primitivas de Excluso Mtua ca a u

Varivel de Impedimento (lock) a

Idia bsica: usar uma varivel x como chave para o acesso ` RC: e a a a
x = 0 indica que a RC est em uso. a x = 1 indica que a RC est livre. a

Uma varivel de impedimento que usa espera ociosa chamada de a e spin lock.
lao LDA x c BZ lao c CLR x ;carrega AC c/ valor de x ;se zero volta ao teste ;zera x, entra na R.C.

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

16 / 19

Implementao das Primitivas de Excluso Mtua ca a u

Alternncia Obrigatria a o

while (TRUE) { while (turn != 0) /* loop */ ; critical _region( ); turn = 1; noncritical_region( ); } (a)

while (TRUE) { while (turn != 1) /* loop */ ; critical _region( ); turn = 0; noncritical_region( ); } (b)

Figura: (a) Processo 0. (b) Processo 1. Esta soluo viola a ausncia de espera ca e desnecessria. a

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

17 / 19

Implementao das Primitivas de Excluso Mtua ca a u

Soluo de Peterson (1981) ca

#dene FALSE 0 #dene TRUE 1 #dene N 2 int turn; int interested[N]; void enter _region(int process); { int other;

/* number of processes */ /* whose turn is it? */ /* all values initially 0 (FALSE) */ /* process is 0 or 1 */ /* number of the other process */

other = 1 process; /* the opposite of process */ interested[process] = TRUE; /* show that you are interested */ turn = process; /* set ag */ while (turn == process && interested[other] == TRUE) /* null statement */ ; /* process: who is leaving */ /* indicate departure from critical region */

void leave _region(int process) { interested[process] = FALSE; }

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

18 / 19

Implementao das Primitivas de Excluso Mtua ca a u

Intruo TST ca

Implementar no hardware a instruo TST (Test and Set): ca


v := x x := 0

Caso o computador possua apenas 1 processador central, pode-se inibir interrupes na entrada da RC e ativa-las na sa co da.

Francisco Silva (UFMA/LSD)

Sincronizao de Processos ca

19 de agosto de 2010

19 / 19

Você também pode gostar