2012-03-05 5 views
0

J'ai reçu une affectation. Ecrivez un programme pour simuler la planification d'un travail dans un système d'exploitation. Comprendre la tranche de temps et le temps d'exécution

Les tâches sont générées à des moments aléatoires. Chaque travail reçoit à la fois une priorité aléatoire de 1 à 4 - où 1 est la priorité la plus élevée - et un temps aléatoire pour terminer son exécution.

Les tâches ne commencent pas à s'exécuter et se terminent, mais partagent le processeur . Le système d'exploitation exécute un travail pour une unité fixe du temps appelée tranche de temps. À la fin de la tranche de temps, l'exécution du travail est suspendue. Le travail est ensuite placé dans une file d'attente de priorité , où il attend sa prochaine part du temps processeur. Le travail ayant la priorité la plus élevée est ensuite retiré de la file d'attente prioritaire et exécuté pour une tranche de temps. Lorsqu'un travail est généré pour la première fois, il commence immédiatement à s'exécuter si le processeur est libre. Sinon, sera placé dans la file d'attente prioritaire.

Dans cette affectation, vous aurez besoin d'une implémentation d'une file d'attente et d'une file d'attente de priorité . Vous pouvez utiliser la file d'attente prioritaire dans la bibliothèque Java Class (java.util.PriorityQueue). Il implémente l'interface java.util.Queue.

im confondre avec la tranche de temps et le temps d'exécution .. que ma compréhension est maintenant pour laisser dire final int timeslice = 3, le temps de remplir tous les emplois est horloge finale int = 20 minutes .; lorsque le travail A commence à 0 minute a un temps d'exécution de 5 (qui est généré de manière aléatoire entre 1-5). lors de l'exécution du travail jusqu'à la minute 3.Job A est mis en file d'attente prioritaire tandis que Job B avec un temps d'exécution de 2 minutes entre à la minute 3? après la fin de l'exécution de la tâche B, la tâche A pour terminer l'exécution ou la tâche C?

s'il vous plaît expliquer si je me trompe. Merci

Répondre

0

Dans votre question de savoir si Job A ou Job C est exécuté (une fois B est terminée), il devrait dépendre de ce que les rendements PriorityQueue, qui sera le travail avec la plus haute priorité.

Si le travail A avait une priorité de 1 et le travail C une priorité de 2, PriorityQueue renverrait le travail A et devrait recevoir la tranche suivante.

Si le travail C avait une priorité de 2 et le travail B une priorité de 4, PriorityQueue renverrait le travail C et devrait recevoir la tranche de temps suivante. Comme le dit adn_295, c'est une bonne affectation.

0

PriorityQueue renvoie toujours la tâche de priorité la plus élevée, de sorte qu'il continuera d'être renvoyé chaque fois qu'il sera ajouté à la file d'attente. Je vous suggère d'essayer de mettre en œuvre la solution pour voir comment cela fonctionne. (Ou écrire un programme de test simple en utilisant PriorityQueue)

Questions connexes