Structure interne des processus : Contexte et PCB
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
- 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
- É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
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ément | Description | Rôle |
|---|---|---|
| Espace d'adressage | Code, données et pile du processus | Contient le programme exécutable et ses données |
| Information d'allocation mémoire | Information concernant les zones mémoire allouées à un processus | Utilisées par l'unité de gestion de la mémoire (MMU) pendant le fonctionnement du processus |
| État des activités de traitement des fichiers | Informations sur les fichiers utilisés, positions actuelles dans les fichiers | Permet de suivre l'état des opérations d'E/S sur les fichiers |
| Informations sur l'interaction du processus | Identifiants des processus parent et enfant, messages interprocessus en attente | Nécessaires pour contrôler l'interaction avec d'autres processus |
| Informations sur les ressources | Informations concernant les ressources allouées au processus | Permet de suivre l'utilisation des ressources (périphériques, etc.) |
| Informations diverses | Informations diverses nécessaires au fonctionnement du processus | Paramètres de configuration, etc. |
Le Bloc de Contrôle de Processus (PCB)
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.

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 :
É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.
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.
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.
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.)
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.
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
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
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 :
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.
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
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 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;Analyse de changement de contexte
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 :
- Quelles informations du processus P1 doivent être sauvegardées et où ?
- Quel est le rôle du PCB dans cette situation ?
- Si l'ordonnanceur décide de passer à P2, que doit faire le dispatcher ?
- Décrivez les étapes complètes du changement de contexte, en précisant ce qui se passe dans les PCB de P1 et P2.
- Informations à sauvegarder pour P1 :
Toutes les informations d'état du CPU doivent être sauvegardées dans le PCB de P1 :
- Le compteur de programme (adresse de la prochaine instruction)
- Tous les registres (accumulateurs, registres d'index, pointeur de pile, etc.)
- Le registre d'état (flags, conditions)
- Ces informations sont essentielles pour reprendre l'exécution plus tard exactement là où elle s'était arrêtée.
- Rôle du PCB :
Le PCB sert de dépôt pour toutes ces informations. Il contient :
- Une zone de sauvegarde pour le contexte CPU
- L'état actuel du processus (qui passera de RUNNING à READY)
- Les pointeurs vers les files d'attente (pour être replacé dans la file prête)
- Actions du dispatcher pour P2 :
Le dispatcher doit :
- Changer l'état de P2 de READY à RUNNING dans son PCB
- Charger le contexte CPU de P2 depuis son PCB (compteur de programme, registres, etc.)
- Mettre à jour les registres matériels avec ces valeurs
- Transférer le contrôle à l'adresse chargée dans le compteur de programme
- Étapes complètes du changement de contexte :
- Interruption : Le CPU interrompt P1 et passe en mode noyau.
- Sauvegarde : Le système sauvegarde le contexte CPU de P1 dans son PCB.
- Mise à jour état : L'état de P1 passe de RUNNING à READY dans son PCB.
- Ordonnancement : L'ordonnanceur examine les PCB des processus prêts et sélectionne P2.
- Dispatching : Le dispatcher charge le contexte CPU de P2 depuis son PCB.
- Mise à jour état : L'état de P2 passe de READY à RUNNING dans son PCB.
- Reprise : Le CPU commence à exécuter P2 à l'adresse indiquée par son compteur de programme.
- 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.