2

さて、今日はプロセスごとのメモリ ページング/保護をサポートします。私は何年もの間、私たちの OS が現在サポートしている最小の実行単位であるスレッドにページ レベルの保護を提供することで、どのような利点が得られるのか疑問に思っていました。 ソフトウェア トランザクショナル メモリに関するこの質問は、私にとって最前線に戻ってきました。

ページ レベルのスレッド所有権を持つ利点

  • アクセス時にページをロックするための OS サポート
  • 理論的には、OS がスレッドの存続期間にわたって所有権を取得するメカニズムを持っている場合、メモリ破損に対する保護。

欠点:

  • 標準的なロック手法によるデッドロックの検出は、すでに十分に困難です
  • ページレベルの所有権を決定するためのデバッガー/OS サポート

このようなモデルをサポートすることでわかるその他の欠点や利点はありますか?

4

2 に答える 2

1

この種のプログラミング モデルは、プロセスと共有メモリで既に可能です。正当な理由により、あまり使用されていません。プロセス間メッセージの受け渡しは、はるかに安全であり、理由付けが簡単です。

于 2010-05-18T13:32:26.323 に答える
1

スレッドごと、ページごとのメモリ保護を使用して、並列ガベージ コレクションを効率的に実装できます。

解決すべき問題は、メモリの領域を収集するために、ガベージ コレクターがその領域への排他的アクセスを必要とすることです。そうしないと、他のスレッド (いわゆる「ミューテーター」スレッド) が、存在しないオブジェクトを読み書きできてしまいます。一貫した状態 (たとえば、 oldspace から newspace へのコピー途中) 。

スレッドごとのメモリ保護により、ガベージ コレクタはメモリ領域へのアクセスを制御できるため、コレクタ スレッドだけがアクセスできます。他のスレッドがメモリの領域にアクセスしようとすると、コレクターが処理できるセグメンテーション違反が発生します (たとえば、コレクターがその領域で終了するまでスレッドをブロックするなど)。

于 2016-02-09T13:47:36.730 に答える