Cours 1 : Gestion de l'activité =============================== ### Processus #### Notion de processus ##### 1. Définition: - activité/programme en exécution - aspect actif vs. passif (programme/fichier) - unité de travail dans la plupart des sys. ##### 2. Objectif: - exécution concurrente - multiprogrammation - temps partagé #### Quelques aspects des processus - les processus utilisent des ressources - processeur - mémoire - I/O - .. - processus sys. vs. processus util. - le S.E. est responsable de la gestion des processus: - création - destruction - allocation de ressources - ordonnancement - synchronisation - communication inter-processus - .. - processus à multiples flots de contrôle (threads) Implantation d'un processus --------------------------- ##### 1. Eléments consistuants d'un processus: |composante|description| |--|--| | section de texte |source en asm| | compteur d'instructions |position actuelle dans le prog.| | contenu des registres |dans le cache proc.| | pile d'exécution |mémoire dynamique d'exécution| | section des données |variables globales| _Remarque_: 2 processus peuvent exécuter le même programme mais ils ne partagent rien. ##### 2. Bloc de contrôle d'un processus +----------+--------------------+ | pointeur | état du processus | +----------+--------------------+ | numéro de processus | +-------------------------------+ | compteur de programme | +-------------------------------+ | registres | +-------------------------------+ | limites mémoire | +-------------------------------+ | liste des fichiers ouverts | +-------------------------------+ | ... | +-------------------------------+ _PCB: Process Control Bloc_ ###### Contenu d'un PCB - état courant du processus - compteur d'instructions: adresse de la prochaine exécution à exécuter - registres de processeur: doivent être sauvegardés afin de revenir au processus après interruption - .. - informations sur la gestion de mémoire: valeur des registres de base et de limite, tables de pages ou de segments - information de comptabilisatio: temps CPU et réel, limite de temps, etc - information de statut I/O: listes des périphériques alloués ##### Etat d'un processus ![Diagramme d'états](/diagrammeetat.png) _Remarque_: à un instant donné - un processus au plus est en exécution par le processeur - plusieurs processus peuvent être prêts ou en attente ##### Commutation de contexte - c'est la sauvegarde de l'état du processus courant et le chargement de l'état sauvegardé d'un nouveau processus - contexte = **PCB** - cout de la commutation (temps perdu) varie d'une machine à l'autre (sur certaines machines: dispositifs spéciaux pour la copie des registres) : de 1 à 1000 us. - aspect critique de l'efficacité d'un système !! ![Schéma de commutation](/commutation.png) ##### Threads - implémentent les flots d'exécution multiples (processus _multithreadés_ - multithreaded processes) - intérêt: - contrôle centralisé des différentes tâches (un seul processus) par le programmeur - économie de mém. (la plupart des informations du PCB sont communes aux différents threads) ##### Ordonnancement des processus - Objectif: gérer l'accès concurrent aux ressources par les processus - Gestion par files d'attentes - file d'attente des travaux : tous les processus - file d'attente des processus prêts (liste chainée de PCBs) - file d'attente pour chaque périphérique ##### Ordonnanceurs 1. **ordonnanceur** : programme chargé pour gérer l'ordonnancement 2. **ordrdonnanceur à long terme** : dans un contexte de traitement par lots (mode batch) 3. **ordrdonnanceur à court terme** : gère l'allocation du processeur (classique) 4. **ordrdonnanceur à moyen terme** : pour le swap (quand plus assez de mém. dans la mémoire centrale, il retire un processus et le transfère dans le HDD) ##### Problèmes de systèmes interactifs - sur certains systèmes interactifs comme Unix, il n'y a pas d'ordonnanceur long terme (logique) - si trop de processus (en particulier si beaucoup d'util.) la mémoire ne peut plus les contenir tous **Solutions** - "Ejecter" des utilisateurs (bof bof) - swap ##### Ordonnanceur à moyen terme - Régule le _degré de multiprogrammation_ en implémentant un mécanisme de transfert de processus de la mém. vers les unités de stockage et inversement : _permutation_ ou _swap_ - Critères: - taux d'utilisation de la mém. principale (majorité du temps) - dosage entre les processus usant du processeur et processus usant des I/O - Algorithme assez couteux et donc fréquence d'exécution faible (plusieurs sec) ##### Ordonnancement à court terme - fréquence d'exécution élevée (`< 0.1s`) - l'algorithme doit être efficace **exemple**: si temps d'exécution = `0.01s`, alors `9%` du temps perdu dans l'ordonnancement. ##### Processus coopérants - Intérêts: - partage d'information - accélération du calcul - modularité - commodité - interactivité - Requiert des mécanismes permettant aux processus de coopérer - exemple: producteur/consommateur ##### Communication inter-processus - Première solution: mémoire partagée - pas évident dans le cadre général (implantation des mécanismes de protection mém. plus complexe) - impossible dans un contexte distribué - Seconde solution: fournir une fonctionnalité de communication interprocessus (IPC: `InterProcess Communication`) - communication + synchronisation ##### Implantation d'un IPC - Par un système de passage de messages - 2 primitives de base : `send` et `receive` - Implantation logique vs. physique - Implantation physique - mémoire partagée - bus matériel - réseau - Implantation logique - communication directe ou indirecte - communication symétrique ou asymétrique - mise en tampon automatique ou explicite - envoi par copie ou par référence - messages de taille fixe ou variable ##### Nommage - Afin de pouvoir s'envoyer des messages les processus doivent pouvoir s'identifier et donc être nommés - Communication directe - symétrique - `send(proc1,message)` / `receive(proc2,{message})` - asymétrique - `send(proc2,message)` / `receive({id_envoyeur},{message})` - inconvénient: renommage d'un processus lourd à gérer (définition de tous ses liens à redéfinir) - Communication indirecte - utilisation d'une boite aux lettres (port) - `send(A,message)` / `receive(A,message)` - boites aux lettres publiques ou privées - boite privée propriété du processus qui l'a créée qui est le seul habilité à la lire (sauf s'il transmet le droit) - boite publique créée par le système ##### Synchronisation des processus - Passage de message peut être synchrone ou asynchrone (bloquant ou non) - envoi bloquant - envoi non bloquant - réception bloquante - réception non bloquante - Envoi et réception bloquants = rendez-vous ##### Mise en tampon - Que la communication soit directe ou non, les messages sont stockés dans une file d'attente - capacité zéro: revient à envoi bloquant - capacité bornée: envoi bloquant si file pleine - capacité non bornée: envoi non bloquant