1

Linuxは、I / Oポートを介したデバイスへの読み取り/書き込みと比較して、周辺機器のメモリへのmmapの違いを認識しているかどうか疑問に思いました。アセンブリクラスで学んだことから、メモリアドレス指定と同じ観点からI/Oポートアドレス指定をほぼ検討しました。ですから、デバイスが接続されているポートのI / Oに接続するのかどうか疑問に思っていたと思いますが、同じことがそのデバイスのメモリに影響を及ぼしているのでしょうか。

ありがとう

4

3 に答える 3

2

I/Oポートはメモリではありません。一部のハードウェア(グラフィカルカードなど)は、I / Oポートバスだけでなく、メモリバスを介してインターフェイスされます。

メモリインターフェイスを備えたハードウェア(つまり、CPUに対するメモリの範囲と見なされる)の場合は、を使用できますmmap

X11サーバーXorgは非常に頻繁にグラフィカルカードをmmapしています。

于 2012-04-11T05:21:03.720 に答える
1

OPは3つのことを混乱させていると思います。

  • mmap()は、アプリケーションプログラムがページレジスタやMMUに対していくつかの操作を実行するための方法です。

  • メモリマップドI/Oは、ハードウェアアーキテクチャの概念です。I/ O用に個別のバスと操作を使用する代わりに、アドレス空間の一部の領域をI/O操作専用にします。(68Kプロセッサー・ファミリーは、メモリー・マップドI / Oを使用し、IBMのAIX、IIRCも使用します)。

  • DMAは、CPUだけでなく、I / Oデバイスも物理メモリ(の一部)との間で読み取りおよび書き込みを行えることを意味します。

于 2012-04-11T10:24:15.817 に答える
0

vm_area_struct含むvm_flagsフィールド。特別なマッピングの場合、それはVM_PFNMAPまたはVM_IOフラグを含みます。LXRのstructvm_area_structVM_PFNMAP、およびVM_IOの定義を参照してください。

于 2012-04-11T10:06:13.720 に答える