Un process a un certain nombre de donnees qui lui sont propres du genre signal handler, tables des pages memoire, registres, stack frame, etc...
Quand le noyau fait le scheduling, tu sauvegarde certaines de ces donnees quelque part car elles vont etre remplacees par celles du prochain processus(a ce moment t'as aucune idee si le prochain thread sera du meme process qu'avant ou d'un autre process, donc t'es oblige de tout sauver), c'est le context-switch au niveau kernel.
Quand le scheduling se fait en user-mode entre threads, les threads ont un certain nombre de ces donnees en commun, notamment la table des pages memoire, et n'ont pas besoin de sauver/restorer ces donnees car il est certain que le thread schedule sera du meme process, d'ou gain de temps.
[^] # Re: LWPs, my mistake.
Posté par pasBill pasGates . En réponse à la dépêche performances MySQL sous OpenBSD. Évalué à 0.
Un process a un certain nombre de donnees qui lui sont propres du genre signal handler, tables des pages memoire, registres, stack frame, etc...
Quand le noyau fait le scheduling, tu sauvegarde certaines de ces donnees quelque part car elles vont etre remplacees par celles du prochain processus(a ce moment t'as aucune idee si le prochain thread sera du meme process qu'avant ou d'un autre process, donc t'es oblige de tout sauver), c'est le context-switch au niveau kernel.
Quand le scheduling se fait en user-mode entre threads, les threads ont un certain nombre de ces donnees en commun, notamment la table des pages memoire, et n'ont pas besoin de sauver/restorer ces donnees car il est certain que le thread schedule sera du meme process, d'ou gain de temps.