Forum Pplware

Versão Completa: [Ajuda] Priority Scheduling em C#
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Boas pessoal estou a ter muitos problemas a fazer um programa em c# que simule um processador de processos em priority scheduling (em highest job first). Já andei à procura na net mas só encontro alguns algoritmos sobre round robin mas nada de priority scheduling.
Será que me podem ajudar com algum tipo de código mesmo em algoritmia já ajudava imenso. Espero que me possam ajudar. Obrigado
Convém que sejas mais especificado em relação ao tipo de scheduling que pretendes.. há vários algoritmos de escalonamento com prioridades. Dinamico/não dinâmico, com ou sem nice, mais prioridade a que tipo de processos?! cpu intensive/IO intensive, com ou sem quantum?!

Sê o mais explicito e especifico possível de forma a poderes obter a melhor resposta.

cumps
(09-03-2011 21:00)Guilherme de Sousa Escreveu: [ -> ]Convém que sejas mais especificado em relação ao tipo de scheduling que pretendes.. há vários algoritmos de escalonamento com prioridades. Dinamico/não dinâmico, com ou sem nice, mais prioridade a que tipo de processos?! cpu intensive/IO intensive, com ou sem quantum?!

Sê o mais explicito e especifico possível de forma a poderes obter a melhor resposta.

cumps

O algoritmo baseia-se em prioridades, não perdendo prioridade após entrar no processador e vai ser corrido sempre o com maior prioridade, vai tem um quantum.
Obrigado desde já cumprimentos
Sim mas como calculas as prioridades? Ai é que esta o Q da questao..
Há imensas abordagens para este tipo de problema. tens é que dizer qual é que queres. Certamente que o que estas a fazer é para um trabalho academico ou escolar, caso contrario nao estarias a fazer uma nova implementação do que ja existe (ainda para mais em c#).

cumps
Sim é para um trabalho académico e a única coisa que abordamos em termos de como desenvolver o programa só foi falado em arranjar uma estrutura de dados List<> para guardar todos os processos, ordenar por prioridade e apanhar o primeiro (prioridade mais elevada e executar). Desculpa se não estou correcto sobre o que referes em calcular as prioridades. Obrigado
A questão é qual é a prioridade de cada processo, ou seja como é que sabes qual é o mais prioritário.

Existem inúmeras maneiras de atribuir prioridades, há muitas abordagens e dado que te pediram para implementar isso têm que te dizer como o querem.

Uma abordagem muito utilizada é a de atribuir um tempo x de processamento a cada processo. Depois conforme os processos vão se executando uns utilizam o tempo todo, outros bloqueiam se entretanto num semáforo/mutex/monitor.
Os processos que não utilizam este tempo todo são portanto dados como mais prioritários pois são normalmente IO intensive logo o algoritmo da maior prioridade a estes por serem mais rápidos e necessitarem menos de CPU. Processos IO intensive são processos com maior interacção com o utilizador dai também terem que ser executados o mais rapidamente possível de forma a que o user tenha feedback o quanto antes.

Será que é isto que pretendes? Aconselhava te a perguntar ao professor para ser mais específico de forma a não estares a seguir um caminho que não é pretendido.

Cumps
URL's de Referência