Content text °COURS TD EXAMENS Système d'exploitation II FSA AGADIR SMI4.pdf
Chap1. Les processus M. Ben Salah Rappel sur la chaine de production d'un programme exécutable : processus Prog.c Prog.o Programme source gcc –c prog.c Compilation édition de lien gcc – o prog.exe prog.o Prog.exe Exécutable sur disk Exécutable en mémoire Prog.exe chargement Qu’est ce qu’un processus ? 2 == > Programme != processus description statique une instance d’un programme en cours d’exécution
La transformation d’un programme écrit dans un langage de haut niveau en un programme dit exécutable, écrit en langage machine s'effectue à l'aide de plusieurs étapes : 1- Création du fichier source : L'utilisateur écris son programme à l'aide d’un éditeur de texte qui crée un fichier sur le Disque 2- Ce fichier source est ensuite compilé à l'aide d'un compilateur dépendant du langage de programmation utilisé et dont le rôle est de vérifier que la syntaxe du langage est respectée et de générer alors l'équivalent du programme source en langage machine : on obtient alors sur disque le fichier objet. 3- Ce fichier objet est ensuite soumis à l'éditeur de liens dont le rôle est de résoudre les références externes, c'est-à-dire par exemple, d'associer les appels système inclus dans le programme à leur adresse dans le système. == > L'éditeur de liens produit sur disque le fichier exécutable. 4- Exécution à la demande de l’utilisateur : Lors de cette étape le fichier exécutable est alors monté en mémoire centrale : c'est l'étape de chargement. Le système alloue de la place mémoire pour placer le code et les données du Programme == > Une fois chargé un programme donne naissance à une entité appelée processus (un même programme peut être exécuté plusieurs fois simultanément == > plusieurs processus) 3 Rappel : Le programme à exécuter est placé en mémoire centrale. Le processeur commence l'exécution du programme : la première instruction de celui-ci a été chargée dans le registre instruction (RI) et le Compteur Ordinal (CO) contient l'adresse de la prochaine instruction à exécuter. Lorsque l'instruction courante aura été exécutée, le processeur chargera dans la registre RI l'instruction pointée par le CO et le compteur ordinal prendra la valeur de l’adresse l’instruction suivante. == > On voit donc qu'à chaque étape d'exécution du programme, le contenu des registres du compteur ordinal évolue 4 Rappel : Chaque processus (programme en cours d’exécution) présent dans le système occupe différentes régions en mémoire. Du point de vue de leur fonctions, on peut distinguer : - une zone de texte (code de la commande), -une zone de données statiques, contenant les données du programme connues dès sa compilation (variables globales ou statiques du C par exemple), - une Pile : Pour stocker les données obtenues en cours d'exécution, le système utilise alors un segment nommé la pile (stack en anglais) : - une pile utilisateur réservée aux variables dynamiques crées au moment de l’exécution (variables locales en C), - une pile système, utilisée lors de l’exécution de fonctions système, - une zone de tas réservée à l’allocation dynamique (par exemple, la fonction new() en C++), -un bloc de contrôle réunissant l’ensemble des informations concernant le processus
● Définition : Un processus est une instance d’un programme en cours d'exécution auquel est associé un environnement processeur (RI,CO ...) et un environnement mémoire appelés contexte du processus. ● Le programme est statique et le processus représente la dynamique de son exécution : Un processus est née suite à l’exécution d’un programme, a une durée de vie, puis meurt. ● l'image de l'état du processeur et de la mémoire au cours de l'exécution d'un programme. ● Lors de l'étape de chargement, le système alloue de la place mémoire pour placer le code et les données du programme et crée la pile d'exécution de ce qui est en train de devenir un processus 5 Qu’est ce qu’un processus ? ● Le contexte d'un processus (contexte d’exécution du processus) est l'ensemble des informations (données) dynamiques qui représente l'état d'exécution d'un processus. Ces données permettent de reprendre l'exécution d'un processus qui a été interrompu. Contexte d’ un processus 6
● BUT : Partager un (ou plusieurs) processeur (ou unité centrale de traitement (UCT), en anglais central processing unit (CPU)) entre différents processus. Le partage d’un CPU dans le temps permet de traiter plusieurs processus en pseudo- parallèle (faux parallélisme) car le CPU n'en effectue qu'un à la fois. == > possibilité de faire plusieurs activités ”en même temps”. Remarque : les SE multiprocessus peuvent assez facilement fonctionner en vrai parallélisme (plusieurs CPU). Pourquoi un processus ? 7 Processeur P1 P2 P3 PN ? ● Plusieurs processus sont prêts à être exécutés, le SE doit faire un choix ➔ Ordonnancement (chapitre ordonnancement des processus) 8 Classement selon une politique d’ordonnancement ordonnanceur P1 B C P B C P B C P B C P B C P P4 P2 P5P3 fil d’attente processus prêts CPU B C P B C P B C P B C P B C P fil d’attente processus bloqués déblocage préemption blocage -L'ordonnanceur permet à tous les processus : - de s'exécuter suivant une politique (ordonnancement) ➔ Algorithme d’ordonnacement - d'utiliser le processeur de manière optimale du point de vue de l'utilisateur. comment ? : à intervalles réguliers, le système appelle une procédure d'ordonnancement qui élit le processus à exécuter. 8 Ordonnanceur