diff --git a/content/01_organisation_memoire.md b/content/01_organisation_memoire.md index 5669754e345b32e397ecf6756e74c91882cdbab9..c2fb323a4240c12aa5abd7c6139ed34ece4dac4f 100644 --- a/content/01_organisation_memoire.md +++ b/content/01_organisation_memoire.md @@ -61,6 +61,3 @@ vers **les mêmes frames.** - Seule la page contenant les valeurs du `PID` et `PPID` est différente entre les 2 processus. - - -- Au moment diff --git a/content/02_ordonnancement.md b/content/02_ordonnancement.md new file mode 100644 index 0000000000000000000000000000000000000000..b0b356602ef2329d31faff3259d6f36f6d9ff256 --- /dev/null +++ b/content/02_ordonnancement.md @@ -0,0 +1,44 @@ +\newpage + +# Ordonnancement + +## Multi-tâches: pourquoi? + +- Sur un OS moderne, des centaines de processus s'exécutent "en même temps" + +Pourquoi? + +- Pour maximiser l'utilisation du système +- Pour que le système soit plus facilement utilisable +- L'utilisateur n'a pas besoin de se soucier si un CPU est disponible ou pas + +## Multi-tâches: comment? + +- Comment gérer un nombre de processus largement supérieur au nombre de CPUs? +- Comment donner l'illusion d'un nombre illimité de CPUs? + +**L'OS crée cette illusion en virtualisant le(s) CPU(s) + + +## Temps partagé (_time sharing_) + +**Le changement de contexte** + +[!Changement de contexte](../figs/context_switch.png) + + +## Ordonnanceur (_Scheduler_) + +L'ordonnanceur exécute continuellement les étapes suivantes: + +1. **Mise en attente** du processus actif (fin du _quantum_ de temps) +2. **Sauvegarde** de son contexte d'exécution +3. **Recherche** du processus éligible ayant la plus haute priorité +4. **Restauration** du processus élu +5. **Exécution** du processus élu + - Le processus est exécuté sur un CPU jusqu'à la fin de son _quantum_ de + temps +6. Retour en 1 + +**Tout se passe comme si le processus préalablement interrompu n'avait pas +cessé de s'exécuter** diff --git a/content/03_execution_programmes.md b/content/03_execution_programmes.md new file mode 100644 index 0000000000000000000000000000000000000000..208bb557ab07879690448abcf89225fe46c3a65b --- /dev/null +++ b/content/03_execution_programmes.md @@ -0,0 +1,9 @@ +\newpage + +# Exécution de programmes + +## `execve` $\Rightarrow$ appel système + +```C +execve (const char *pathname, char *const argv[], char *const envp[]); +``` diff --git a/figs/context_switch.png b/figs/context_switch.png new file mode 100644 index 0000000000000000000000000000000000000000..7aa0af84a21d7b19427aeaf6ae9ebb651fe3daa9 Binary files /dev/null and b/figs/context_switch.png differ