200 - processus Flashcards
Un processus est…
Un programme en cours d’exécution par un processeur
3 concepts liés
- Processus : l’exécution en cours d’un programme
- Processeur : celui qui fait l’exécution
- Programme : la suite d’instructions (prédéterminée)
Fondamental d’un processus
Fondamental
* Plusieurs instances d’un même programme
* Chacune de ces instances est appelée un processus
* Chaque processus est autonome et isolé
Exécution d’un processus
Chaque processus a l’impression d’être seul
Un processus
* Progresse de manière séquentielle dans son programme
* Progresse en même temps que les autres
* Ne prend pas en compte l’existence des autres processus
(sauf si c’est programmé exprès)
Problème avec l’exécution d’un processus
Problème
* Un seul processeur (ou un nombre fixe)
* Plusieurs processus à exécuter en même temps
Illusion de parallélisme : multitâche
- Avancer chaque processus un petit peu à la fois
- Changer le processus actif régulièrement (10ms–100ms)
* On parle de changement de contexte
* Le changement est couteux (à ne pas abuser) - Qui décide quel processus devient actif?
* Le système d’exploitation
* En fonction de politiques et de priorités
* On parle d’ordonnancement
Multiprocesseurs et multicœurs
La même idée de base
* Chaque cœur traite un processus actif
* On change les processus actifs régulièrement
Analogie : Cuisinier
Processeur
Analogie : Cuisine
ordinateur
Analogie : recette rédigées sur papier
programme enregistré sur le disque
Analogie : plat en preparation
processus en exécution
Analogie : clients
utilisateurs
Table des processus (ou Process Control Block)
Structure conceptuelle qui regroupe les informations d’un processus
* État du processus
* Registres du CPU : dont CO (PC), PP (SP), et mot d’état
* Info sur le processus : pid, priorité, utilisateurs, statistiques…
* Info sur la gestion mémoire
* Info sur les E/S: répertoire de travail, fichiers ouverts, blocs verrouillés
Où est stockée la table des processus ?
Dans la RAM, dans la section OS car c’est elle qui crée la table
Identification de processus
Chaque processus est identifié par un numéro : le pid
* pid_t getpid(void)
Chaque processus a un parent
* Hiérarchie de processus
* init est la racine de la hiérarchie (pid=1) * pid_t getppid(void)