Je ne sais absolument rien du fonctionnement interne d'un système d'exploitation, mais je peux plus ou moins deviner le comportement approximatif de nombreuses fonctions. Une chose que je ne peux pas comprendre, cependant, est le multitâche.
En théorie, le système d'exploitation gère le temps, en accordant le CPU pour de petits intervalles aux différents programmes en cours d'exécution. Mais on ne sait pas comment cela vraiment fonctionne.
Supposons que le système d'exploitation veuille démarrer mon programme. Le code machine est chargé quelque part dans la RAM, à partir d'une certaine adresse. Je suppose alors qu'un saut devrait être effectué à cette adresse, permettant à mon code de s'exécuter. Mais de cette façon, le système d'exploitation ne peut reprendre le contrôle avant que je ne recule.
Fondamentalement, je peux imaginer seulement deux façons de faire ce travail, mais aucune ne semble vraiment appropriée:
Le système d'exploitation peut lire les instructions de la machine que je souhaite exécuter et les émuler au lieu de les exécuter directement. Je suis intentionnellement vague, car je ne sais pas comment cela fonctionnerait, mais il semble que cela ralentirait considérablement le programme.
Alternativement, le système d'exploitation peut attendre que j'effectue un appel système. À ce moment-là, il reprend le contrôle et peut vérifier combien de temps j'ai couru et faire son travail en temps partagé. Cela peut fonctionner, mais cela semble peu fiable, car je pourrais faire un long calcul qui n'implique pas d'appels système et tout bloquer pendant un certain temps.
Il semble donc qu'aucun des deux mécanismes ne fonctionnerait très bien. Comment le multitâche est-il réellement exécuté?
interrupt
INT
instruction. Quelque chose est encore mystérieux pour moi