加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

X86系统的地址空间总结

发布时间:2016-09-19 18:32:32 所属栏目:Linux 来源:站长网
导读:通常X86系统中会存在四大地址空间:进程地址空间、内核地址空间、物理地址空和PCI地址空间。这几大 地址空间有些是硬件领域的相关内容,例如PCI地址空间,PCI H

通常X86系统中会存在四大地址空间:进程地址空间、内核地址空间、物理地址空和PCI地址空间。这几大 地址空间有些是硬件领域的相关内容,例如PCI地址空间,PCI Hole;有些是软件研发需要了解的。这几大地 址空间有什么不同?他们之间是如何联系在一起的呢?

下图是进程地址空间、内核地址空间以及物理地址 空间之间的联系,下面对几大地址空间的联系进行阐述。

X86系统的地址空间总结

进程地址空间大家比较熟悉,很多人都知道通过虚拟内存机制,在32位平台上每个进程都可以获得4GB大小 的地址空间。在32位Linux系统中,高1GB空间是每个进程共享的内核地址空间,0~3GB的空间是每个进程独享 的地址空间。进程地址空间通过页表与物理地址空间建立联系,为了减少这种映射带来的开销损失,X86处理 器硬件提供了TLB页表Cache。由于访存具有很高的时空局部性,因此TLB Cache的命中率很高,为虚拟内存机 制的工程应用奠定了基础。从硬件上讲,进程虚拟地址映射最重要的模块是MMU,只有拥有MMU的处理器才可以 支持虚拟地址机制。从软件上来讲,虚拟地址最重要的是页表管理。操作系统需要为虚拟内存建立页表,当 TLB Cache Miss的时候,处理器会产生中断,然后进行页表映射,并且加载页表。在进程的用户空间,很多时 候也希望直接对PCI的设备内存空间直接进行操作,例如很多应用程序想直接操作显卡内存,获得性能上的优 势。为了达到这种目的,需要将处理器域PCI设备内存地址映射至进程地址空间。在Linux中提供了mmap函数实 现IO地址与虚拟地址之间的映射。这种映射本质上与物理内存的映射是一样的,同样需要建立页表。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读