• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

anuskka

Secção Critica

10 mensagens neste tópico

Ola pessoal!

tenho uma duvida, alguem me pode ajudar com os algoritmos de problemas de Seccao Critica :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

considerando uma variavel porta: {fechada, aberta} sendo inicialmente porta==aberta, partilhada por 2 processos Pi e Pj que pretendem executar concorrentemente, uma determinada secção critica. Analisar o seguinte algoritmo, que se prope como uma solucao possível para o problema da secção critica, com 2 processos, e demnstrar que o referido algoritmo nao é, efectivamente, uma solução para aquele problema.

Nota: assuma como indivisíveis uma instrucao do tipo "enquanto condicao fazer acçã1 senao fazer acção 2"

repetir

      enquanto porta==fechada fazer nada senão fazer porta==fechada

              Secção critica

        porta=aberta

              Secção restante

ate falso

:S:S:S é isto assim

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem.. se eu disser alguma coisa de errado corrigam-me... mas vou tentar ajudar-te...

Existe uma secção crítica quando existem recursos partilhados por mais que uma thread, ou processo.. logo.. a tua variável porta está sujeita a isso, pode ser afectada pelo contexto do processo 1 .. como pelo contexto do processo 2...

Sendo assim por exemplo o teu código..

se a porta estiver fechada não fazes nada.. caso contrário fechas a porta ( assumindo que aquele == foi um gralha e aquilo é um = ), fechas a porta e entras naquele estado que dizes ser secção crítica... a seguir abres a porta e tens uma secção sem secção crítica, agora ninguém te pode garantir que ali tens a porta aberta, pois o outro processo pode ter alterado a variável porta e meter porta fechada. Tens que resolver isto !

Outro ponto que tive aqui a pesquisar é o seguinte.. no msdn diz "A critical section object provides synchronization similar to that provided by a mutex object, except that a critical section can be used only by the threads of a single process."

Se eu não estou a interpretar isto mal a critical section só se aplica para várias threads de um mesmo processo, como o teu caso é diferentes processos penso que a critical section também não resolva o problema da porta fechada.

Se algo que disse está errado agradeço que esclareçam :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se eu não estou a interpretar isto mal a critical section só se aplica para várias threads de um mesmo processo, como o teu caso é diferentes processos penso que a critical section também não resolva o problema da porta fechada.

Eu acho que isto aqui refere-se a um tipo de objecto referido no msdn e não no conceito de secção critica.

Eu não escrevi nada no tópico anteriormente porque esse algoritmo parece-me estar correcto devido ao facto daquelas instruções serem consideradas indivisiveis :s

Mas vê-se que não está correcto devido ao enunciado do exercício :/

agora ninguém te pode garantir que ali tens a porta aberta, pois o outro processo pode ter alterado a variável porta e meter porta fechada. Tens que resolver isto !

Aqui não precisas de ter a porta aberta, se percebi bem, o facto de a porta estar aberta significa que um processo pode executar a sua secção critica (e apenas um deles pode estar a executar a respectiva secção critica ao mesmo tempo).

Mas o enunciado diz que o algoritmo não serve para resolver o problema, por isso interpretei mal alguma coisa ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O único problema que consigo imaginar é devido à instrução ser indivisível, nunca sai daquele enquanto porta == fechada fazer nada. Não sei se faz muito sentido, mas também não consigo encontrar outro problema...

O pseudocódigo também não é brilhante...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

enganei-me uma coisa o saude esta certo :P é  porta=fechada

repetir

      enquanto porta==fechada fazer nada senão fazer porta=fechada

              Secção critica

        porta=aberta

              Secção restante

ate falso

este foi um exercicio k saiu no meu exame de sistemas operativos de a 1 senana :S

esta confuso... o prof ker um desenho para mostrar quando os processos estao ou nao na seccao critica..

obrigada pela ajuda :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois.. n sei :confused: era isso k keria k me ajudassem. mas o prof vai dar a resolucao e depois mostro. obg pela ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora