web-dev-qa-db-fra.com

Comment Linux conserve-t-il le contrôle de la CPU sur une machine à noyau unique?

Dans comment Linux "tuer" un processus? Il est expliqué que Linux tue un processus en renvoyant sa mémoire à la piscine .

Sur une machine à cœur unique, comment cela fait-il réellement cela? Il doit exiger le temps de la CPU pour tuer un processus, et si ce processus fait un calcul extrêmement long de fonctionnement sans céder, comment Linux gagne-t-il le contrôle du processeur pendant assez longtemps pour tuer ce processus?

13
Adam Griffiths

Linux et la plupart des OSES modernes utilisent multitâche préventive ce qui signifie que le noyau a un contrôle complet sur le temps que chaque processus est autorisé à exécuter et préemptera un processus s'il fonctionne trop longtemps, contrairement à la fois coopératif multitâche où un processus passera le contrôle chaque fois qu'il aime

Fondamentalement dans le multitâche préventif, le noyau sera tiré périodiquement à partir d'une minuterie, et chaque fois que le noyau est en contrôle (lorsque l'interruption de la minuterie se produit ou un appel système est invoqué), le noyau permettra de sauvegarder le contexte du processus actuel, puis de passer au processus suivant. ' le contexte. C'est ce qu'on appelle un interrupteur de contexte où l'état complet du processus, y compris toutes les informations de thread, les valeurs de registre ... sont enregistrées et restaurées pour que le processus continue à fonctionner à partir du point exact qu'il a été préempté sans même savoir Il n'a pas couru continuellement. Par conséquent, de nombreux processus seront apparaître Pour fonctionner simultanément dans un seul noyau de la CPU, même si en réalité, un processus que 1 est exécuté à tout moment. Le noyau n'est également qu'un processus spécial qui effectue toutes les manipulations de processus et de ressources. Il n'est pas géré à partir d'un noyau séparé juste pour surveiller d'autres processus

Voir aussi Qu'est-ce que cela signifie dire "Le noyau Linux est préemptif"?

11
phuclv

Pour le dire simplement, le noyau est le dictateur absolu* du système. Il contrôle quand Les processus reçoivent des ressources (en étant un noyau multitâche préventif), et des contrôles quoi Ressources qu'il obtient. (Les processus demandent des ressources et le noyau leur donne-leur si elles sont disponibles. S'ils ne sont pas disponibles, les ressources ne sont pas données.)

Être le dictateur absolu, le noyau peut les tuer si elle pense que cela doit.

* Il y a toujours des exceptions et des cas de bord.

0
RonJohn