Plus exactement le multitâche préemptif avec l'algorithme round robin (cas classique, la plupart des appareils ont un fonctionnement très proche) fonctionne comme suit.
Le CPU ne peut exécuté qu'une instruction à la fois, mais le CPU ne fait pas que de l'exécution d'instruction. Il possède aussi des timers ou des entrées / sorties qui sont indépendantes des instructions qu'il exécute. C'est du parallélisme vrai au niveau électronique.
Le noyau va enregistrer dans le vecteur d'interruptions du processeur quelques fonctions internes. L'objectif est qu'en cas d'une interruption, ou disons un évènement au niveau du processeur comme l'expiration d'un timer, l'arrivée d'une donnée depuis le réseau, etc. le noyau exécute une fonction pour traiter rapidement cet évènement. Ce traitement suspend l'exécution en cours du programme utilisateur.
Du coup pour réaliser du multitâche, le noyau va configurer toutes les X millisecondes (souvent autour de 10-20) un timer au niveau du processeur. Quand le timer expire, le noyau est appelé pour évaluer quel est le prochain programme à exécuter durant la prochaine fenêtre de temps, et sauvegarder l'état du processus qui venait d'être exécuté. Et ainsi de suite. Comme ces changements se font rapidement, l'utilisateur n'y voit que du feu. Et pourtant ton processeur n'exécute qu'une instruction processeur à la fois.
[^] # Re: Grace aux pauses
Posté par Renault (site web personnel) . En réponse au message comment un ordi avec un seul CPU peut faire du multi tache. Évalué à 10.
Plus exactement le multitâche préemptif avec l'algorithme round robin (cas classique, la plupart des appareils ont un fonctionnement très proche) fonctionne comme suit.
Le CPU ne peut exécuté qu'une instruction à la fois, mais le CPU ne fait pas que de l'exécution d'instruction. Il possède aussi des timers ou des entrées / sorties qui sont indépendantes des instructions qu'il exécute. C'est du parallélisme vrai au niveau électronique.
Le noyau va enregistrer dans le vecteur d'interruptions du processeur quelques fonctions internes. L'objectif est qu'en cas d'une interruption, ou disons un évènement au niveau du processeur comme l'expiration d'un timer, l'arrivée d'une donnée depuis le réseau, etc. le noyau exécute une fonction pour traiter rapidement cet évènement. Ce traitement suspend l'exécution en cours du programme utilisateur.
Du coup pour réaliser du multitâche, le noyau va configurer toutes les X millisecondes (souvent autour de 10-20) un timer au niveau du processeur. Quand le timer expire, le noyau est appelé pour évaluer quel est le prochain programme à exécuter durant la prochaine fenêtre de temps, et sauvegarder l'état du processus qui venait d'être exécuté. Et ainsi de suite. Comme ces changements se font rapidement, l'utilisateur n'y voit que du feu. Et pourtant ton processeur n'exécute qu'une instruction processeur à la fois.