タグ付けされた質問 「virtual-memory」

1
TLBとデータキャッシュはどのように機能しますか?
私は試験のために勉強しようとしていますが、TLBとデータキャッシュがどのように機能するかについて混乱していることに気付きました。 TLBは本質的に、最近使用した物理アドレスのキャッシュであることを理解しています。しかし、私は教科書の図(下図)を見ていましたが、何が起こっているのかわかりません。突然物理アドレスを分割し、それを使用してキャッシュのインデックスを作成すると、推測します。しかし、なぜキャッシュとデータを別々に表示するのですか?そして、なぜバイトオフセットがフローティングのままになっているのですか?キャッシュにはデータも保存されるはずです。唯一の目的は、その中にヒットまたはミスがあるかどうかを判断することではないと思います。 私は事前に私の無知をおaびしますが、本はかろうじてTLBを扱っており(ページに少し似ています)、TLBとキャッシュの関係を説明するのにあまり良い仕事をしていません。

1
仮想アドレス空間が物理アドレス空間よりも大きい場合、アドレスマッピングはどのようにメモリに保存されますか?
40の物理アドレスビットを持つシステムで作業しているとしましょう。合計物理アドレス空間(バイトアドレス可能なメモリを想定)はバイト、または1 TiBです。また、仮想アドレスの長さが48ビットの場合、物理メモリ内の場所よりも多くのアドレスが仮想メモリで使用できることを意味します。2402402^{40} 「過剰な」アドレスはハードディスクの場所も参照する可能性があるため、これは理にかなっています。しかし、私が理解していないのは、仮想アドレスと物理アドレス間の変換がどのように行われるかです。VASの場所を物理的な場所にリンクするマッピングがどこかに格納されていると思います。物理的な場所よりも多くの仮想アドレスの場所がある場合、これらすべてのマッピングをメモリに保存するにはどうすればよいですか?少なくとも、各仮想アドレスを格納するために48ビットが必要であり、次に、マップ先の物理的な場所を格納するためにさらに40ビットが必要です。すべての場所をマッピングすると、物理メモリ自体よりも多くのメモリが必要になるため、明らかに、各仮想アドレスの対応する物理アドレスへの1:1マッピングを保存することはできません。 ここで正確に何が欠けていますか?

1
OSのメモリバルーニング
一部のハイパーバイザーは、バルーニングと呼ばれる方法を使用してメモリ使用量を最適化します(少なくともKVMが呼ぶ方法です)。この方法は、VM間のメモリを重複排除し、共通ページをコピーオンライトで読み取り専用に設定します。 これは、fork呼び出しの反対です。 プロセスに対してOSレベルで実装することは可能ですか(同じサイトで複数のタブを持つChromiumでブラウジングするとき、主にメモリの重複を考えていました)、すでに実装されていますか?

1
純粋なデマンドページング中のスワップスペース管理
以下は、OSのホーム割り当てを行っているときに出くわした疑いです。しかし、それは単純なコーディングの質問よりも概念ベースのように思われるので、私は宿題タグがこれに適しているとは思いません。 一定量のRAMとスワップメモリ​​を指定して、同時に実行されている複数のプロセスの純粋なデマンドページングスキームで、スワップスペースに対して次の2つのケースで何が起こるか プロセスでページフォールトが発生し、RAMに使用可能な空きフレームがないため、プロセスのカーネルフレームのチャンクのページの1つをスワップに書き出す必要があります(簡単にするため、コピーは考慮していません) -on-write case)。明示的に、スワップスペースのどこにこのフレームが書き込まれ、そのためにどのデータ構造を更新する必要がありますか? プロセスが特定のページをページインする必要がある場合、それはスワップメモリ​​のどこにあり、その特定のページがスワップに存在するかどうかをどのようにして知るのでしょうか? ご想像のとおり、純粋な需要管理スキーム中にスワップスペースをどのように管理するか、およびどのデータ構造が不可欠であるかを理解することが困難です。回答のリンクを参照していただければ幸いです(「オペレーティングシステムの概念-Silberschatzによる第8版で検索しましたが、質問に対する明確な回答が見つかりませんでした)。

2
クロックページ置換アルゴリズム-すでに存在するページ
クロックページ置換アルゴリズムをシミュレーションするときに、既にメモリ内にある参照が来ても、時計の針はまだインクリメントしますか? 次に例を示します。 4スロット、クロックページ置換アルゴリズムを使用 参照リスト:1 2 3 4 1 2 5 1 3 2 4 5 最初のリストは次のようになります。 -> [1][1] [2][1] [3][1] [4][1] insertの次の参照は1、次に2になります。手は1の後、1の後、2の後を指しますか?つまり、5を挿入すると、時計は次のようになります。 -> [5][1] [2][0] [3][0] [4][0] ?

1
現代の正規表現の表現力
私は最近、主に単語のグループを特別なプロパティと照合する正規表現の課題を提案するWebサイトについて友人と話し合いました。彼は||||||||、数|が素数であるような文字列に一致する正規表現を探していました。そのような言語は、通常であれば、補題をポンプの翻訳が素数のためにあるという事実与えますので、私はすぐにそれが今まで動作しません彼に言われた十分な大きさ、それが存在するのk ≤ pがあるようP + N kは、すべての主要ですN ≥ - 1、よく、これは全くケースしにくい(素数の配分、そのような未知の自明とプロパティを破砕、...)pppk≤pk≤pk \leq pp+nkp+nkp + nkn≥−1n≥−1n \geq -1 しかし、誰かが解決策に付属している:一致しない(||+?)\1+ キャプチャグループに一致するように、この表現しようとする(つまりすることができ||、|||、||||などの上の出現箇所)のn ≥ 2回。一致する場合、文字列で表される数はkで割り切れるので、素数ではありません。それ以外の場合です。k≥2k≥2k \geq 2|n≥2n≥2n \geq 2kkk そして、グループ化と後方参照により、正規表現が理論的な意味で...正規表現よりも実際にはるかに表現力豊かになることが明らかになったので、私は愚かに感じました。今では、実際の正規表現を実行するときに私が知らなかったルックアラウンドやその他の演算子も追加されました。 ウィキペディアによると、文脈自由文法によって生成された言語よりもさらに表現力があります。だからここに私の質問があります: 現代の正規表現エンジンを使用して、(文脈自由文法から生成された)代数言語を表現できますか より一般的な説明、または現代の正規表現で説明できる言語の種類の複雑さの少なくとも上限はありますか? より実用的には、その背後に深刻な理論がありますか、それとも有限オートマトンに基づく実際の正規表現の最初のブロックに実装可能と思われるたびに新しい機能を追加するだけですか? 「モダンな正規表現」は質問が具体的ではないことを知っていますが、少なくとも後方参照を使用することを意味します。もちろん、この「現代の正規表現」言語に対する特定の制限を想定している部分的な回答者がいる場合は、遠慮なく投稿してください。

1
OSカーネルでのページ管理
私は私の古いOS理論の本をいくつか見ましたが、これらのOSの本すべての明白な欠落の1つは、実際に無料の物理ページ(つまり、実際に無料リストを実装するためのアルゴリズム)を追跡する方法であることに気付きました。ユーザーランドのメモリアロケーターがどのように機能するかはよくわかっていますが、物理ページの割り当てとの大きな違いは、物理ページの断片化は問題にならないということです。隣接しているかどうか。断片化の回避はユーザーランドアロケーターの主要な懸念事項の1つであるため、物理ページの割り当ては基本的に別の問題のようです。TLBへの圧力を減らすためにスーパーページをサポートしたい場合、これは完全に正確ではないと思います。 私の質問:この問題のために最新の高性能カーネルで使用されている手法は何ですか?また、この問題はNUMAシステムでは著しく複雑になりますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.