Pessoal preciso de um HELP, mas um HELP enorme!!!
Eu tenho que fazer uma aplicação utilizando o algoritmo do semaforo (aqueles. algoritmos famosos, como o jantar dos filósofos, avestruz e outros)
Contudo, eu não tenho nem idéia de como eu utilizarei o algoritmo, digo uma usabilidade palpavél. Não sei se estou sendo claro.
Então queria que vcs me ajudassem dando idéia para tal tarefa! hehe
HAA e seu não fosse pedir muito se alguem tiver um exemplo bem básico e pudessem me ajudar, eu agradeceria!
Não quero um código completo não! somente a parte que usa o semaforo, pq o maldito do professor não dará nenhuma ajuda.
cara o algoritmo ta ali no site que vc enviou como esta na sua apostila da faculdade
é só utilizar a logica com a sintaxe da linguagem que vc quer utilizar
vc conhece , melhor programa alguma linguagem de programação ?
edu_fernandes
É um algoritmo trabalhoso cara.
Para implementa-lo você vai ter que estudar filas, FIFO esas coisas cara.
Para ter uma idéia legal sobre isso lhe sujiro uma leitura.
Sistemas Operacionais Modernos - Tenembaum.
Nesse livro você vai entender como implementá-lo.
Mas garanto que não é fácil.
Pois para esse algoritmo funcionar você vai ter que ter jobs em uma fila.
Ixii, boas horas de estudo sobre SO.
Espero ter ajudado.
Abraço e boa sorte com o projeto.
lanbaun
paulo.rogeriobr:
seria um algoritmo que fica um tempo com uma cor (vermelha), depois fica outro tempo com amarela e depois fica com verde ?:
cara, no começo do tópico eu disse que queria ajuda para achar uma usabilidade!
lanbaun
edu_fernandes:
É um algoritmo trabalhoso cara.
Para implementa-lo você vai ter que estudar filas, FIFO esas coisas cara.
Para ter uma idéia legal sobre isso lhe sujiro uma leitura.
Sistemas Operacionais Modernos - Tenembaum.
Nesse livro você vai entender como implementá-lo.
Mas garanto que não é fácil.
Pois para esse algoritmo funcionar você vai ter que ter jobs em uma fila.
Ixii, boas horas de estudo sobre SO.
Espero ter ajudado.
Abraço e boa sorte com o projeto.
Então cara vo pegar o Tanembaun! o complicado vai ser implementar msm, além de nem ter noção de como encaixar o algoritmo em algum assunto, o tempo meu ta curto para entrega!
Irei correr aqui!
P
paulo.rogeriobr
Desculpe-me !! tem razao ! Li no wiki e vi que esse tipo de algoritmo é usado criando processos (thread) e gerenciando o numero de processos criados , depois vc pode usar esse algoritmo para bloquear e desbloquear os processos e a intençaõ é a utilização de mutex ou seja só um processo sendo executado por vez!
a usabilidade de mutex é realmente simples, mas vc tem que pensar em algo seu para utilizar. que funcione um processo por vez!
imagine um quarto de hotel ! quando está ocupado recebe um valor binario 1 e quando está desocupado recebe valor binario 0 em um programa de hotelaria, mas imagine um
hotel com 400 apartamentos !
esse é um exemplo que pensei agora sobre mutex
agora acho que vc deve pensar no seu
e me desculpe por nao ter prestado atenção direito no inicio do topico
pensei que vc queria um codigo, mas li novamente e vi que errei
espero ter ajudado com a usabilidade
do algoritmo
D
Damiao_Cunha
o algoritmo do semaforo, é apenas a ideia do metodo P e do metodo V...
onde o V libera o processo para uma outra thread, e o P bloqueia, até qua o processo acabe...
segue o metodo:
]packageSemaforos;publicabstractclassSemaforoBaseimplementsSemaforo{// Se valor < 0, abs(valor) � o tamanho da fina de P()protectedintvalor=0;protectedSemaforoBase(){this(0);}protectedSemaforoBase(intinicial){if(inicial<0)thrownewIllegalArgumentException("inicial<0");valor=inicial;}publicsynchronizedvoidP(){valor--;if(valor<0){while(true){try{wait();break;}catch(InterruptedExceptione){System.err.println("SemaforoBase.P(): InterruptedException, esperar novamente");if(valor>=0)break;elsecontinue;}}}}publicsynchronizedvoidV(){valor++;if(valor<=0)notify();}publicsynchronizedintvalor(){returnvalor;}publicsynchronizedStringtoString(){returnString.valueOf(valor);}}
procure entender o metodo, é simples...
vlw
lanbaun
paulo.rogeriobr:
Desculpe-me !! tem razao ! Li no wiki e vi que esse tipo de algoritmo é usado criando processos (thread) e gerenciando o numero de processos criados , depois vc pode usar esse algoritmo para bloquear e desbloquear os processos e a intençaõ é a utilização de mutex ou seja só um processo sendo executado por vez!
a usabilidade de mutex é realmente simples, mas vc tem que pensar em algo seu para utilizar. que funcione um processo por vez!
imagine um quarto de hotel ! quando está ocupado recebe um valor binario 1 e quando está desocupado recebe valor binario 0 em um programa de hotelaria, mas imagine um
hotel com 400 apartamentos !
esse é um exemplo que pensei agora sobre mutex
agora acho que vc deve pensar no seu
e me desculpe por nao ter prestado atenção direito no inicio do topico
pensei que vc queria um codigo, mas li novamente e vi que errei
espero ter ajudado com a usabilidade
do algoritmo
O louco!! Para com isso meu querido, esse fórum é fera por isso! Todo mundo quer ajudar e poutz!! vou ser obrigado a furtar a sua idéia kkkk
não consigo pensar em nada melhor!
Abraço
lanbaun
Damiao Cunha:
o algoritmo do semaforo, é apenas a ideia do metodo P e do metodo V...
onde o V libera o processo para uma outra thread, e o P bloqueia, até qua o processo acabe...
segue o metodo:
]packageSemaforos;publicabstractclassSemaforoBaseimplementsSemaforo{// Se valor < 0, abs(valor) � o tamanho da fina de P()protectedintvalor=0;protectedSemaforoBase(){this(0);}protectedSemaforoBase(intinicial){if(inicial<0)thrownewIllegalArgumentException("inicial<0");valor=inicial;}publicsynchronizedvoidP(){valor--;if(valor<0){while(true){try{wait();break;}catch(InterruptedExceptione){System.err.println("SemaforoBase.P(): InterruptedException, esperar novamente");if(valor>=0)break;elsecontinue;}}}}publicsynchronizedvoidV(){valor++;if(valor<=0)notify();}publicsynchronizedintvalor(){returnvalor;}publicsynchronizedStringtoString(){returnString.valueOf(valor);}}
procure entender o metodo, é simples...
vlw
vou começar a programar aqui .. caso eu tenha duvidas vou postando para os amigos NINJAS me ajudarem!
Obrigado pessoal!
lanbaun
Obrigado pelo algoritmo!
Consegui fazer o que eu precisava.