204 lines
7.1 KiB
Markdown
204 lines
7.1 KiB
Markdown
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
|