- 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.
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