3 votes

Système d'exploitation à l'intérieur

J'ai trois questions qui me font douter :

  1. Si un thread dans un programme appelle fork() Le nouveau processus duplique tous les threads, ou le nouveau processus est-il monofilaire ?

  2. Si un thread invoque exec() le programme spécifié dans le paramètre à exec() remplacer l'ensemble du processus, y compris TOUS les fils ?

  3. Les appels système sont-ils préemptifs ? Par exemple, un processus peut-il être programmé au milieu d'un appel système ?

4voto

Kerrek SB Points 194696

Pour exec , de man execve :

Tous les threads autres que le thread appelant sont détruits lors d'un execve() .

De man fork :

Le processus enfant est créé avec un seul thread - celui qui a appelé fork() .

1voto

Alexey Frunze Points 37651

W.r.t. #3 : Oui, vous pouvez invoquer un appel système qui rend directement ou indirectement un autre thread prêt à fonctionner. Et si ce thread a une plus grande priorité que le courant et que le système est conçu pour le planifier à ce moment-là, il peut le faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X