検索

Linuxのpfnとは何ですか

Mar 24, 2022 am 11:57 AM
linux

Linux では、pfn の正式名称は「ページ フレーム番号」で、これは物理メモリ領域の番号です。 「ページフレーム」とは物理メモリのことで、物理メモリをページサイズの領域に分割し、各ページに番号を付けたもので、この番号がPFNです。

Linuxのpfnとは何ですか

#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。

1. ページフレームとは何ですか?

オペレーティング システムの最も重要な機能の 1 つは、コンピュータ システム内のさまざまなリソースを管理することであり、最も重要なリソースであるメモリは、管理する必要があります。 Linux オペレーティング システムでは、物理メモリはページ サイズに従って管理されます。特定のページ サイズは、ハードウェアおよび Linux システム構成に関連します。4K が最も古典的な設定です。そこで、物理メモリをページサイズごとにページに分割し、各物理メモリ内のページサイズのメモリ領域をページフレームと呼びます。各物理ページ フレームの構造体ページ データ構造を確立して、各物理ページの使用状況を追跡します。カーネルのテキスト セグメントに使用されているか?それともプロセスのページテーブルでしょうか?さまざまなファイル キャッシュに使用されていますか、それともフリーの状態ですか...

各ページ フレームには、1 対 1 で対応するページ データ構造があります。システムは、ページで使用する page_to_pfn および pfn_to_page マクロを定義します。フレーム番号とページ データ構造間の変換の具体的な変換方法はメモリモデルに関係しますが、Linux カーネルの 3 つのメモリモデルについては第 3 章で詳しく説明します。

2. PFN とは何ですか?

コンピュータ システムの場合、その物理アドレス空間全体は、0 から始まり実際のシステムがサポートできる最大物理空間までのアドレス空間である必要があります。 ARM システムでは、物理アドレスが 32 ビットであると仮定すると、物理アドレス空間は 4G となり、ARM64 システムでは、サポートされる物理アドレス ビット数が 48 である場合、物理アドレス空間は 256T になります。もちろん、実際には、このような大きな物理アドレス空間のすべてがメモリに使用されるわけではなく、一部は I/O 空間にも属します (もちろん、一部の CPU アーチには独自の独立した IO アドレス空間があります)。したがって、メモリが占​​有する物理アドレス空間は限られた範囲になるはずであり、物理アドレス空間全体をカバーすることは不可能である。しかし、メモリがますます大容量化している現在、32 ビット システムの場合、4G 物理アドレス空間ではメモリ要件を満たすことができなくなっているため、後で詳しく説明するハイ メモリという概念があります。

PFN はページ フレーム番号の略で、物理メモリのいわゆるページ フレームです。物理メモリをページ サイズの領域に分割し、各ページに番号を付けます。この番号が PFN です。物理メモリがアドレス 0 から始まると仮定すると、PFN が 0 に等しいページ フレームは、アドレス 0 (物理アドレス) から始まるページになります。物理メモリがアドレス x から始まると仮定すると、最初のページ フレーム番号は (x>>PAGE_SHIFT) になります。

PFN の値の範囲は 0----(メモリ サイズ > 12) です。

ただし、物理メモリ マッピングの関係により、物理メモリ アドレス 0 はシステム上の物理アドレス 0 に対応します。例: s3c2440 では、メモリ アドレスは 0x30000000 から始まります。 RAM が接続されている場合、s3c2440 から見ると RAM の 0 アドレスは 0x30000000 であるため、システム内の pfn の値は (物理アドレス - メモリ ベース アドレス) > 12 になるはずです。

ただし、Linux ではすべて仮想アドレスが使用されるため、最初に仮想アドレスを物理アドレスに変換する必要があります。したがって、Linux にはカーネル線形空間の仮想アドレスと pfn を変換するマクロ定義があります。

#define virt_to_pfn(kaddr)	(__pa(kaddr) >> PAGE_SHIFT)   //__pa() 将虚拟地址转化成物理地址  
#define pfn_to_virt(pfn)	__va((pfn) << PAGE_SHIFT)

したがって、pfn は Linux カーネルのページ フレーム番号に対応する必要があります。対応する物理アドレスは単純な変換によって見つけることができます。

物理ページごとに、カーネルはそれを記述する記述子を割り当てます: page。 pfn はページに変換できます。

#define page_to_pfn __page_to_pfn
#define pfn_to_page __pfn_to_page

すべてのページ構造は、管理を容易にするために mem_map に保存されます。

Linux は物理メモリを 4K ページに分割して管理するためです。したがって、MMU もマッチング用のソフトウェアに設定されます。後述。

Linux は、4G 仮想空間をユーザー空間とカーネル空間に分割します。ユーザー空間は 0---3G、カーネル空間は 3G---4G です。ユーザー空間にはカーネル空間からアクセスできますが、カーネル空間にはシステムコールを通じてユーザー空間からアクセスする必要があります。

関連する推奨事項: 「Linux ビデオ チュートリアル

以上がLinuxのpfnとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Linux操作のマスター:実用的なガイドLinux操作のマスター:実用的なガイドApr 12, 2025 am 12:10 AM

Linux操作をマスターする理由は、幅広いアプリケーションシナリオと強力な機能です。 1)Linuxは、開発者、システム管理者、テクノロジー愛好家に適しており、サーバー管理、組み込みシステム、コンテナ化テクノロジーで使用されています。 2)Linuxの学習は、ファイルシステム構造、シェルの使用、ユーザー許可管理、プロセス管理から始めることができます。 3)Linuxコマンドラインは、LS、MKDIR、CDなどのシェルを介してコマンドを実行し、リダイレクトおよびパイプライン操作をサポートするコアツールです。 4)高度な使用法には、バックアップスクリプトなどの自動化されたスクリプトの書き込み、TARコマンド、条件付き判断が含まれます。 5)一般的なエラーには、エコー、セットX、$?を介してデバッグできます。 6)パフォーマンス最適化の提案

Linuxの5つの柱:彼らの役割を理解するLinuxの5つの柱:彼らの役割を理解するApr 11, 2025 am 12:07 AM

Linuxシステムの5つの柱は次のとおりです。1。Kernel、2。SystemLibrary、3。Shell、4。FileSystem、5。SystemTools。カーネルはハードウェアリソースを管理し、基本的なサービスを提供します。システムライブラリは、アプリケーション用の事前コンパイルされた機能を提供します。シェルは、ユーザーがシステムと対話するインターフェイスです。ファイルシステムはデータを整理して保存します。また、システムツールはシステム管理とメンテナンスに使用されます。

Linuxメンテナンスモード:ツールとテクニックLinuxメンテナンスモード:ツールとテクニックApr 10, 2025 am 09:42 AM

Linux Systemsでは、起動時に特定のキーを押すか、「sudosystemctlrescue」などのコマンドを使用することにより、メンテナンスモードを入力できます。メンテナンスモードを使用すると、管理者は、ファイルシステムの修復、パスワードのリセット、セキュリティの脆弱性など、干渉なしにシステムメンテナンスとトラブルシューティングを実行できます。

主要なLinux操作:初心者向けガイド主要なLinux操作:初心者向けガイドApr 09, 2025 pm 04:09 PM

Linuxの初心者は、ファイル管理、ユーザー管理、ネットワーク構成などの基本操作をマスターする必要があります。 1)文件管理:使用mkdir、タッチ、ls rm 3)ネットワーク構成:ifconfig、echo、およびufwコマンドを使用します。これらの操作はLinuxシステム管理の基礎であり、それらをマスターすることでシステムを効果的に管理できます。

sudoを使用して、Linuxのユーザーに高い特権を付与するにはどうすればよいですか?sudoを使用して、Linuxのユーザーに高い特権を付与するにはどうすればよいですか?Mar 17, 2025 pm 05:32 PM

この記事では、LinuxのSudo特権を管理する方法について説明します。重要な焦点は、 /etc /sudoersの安全性とアクセスを制限することです。

LinuxでSSHに2要素認証(2FA)を実装するにはどうすればよいですか?LinuxでSSHに2要素認証(2FA)を実装するにはどうすればよいですか?Mar 17, 2025 pm 05:31 PM

この記事では、Google Authenticatorを使用してLinux上のSSH用の2要素認証(2FA)のセットアップ、インストール、構成、およびトラブルシューティング手順の詳細に関するガイドを提供します。 Enhanced Secなど、2FAのセキュリティ利益を強調しています

TOP、HTOP、VMSTATなどのツールを使用してLinuxのシステムパフォーマンスを監視するにはどうすればよいですか?TOP、HTOP、VMSTATなどのツールを使用してLinuxのシステムパフォーマンスを監視するにはどうすればよいですか?Mar 17, 2025 pm 05:28 PM

この記事では、Linuxシステムのパフォーマンスを監視するためにTop、HTOP、およびVMSTATを使用して、効果的なシステム管理のための独自の機能とカスタマイズオプションを詳述することについて説明します。

パッケージマネージャー(apt、yum、dnf)を使用してLinuxのソフトウェアパッケージを管理するにはどうすればよいですか?パッケージマネージャー(apt、yum、dnf)を使用してLinuxのソフトウェアパッケージを管理するにはどうすればよいですか?Mar 17, 2025 pm 05:26 PM

記事では、APT、Yum、およびDNFを使用してLinuxでソフトウェアパッケージの管理を行い、インストール、更新、および削除をカバーしています。さまざまな分布に対する機能と適合性を比較します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境