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.
É 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.
[quote=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.[/quote]
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!
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
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:
[code]
]package Semaforos;
public abstract class SemaforoBase implements Semaforo {
// Se valor < 0, abs(valor) � o tamanho da fina de P()
protected int valor = 0;
protected SemaforoBase() {
this(0);
}
protected SemaforoBase(int inicial) {
if (inicial < 0) throw new IllegalArgumentException(“inicial<0”);
valor = inicial;
}
public synchronized void P() {
valor–;
if (valor < 0) {
while (true) {
try {
wait();
break;
} catch (InterruptedException e) {
System.err.println
(“SemaforoBase.P(): InterruptedException, esperar novamente”);
if (valor >= 0) break;
else continue;
}
}
}
}
public synchronized void V() {
valor++;
if (valor <= 0) notify();
}
public synchronized int valor() {
return valor;
}
public synchronized String toString() {
return String.valueOf(valor);
}
}[/code]
[quote=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
[/quote]
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!
[quote=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:
[code]
]package Semaforos;
public abstract class SemaforoBase implements Semaforo {
// Se valor < 0, abs(valor) � o tamanho da fina de P()
protected int valor = 0;
protected SemaforoBase() {
this(0);
}
protected SemaforoBase(int inicial) {
if (inicial < 0) throw new IllegalArgumentException(“inicial<0”);
valor = inicial;
}
public synchronized void P() {
valor–;
if (valor < 0) {
while (true) {
try {
wait();
break;
} catch (InterruptedException e) {
System.err.println
(“SemaforoBase.P(): InterruptedException, esperar novamente”);
if (valor >= 0) break;
else continue;
}
}
}
}
public synchronized void V() {
valor++;
if (valor <= 0) notify();
}
public synchronized int valor() {
return valor;
}
public synchronized String toString() {
return String.valueOf(valor);
}
}[/code]
procure entender o metodo, é simples…
vlw
[/quote]
vou começar a programar aqui … caso eu tenha duvidas vou postando para os amigos NINJAS me ajudarem!