Aller au contenu

1NSI : OS - Contexte d'Exécution d'un Processus & Switching⚓︎

De quoi parle-ton?⚓︎

Un OS multitâche exécute chaque processus dans un environnement mémoire cloisonné et protégé. Un processus ne peut lire et écrire des données en mémoire que dans la zone que l'OS lui a dédié. L'OS garantit qu'aucun autre processus en cours d'exécution ne pourra lire, ni modifier ses données.

Rappelons qu'un processeur dispose de plusieurs registres (RI, AC, CC, ..), un Compteur Ordinal (/PC - Program Counter / Instruction Pointer) et une UAL pour l'exécution des instructions. Lorsqu'un processus est exécuté, ce sont ses instructions qui occupent les registres et la mémoire interne du processeur.

Pour simuler la sensation de simultanéité, l'OS est amené à régulièrement interrompre l'exécution d'un processus P1, pour exécuter un autre processus P2, puis interrompre P2 pour exécuter un troisième processus P3, etc.. À un moment donné, il faut revenir à l'exécution de P1, ce qui suppose que l'on reprenne exactement à l'endroit où il s'était arrêté: Les registres de P1 sont ré-initialisés dans l'état précis où ils se trouvaient lors de son interruption. C'est pourquoi lors d'une interruption d'un processus, l'OS doit sauvegarder en mémoire l'état précis de tous ses éléments volatiles, pour lui permettre de reprendre précisément dans cet état.

Contexte d'Exécution⚓︎

Contexte d'Exécution / Execution Context

Un Contexte d'Exécution / Execution Context 🇬🇧 désigne l'ensemble de tous les éléments volatiles liés à l'exécution d'un processus. Ils seront sauvegardés en l'état lors de l'interruption d'un processus, et restitués en l'état lors de sa réactivation.

Info

  • Les Processus sont des processus lourds.
    • Ils disposent d'un Espace d'Adressage (mémoire) dédié : Ils ont gros contexte
  • Les Threads sont des processus légers :
    • Ils partagent leur mémoire entre threads d'un même processus : communication et coordination faciles
    • Moins de ressources lors de la Création : petit Contexte

Commutation de Contexte / Changement de Contexte / Context Switching⚓︎

Commutation de Contexte / Changement de Contexte / Context Switching

On appelle Commutation de Contexte / Changement de Contexte 🇫🇷 / Context Switching 🇬🇧 l'opération de remplacement d'un contexte d'exécution par un autre, et de recopie en mémoire de chaque contexte écrasé.

Info

  • Les processus (lourds) ont un changement de contexte plus lent
  • Les threads / processus légers ont un changement de contexte plus rapide

Le PCB - Process Control Block⚓︎

Bien que pouvant varier selon les implémentations, voici, pour le plaisir de la culture , quelques uns des éléments que l'OS doit conserver à l'interruption d'un processus et restituer lors de sa réactivation, dans une structure de données du noyau, appelée le PCB - Process Control Block 🇬🇧 / Bloc de Contrôle des données contextuelles d'un Processus4.

  • Le PID - Process ID : un numéro d'identification du processus (entier \(\geq 1\))
  • Le PPID - Parent Process ID : un numéro d'identification du processus parent (du processus) (entier \(\geq 1\))
  • L' UID - User ID : un numéro d'identification de Utilisateur/User du processus (entier \(\geq 0\). 0 pour root sur Linux)
  • (Registres de) l'état courant du processus : élu, prêt, bloqué, etc..
  • Le Compteur Ordinal / PC - Program Counter ou IP - Instruction Pointer) du processus: un pointeur vers l'adresse de la prochaine instruction du processus
  • Les autres valeurs de registres : priorité, politesse, temps CPU accumulé depuis l'élection/blocage du processus, données d'identification de l'événement menant à la suspension d'un processus suspendu (pour détecter lorsqu'il faut reprendre), etc..
  • (Le pointeur de) la Pile d'Instructions qui indique la position du prochain emplacement disponible

Mémoire Virtuelle

  • L'espace d'adressage du processus géré par un mécanisme de Mémoire Virtuelle 5 6 par processus: l'emplacement mémoire du code, et des données du processus. L'OS utilise un procédé de traduction d'adresses, mélangeant des composants matériels (MMU - Memory Management Unit) et logiciels, qui permet de traduire les adresses mémoires utilisées par un programme (dites adresses virtuelles) en des adresses physiques (la RAM). L'utilisation de la mémoire virtuelle permet de:
    • d'utiliser de la mémoire de masse comme extension de la mémoire vive
    • d'augmenter le taux de multiprogrammation (nombre de processus simultanés présents dans la mémoire à un instant donné)
    • de mettre en place des mécanismes de protection de la mémoire (verrous)
    • de partager la mémoire entre processus

Descripteurs de Fichiers

  • la Liste des Descripteurs de fichiers : pointeurs vers les ressources utilisées, fichiers, entrées/sorties, etc..
  • la Liste de gestion des Signaux
  • etc..

Références & Notes⚓︎