arquitetura de sistemas operativos - universidade …hpcosta/so/somod5baula4.2.pdftgpsi 09/12...
TRANSCRIPT
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Arquitetura de Sistemas Operativos
Hernani Costa
Sistemas Operativos 2011/2012
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
1 Mecanismos de SincronismoRequisitos de uma Seccao CrıticaExclusao Mutua Algorıtmica
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Requisitos de uma Seccao Crıtica
Antes de analisarmos as varias solucoes para assegurar que umbloco de codigo seja executado corretamente como seccaocrıtica, e importante compreender quais os requisitos quedevem ser cumpridos.
Estes requisitos resultam da analise teorica cuidada e daexperiencia acumulada no seu desenvolvimento ao longo dosanos.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Requisitos de uma Seccao Crıtica
Os requisitos sao uteis porque nos permitem tambem avaliarcada uma das solucoes tendo em conta o seu cumprimento(ou nao):
Exclusao mutua (deve ser assegurada) - se uma tarefa estaa executar a seccao crıtica, entao nenhuma outra a pode estara executar;Progresso (deve ser assegurado) - se nenhumatarefa esta a executar a seccao crıtica e existem outras que apretendem executar, entao apenas estas devem participar noprotocolo de decisao que seleciona uma delas – e esta decisaonao devera prolongar-se indefinidamente, i.e., a exclusaomutua deve ser resolvida entre as tarefas que estao emcompeticao e nao afetar as restantes.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Requisitos de uma Seccao Crıtica
Mıngua ou starvation (nao deve ocorrer) - se uma tarefapretende executar a seccao crıtica, entao alguma vez no futuroira conseguir o acesso a seccao crıtica e nao ficara para sempreimpedida de o fazer;
Eficiencia (deve ser assegurada) - na ausencia decontencao, se uma unica tarefa quiser entrar na seccao crıtica,consegui-lo-a de uma forma eficiente, sem operacoesadicionais.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Requisitos de uma Seccao Crıtica
O primeiro requisito e obvio e resulta do que se pretendeassegurar, a exclusao mutua na execucao de uma seccaocrıtica.
Tal como vimos anteriormente, a execucao de um bloco decodigo como uma seccao crıtica implica que as instrucoes emcausa nao possam ser executadas por varias tarefasintercaladamente.
O segundo requisito, tal como a sua designacao indica,garante que pelo menos uma tarefa, das que pretendemexecutar a seccao crıtica, vai de facto conseguir faze-lo,depois de executar um protocolo de decisao cuja duracaotemporal e limitada.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Requisitos de uma Seccao Crıtica
A situacao de mıngua ocorre quando existem varias tarefascontinuamente a tentar aceder a seccao crıtica, e uma delasnunca consegue ter acesso, sendo sempre ultrapassada pelasrestantes.
O ultimo requisito zela para que, nos instantes em que apenasuma tarefa pretende executar a seccao crıtica, o protocolo dedecisao seja rapido (uma vez que e obvio qual a tarefa que iraexecutar a seccao crıtica).
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Requisitos de uma Seccao Crıtica
Para assegurar que um bloco de codigo e executado comouma seccao crıtica, respeitando estes requisitos, ha tres tiposde solucoes possıveis que diferem consideravelmente nosrecursos que implicam, no desempenho e na sua facilidade deutilizacao no modelo computacional:
algorıtmicas: exclusivamente baseadas em programacao;
baseadas em mecanismos oferecidos pelo hardware;
objetos do sistema operativo usando funcionalidades do nucleoem articulacao com mecanismos oferecidos pelo hardware.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Requisitos de uma Seccao Crıtica
Avaliacao - Trabalho Teorico-Pratico 10
Escreva um pequeno texto onde resume os slides anteriores.
O texto devera: ser elaborado em grupo; enviado por email aoprofessor no final da aula; e devera conter entre 50 a 150palavras.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
A primeira impressao que um programador tera quandoconfrontado com o problema da seccao crıtica e que deve serpossıvel (e facil) conceber um algoritmo que resolve oproblema – como veremos, isso nao e verdade!
Assim, e importante perceber os erros mais comuns quesurgem quando, de uma forma menos cuidada, se procuraencontrar uma solucao para o problema da seccao crıtica.
A solucao mais simples consiste na utilizacao de um trincoque condicione o acesso aos dados partilhados.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Este mecanismo funciona do seguinte modo:
o trinco e fechado quando se comeca a aceder aos dados elibertado no final;qualquer tarefa que pretenda aceder aos dados partilhadosdeve testar,
em primeiro lugar, o estado do trincoe apenas prosseguir se o encontrar aberto - caso o valor dotrinco indicar que este esta fechado, a tarefa fica em ciclo atestar o seu valor ate que este indique que esta aberto.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
As funcoes do objeto trinco sao Fechar e Abrir (lock eunlock, respetivamente).
A utilizacao destas funcoes seria a que e mostrada no codigoseguinte para o problema do alocador de memoria – como sepode ver, o codigo que deve ser executado em exclusao mutuaesta enquadrado pelas funcoes Fechar e Abrir.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Alocador de Memoria em Exclusao Mutua
#define MAX PILHA 100
char* pilha[MAX PILHA];
int topo = MAX PILHA - 1;
char* PedeMem() {Fechar();
ptr = pilha[topo];
topo −−;
Abrir();
return ptr;
}void DevolveMem(char* ptr) {
Fechar();
topo ++;
pilha[topo] = ptr;
Abrir();
}
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
A solucao trivial para a realizacao do objeto trinco consistenuma variavel booleana (ou flag) cujo valor indica se o trincoesta fechado ou aberto.
Consideremos entao as funcoes Fechar e Abrir que seapresentam no codigo seguinte e que devem enquadrar aregiao de codigo que se pretende executar em exclusao mutua.
Para simplificar, e sem perda de generalidade, vamos supor,neste e nos exemplos seguintes, que se trata apenas de duastarefas, T1 e T2, que pretendem executar uma dada seccaocrıtica.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Primeira tentativa de solucao algorıtmica para o problemada seccao critica
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Obviamente, a variavel trinco e partilhada pelas tarefas T1 eT2.
Assumindo que a tarefa T2 esta a executar a seccao crıtica eque a tarefa T1 pretende tambem executa-la, esta ira invocara funcao Fechar.
Enquanto o trinco estiver fechado (valor FECHADO) a tarefaT1 fica a executar a instrucao while (trinco == FECHADO).
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
E importante notar que em cada iteracao do ciclo while,nenhuma instrucao e executada (ter um ciclo sobre um blocode instrucoes vazio e uma construcao perfeitamente valida emC).
Com efeito, trata-se de um ciclo vazio em que se pretendeapenas que a tarefa T1 espere que o trinco abra (na realidadegastando inutilmente ciclos de CPU, mas vamos deixar esteproblema para depois).
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Quando a tarefa T2 terminar a execucao da seccao crıtica,invocando a funcao Abrir, atribuindo assim o valor ABERTOa variavel trinco, a tarefa T1 saira do ciclo while e executaraa instrucao seguinte que fecha de novo o trinco.
E fundamental perceber que esta solucao para uma seccaocrıtica esta errada pois nao garante o primeiro requisito - aexclusao mutua - pela mesma razao do exemplo inicial.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Com efeito, assumindo uma intercalacao na execucao dastarefas T1 e T2, podemos facilmente constatar que e possıvelambas as tarefas executarem ao mesmo tempo a seccaocrıtica.
De facto, quando a tarefa T1 executa a funcao Fechar,podemos observar que o teste da variavel trinco (efectuadono ciclo while) e a atribuicao do valor FECHADO (feito nainstrucao seguinte) nao sao feitos de forma atomica.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Consequentemente, pode ocorrer que a tarefa T1 perca oprocessador imediatamente apos ter saıdo do ciclo while eantes de executar a instrucao trinco = FECHADO.
Se em seguida a tarefa T2 executar a funcao Fechar, estapodera entrar na seccao crıtica (pois a variavel trinco aindaesta com o valor ABERTO).
Portanto, esta solucao tem o seguinte problema:
O primeiro requisito - a exclusao mutua - nao e cumprido.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Podemos entao pensar numa evolucao desta solucao que, emvez de um trinco, utiliza dois trincos para que as tarefas naoestejam a partilhar uma variavel.
Consequentemente. e necessario um par de funcoes analogasas Abrir e Fechar, de modo a que cada um atue sobre um dostrincos.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
A ideia subjacente a esta solucao e a seguinte: os trincostrinco t1 e trinco t2 permitem a entrada apenas de uma dastarefas na seccao crıtica, ficando a outra em ciclo ate que otrinco respetivo lhe permita prosseguir.
Assim, T1 espera enquanto trinco t2 estiver FECHADO, eT2 espera enquanto trinco t1 estiver FECHADO.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Segunda tentativa de solucao algorıtmica para o problemada seccao critica
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Na realidade, esta solucao apresentada na figura anteriortambem e incorreta.
Com efeito, considerando a tarefa T1, podemos observar queo teste do trinco trinco t2 (efetuado no ciclo while) e aatribuicao do valor FECHADO ao trinco trinco t1 nao e feitode forma atomica.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Consequentemente, tal como na solucao anterior, podeocorrer que a tarefa T1 perca o processador imediatamenteapos ter saıdo do ciclo e antes de executar a atribuicaotrinco t1 = FECHADO, e a tarefa T2 executar a funcaot2 fechar quando obtem o processador.
Neste caso, tal como no anterior, a tarefa T2 entrara naseccao crıtica em simultaneo com T1.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Portanto, esta solucao tem o mesmo problema da anterior, ouseja:
O primeiro requisito - a exclusao mutua - nao e cumprido.
Note-se que se optarmos por alterar a ordem de execucao dasinstrucoes em causa (teste e atribuicao), tal como se ilustrana figura seguinte, a solucao passa a assegurar a exclusaomutua pois a primeira instrucao a ser executada e sempre ofecho do trinco.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Terceira tentativa de solucao algorıtmica para o problemada seccao critica
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Contudo, pode conduzir a uma situacao em que as tarefasficam ambas bloqueadas.
Com efeito, basta que T1 execute a instrucaotrinco t1=FECHADO e perca o processador logo de seguida;quando T2 se executar, esta ira ficar em ciclo na instrucaowhile (trinco t1== FECHADO).
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
O mesmo sucedera a tarefa T1 quando se voltar a executarpois ficara em ciclo na instrucao while(trinco t2==FECHADO).
Estamos assim perante uma situacao na qual a decisao deentrada na seccao crıtica se prolonga indefinidamente.
Esta situacao denomina-se interblocagem.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Portanto, esta solucao tem o seguinte problema:
O segundo requisito - progresso - nao e cumprido.
Uma vez que a solucao antes apresentada nao resolve oproblema da seccao crıtica de forma satisfatoria, uma outrasolucao e apresentada na figura seguinte.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Quarta tentativa de solucao algorıtmica para o problemada seccao critica
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
O algoritmo baseia-se na existencia de um trinco (trinco vez)cujo valor varia de forma a permitir que as tarefas executem aseccao crıtica alternadamente, uma apos a outra; o valoridentifica a tarefa que pode executar a seccao crıtica.
O racional desta solucao e evitar as duas operacoes de teste eatribuicao que, por nao serem atomicas, permitem aintercalacao das tarefas.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Apesar da exclusao mutua ser assegurada e de nao introduzirinterblocagem, a solucao enferma de um defeito obvio: astarefas apenas poderao aceder alternadamente a seccaocrıtica.
Se a tarefa T1 tiver necessidade de aceder repetidamente aosdados protegidos pela seccao crıtica, deve esperar sempre porum acesso da tarefa T2.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Assim, devido a necessidade de alternancia, caso a tarefa T2se bloqueie fora da seccao crıtica, T1 fica impedida deexecutar a seccao crıtica no futuro, e vice-versa.
Adicionalmente, na ausencia de contencao, se a tarefa T1quiser entrar na seccao crıtica, nao o conseguira fazer de umaforma eficiente, pois tera de esperar que T2 execute a seccaocrıtica.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Portanto, esta solucao tem os seguintes problemas:
O segundo requisito - progresso - nao e cumprido;O quarto requisito - eficiencia - nao e cumprido.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Em conclusao, como se pode ver pelos exemplos antesdescritos, uma aproximacao menos cuidada ao problema daseccao crıtica apresenta varias lacunas a luz dos requisitosanteriormente enunciados.
O mesmo nao se passa com as solucoes algorıtmicas que seraoapresentadas na proxima aula...
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5
! Prof. Hernani
Resumo Mecanismos de Sincronismo
Exclusao Mutua Algorıtmica
Avaliacao - Trabalho Teorico-Pratico 11
Escreva um pequeno texto onde comenta os problemasdescritos anteriormente.
O texto devera: ser elaborado em grupo; enviado por email aoprofessor no final da aula; e devera conter entre 100 a 300palavras.
Hernani Costa [email protected]
TGPSI 09/12 Sistemas Operativos Modulo 5