ユーザ空間から巨大なページ(2 MB)の物理アドレスを取得する必要があります。私はhttps://shanetully.com/2014/12/translating-virtual-addresses-to-physcial-addresses-in-user-space/#codeprocpidpagemapcodeに示されているように、ページマップから通常の4KBページの物理アドレスを取得することができましたが、ページページの物理アドレスを取得するためにはどのようにpagemapを使うべきか分かりません。 pagemapには巨大なページのフレーム番号がどのように表現されていますか?すべての参照、特にコードの一部は高く評価されます。巨大なページの物理アドレスを取得する方法
答えて
同じである必要があります。通常のページと巨大なページの主な違いは、ページテーブルのいくつかのレイヤーです。巨大なページ(少なくともx86上)では、ページテーブルのウォークが早く終了します。
巨大ページのサイズは、通常、2MBの場合は21ビットがすべてゼロになるように、サイズに合わせて調整する必要があるため、一般的なページよりもゼロで終わります。
あなたの読み込みから-EINVALを取得している場合、(例では、バイトの間違った番号を読み取っ)pagemap documentationからこの引用をチェックアウト:あなたの場合のファイルのいずれかからの読み取り
は-EINVAL戻ります が8バイトの境界で読み込みを開始していない(たとえば、ファイルに奇数の バイトを検索した場合)か、または読み込みのサイズが の8バイトの倍数でない場合などです。
しかし同じではないかもしれません。あなたがどんなエラーを出しているのかを教えてください。私はなぜそれが分かるのか分かります。 – ruthafjord
ありがとう、それは現時点で動作するようです。私は、意味のある末尾のゼロがたくさんあるアドレスがあることに気がつきましたが、確かにわかりませんでした。私は盲目的に頼りにしたくない観測でした。再度、感謝します – alex10791
- 1. Linuxカーネル - 物理アドレスを取得する方法(メモリ管理)? Linuxで
- 2. 巨大なガベージオブジェクトの取得
- 3. Linuxのファイルの場所の物理アドレスを取得する方法
- 4. 構造ページから関連するデータの物理アドレスを取得する方法は?
- 5. 大規模な物理メモリ用にIgniteを使用したLinuxの巨大なページの使用
- 6. ImageMagickの作物巨大な画像
- 7. DataGridView + DataTable、巨大なリストを処理する最善の方法?
- 8. WCFで巨大なリクエストを処理する最良の方法
- 9. Smarty 3を使って巨大なページをキャッシュする方法
- 10. JavaScriptの巨大なページ
- 11. 透明な巨大なページ
- 12. Javaでオブジェクトの物理アドレスを取得できますか?
- 13. Python:巨大なシングルラインファイルを処理する方法は?
- 14. IPアドレスへの物理アドレス
- 15. Java:ソースコードの巨大な巨獣をコンパイルする方法
- 16. 巨大なページ番号
- 17. 巨大なPerlコードベースを整理する
- 18. 巨大なビットマップを処理する
- 19. 物理アドレスと仮想アドレス
- 20. リフレクトアセンブリの現在の物理パスを取得する方法
- 21. C言語のpthreadの物理IDを取得する方法
- 22. データベースにシステムの物理アドレスを挿入する方法
- 23. アンドロイドクロムブックの物理的な画面の寸法を取得する方法は?
- 24. 物理パスのサーバパスを取得する方法は?
- 25. 画面の物理サイズを取得する方法は?
- 26. 仮想ディレクトリの物理パスを取得する方法
- 27. 仮想ディレクトリの物理パスを取得する方法
- 28. ページ分割 - 仮想アドレス、物理アドレス、マッピング - 考慮事項
- 29. 巨大なCSVファイルから情報を取得するための巨大なXMLファイルの解析
- 30. C/C++でVXworksの物理アドレスにアクセスする方法は?
[ページマップのドキュメント](https://www.kernel.org/doc/Documentation/vm/pagemap.txt)を読んだことがありますか?あなたが提供したリンクからも参照されます。特に 'COMPOUND_HEAD'と' COMPOUND_TAIL'を記述するセクション。 – kaylum
私はページマップのドキュメントを見てきましたが、あまり説明しなかった巨大なセクションの下にあります。だからCOMPOUND_HEADとCOMPOUND_TAILによれば、私の2MBのバッファの先頭は頭でなければならないので、私のバッファの最初の4KBの任意の場所は、巨大なページ全体のPFNにマップされるべきですか?どのように値を解釈すればよいですか? PFNの最後に9個のゼロが必要ですか?ビット10以上は、オフセットを拡張する物理メモリのビットと考えていますか? – alex10791