純粋なデマンドページング中のスワップスペース管理


12

以下は、OSのホーム割り当てを行っているときに出くわした疑いです。しかし、それは単純なコーディングの質問よりも概念ベースのように思われるので、私は宿題タグがこれに適しているとは思いません。

一定量のRAMとスワップメモリ​​を指定して、同時に実行されている複数のプロセスの純粋なデマンドページングスキームで、スワップスペースに対して次の2つのケースで何が起こるか

  1. プロセスでページフォールトが発生し、RAMに使用可能な空きフレームがないため、プロセスのカーネルフレームのチャンクのページの1つをスワップに書き出す必要があります(簡単にするため、コピーは考慮していません) -on-write case)。明示的に、スワップスペースのどこにこのフレームが書き込まれ、そのためにどのデータ構造を更新する必要がありますか?

  2. プロセスが特定のページをページインする必要がある場合、それはスワップメモリ​​のどこにあり、その特定のページがスワップに存在するかどうかをどのようにして知るのでしょうか?

ご想像のとおり、純粋な需要管理スキーム中にスワップスペースをどのように管理するか、およびどのデータ構造が不可欠であるかを理解することが困難です。回答のリンクを参照していただければ幸いです(「オペレーティングシステムの概念-Silberschatzによる第8版で検索しましたが、質問に対する明確な回答が見つかりませんでした)。


3
筋金入りの素晴らしいCSの質問!
Dave Clarke

回答:


8

この質問に答えるために、いくつかの前提条件を理解します。純粋なデマンドページングは​​、ハードウェアサポートなしでは実現できません。すべての最新のコンピューターアーキテクチャはページングをサポートしていますが、実装の詳細はさまざまです。

x86プロセッサは、ページアドレステーブルと呼ばれるものを使用して、仮想アドレススペースとページマッピング、およびアクセス権に関するビットを追跡します。さらに、そのページが物理メモリに存在するかどうかに関係します。違反は、OSによってトラップされるページ違反をトリガーします。

詳しくは、こちらの記事をご覧ください

ページスワッピングの質問に答えるには、最初にオペレーティングシステムがどのプロセスでどのページが使用され、どのように割り当てられているかを追跡する方法の質問にアクセスする必要があります。そのために使用できるさまざまなデータ構造があります。フレームが割り当てられているかどうかを示すフラットビット配列は一方向です。リンクされたリストまたはスタックは別です。純粋なデマンドページングでは、割り当てられたページは、割り当てられたときに実際には存在するものとしてマークされません。これには、プロセスが実際に書き込むまで、物理RAMが確保されないという効果があります。それが行われると、ハードウェアはOSがトラップする障害をスローし、すでに割り当てられている仮想ページに割り当てる物理ページがない場合、OSはスワッピングアルゴリズムを使用します。

ページフレームの割り当ての詳細については、ここを参照してください。そこでは、いくつかの適切なデータ構造の一般的な概要が表示されます。

ページ割り当てに適したアルゴリズムを実装したら、スワッピング用にディスク領域を割り当てる別のアルゴリズムを選択する必要があります。一例として、ウィンドウズは歴史的にページスワッピングのためにファイルシステムのフラットファイルを使用してきました。割り当てられたページを追跡しているデータ構造の各ノードには、ファイル内のオフセットへの関連付けられたポインタがあり、ディスク内のページの位置を示していると思います。Unixライクなオペレーティングシステムでは、ファイルシステムレイヤーがないため、ページスワッピングに個別のパーティションを使用しており、これはおそらく高速です。

スワッピングアルゴリズムのデータ構造と割り当てアルゴリズムのデータ構造を分離することも可能ですが、この2つは関連しているため、これはおそらく行われません。

私がそれを扱った相対的な簡潔さにもかかわらず、それがあなたの質問に答えることを願っています。オペレーティングシステムについて学ぶ最良の方法は、趣味のOSの作成を特に扱い、優れたチュートリアルを提供するwiki.osdev.orgやwww.osdever.netなどのサイトで見つかる、時々厄介なアーキテクチャ固有の詳細に飛び込むことです。そのような詳細について。


ええ、今では、データ構造などの詳細がOS間で大きく異なる場合があることを理解しています-osdev.orgへのリンクに対して+1!
TCSGrad
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.