一般的に、ユーザー プロセスは物理アドレスをまったく気にしないため、プロセス仮想アドレスに対応する物理アドレスをユーザー状態から取得する必要はありません。 ユーザーは、DMA がユーザー モードで実行されるシナリオ (DPDK など) など、いくつかのアプリケーション シナリオについて懸念する場合があります。各ページのメモリ使用量やスワップアウトの有無などをデバッグして分析するシナリオもあります。 ユーザー モードから仮想アドレスに対応する物理アドレスを取得するには、プロセスのページ テーブルを調べることはできず、権限もありません。幸いなことに、カーネルはページマップと呼ばれるインターフェースを提供しており、このインターフェースはハードウェア アーキテクチャとは何の関係もありません。 /proc/pid/ の下に pagemap というファイルがあります。各ページに対して 64 ビットの記述子を生成し、物理ページ フレーム番号または仮想アドレス ページに対応する SWAP 内のスペースを記述します。詳細については、次のドキュメントを参照してください。 linux/ドキュメント/管理者ガイド/mm/ページマップ.rst この 64 ビットの説明は次のとおりです。 アーキテクチャが異なれば MMU やページ テーブル形式も異なりますが、ページマップ インターフェイスは特定のページ テーブル形式とは何の関係もなく、抽象化されていると言えます。 次に、スワップの影響を無視し (スワップがオフになっているか、ページが常にピン状態にあると仮定)、仮想アドレスを物理アドレスに変換する DPDK のコード セクションをコピーします。
最後のステップは、キー計算プロセスです。
page & 0x7ffffffffffffffULL はページ フレーム番号 (PFN) を取得し、それをページ サイズで乗算してこのページの開始の物理アドレスを取得し、次に virtaddr % page_size のページ オフセットを追加して最終的な物理アドレスを取得します。 実際に上記の関数を呼び出してアドレス変換を完了してみましょう。
結果は次のとおりです。
カーネル モードでページマップ proc インターフェイスを実装するためのコードは、次の場所にあります。
コア機能は、PTE を pagemap_entry に変換するプロセスです。興味のある方は、ぜひ読んでみてください: ページマップ内のフラグがどのように設定されているかを知るには、赤い線の位置に特に注意してください。 この記事はWeChatの公開アカウント「Linux Reading Field」から転載したものです。以下のQRコードからフォローできます。この記事を転載する場合は、Linux Reading Field 公式アカウントまでご連絡ください。 |
<<: AWSの機械学習クラウドサービスのインスタンスコストが18%下落、今年中国で開始されたばかり
>>: プログラマーの精神修養への道 - 分散システムにおける最も重要なハブとなるかもしれない
私は毎週1つの記事を翻訳していますが、それは簡単な作業ではありません。読むことから、選考、試訳、そし...
過去 2 年間、質疑応答システムはますます頻繁に人々の視界に現れています。これは、以前のフォーラム ...
調査対象となった全世界の企業のうち 13% が「クラウド ライダー」であり、そのうち 10% が中国...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスウェブサイトの構築は簡単...
私はXinさんと年に1、2回コミュニケーションを取っていますが、そのたびにたくさんの新しい驚きがあり...
LVS の紹介LVS (Linux Virtual Server) は、Zhang Wensong ...
在宅勤務が当たり前になるにつれ、多くのネットワーク管理者は、オンサイトレベルと同等かそれ以上のレベル...
1. テンセントは、プラットフォーム上でビジネスを始める方法と、テンセントの助けを借りて5つの障害を...
[[428752]]詳細については、以下をご覧ください。 51CTOとHuaweiが共同で構築したH...
2021年11月3日、「デジタルと現実の融合、新たなチャンスの爆発」をテーマにしたテンセントデジタル...
Dell Technologies クラウド プラットフォーム | VMware Cloud Fo...
iovz は、韓国の SK データセンターにクラウド サーバーを提供しています。このサーバーは中国本...
翻訳者 |李睿校正 |孫淑娟クラウド コンピューティングのコストを削減するには、開発者を含むチーム全...
SEO 業界がポスト PR 時代に入るにつれ、最適化担当者は PR に代わる参照データを見つけること...
クラウドネイティブ アプリケーション設計により、ソフトウェア エンジニアは顧客のニーズを満たすことに...