S'il n'y a qu'une seule application en cours d'exécution dans le système (et par défaut 100 processus de sommeil), et qu'il fait un appel syscall bloquant (je veux bloquer recv ou bloquer lire). Le noyau Linux supprimera-t-il cette application du pointeur task_t *current
?Blocage des syscalls sans autre chargement dans le système (noyau linux)
Répondre
Vous demandez à l'application en cours de sommeil?
S'il y a des données pour satisfaire la lecture, alors il ne dormira pas - le noyau copiera les données en file d'attente dans votre tampon et reviendra du syscall. S'il n'y a pas de données en attente, le processus dormira. Cela ne dépend pas de l'état des autres processus sur le système. Si tous les processus sont en veille, le noyau fera des choses utiles comme mettre le CPU dans un état de faible puissance, jusqu'à ce qu'une interruption se produise, ce qui pourrait signifier que les données que votre processus attendait peuvent maintenant être disponibles.
Ce n'est pas une donnée à lire. La tâche va dormir. Je demande, est ce que le pointeur 'current' du noyau (pile du noyau) pointe vers cette tâche. – osgx
semble que 'current' pointera vers swapper (pid 0) tâche – osgx