Escolar Documentos
Profissional Documentos
Cultura Documentos
19 de agosto de 2010
Sincronizao de Processos ca
19 de agosto de 2010
1 / 19
Agenda
Sincronizao de Processos ca
19 de agosto de 2010
2 / 19
Sincronizao de Processos ca
19 de agosto de 2010
3 / 19
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
Sincronizao de Processos ca
19 de agosto de 2010
4 / 19
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.
Sincronizao de Processos ca
19 de agosto de 2010
5 / 19
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
Sincronizao de Processos ca
19 de agosto de 2010
6 / 19
Sincronizao de Processos ca
19 de agosto de 2010
7 / 19
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
Sincronizao de Processos ca
19 de agosto de 2010
8 / 19
4 Process A 5 6 7 Process B
out = 4
in = 7
Sincronizao de Processos ca
19 de agosto de 2010
9 / 19
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
Sincronizao de Processos ca
19 de agosto de 2010
10 / 19
Process A
T4
Sincronizao de Processos ca
19 de agosto de 2010
11 / 19
program mutualexclusion; var linesentered: integer; procedure processone; while true do begin getnextlinefromterminal; entermutualexclusion; linesentered := linesentered + 1; exitmutualexclusion; processtheline; end;
Sincronizao de Processos ca
19 de agosto de 2010
12 / 19
Sincronizao de Processos ca
19 de agosto de 2010
14 / 19
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
Sincronizao de Processos ca
19 de agosto de 2010
15 / 19
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.
Sincronizao de Processos ca
19 de agosto de 2010
16 / 19
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
Sincronizao de Processos ca
19 de agosto de 2010
17 / 19
#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 */
Sincronizao de Processos ca
19 de agosto de 2010
18 / 19
Intruo TST ca
Caso o computador possua apenas 1 processador central, pode-se inibir interrupes na entrada da RC e ativa-las na sa co da.
Sincronizao de Processos ca
19 de agosto de 2010
19 / 19