Les files d'attente d'ordonnancement

07 Sep 2022 07 Sep 2022 2583 vues ESSADDOUKI Mostafa 9 min de lecture

Files d'attente d'ordonnancement des processus

Définition : Files d'attente d'ordonnancement

Le système d'exploitation maintient tous les PCB (Process Control Blocks) dans des files d'attente d'ordonnancement. Le SE maintient une file d'attente séparée pour chacun des états de processus et les PCB de tous les processus dans le même état d'exécution sont placés dans la même file d'attente.

Principe général

Plusieurs processus existent simultanément dans le système. Tous les processus ont des besoins différents. Certains peuvent avoir besoin de l'unité centrale pour l'exécution, tandis que d'autres peuvent avoir besoin de périphériques d'entrée/sortie. Comme les ressources sont limitées, certains processus peuvent avoir besoin d'attendre.

Pendant qu'ils attendent, en fonction de leurs besoins, ils sont placés dans différents types de files d'attente. Lorsqu'un processus passe par différents états, il reste également dans différentes files d'attente.

Lorsque l'état d'un processus est modifié, son PCB est dissocié de sa file d'attente actuelle et déplacé vers sa nouvelle file d'attente d'état.

Les principales files d'attente d'ordonnancement

Le système d'exploitation maintient les importantes files d'attente d'ordonnancement de processus suivantes :

 File principale

File d'attente des tâches (Job Queue)

Cette file d'attente conserve tous les processus du système, quels que soient leur état et leur emplacement (en mémoire ou sur disque).

Lorsqu'un nouveau processus est créé, il est d'abord placé dans cette file d'attente.

 Prêts à exécuter

File d'attente prête (Ready Queue)

Cette file conserve un ensemble de tous les processus résidant dans la mémoire principale, prêts et en attente d'exécution.

Un nouveau processus est toujours placé dans cette file après sa création et son chargement en mémoire.

Les processus dans cette file n'attendent que le CPU.

 En attente d'E/S

Files d'attente des périphériques (Device Queues)

Les processus qui sont bloqués en raison de l'indisponibilité d'un périphérique d'E/S constituent cette file d'attente.

Il existe généralement une file d'attente distincte pour chaque périphérique (disque, imprimante, clavier, etc.).

Lorsqu'une opération d'E/S est terminée, le processus est replacé dans la file d'attente prête.

Schéma des files d'attente et transitions

Diagramme des files d'attente d'ordonnancement

Figure : Organisation et transitions entre les différentes files d'attente

                    ┌─────────────────┐
                    │ Nouveau processus│
                    └─────────┬───────┘
                              │
                              ▼
                    ┌─────────────────┐
                    │ File d'attente  │
                    │    prête        │◄─────────────────────┐
                    └─────────┬───────┘                       │
                              │                               │
                              │ (Ordonnanceur)                │
                              ▼                               │
                    ┌─────────────────┐    Fin E/S      ┌────┴───────┐
                    │   En cours      │────────────────►│  File      │
                    │  d'exécution    │                 │ d'attente  │
                    └─────────┬───────┘◄────────────────│périphérique│
                              │          Requête E/S    └────┬───────┘
                              │                               │
                              │ (Terminaison)                 │
                              ▼                               │
                    ┌─────────────────┐                       │
                    │  Processus      │                       │
                    │   terminé       │                       │
                    └─────────────────┘───────────────────────┘
        

Gestion des files d'attente

Il existe différentes politiques que le système d'exploitation utilise pour gérer chaque file d'attente. Le planificateur du système d'exploitation décide comment déplacer les processus entre la file d'attente prête et la file d'attente d'exécution, ce qui n'autorise qu'une seule entrée par cœur de processeur sur le système.

Types de planificateurs
  • Planificateur à long terme (Job Scheduler) : Sélectionne les processus à charger en mémoire depuis la file des tâches.
  • Planificateur à court terme (CPU Scheduler) : Sélectionne le prochain processus à exécuter depuis la file prête.
  • Planificateur à moyen terme : Gère le swapping (échange) entre mémoire et disque.

Modèle du processus à deux états

Définition : Modèle à deux états

Il existe deux états dans le modèle de processus à deux états, à savoir l'état d'exécution et l'état de non-exécution.

État d'exécution (Running)

Un nouveau processus entre dans le système en état d'exécution, après sa création. C'est l'état où le processus utilise effectivement le CPU.

Caractéristiques :

  • Un seul processus par cœur de CPU peut être dans cet état à un instant donné.
  • Le processus exécute ses instructions.
  • Il quitte cet état soit par terminaison, soit par interruption (passage en attente ou retour en file prête).
État de non-exécution (Not Running)

Les processus non en cours d'exécution sont stockés dans une file d'attente jusqu'à ce que leur tour d'exécution arrive.

Caractéristiques :

  • Chaque entrée de la file d'attente pointe vers un processus particulier.
  • La file d'attente peut être implémentée à l'aide d'une liste chaînée.
  • Les processus dans cet état peuvent être prêts (Ready) ou en attente (Waiting).

Fonctionnement du modèle à deux états

  1. Un nouveau processus est créé et placé dans l'état d'exécution.
  2. Lorsqu'un processus est interrompu (par exemple, par une horloge ou une priorité plus élevée), ce processus est transféré dans la file d'attente (état non-exécution).
  3. Si le processus est terminé ou interrompu définitivement, il est écarté du système.
  4. Dans les deux cas (interruption ou terminaison d'un autre), le répartiteur (dispatcher) sélectionne ensuite un processus dans la file d'attente pour l'exécuter.

Diagramme du modèle à deux états

    ┌─────────────┐         ┌─────────────┐
    │   Running   │◄───────►│ Not Running │
    │ (Exécution) │         │ (File d'attente)│
    └─────────────┘         └─────────────┘
           │                        ▲
           │                        │
           └────────────────────────┘
                 (Dispatch)
        

Implémentation des files d'attente

Les files d'attente de processus sont généralement implémentées à l'aide de listes chaînées de PCB (Process Control Blocks).

   
Structure d'une file d'attente C
// Structure simplifiée d'un PCB
typedef struct PCB {
    int pid;                    // Identifiant du processus
    int etat;                   // État courant
    struct PCB* suivant;        // Pointeur vers le prochain PCB dans la file
    // ... autres informations (registres, priorité, etc.)
} PCB;

// Structure d'une file d'attente
typedef struct FileAttente {
    PCB* tete;                  // Premier processus de la file
    PCB* queue;                 // Dernier processus de la file
    int taille;                 // Nombre de processus dans la file
} FileAttente;
 Exercice pratique

Gestion des files d'attente

 Niveau : Débutant

On considère un système avec les processus suivants et leurs états :

ProcessusÉtatRessource attendue
P1En cours d'exécution-
P2Prêt-
P3En attenteDisque
P4Prêt-
P5En attenteImprimante
P6En attenteDisque

Questions :

  1. Dans quelle(s) file(s) d'attente se trouve chaque processus ?
  2. Si P1 termine son exécution, quel processus sera sélectionné par le répartiteur ?
  3. Si le disque termine une opération, quels processus sont concernés et où vont-ils ?
  4. Représentez l'état des files d'attente après que P1 a été interrompu et que P2 a commencé son exécution.
Points clés à retenir
  • Le système d'exploitation maintient des files d'attente distinctes pour chaque état de processus.
  • Les principales files sont : file des tâches (tous les processus), file prête (prêts à exécuter), et files des périphériques (en attente d'E/S).
  • Les PCB sont déplacés d'une file à l'autre lorsque l'état du processus change.
  • Le modèle à deux états simplifie la vision en distinguant seulement exécution et non-exécution.
  • Dans le modèle à deux états, les processus non exécutés sont stockés dans une file d'attente unique.
  • Le répartiteur (dispatcher) est responsable de la sélection du prochain processus depuis la file prête.
  • Les files d'attente sont généralement implémentées comme des listes chaînées de PCB.
  • La gestion des files d'attente est fondamentale pour l'ordonnancement et la multiprogrammation.

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.