6

シグナルには別のスタックが必要だと読みましたが、なぜ、どのように実装されていると思いますか?

それらは動的に割り当てられていますか、それとも静的に割り当てられていますか? メモリ割り当てはどのように行われますか? すべての信号で同じですか?

4

2 に答える 2

4

シグナルに個別のスタックが必要な理由は、通常のスタックが破損またはオーバーフローした場合でも、シグナルを実行できるためです。シグナルスタックは通常動的に割り当てられると思いますが、どちらの方法でも実装できます。で新しい信号スタックを設定できますsigaltstack。すべての信号で同じです。

于 2009-05-08T20:10:00.200 に答える
1

別のより難解な理由は、ユーザーレベルのスレッドを作成することです。Ralf Engelschall による論文「Portable Multithreading」を参照してください: http://www.gnu.org/software/pth/rse-pmt.ps。「シグナル スタック トランポリン トリック」を使用してユーザー空間のスレッド化を行う方法について説明します。

于 2010-01-09T06:08:40.920 に答える