pci hole -- 被吞噬的内存

参见wiki: http://en.wikipedia.org/wiki/PCI_hole

PCI 空洞

  pci 空洞是32位硬件和32位操作系统一个导致计算机显示的内存比实际安装的内存少的一个限制。这部分不可用的内存是由于设备需要地址空间来和cpu以及系统软件通信。32位的硬件一共只有4GB可寻址的地址空间,所以为了让设备有空间可以通信,一个装上了足够内存的机器上的一部分真实的物理内存不得不让位于设备地址空间(这个因机器而异,一般是在2.5至3.5GB之间的空间),这部分内存会被隐藏起来以便为安装上的设备提供空间。

  被隐藏起来的系统内存的数量根据使用的主板和芯片组,BIOS,物理内存的数量,显卡上video RAM的数量,和系统上安装的PCI卡的数量和类型而有很大差异。在32位系统上,安装了4GB物理内存和多张有大显存的3D显卡后,会有1GB以上的内存不可用;在一些主板上,空洞会至少有1GB,无论安装了什么pci卡。

Physical address extension

  PAE技术允许32位操作系统访问36位内存地址,即使单独的应用程序还是限制只能使用32位的地址空间。每一个程序有自己独立的4GB地址空间,而所有的应用程序加起来可以访问64GB的地址空间。

填充内存空洞

  在64位系统上在内存空洞之上和之下的内存上可用的,但是有500到1500MB的内存不可用因为设备请求使用这些地址空间。随着内存价格的下降,这不会是一个太大的问题,但是还是有方法来重新访问这些丢失的内存。

映射设备到4GB以上的地址

映射内存到4GB以上的地址

时间: 2024-08-24 05:06:41

pci hole -- 被吞噬的内存的相关文章

JAVA内存泄露原因解析

1 引言 Java的一个重要优点就是通过垃圾收集器GC (Garbage Collection)自动管理内存的回收,程序员不需要通过调用函数来释放内存.因此,很多程序员认为Java 不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC 或JVM的问题.其实,这种想法是不正确的,因为Java 也存在内存泄漏,但它的表现与C++不同.如果正在开发的Java 代码要全天24 小时在服务器上运行,则内存漏洞在此处的影响就比在配置实用程序中的影响要大得多,即使最小的漏洞也会导致JVM耗尽全

linux内核内存管理(zone_dma zone_normal zone_highmem)

Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中.    Linux内核地址空间划分 通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间.注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的. 1.x86的物理地址空间布局:   物理地址空间的顶部以下一段空间,被PCI设备的I/O内存映射占据,

c语言-遍历pci设备(2)mmio访问

前言 今天其实我在公司也没有做什么,但是昨天就把pcie遍历的mmio形式做了出来,赞扬公司的台湾服务器,至少我可以使用google来去搜索我想要的资料和答案,有一位大神在台湾的论坛上发布了一片博文,针对dos环境下的mmio的方法,在国内通过百度等等方法是无法访问到的,当然最让人失望的是,如果我不开代理,直接输入网址也是无法进入的,可能有很多人觉得你遍历pcie干吗?嘿嘿,那就是告诉你如何通过代码去访问我门电脑里面最底层的设备,这是一种极其需要能力的.好了,不扯皮了,小编带你通过c语言与汇编的

PCI 总线学习笔记

转载请注明出处:http://blog.csdn.net/lg2lh/article/details/8042008 PCI的基本协议这里就不介绍了,由于一般的芯片协议都是集成好的,我仅仅须要大体了解即可,不须要做芯片,我感觉就不须要太了解协议. 这里解说是基于PLX 的9054(9052)芯片为基础的,本人仅仅是入门,望批评指正. 一.地址映射与传输数据 上图中间部分是9054的内部结构图,9054实际上充当了一个"桥"的作用,即所谓的"桥片技术".9054的作用

[转载]PAE ( Physical Address Extension )

转自:http://blog.chinaunix.net/uid-20384269-id-1954602.html 首先,内存访问和管理是一个跨越应用程序,操作系统,硬件平台的一个复杂过程,不能单纯的讲32bit系统就支持4G内存,从而认为这个过程只是OS和内存两者之间的关系 理论上:32位系统,32bit的地址总线位数,寻址空间2^32B=4GB. 64位系统,寻址空间2^64. 至于在实际应用环境中,对于有4G物理内存而OS最多只能识别3G的情况,主要是主板的问题,丢掉的内存被PCI设备占用

使用Hyper-V Server创建Linux虚拟机

通过 Hyper-V 及 Windows Azure 供应 Linux,这是微软改善对开源软件支持情况的一大举措.作为该倡议的一部分,微软的 Linux 集成服务(LIS)团队持续开发着先进的 Linux 驱动,并直接由 Linux 的内核团队进行检查,因此 CentOS.Debian.Red Hat.SUSE 及 Ubuntu 等主要发行版的后续新版本都能直接进行集成. 该集成服务最初是通过微软网站提供下载的.Linux 用户下载并安装这些驱动,并在需要获得支持时直接联系微软.随着驱动的逐渐成

Hugepages详解

IBM的创始人Thomas J. Watson曾经说: "全世界只需要5台电脑就足够了". Microsoft的创始人Bill Gates曾在一次演讲中说:"个人用户的计算机内存只需640K ". Intel创始人之一Gordon Moore曾经说:"当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也会增加一倍". 前面两句话在今天看来实际上是十分荒谬的,而最后那条就是著名的摩尔定律. hugepages的出现同样也是

计算机基础

编程语言.计算机硬件.操作系统之间的关系: 人与人之间沟通需要语言,比如:汉语.英语.法语.德语等等:编程语言亦是如此,比如Python.Java.C.C#.C++等等,而程序员一般设计的软件是不能直接操作计算机硬件的,而是要通过操作系统来操作计算机硬件.  应用程序->操作系统->硬件: 应用程序需要运行在操作系统之上,而操作系统必须运行在支持的硬件之上,三者关系如下图: CPU.内存以及I/O设备都由一条系统总线(bus)连接起来并通过总线与其他设备通信: 主板: 主板又叫主机板(main

linux中如何检测设备驱动模块是否存在

linux系统中的设备驱动是否安装好一般检查几个方面:1.系统日志.嵌入式系统多是直接dmesg一下,看有没有设备关键字相关的出错信息(通用系统可检查/var/log/messages文件).2.已加载的模块.检查模块加载列表中有没有相关设备的模块.      lsmod3.设备列表.检查已加载的设备中有没有相关设备    cat /proc/devices4.设备入口.如果以上检查都正常,还需要检查设备目录下设备入口是否已经创建    ls /dev/xxxx 如果以上检查都正常(驱动模块已经