0
各スレッドには独自のスタックがあるため、次のような状況ではどうなりますか?コンテキストスイッチがスタックオーバーフローを引き起こす可能性がありますか?
- スレッド1 2スレッドへ
- コンテキストスイッチ非常に深い再帰呼び出しを行い、スレッド2は、ヒープ に大量のメモリを成長
- コンテキストは後1
スレッドに切り替えますステップ3、スタックとヒープの間に衝突がありますか?ヒープ上の新しいチャンクが割り当てられると、スタックごとにチェックされますか?
1)メモリがスタックに割り当てられているとメモリがヒープに割り当てられている:ページ保護とはバグや論理メモリ変換を想定していない
「スタックがヒープに向かって成長し、満たされたときにオーバーフローする」という古典的なモデルは、マルチスレッドのためにきれいに動作しません。理由は簡単です、複数のスタックがあります。仮想メモリーとページングがある場合、通常の解決策は、各スタックの下にアクセスすると例外を発生させる「保護ページ」を割り当てることです。 – EOF
コンテキストの切り替えには、コンテキストをどこかにプッシュすることが含まれます。おそらくスタック、おそらくスレッド記述子なので、質問に対する答えは実装固有です。スタックに達していれば、終了します。 – mah
私はかなり "スタックがヒープに向かって成長する"ことは間違っていると思います。それはMS-DOSやおそらくWindows 3.1でも当てはまりました。 – immibis