Linux は仮想メモリを実装するために何を使用しますか?
仮想メモリの実装は、離散的に割り当てられたメモリ管理方式に基づいて行う必要があり、1. リクエスト ページング ストレージ管理方式、2. リクエスト セグメント ストレージ管理方式、3. セグメント ページ ストレージの 3 つの実装方式があります。管理方法。どの方法を使用する場合でも、特定のハードウェア サポートが必要です: 1. 特定の容量のメモリと外部メモリ、2. 主要なデータ構造としてのページ テーブル メカニズム (またはセグメント テーブル メカニズム)、3. ユーザーがアクセスしたときの割り込みメカニズムプログラムのニーズ アクセスされた部分がまだメモリに転送されていない場合、割り込みが発生します; 4. アドレス変換メカニズム、論理アドレスから物理アドレスへの変換。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
1. 仮想メモリの概要
従来のストレージ管理では、複数のプロセスをメモリ内に同時に保持して、マルチプログラミングを可能にします。これらにはすべて、次の 2 つの共通の特徴があります:
したがって、プログラムの動作中に使用されない、または一時的に使用されない多くのプログラム (データ) が大量のメモリ領域を占有し、実行する必要がある一部のジョブをロードして実行できなくなり、これは明らかに貴重なメモリやリソースを無駄にします。
- 1 回限り : ジョブは 1 回実行する必要がありますすべてがメモリにロードされた後、実行を開始します。これにより、次の 2 つの状況が発生します:
1) ジョブが大きくてメモリにロードできない場合、ジョブは実行できません;
2) 多数のジョブを実行する必要がある場合、メモリ不足のため、すべてのジョブで最初に実行できるジョブは少数のみとなり、その結果マルチプログラミングが減少します。- 常駐: ジョブがメモリにロードされた後は、常に メモリ内に常駐し、その一部がスワップアウトされることはありません。ジョブが最後まで実行されるまで。実行中のプロセスは I/O を待機しているためにブロックされ、長期間待機状態になる可能性があります。
1.1 仮想メモリの定義と特性
局所性原則に基づき、プログラムががロードされると、プログラムの 部分をメモリ にロードし、残りを外部メモリに残すことができ、プログラムの実行を開始できます。プログラムの実行中、アクセスされた情報がメモリにない場合、オペレーティングシステム は必要な部分をメモリ に転送し、プログラムの実行を続けます。一方、オペレーティング システムは、メモリ内の一時的に使用されていないコンテンツを外部ストレージにスワップアウトし、メモリに転送される情報を保存するためのスペースを解放します。 このように、システムは
部分読み込み、リクエスト転送、置換機能を提供するため (ユーザーに対して完全に透過的)、ユーザーはあたかも何かがあるかのように感じます。実際の物理メモリよりもはるかに大きいメモリは、仮想メモリと呼ばれます。 仮想メモリの サイズはコンピュータのアドレス構造によって決まります 。メモリと外部メモリの単純な合計ではありません。
仮想ストレージには、次の 3 つの主な特徴があります。
複数回: ジョブの実行中に一度にすべてをインストールする必要はありません。ただし、複数回に分割してメモリにロードして実行することができます。
- スワップ可能性
- : ジョブの実行中にメモリ内に留まる必要はありませんが、ジョブの実行プロセス中にスワップインおよびスワップアウトが可能です。 仮想性
- : ユーザーから見えるメモリ容量が実際のメモリ容量よりもはるかに大きくなるように、メモリ容量を論理的に拡張します。
- 1.2 仮想メモリ テクノロジの実装
仮想メモリにより、 ジョブをメモリに複数回転送できます 。 連続割り当て方法を使用すると、メモリ空間のかなりの部分が一時的または「永続的な」アイドル状態になり、メモリ リソースが大幅に浪費され、論理的にメモリ領域を拡張することができなくなります。記憶容量。
したがって、仮想メモリの実装は、個別割り当て
メモリ管理方法に基づく必要があります。仮想メモリを実装するには、次の 3 つの方法があります。
#リクエスト ページング ストレージ管理
リクエスト セグメンテーション- ストレージ管理
- #セグメント ページ タイプストレージ管理
- どの方法を使用する場合でも、特定の ハードウェア サポート が必要です。一般に必要なサポートには次の側面が含まれます:
- 一定量のメモリと外部ストレージ。
割り込み機構では、ユーザプログラムがアクセスする部分がメモリ上に転送されていない場合に割り込みが発生します。
アドレス変換メカニズム、論理アドレスから物理アドレスへの変換。- 連続割り当て方法 :
- とは、ユーザープログラムに 連続したメモリ空間
- 固定パーティション割り当て: メモリ空間をいくつかの固定サイズの領域に分割し、各パーティションにジョブを 1 つだけロードし、複数のジョブを同時に実行できます。柔軟性が欠如すると、大量の 内部断片化が発生し、メモリ使用率が非常に低くなります。
- 動的パーティション割り当て: 実際のニーズに応じてプロセスにメモリ空間を動的に割り当てます。ジョブがメモリにロードされると、使用可能なメモリがジョブの連続領域に分割され、パーティションのサイズがジョブのサイズに正確に適したものになります。大量の 外部デブリが生成されます。
離散割り当て方法: プロセス を離散分散にロードする 多数へ隣接しないパーティションでは、メモリを最大限に活用できます。
ページング ストレージの概念:ページ、ページ フレーム、およびブロック。
- プロセス 内のブロックは ページまたはページ (ページ) と呼ばれ、ページ番号が付けられます。メモリ内のブロック は呼ばれます。 Page Frame (Page Frame, ページ フレーム = メモリ ブロック = 物理ブロック = 物理ページ ) には、ページ フレーム番号が入ります。 外部ストレージも同じユニットに分割されており、ブロックと直接呼ばれます。プロセスを実行するときは、メイン メモリ空間を適用する必要があります。つまり、各ページにはメイン メモリ内の利用可能なページ フレームを割り当てる必要があり、これにより、ページとページ フレームの間に 1 対 1 の対応関係が作成されます。各ページは連続して保存する必要はなく、隣接しないページ フレームに配置することができます。
- アドレス構造: 最初の部分は ページ番号 P、後半部分は ページ オフセット W です。アドレス長は 32 ビットで、ビット 0 ~ 11 はページ内アドレス、つまり各ページのサイズは 4KB、ビット 12 ~ 31 はページ番号で、アドレス空間は 2^20 まで許容されます。ページ。
- ページテーブル。メモリ内のプロセスの各ページに対応する物理ブロック を が見つけやすくするために、システムはプロセスごとにページ テーブルを確立し、メモリ内のページに対応する物理ブロック番号 ## を記録します。 #ページテーブル 通常はメモリに保存されます。ページテーブルを構成した後、プロセスを実行すると、テーブルを参照することでメモリ内の各ページの物理ブロック番号がわかります。ページ テーブルの役割は、ページ番号から物理ブロック番号への アドレス マッピングを実装することであることがわかります。
#2. 仮想メモリを実装するためのページング管理のリクエスト
ページングのリクエスト現在、仮想メモリを実装するために最も一般的に使用されている方法です。
リクエスト ページング システムは、基本ページング システムをベースにしており、仮想メモリ機能をサポートするために、
リクエスト ページング機能と ページ置換#をサポートします。 # が追加されます。 リクエスト ページング システムでは、ジョブを開始する前に、現在必要なページの一部のみをメモリにロードする必要があります。 ジョブ実行中、アクセスするページがメモリ上にない場合、ページング機能によりアクセスするページを取り込むと同時に、一時的に使用されていないページを外部メモリにスワップアウトすることもできます。メモリ領域を解放するための置換関数。 リクエスト ページングを実装するには、システムが特定のハードウェア サポートを提供する必要があります。
一定容量のメモリと外部ストレージを必要とするコンピュータ システムに加えて、
#。 2.1 ページ テーブルのメカニズム #リクエスト ページング システムのページ テーブルのメカニズムは、基本的なページング システムとは異なります。ジョブが実行される前に開始されません。すべてを一度にメモリにロードする必要があります。
したがって、ジョブの実行プロセス中に、アクセスするページがメモリにないという状況が必然的に発生します。この状況をどのように検出して対処するかが、リクエスト ページングの 2 つの基本的な問題です。システムが解決しなければなりません。この目的のために、次の 4 つのフィールドがリクエスト ページ テーブル エントリに追加されます。 リクエスト ページング システムのページ テーブル エントリ
ページ番号
ステータスビットP | アクセスフィールドA | ビット M | 外部ストレージ アドレス | ## を変更します
2.2 ページフォールト割り込みメカニズム リクエストページングシステムでは、アクセスされるページが存在しないときは常に、メモリでは、ページ欠落割り込みが生成され、オペレーティング システムに欠落ページをメモリに転送するよう要求します。 このとき、ページフォールトが発生したプロセスはブロックされるはずです(ページング完了後にウェイクアップ) メモリに空きブロックがあればブロックを割り当て、そのブロックにロードするページをロードします、対応するページテーブルのページテーブルエントリを変更します。この時点でメモリに空きブロックがない場合、特定のページを削除する必要があります(削除されたページがメモリ期間中に変更された場合は、外部ファイルに書き戻す必要があります)メモリ)。 ページフォルト割り込みも、CPU環境の保護、割り込み原因の解析、ページフォルト割り込みハンドラへの移行、CPU環境の復元など、割り込みとして体験する必要があります。ただし、一般的な割り込みと比較すると、次の 2 つの明らかな違いがあります。
2.3 アドレス変換メカニズム リクエストページングシステムのアドレス変換メカニズムは、ページングのアドレス変換メカニズムに基づいています。システム 、仮想メモリを実装するために特定の機能を追加することによって形成されます。 ![]() アドレス変換を実行するときは、まず 高速テーブルを検索します。:
3. ページ置換アルゴリズムプロセスの実行中に、アクセスするページがメモリにない場合は、そのページを取り込む必要があります。しかし、メモリに空き領域がない場合は、メモリからプログラムまたはデータのページをロードし、ディスクのスワップ領域に送信する必要があります。 3.1 最適な置換アルゴリズム (OPT) ##最適な (最適、OPT) 置換アルゴリズム が選択されました 削除されたページは、今後使用されないか、長期間アクセスされないため、ページ フォールト率を最小限に抑えることができます。しかし、現時点では、プロセスのメモリにある数千のページのうち、将来最も長い期間アクセスされなくなるのを人々が予測できないため、 このアルゴリズムでは不可能です。が実装されますが、最適な置換アルゴリズムは 他のアルゴリズムを評価するために使用できます 。 システムが 3 つの物理ブロックを 1 つのプロセスに割り当てると仮定し、次のページ番号参照文字列を考慮します: 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1 プロセスの実行中、最初に 3 ページ 7、0、1 が順番にメモリにロードされます。プロセスがページ 2 にアクセスしようとすると、ページ フォールト割り込みが発生し、最適置換アルゴリズムに従って、18 回目のアクセス以降にのみ転送する必要があるページ 7 が選択され、削除されます。その後、ページ 0 がアクセスされるとき、ページ 0 はすでにメモリ内にあるため、ページ フォールト割り込みを生成する必要はありません。ページ 3 にアクセスすると、最適な置換アルゴリズムに基づいてページ 1 が削除されます...というように続きます。この図から、最適置換アルゴリズムを使用したときの状況がわかります。
|
以上がLinux は仮想メモリを実装するために何を使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Stock Market GPT
AIを活用した投資調査により賢明な意思決定を実現

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

AISIアシスタントの公式ダウンロードポータルは、公式Webサイトhttps://www.i4.cn/にあり、コンピューターとモバイルのダウンロード、デバイス管理、アプリケーションのインストール、モードスイッチング、画面投影、ファイル管理機能をサポートしています。

9月18日の最新ニュースであるHuawei Harmonyos6は、開発者向けに複数のラウンドのプレビューバージョンプッシュを開始し、最近、初めて試した一部のユーザーに経験資格を開きました。ユーザーのフィードバックによると、現在のシステム名は「次の」サフィックスを表示しなくなり、HarmonyOs6.0に正式に名前が変更されています。 Huaweiは、2023年8月の開発者会議で初めてHarmonyOsNextという名前を提案し、Hongmengシステムに新しい開発段階に入り、真のネイティブの自己開発を実現することを目指しています。 HarmonyOsNextの最もコアブレークスルーは、独立して開発された基礎となるシステムアーキテクチャを完全に採用し、LinuxカーネルとAndroid AOSPコードを完全に除去し、Harmonyosカーネルに基づいてアプリケーションのみを実行することです。

torunwindowsprogramsonlinux、trythesemethods:1.usewinetodirectlyrun.exefiles.2.installplayonlinuxforeasierwinemanagement.3.setupawindowsvirtualmachinewithuatualbox.4.uselutristoinstallandrunwindowsgameshemeshemaseam

tolocateaprogram'sinstallationpathonlinux、使用:1。whichprogram_nameforquick basedlookup.2.whereisprogram_nametofindbinaries、manpages、andsources.3.locatewithdatedbandgrepforfastfilesearches.4.find/-tepef-execable-name "program_name" fort

totakescreenshotsonlinux:1。useprtscnkeyforfullscreen、alt prtscnforactivewindow.2.usegnomescreenshottoolformoreoptions.3.usegnome-screenshotcommandinterminal.4.installandusesscrotorotforlightweight commandercapturing。

if youfacedisplayorformanceSusuesがnvidiadriversonlinuxを使用している場合、次のようになります

useguitoolslikestartupapplicationsinginging、autostartinkde、orsessionandsstartupinxfcetomanageloginprograms.2.manuallyadddddtartupentriesvia.desktopfilesin〜

toallvscodeonlinux、usetheofficialaptrepositoryforautomaticupdates、snapforcross-distribution compatibility、oramanualtarballfulfullcontrol.choosebasedonyoursystemandss。
