Site du prof de cours et TD
Site du prof de TP – fm(at)irif.fr
50% Projet - 50% Examen - Document autorisés
Projet en binôme : scheduler multicoeur
Soutenance de 20-30 minutes pour les projets
Polycopié
\ra Concurrence et parallélisme
- Processus
- Threads système
- Threads utilisateur
\ra Communication - Pipe/Socket = message
- Structures partagées
- Primitives de synchronisation : lock/mutex/variable de transition
Programmes et processus
Programme : fichier qui contient des instructions.
Lancer un programme revient à charger son contexte d’évolution dans la mémoire, c’est le processus
Processus : structure de donnée en mémoire du système qui contient un espace mémoire et un contexte d’exécution.
Structure d’un programme
2BSD : format .out (\neq ELF sous Linux)
Structure d’un processus
2BSD
Temps partagé et ordonnancement
Temps partagé
Chaque processus attend un time slice entre chaque processus, il y a également un temps d’attente quand on change de processus. Il faut donc un time slice ni trop grand ni trop petit.
Ordonnancement
Appel système
spawn
:fork
+exec
fork
: duplique un processus avec le nouveau processus a comme valeur de retour 0
_exit
: termine un processus, transformation en zombie qui contient un code qui sera récupérer quand on tuera le zombie
exit
:fflush(NULL); _exit
execve
: Exécute un programme, le processus est remplacé par le programme appelé
wait
: Permet de se synchroniser avec un autre processus en attendant qu’il meure
En principe, on fait fork
+ exec
dans le fils.