• [^] # Re: Ordonnanceur?

    Posté par . En réponse à la dépêche Les promesses de la Native POSIX Threading Library et du prochain Kernel 2.6. Évalué à 10.

    Je vais essayer de t'expliquer en gros. Si jamais je fais des erreurs, les autres me reprendront ! ;-) Alors, un sytème d'exploitation multi-tâches est un logiciel qui gère plusieurs programmes en même temps. Que ce soit sur un ou plusieurs processeurs. De façon schématique on dit qu'un programme se présente potentiellement sous deux formes: 1) Son binaire. Qui est stocké sur le disque-dur ou en mémoire vive pendant son execution. 2) Un processus. Qui correspond à l'execution du binaire. Il est important de noter que chaque processus a son propre espace mémoire à lui. La plupart des systèmes d'exploitations partagent le processeur entre les différents processus, mais Linux, lui, utilise une granularité plus fine car il gère le partage du/des processeur(s) entre des threads. Un thread est un 'sous-processus' qui partage le même espace mémoire que les autres threads que gère le processus principal. Finalement, le scheduleur est le programme qui va donner la main à chacun des threads chacun leur tour suivant certaines données (comme leur priorité, leur age, etc). Le problème, c'est que ce scheduleur doit essayer d'éviter les deadlocks entre les threads (typiquement, un thread doit s'executer avant un autre ou alors ils tentent tous les deux d'acceder à une ressource critique). Et résoudre tout ces problèmes de dépendance est compliqué. L'algorithme proposé par Ingo, lui reste de complexité constante quelque soit le nombre de threads (O(1)). Et il semble marcher plutôt bien. Évidemment, lorsqu'on utilise des threads comme brique de base, il faut pouvoir commuter rapidement d'un processus à un autre (on appelle cela plutôt un 'environnement' car on charge en mémoire l'endroit où en était le processus que l'on redémarre). Il se trouve que la nouvelle implémentation des processus s'adapte particulièrement bien à la commutation de processus (et donc de threads). Voila, j'ai surement dit plein de bétise, mais au moins c'est un début d'explication.