Différence entre la planification préemptive et non préemptive dans les systèmes d'exploitation Différence entre

Anonim

Processor Scheduling (ou CPU Scheduling ) détermine quels processus sont affectés et supprimés de la CPU, en fonction de modèles de planification tels que Preemptive et Non. - Programmation préventive (également appelée Co-operative Scheduling ).

Les anciens systèmes pouvaient fonctionner en modes autonomes simples, mais avec l'augmentation Le besoin de systèmes flexibles et réactifs, ainsi que la virtualisation, la gestion efficace du multitraitement permettent une réponse rapide à toutes les demandes de traitement des tâches

Les unités de planification sont souvent appelées tâche et c'est le travail du programmateur pour exécuter et gérer ces tâches à chaque fois que nécessaire, le planificateur sélectionne la tâche à supprimer et l'affecte à la CPU pour traitement, selon le modèle d'ordonnancement utilisé.

Comment le planificateur sait-il quelles tâches sont prioritaires?

Le planificateur doit exécuter un processus de sélection juste et efficace, en tenant compte des demandes de traitement variables et dynamiques, et en tirant le meilleur parti des cycles du processeur.

Les tâches peuvent être dans deux états pendant le traitement:

  1. dans une CPU Burst où la CPU exécute des calculs pour traiter la tâche (la période pour un Burst CPU varie d'une tâche à l'autre, et programme à programmer).
  2. Dans une rafale d'entrée / sortie (E / S) en attente de réception ou d'envoi de données du système.

Lorsque la CPU est inactive, le planificateur lit la file d'attente prête et sélectionne la prochaine tâche à exécuter. Ensuite, c'est le Dispatcher qui donne le contrôle de tâche sélectionné du CPU, il doit donc être rapide! Tout temps pris par le Dispatcher est appelé Dispatch Latency .

Il existe différentes structures et paramètres personnalisés pour définir la file d'attente prête, ainsi que plusieurs méthodes pouvant être utilisées pour gérer les complexités du processus de planification.

Généralement, il s'agit d'optimiser et de maximiser l'utilisation du processeur, le débit, etc.

Le programmateur doit prendre une décision au cours de l'une des étapes suivantes:

  1. Lorsque la tâche passe d'un à à Waiting State (par exemple, en attente pendant une requête d'E / S).
  2. Lorsque la tâche passe de à Prêt (par exemple, répondre à une interruption).
  3. Lorsque la tâche passe de Attente à Prêt (par exemple, une demande d'E / S est terminée).
  4. Quand la Tâche

Une nouvelle tâche doit être sélectionnée si l'étape 1 ou 4 se déroule pour assurer la pleine utilisation du CPU, et dans les deux étapes 2 et 3, la tâche peut continuer ou une nouvelle tâche choisi.

Après avoir compris comment une tâche est traitée, examinons deux modèles de planification traitant des interruptions du processeur.

Les deux ont des fonctionnalités similaires avec les tâches, les états de tâches, les files d'attente et les priorités (statiques ou dynamiques):

  • La planification non préemptive est une tâche qui s'exécute (volontairement) ou se termine. Windows® avait une planification non préemptive jusqu'à Windows 3.x, après quoi il est passé de Préemptif à Windows 95.
  • La planification préemptive est l'endroit où une tâche peut être suspendue de force par une interruption de l'UC, contrairement à Non-Préemptif la tâche s'exécute jusqu'à ce qu'elle libère le contrôle de la CPU.

Planification non préemptive

Les tâches dans un système non préemptif seront exécutées jusqu'à leur achèvement.

Le planificateur vérifie ensuite l'état de toutes les tâches et planifie la tâche prioritaire suivante avec un état Prêt.

Avec la planification non préemptive, une fois qu'une tâche a son affectation à la CPU, elle ne peut pas être supprimée, même si les tâches courtes doivent attendre que des tâches plus longues soient terminées.

La gestion de l'ordonnancement pour toutes les tâches est «juste» et les temps de réponse sont prévisibles, car les tâches hautement prioritaires ne peuvent pas faire tomber les tâches en attente plus loin dans la file d'attente.

Le Scheduler s'assure que chaque tâche obtient sa part du CPU, en évitant tout retard avec n'importe quelle tâche. La «quantité de temps» allouée à la CPU n'est pas forcément égale, car elle dépend de la durée de la tâche.

Planification préemptive

Ce modèle de planification permet d'interrompre les tâches - contrairement à la planification non préemptive qui a une approche «exécution-à-compléter».

Les interruptions, qui peuvent être initialisées à partir d'appels externes, invoquent le planificateur pour mettre en pause une tâche en cours afin de gérer une autre tâche de priorité plus élevée - de sorte que le contrôle de la CPU peut être préempté.

La tâche la plus prioritaire dans un état Prêt est exécutée, ce qui permet une réponse rapide aux événements en temps réel.

Certains des inconvénients de la planification préemptive entraînent une augmentation des frais généraux sur les ressources, et des problèmes peuvent survenir lorsque deux tâches partagent des données, une interruption pouvant survenir lors de la mise à jour des structures de données partagées.

D'un autre côté, il est pratique de pouvoir mettre en pause une tâche pour en gérer une autre qui pourrait être critique.

Résumé

De nombreuses variantes et dépendances peuvent être définies dans différentes stratégies, telles que l'utilisation d'une "Politique de Round Robin" [i] " où chaque tâche (avec priorité égale) s'exécute une fois, puis placé à la fin de la file d'attente, pour le cycle suivant.

Les autres stratégies incluent Premier entré, premier sorti , Premier emploi , Temps de travail le plus court , Temps restant le plus court , etc.

L'analyse des données historiques peut fournir des informations sur des aspects tels que le taux d'arrivée de nouvelles tâches, le CPU et les salves d'E / S, etc. afin que les distributions de probabilité puissent calculer les caractéristiques des temps d'attente. administrateurs avec des données pertinentes pour définir des modèles de planification.