シグナルには別のスタックが必要だと読みましたが、なぜ、どのように実装されていると思いますか?
それらは動的に割り当てられていますか、それとも静的に割り当てられていますか? メモリ割り当てはどのように行われますか? すべての信号で同じですか?
シグナルに個別のスタックが必要な理由は、通常のスタックが破損またはオーバーフローした場合でも、シグナルを実行できるためです。シグナルスタックは通常動的に割り当てられると思いますが、どちらの方法でも実装できます。で新しい信号スタックを設定できますsigaltstack
。すべての信号で同じです。
別のより難解な理由は、ユーザーレベルのスレッドを作成することです。Ralf Engelschall による論文「Portable Multithreading」を参照してください: http://www.gnu.org/software/pth/rse-pmt.ps。「シグナル スタック トランポリン トリック」を使用してユーザー空間のスレッド化を行う方法について説明します。