2012-06-01 10 views
0

J'essaie de rendre un processus non préemptible. J'ai changé la politique de planificateur à SCHED_FIFO et ai placé le à 99. Dès que le processus commence, en l'absence d'interruptions IO, ai-je l'assurance que le processus ne sera pas préempté par d'autre processus? Le rtprio = 99 est la plus haute priorité ou il y a encore un processus du noyau avec une priorité plus élevée? Et enfin, comment puis-je savoir si un processus a été préempté ou non lors de son exécution?Processus non préemptible sous Linux (2.6.32)

Répondre

0

Il a un autre processus peut préempter le processus le plus élevé rt. Exemple: les processus créés par stop_machine() pour l'effacement à chaud de CPUS, en modifiant le texte du code noyau.

Vous pouvez obtenir les informations de/proc/$ PID/sched pour déterminer si un processus a été préempté ou non. cat/proc/$ PID/sched

nr_switches      :     4197 
nr_voluntary_switches    :     4140 
nr_involuntary_switches   :     57 

Si nr_switches est modifié, le processus a été préempté

Questions connexes