Contexte de processus et bloc de contrôle de processus (PCB)

07 Sep 2022 07 Sep 2022 2902 vues ESSADDOUKI Mostafa 11 min de lecture

Structure interne des processus : Contexte et PCB

Définition : Vue du noyau sur un processus

Le noyau alloue des ressources à un processus et le planifie pour l'utilisation du CPU. En conséquence, la vue du noyau d'un processus se compose de deux parties :

  • Première partie : Code, données et pile du processus, et informations concernant la mémoire et les autres ressources, telles que les fichiers, qui lui sont allouées.
  • Deuxième partie : Informations concernant l'exécution d'un programme, telles qu'un état de processus, l'état de la CPU, y compris le pointeur de pile, et quelques autres éléments d'information.

Ces deux parties de la vue du noyau sont contenues respectivement dans le contexte de processus et le bloc de contrôle de processus (PCB). Cette disposition permet à différents modules OS d'accéder facilement et efficacement aux informations pertinentes liées au processus.

Vue d'ensemble de la structure d'un processus

Contexte de processus
  • Espace d'adressage (code, données, pile)
  • Informations mémoire (MMU, tables de pages)
  • État des fichiers ouverts
  • Informations d'interaction (processus parent/enfant)
  • Informations sur les ressources allouées
  • Données diverses
PCB (Process Control Block)
  • État du processus
  • Compteur de programme
  • Registres CPU
  • Informations d'ordonnancement
  • Informations de gestion mémoire
  • Informations comptables
  • Informations d'état des E/S

Le contexte de processus

Définition : Contexte de processus

Le contexte de processus regroupe toutes les ressources allouées à un processus et les informations nécessaires à son exécution, à l'exception de l'état CPU instantané (qui est dans le PCB).

Le système d'exploitation crée un contexte de processus en allouant de la mémoire au processus, en chargeant le code du processus dans la mémoire allouée et en configurant son espace de données. Les informations concernant les ressources allouées au processus et son interaction avec d'autres processus sont maintenues dans le contexte du processus tout au long de la vie du processus.

Ces informations changent à la suite d'actions telles que l'ouverture et la fermeture de fichiers et la création et la destruction de données par le processus pendant son fonctionnement.

Éléments du contexte de processus

ÉlémentDescriptionRôle
Espace d'adressageCode, données et pile du processusContient le programme exécutable et ses données
Information d'allocation mémoireInformation concernant les zones mémoire allouées à un processusUtilisées par l'unité de gestion de la mémoire (MMU) pendant le fonctionnement du processus
État des activités de traitement des fichiersInformations sur les fichiers utilisés, positions actuelles dans les fichiersPermet de suivre l'état des opérations d'E/S sur les fichiers
Informations sur l'interaction du processusIdentifiants des processus parent et enfant, messages interprocessus en attenteNécessaires pour contrôler l'interaction avec d'autres processus
Informations sur les ressourcesInformations concernant les ressources allouées au processusPermet de suivre l'utilisation des ressources (périphériques, etc.)
Informations diversesInformations diverses nécessaires au fonctionnement du processusParamètres de configuration, etc.

Le Bloc de Contrôle de Processus (PCB)

Définition : PCB (Process Control Block)

Chaque processus est représenté dans le système d'exploitation par un bloc de contrôle de processus (PCB) également appelé bloc de contrôle de tâche. Le PCB sert simplement de dépôt pour toutes les données nécessaires au démarrage ou au redémarrage d'un processus, ainsi que pour certaines données comptables.

Structure du PCB

Figure : Organisation du Process Control Block (PCB)

Éléments du PCB

Un PCB contient de nombreux éléments d'information associés à un processus spécifique :

 Identification

État du processus

L'état peut être nouveau, prêt, en cours d'exécution, bloqué, terminé, etc.

Cet état détermine dans quelle file d'attente le PCB se trouve et quelle action le système peut entreprendre sur le processus.

 Exécution

Compteur de programme

Le compteur indique l'adresse de la prochaine instruction à exécuter pour ce processus.

Lorsqu'un processus est interrompu, cette adresse est sauvegardée dans le PCB pour permettre la reprise ultérieure.

 État CPU

Registres du processeur

Les registres varient en nombre et en type, selon l'architecture de l'ordinateur. Ils comprennent :

  • Les accumulateurs
  • Les registres d'index
  • Les pointeurs de pile
  • Les registres à usage général
  • Les informations sur le code d'état

Avec le compteur de programme, ces informations d'état doivent être sauvegardées lorsqu'une interruption se produit, afin de permettre au processus de se poursuivre correctement par la suite.

 Ordonnancement

Informations d'ordonnancement

Ces informations comprennent :

  • La priorité du processus
  • Les pointeurs vers les files d'attente d'ordonnancement
  • Tout autre paramètre d'ordonnancement (quantum de temps, etc.)
 Mémoire

Informations de gestion mémoire

Ces informations peuvent inclure :

  • La valeur des registres de base et de limite
  • Les tables de pages
  • Les tables de segments

Ces données dépendent du système de mémoire utilisé par le système d'exploitation.

 Comptabilité

Information comptable

Ces informations incluent :

  • La quantité de CPU utilisée
  • Le temps réel utilisé
  • Les limites de temps
  • Les numéros de compte
  • Les numéros de tâche ou de processus
 E/S

Informations sur l'état des E/S

Ces informations comprennent :

  • La liste des périphériques d'E/S alloués au processus
  • Une liste des fichiers ouverts
  • Les positions courantes dans les fichiers

Sauvegarde de contexte, ordonnancement et dispatching

Processus de changement de contexte

Lorsqu'un événement se produit (interruption, appel système, fin d'E/S), le système doit sauvegarder l'état du processus en cours et éventuellement en sélectionner un nouveau. Ce processus se déroule en trois étapes :

1. Sauvegarde du contexte

La fonction de sauvegarde du contexte effectue un nettoyage chaque fois qu'un événement se produit. Elle :

  • Enregistre l'état CPU du processus interrompu dans son PCB
  • Enregistre les informations concernant son contexte
  • Change l'état du processus interrompu en prêt (ou bloqué selon l'événement)

Le processus interrompu était en cours d'exécution avant que l'événement ne se produise.

2. Ordonnancement

La fonction de planification (ordonnancement) :

  • Utilise les informations d'état de processus des PCB
  • Sélectionne un processus prêt à être exécuté
  • Transmet son identifiant à la fonction de répartition
3. Dispatching

La fonction de répartition (dispatching) :

  • Définit le contexte du processus sélectionné
  • Change son état en exécution
  • Charge l'état du processeur enregistré de son PCB dans le processeur

Visualisation du cycle de changement de contexte

Processus A en cours d'exécution
              │
              ▼ (Interruption)
    ┌─────────────────────────┐
    │ Sauvegarde du contexte A│
    │ dans le PCB de A        │
    └─────────────────────────┘
              │
              ▼
    ┌─────────────────────────┐
    │ Ordonnanceur sélectionne│
    │ le prochain processus B │
    └─────────────────────────┘
              │
              ▼
    ┌─────────────────────────┐
    │ Dispatcher charge le    │
    │ contexte de B depuis    │
    │ son PCB                 │
    └─────────────────────────┘
              │
              ▼
Processus B en cours d'exécution
        

Implémentation typique d'un PCB

   
Structure PCB en C C
// Structure simplifiée d'un PCB (Process Control Block)
typedef struct PCB {
    // Identification et état
    int pid;                          // Identifiant unique du processus
    enum { NEW, READY, RUNNING, WAITING, TERMINATED } etat;
    
    // Sauvegarde du contexte CPU
    uint32_t pc;                       // Compteur de programme
    uint32_t sp;                       // Pointeur de pile
    uint32_t registers[16];             // Registres généraux
    uint32_t status_register;           // Registre d'état
    
    // Informations d'ordonnancement
    int priorite;                       // Priorité du processus
    int quantum;                        // Quantum de temps alloué
    struct PCB* suivant;                // Pour les files d'attente
    
    // Gestion mémoire
    void* page_table;                    // Table des pages
    uint32_t limite_base;                // Registre de base
    uint32_t limite_taille;               // Registre de limite
    
    // Informations comptables
    time_t temps_creation;                // Heure de création
    time_t temps_cpu;                     // Temps CPU utilisé
    time_t temps_attente;                  // Temps d'attente total
    
    // E/S et fichiers
    int fichiers_ouverts[256];            // Descripteurs de fichiers
    int nb_fichiers;                       // Nombre de fichiers ouverts
    
} PCB;
 Exercice pratique

Analyse de changement de contexte

 Niveau : Intermédiaire

On considère deux processus P1 et P2 dans un système avec un seul CPU. P1 est en cours d'exécution quand une interruption matérielle se produit.

Questions :

  1. Quelles informations du processus P1 doivent être sauvegardées et où ?
  2. Quel est le rôle du PCB dans cette situation ?
  3. Si l'ordonnanceur décide de passer à P2, que doit faire le dispatcher ?
  4. Décrivez les étapes complètes du changement de contexte, en précisant ce qui se passe dans les PCB de P1 et P2.
Points clés à retenir
  • Un processus est représenté dans le noyau par deux structures : le contexte de processus (ressources) et le PCB (état d'exécution).
  • Le contexte de processus contient l'espace d'adressage, les informations mémoire, l'état des fichiers et les données d'interaction.
  • Le PCB (Process Control Block) est la représentation interne du processus pour le système d'exploitation.
  • Le PCB contient : état, compteur de programme, registres, informations d'ordonnancement, gestion mémoire, comptabilité, E/S.
  • Lors d'un changement de contexte, l'état CPU est sauvegardé dans le PCB du processus interrompu.
  • L'ordonnanceur sélectionne le prochain processus à exécuter en consultant les PCB.
  • Le dispatcher charge le contexte du nouveau processus depuis son PCB.
  • Le PCB est une structure de données cruciale pour la multiprogrammation et l'ordonnancement.

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.