Le processus de planification est la méthode par laquelle des tâches ou des travaux sont attribués à des ressources (comme des processeurs dans un ordinateur, des machines dans une usine ou des rendez-vous dans un calendrier) au fil du temps. Il vise à optimiser l’utilisation des ressources et à respecter des délais ou d’autres objectifs. Les détails varient considérablement selon le contexte, mais le processus général implique généralement les étapes suivantes :
1. Arrivée du travail : Les emplois ou les tâches entrent dans le système. Il peut s'agir de demandes d'utilisateurs, d'événements planifiés ou de tâches générées automatiquement. Des informations sur la tâche, telles que ses besoins en ressources (temps CPU, mémoire, E/S), sa priorité et ses délais, sont collectées.
2. Mise en file d'attente des tâches : Les tâches arrivées sont placées dans une ou plusieurs files d'attente, souvent organisées par priorité, heure d'arrivée ou d'autres critères. Cela crée une liste d'attente pour les ressources disponibles.
3. Sélection d'emploi : Un algorithme de planification choisit la prochaine tâche à exécuter dans la ou les files d'attente. Cette sélection est cruciale et détermine la performance globale et l’efficacité du système. Différents algorithmes existent, chacun avec ses forces et ses faiblesses (voir ci-dessous).
4. Allocation des ressources : Une fois un travail sélectionné, les ressources nécessaires lui sont allouées. Cela peut inclure l'attribution d'un cœur de processeur, l'allocation de mémoire, l'attribution de périphériques d'entrée/sortie, etc.
5. Exécution du travail : Le travail sélectionné s'exécute jusqu'à ce qu'il soit terminé, soit préempté (interrompu) ou rencontre une erreur.
6. Achèvement du travail : Une fois le travail terminé, les ressources allouées sont libérées, les rendant disponibles pour d'autres travaux.
7. Surveillance des performances (facultatif mais important) : Le système surveille souvent les mesures de performances telles que l'utilisation des ressources, les délais d'exécution des tâches, les temps d'attente et le débit. Ces données peuvent être utilisées pour affiner l'algorithme de planification et améliorer les performances du système.
Différents algorithmes de planification : Le choix de l’algorithme de planification a un impact significatif sur le résultat. Voici quelques exemples courants :
* Premier arrivé, premier servi (FCFS) : Les travaux sont traités dans l'ordre de leur arrivée. Simple mais peut entraîner de longs délais d'attente pour des travaux plus courts.
* Le travail le plus court en premier (SJF) : Les tâches dont le temps d'exécution estimé est le plus court sont traitées en premier. Minimise le temps d’attente moyen mais nécessite de connaître à l’avance la durée des travaux.
* Planification prioritaire : Les tâches se voient attribuer des priorités et les tâches les plus prioritaires sont traitées en premier. Peut conduire à la privation d’emplois moins prioritaires.
* Tournoi à la ronde : Chaque tâche reçoit une petite tranche de temps (quantique) du temps processeur. Passable mais peut entraîner une surcharge de changement de contexte élevée.
* Planification de files d'attente à plusieurs niveaux : Les tâches sont divisées en différentes files d'attente en fonction de leurs caractéristiques (par exemple, interactives ou par lots). Chaque file d'attente peut avoir son propre algorithme de planification.
* Planification de la file d'attente de commentaires à plusieurs niveaux : Les tâches peuvent se déplacer entre les files d'attente en fonction de leur comportement. Une tâche qui utilise trop de temps CPU peut être déplacée vers une file d'attente de priorité inférieure.
La complexité du processus de planification dépend de la taille du système et de la nature des tâches. Dans les systèmes simples, il peut s'agir d'un algorithme simple, tandis que dans les systèmes d'exploitation complexes ou les environnements distribués, cela implique des algorithmes sophistiqués et des techniques de gestion des ressources.
|