Escalonador shortest job first (sjf)

eu tenho q desenvolver um programa que simula um escalonador Shostest Job First (SJF)
preemptivo sem prioridades, onde a cada processo que entra na Fila de Prontos, o algoritmo
SJF escolhe aquele de menor duração para execução.e ainda tm q ter como entrada, as informações de cada processo: PID,duração, tempo de chegada e após essas leituras, tm q mostrar o resultado de execução dos processos (como sefosse um diagrama de Gantt), calculando o Tempo de Espera de cada processo e o Tempo de Espera Médio. e eu num sei como começar! alguém me ajuda pleaseeee!!

Obrigada!

Bem-Vinda ao GUJ, mas qual é a sua dúvida?Vc sabe java?Como vc é newbie, vou ser tolerante, mas não poste tópicos assim, pois parece que vc quer o exercício pronto, e isso não faremos por vc.Tente fazer, e vá postando o que vc não consegue fazer. :wink:

Já deu um:
http://www.google.com.br/search?hl=pt-BR&q=Shortest+Job+First+&meta=
E a busca não lhe retornou nada?

Hmmm… pelos termos que você falou parece que você já sabe o que é SJF. Então vou direto ao ponto: é pra voce simular ou iplementar um de modo que crie sincronia com o SO?
Esse é um trabalho não muito fácil de fazer… se você souber uma outra linguagem (tipo C/C++) acho que fica mais fácil… quer dizer… eu nunca vi nada parecido em Java, mas com certeza tem. Se marcar, você vai ter que usar Threads em vez de processos… eu não conheço nenhuma biblioteca pronta que fale sobre processos, mas sobre threads tem… acho que em Linux, o gerenciamento de threads e processos são iguais, mas não tenho certeza.
Se você for um pouco mais específica quem sabe poderemos ajudar :smiley:

Dica: o Google responde melhor se sua consulta for feita em inglês. Procure por:
[google]scheduler sjf java[/google]

Olá pessoal!

Eu queria tirar uma dúvida sobre SJF, poderia ser? Vou aproveitar o tópico…

O processador irá escalonar o processo de tempo mais curto primeiro das que estão na fila de pronto. Bem, vamos supor o seguinte:

O processo 1 inicia no tempo 0 e leva 4 burst para terminar.
O processo 2 inicia no tempo 1 e leva 5 burst para terminar.
O processo 3 inicia no tempo 2 e leva 3 burst para terminar.

Olha a dúvida: quando o processo 2 chega, o processo 1 já executou por 1 burst. Como o seu tempo é maior que o antecessor, ele espera. Quando o processo 3 chega, o processo 1 já executou por 2 burst.

O processo 3 leva 3 burst. O processo 1 leva 4 burst. Mas o processo 1 já executou 2 burst dos 4. Sobram 2. Eu não sei se na chegada do processo 3 o processo 1 continua executando, pois a tabela de tempo dos processos foi atualizada dinamicamente, ou ocorre preempção, pois a alocação não leva em conta o tempo que resta ao processo, mas somente o seu tempo total quando chegou na fila.

Agradeceria uma ajuda, pois não acho nada em livros além da teoria e exemplos simples.