Você está na página 1de 39

Informtica UFRGS

Seo Crtica e Mutex

Notas de aula Cludio Geyer.

Programao concorrente (C. Geyer)

Seo Crtica 1

Informtica UFRGS

Smula

Seo Crtica
Smula conceitos requisitos implementao sem atomicidade implementao com requisito de alternncia implementao para dois processos por software implementao para n processos por hardware (test_and_set)

Programao concorrente (C. Geyer)

Seo Crtica 2

Informtica UFRGS

Bibliografia

Bibliografia
Andrews, G. Concurrent Programming - Principles and Practice. The Benjamin/Cummings, Redwood, 1991. Silberschatz, A. and Galvin, P. Operating Systems Concepts. (Fith edition), Reading, MA, Addison-Wesley, 1998. Tanenbaum, A.S. Modern Operating Systems. Englewood Clifss, NJ, Prentice-Hall, 1992.

Programao concorrente (C. Geyer)

Seo Crtica 3

Informtica UFRGS

Conceitos

Conceitos sobre seo crtica


definio do problema n (n > 1) processos podendo acessar concorrentemente um trecho de cdigo comum trecho de cdigo: denominado seo crtica instrues do cdigo acessam variveis compartilhadas

Programao concorrente (C. Geyer)

Seo Crtica 4

Informtica UFRGS

Conceitos

Conceitos sobre seo crtica


esquema do problema process p[i:1 to n]: { var X % compartilhada while true do { protocolo_de_entrada % seo_crtica % acesso em escrita a X X := ... protocolo_de_sada seo_no_crtica } }

Programao concorrente (C. Geyer)

Seo Crtica 5

Informtica UFRGS

Conceitos

Conceitos (cont.)
protocolo_de_entrada algoritmo que todo processo executa para entrar na seo crtica usualmente denominado mutexbegin protocolo_de_sada algoritmo que todo processo executa para sair da seo crtica usualmente denominado mutexend Objetivo principal dos protocolos Garantir excluso mtua na execuo da seo crtica

Programao concorrente (C. Geyer)

Seo Crtica 6

Informtica UFRGS

Conceitos

Conceitos (cont.)
requisitos do mutexbegin/end excluso mtua: somente um (1) processo na seo crtica progresso: se nenhum processo est na seo crtica, um outro poder entrar espera limitada (ou justa): aps um certo tempo de espera, todo processo consegue entrar na seo crtica tempo limitado pela quantidade de processos que concorrentemente tentam entrar na seo crtica

Programao concorrente (C. Geyer)

Seo Crtica 7

Informtica UFRGS

Conceitos

Conceitos (cont.)
requisitos do mutexbegin/end sem hipteses sobre quantidade e velocidades relativas dos processos sem deadlock: se dois (ou mais) processos querem entrar concorrentemente, um entra e os outros esperam

Programao concorrente (C. Geyer)

Seo Crtica 8

Informtica UFRGS

Implementaes

Implementaes
algumas implementaes no atendem todos os requisitos por exemplo, vlida somente para 2 processos somente por software: mais complexa e ineficiente uso de recurso de hardware (mais algum sw em geral): mais simples e eficiente

Programao concorrente (C. Geyer)

Seo Crtica 9

Informtica UFRGS

Implementao falsa

Implementao falsa
varivel ocupado compartilhada pelos processos boolean ocupado = false % cdigo do procedimento mutexbegin % fica em loop enquanto seo ocupada; % seno, torna-a ocupado mutexbegin { while ocupado do {}; ocupado = true; }; % cdigo do procedimento mutexend % torna seo no ocupada mutexend { ocupado = false; } % inicializado

Programao concorrente (C. Geyer)

Seo Crtica 10

Informtica UFRGS

Implementao falsa

Implementao falsa (cont.)


problema dois ou mais processos podem testar a varivel ocupado (no mutexbegin) ao mesmo tempo o teste retorna true para dois ou mais processos dois ou mais processos atribuem true a ocupado dois ou mais processos entram na seo crtica ao mesmo tempo sem excluso mtua causa: operaes com leitura e escrita sobre ocupado, por um processo, no so atmicas

Programao concorrente (C. Geyer)

Seo Crtica 11

Informtica UFRGS

Implementaao com alternncia

Implementao com alternncia para dois processos


3 variveis auxiliares int turno = 1 int meu_turno = 1, 2 % compartilhada % no compartilhada: 2 cpias % com valores diferentes int seu_turno = 2,1 % no compartilhada:2 cpias % com valores diferentes % meu_(seu)turno so constantes

Programao concorrente (C. Geyer)

Seo Crtica 12

Informtica UFRGS

Implementaao com alternncia

Implementao: alternncia para 2 processos (cont.)


% mutexbegin: espera (em loop) enquanto for a vez do outro mutexbegin { while turno == seu_turno do {}; } % mutexend: cede a vez ao outro mutexend { turno = seu_turno; }

Programao concorrente (C. Geyer)

Seo Crtica 13

Informtica UFRGS

Implementaao com alternncia

Implementao: alternncia para 2 processos (cont.)


Idia geral da soluo A varivel turno tem um valor distinto e bom para cada processo Processo 1: turno == 1 Processo 2: turno == 1 Em um momento, turno s pode ter um valor Notar que na 1a (tentativa) soluo, a var. ocupado tinha somente 1 valor bom para todos (2) os processos

Programao concorrente (C. Geyer)

Seo Crtica 14

Informtica UFRGS

Implementaao com alternncia

Implementao: alternncia para 2 processos (cont.)


problemas se um processo, aps us-la (sua vez), quiser us-la imediatamente ficar esperando pelo uso da SC pelo outro processo (uso alternado) se o outro demorar a usar, o primeiro esperar o mesmo tempo se o outro no mais usar a SC, o primeiro ficar bloqueado no mutexbegin

Programao concorrente (C. Geyer)

Seo Crtica 15

Informtica UFRGS

Implementao p/2 processos por sw

Implementao para dois processos por software


Idia geral Partir da soluo anterior, ie, usar a idia da var. turno 1 valor distinto para cada processo Resolver o problema da alternncia Ie, caso um processo no queira entrar mesmo sendo sua vez (turno), ele poder entrar Soluo: varivel adicional que indique interesse em entrar na SC

Programao concorrente (C. Geyer)

Seo Crtica 16

Informtica UFRGS

Implementao p/2 processos por sw

Implementao para dois processos por software


variveis int turno = 1 % compartilhada int quero[2] = false % compartilhada, mas acessos especficos int eu = 1, 2 % idem, constantes int outro = 2,1 % idem, constantes

Programao concorrente (C. Geyer)

Seo Crtica 17

Informtica UFRGS

Implementao p/2 processos por sw

Implementao para dois processos por software


% entra se outro no quer ou se meu turno % outro no quer: no est no mutexbegin (nem na SC) % meu turno: fui o primeiro a executar % turno = seu_turno em caso de % concorrncia no mutexbegin mutexbegin { quero[eu] = true; turno = outro; while (quero[outro] and (turno not = eu)) do {}; }; mutexend { quero[eu] = false; }
Programao concorrente (C. Geyer) Seo Crtica 18

Informtica UFRGS

Implementao p/2 processos por sw

Implementao: 2 processos por software (cont.)


verificao da excluso mtua a combinao de ceder a vez (turno = outro) e teste de vez prpria por cada processo: garante que somente um entra na SC em caso de concorrncia a varivel turno no pode ter 2 valores e cada um cede a vez ao outro o primeiro a ceder a vez ficaria bloqueado, mas isto no acontece porque o segundo passa a vez ao primeiro o ltimo a ceder a vez fica bloqueado no loop

Programao concorrente (C. Geyer)

Seo Crtica 19

Informtica UFRGS

Implementao p/2 processos por sw

Implementao: 2 processos por software (cont.)


verificao de no necessidade de alternncia o vetor quero[2] garante que se somente um quiser entrar na SC (teria cedido a vez), ele conseguir entrar porque o outro no quer quero[outro] == false

Programao concorrente (C. Geyer)

Seo Crtica 20

Informtica UFRGS

Implementao p/2 processos por sw

Implementao: 2 processos por software (cont.)


verificao de espera limitada ou escolha justa

Programao concorrente (C. Geyer)

Seo Crtica 21

Informtica UFRGS

Implementaes por test-and-set

Implementao por test_and_set


para n processos instruo test_and_set presente na maioria das cpus modernas ou uma variao que atende esse propsito atmica leitura e gravao de varivel (inteiro ou booleano) semntica modelo formato: tsl REG, FLAG REG: registrador FLAG: posio de memria semntica: REG := FLAG; FLAG := 1
Programao concorrente (C. Geyer) Seo Crtica 22

Informtica UFRGS

Implementaes por test-and-set

Implementao por test_and_set


idia o FLAG substitue a varivel ocupado da 1a soluo (falsa) ocupado poder ser lido e atualizado de forma atmica FLAG := 0; % inicializado em FALSE mutexbegin { % mutexbegin uma procedure tsl REG, FLAG; cmp REG, 0; % se REG = 0 ento liga bit de igual; % seno desliga jnz mutexbegin; % jump a mutexbegin se bit desligado % ou se REG = FLAG = 1 (TRUE) ret; % retorna };
Programao concorrente (C. Geyer) Seo Crtica 23

Informtica UFRGS

Implementaes por test-and-set

Implementao por test_and_set (cont.)


mutexend { FLAG := 0; };

Programao concorrente (C. Geyer)

Seo Crtica 24

Informtica UFRGS

Implementaes por test-and-set

Implementao por test_and_set


Exerccio verifique (prove) que a excluso mtua garantida caso 2 (ou mais) processos executem ao mesmo tempo o mutexbegin

Programao concorrente (C. Geyer)

Seo Crtica 25

Informtica UFRGS

Implementaes por test-and-set

Implementao por test_and_set (cont.)


observaes FLAG: inicializado em 0; se dois ou mais processos executam test_and_set (em mutexbegin) ao mesmo tempo como test_and_set atmica, o primeiro processo atribuir 1 a FLAG esse processo passar pelo mutexbegin todos os outros (at mutexend) test_and_set atribuiro 1 a REG esses processos ficaro em loop no mutexbegin processos bloqueados no mutexbegin: em espera ativa (busy waiting) consomem cpu no loop, sem necessidade
Programao concorrente (C. Geyer) Seo Crtica 26

Informtica UFRGS

Implementaes por test-and-set

Implementao por test_and_set (cont.)


observaes (cont.) processos com prioridades diferentes o de alta: em loop ativo no mutexbegin o de baixa: bloqueado (pelo SO) dentro da seo crtica resulta em bloqueio eterno desses processos

Programao concorrente (C. Geyer)

Seo Crtica 27

Informtica UFRGS

Implementaes por test-and-set

Implementao por test_and_set (cont.)


espera no justa havendo vrios processos em loop no mutexbegin (um outro est na seo crtica) quando o outro executar mutexend (FLAG := 0), o primeiro que ganhar a cpu e voltar a executar o test_and_set passar pelo mutexbegin o primeiro a ganhar a cpu uma deciso do escalonador de processos (SO) algum processo poder ficar em espera indefinida

Programao concorrente (C. Geyer)

Seo Crtica 28

Informtica UFRGS

Implementao por desabilitao

Implementao por desabilitao das interrupes


interrupes de processos, inclusive por tempo, podem ser desabilitadas idia mutexbegin processo est com a cpu desabilita as interrupes garante excluso mtua na seo crtica mutexend habilita novamente as interrupes

Programao concorrente (C. Geyer)

Seo Crtica 29

Informtica UFRGS

Implementao por desabilitao

Implementao por desabilitao das interrupes


observaes garante espera justa os processos no fazem loop se o escalonador garante que todo processo em espera avanar (receber cpu quando das habilitaes) avanar at poder desabilitar para si permite n processos

Programao concorrente (C. Geyer)

Seo Crtica 30

Informtica UFRGS

Implementao por desabilitao

Implementao por desabilitao das interrupes


observaes exige uso muito criterioso se programador usurio esquecer de usar o mutexend, nenhum outro processo poder executar at que ... em multiprocessadores normalmente a desabilitao s desabilita para uma cpu outros processos poderiam executar em outras cpus (sem excluso mtua)

Programao concorrente (C. Geyer)

Seo Crtica 31

Informtica UFRGS

Implementao por desabilitao

Implementao por desabilitao das interrupes (cont.)


observes (cont.) normalmente a atualizao do relgio lgico (hh, mm, ss) realizada por interrupo do relgio fsico (clock) para no prejudicar a atualizao do relgio lgico, a seo crtica no pode ser muito longa

Programao concorrente (C. Geyer)

Seo Crtica 32

Informtica UFRGS

Observaes Gerais

Observaes gerais
uso (funes) limitado: somente excluso mtua no resolve o problema de sincronizao de condio (avisos) mecanismo de baixo nvel uso explcito normalmente implementado por chamada de biblioteca sem verificao pelo compilador

Programao concorrente (C. Geyer)

Seo Crtica 33

Informtica UFRGS

Observaes Gerais

Observaes gerais
em caso de uso errado pelo programador por exemplo mutexbegin sem mutexend: todo processo fica bloqueado no mutexbegin sem mutexbegin: dois ou mais processos na seo crtica erros de execuo de difcil deteco em casos de programas mais complexos diversos processos, sees crticas, mutexs, ...

Programao concorrente (C. Geyer)

Seo Crtica 34

Informtica UFRGS

Reviso

Reviso
o que uma seo crtica? para que problema de sincronizao servem os mutexs? que requisitos deve atender uma boa implementao de mutex? primeira implementao de mutex (com varivel ocupado) que requisito no atende? porque? segunda implementao de mutex (com turno) que requisito no atende? porque?
Programao concorrente (C. Geyer) Seo Crtica 35

Informtica UFRGS

Reviso

Reviso
terceira implementao de mutex (com turno e vetor de quero) qual requisito no atende? porque? porque resolve problema das solues anteriores?

Programao concorrente (C. Geyer)

Seo Crtica 36

Informtica UFRGS

Reviso

Reviso
Implementao com instruo especial de hw Qual a semntica de test-and-set? Porque til na implementao de mutex? Qual modelo (entre os 3 anteriores) de implementao foi usado com test-and-set? Atende quantos processos? Exige alternncia? justa? (sem espera indefinida)

Programao concorrente (C. Geyer)

Seo Crtica 37

Informtica UFRGS

Reviso

Reviso
Implementao sem interrupes Como garante excluso mtua? Para quantos processos? justa? Algum requisito adicional no uso? Limitaes do mutex (em geral)?

Programao concorrente (C. Geyer)

Seo Crtica 38

This document was created with Win2PDF available at http://www.win2pdf.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only. This page will not be added after purchasing Win2PDF.

Você também pode gostar