Pile de signal

J’ai lu que les signaux doivent avoir une stack séparée, pourquoi et comment pensez-vous qu’il est implémenté?

Sont-ils alloués dynamicment ou alloués de manière statique? Comment se fait l’allocation de mémoire? Est-ce la même chose pour tous les signaux?

La raison pour laquelle les signaux ont besoin d’une stack distincte est que, si la stack normale est corrompue ou déborde, le signal peut toujours être exécuté. Je pense que la stack de signaux est généralement allouée de manière dynamic, mais elle pourrait être implémentée dans les deux sens. Vous pouvez définir une nouvelle stack de signaux avec sigaltstack . C’est la même chose pour tous les signaux.

Une autre raison, plus ésotérique, consiste à créer des threads au niveau utilisateur. Voir le document “Multithreading portable” de Ralf Engelschall: http://www.gnu.org/software/pth/rse-pmt.ps . Il décrit comment “l’astuce de trampoline de stack de signal” est utilisée pour effectuer un threading dans l’espace utilisateur.