`
xitong
  • 浏览: 6177945 次
文章分类
社区版块
存档分类
最新评论

十一步让你理解linux的内存映射

 
阅读更多

零:32位操作系统只有4G的虚拟地址空间,linux将最上的1G用于内核虚拟地址。
一:linux将物理内存完全一一映射到内核空间,这样很方便管理内存,任何页面的虚拟地址减去一个0xc0000000的偏移就可以得到物理地址。
二:内核还需要动态管理一些内存用于vmalloc或者设备临时映射等,因此不能将1G的虚拟空间完全一一映射物理内存,因此权衡了一个896M的大小,0xc0000000到0xc0000000+896M的虚拟地址空间一一映射物理内存,从0xc0000000+896M到0xffffffff的地址空间作为动态映射的需要。
三:因此早期的linux内核为了简单起见认为只有一种方式管理物理内存,那就是一一映射,因此大于896M的物理内存将不可用。然而...
四:虽然内核无法直接一一映射896M以上的物理内存,然而内核可以动态映射它们到vmalloc空间,另外也可以将这些大于896M的内存页面分配给用户态,然后将之映射到用户进程地址空间的0xc0000000以下。
五:增加了high-memory的概念,使得linux可以使用896之上的物理内存。所有大于896M的物理内存成为高端内存。
六:增加了high-memory支持的内核可以使用4G的物理内存
七:大于4G的物理内存还是无法使用,因为cpu的地址总线只有32位,地址总线直接作用于物理内存。
八:intel的机器增加了PAE,地址总线可以增加到36位,可以寻址64G。
九:然而必须编译带有HIGHMEM64G的内核。
十:直接换64位机器和操作系统吧。

分享到:
评论

相关推荐

    深入理解Linux内存映射机制

    深入理解Linux内存映射机制

    Linux内存地址映射

    本文以RHEL5.8 i686内核源码版本2.6.18-308(源码下载地址ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/),在IA-32架构CPU为基础,...方便我们更直观和深入理解Linux在x86 CPU地址映射。

    linux arm的高端内存映射详解

    )描述了高端内存原理和源码注释详解,能够清楚的理解什么是高端内存,什么是vmalloc,什么是永久映射,什么是临时映射,需要注意什么,应用场合是怎样,在源码中的前龙后脉都有详细的注释和解释

    linux用户进程内存映射

    详解mmap、malloc在内核态的实现,原理是什么,有详细的描述和加的内核源码注释,可完全理解用户进程申请内存是怎么一回事

    内存映射和DMA

    内存映射和DMA 本章研究 Linux 内存管理的部分, 重点在对于设备驱动作者有用的技术. 许多 类型的驱动编程需要一些对于虚拟内存子系统如何工作的理解; 我们在本章涉 及到的材料来自手头, 而不是象我们曾进入更加复杂...

    linux内存页表创建

    对linux内存页表创建的详细讲解,和本博客前面文章紧密联系,讲解了物理内存、硬件IO、中断是如何映射的,什么是内存,内存映射是怎么一回事,另有例子演示,适合正确理解概念的文章

    基于ARM CPU的Linux物理内存管理

    所以不了解ARM MMU对地址映射的一些概念和要求,就没办法理解内核中的某些数据结构和执行操作。如果对这部分比较了解,可以越过。 第三部分介绍Linux内核对物理内存管理的思想和原理。如果能在原理和框架上理解内...

    Linux内核反向映射机制的详细资料说明

    Cheetah,曾为U-boot社区和Linux内核社区提交过若干补丁,主要从事Linux相关系统软件开发工作,负责Soc芯片BringUp及系统软件开发,喜欢阅读内核源代码,在不断的学习和工作中深入理解内存管理,进程调度,文件系统...

    Professional Linux Kernel Architecture

    内存管理:解释Linux内核中的虚拟内存管理机制、页面置换算法和内存分配器,包括页面映射、内存回收、内存碎片整理等。 设备驱动程序:介绍Linux内核中设备驱动程序的实现方法,包括字符设备驱动、块设备驱动、网络...

    操作系统课程设计实验报告:内存管理

    3、地址映射与 do_fork():深入理解内存页表结构的构建;深刻理解地址变换过程;理解进程地址空间的概念。 二、项目实验环境 1、操作系统:Linux Ubuntu 20.04 64位 2、虚拟化软件:VMware Workstation 17 Pro 3、...

    VMMap 可以用来分析应用程序使用虚拟和物理内存的情况

    除了内存使用图形来表示,VMMap也显示摘要信息和详细进程的内存映射。 强大的过滤和刷新功能允许您确定进程的内存使用情况和应用功能内存成本的来源。 除了为活动的进程,灵活的分析意见,VMMap支持多种形式,包括...

    内存管理内存管理内存管理

    (映射是一个表示一一对应关系的数学术语 —— 当内存的虚拟地址有一个对应的物理地址来存储内存内容时,该内存将被映射。) 基于 UNIX 的系统有两个可映射到附加内存中的基本系统调用: brk:brk() 是一个非常...

    Linux命令搜索工具linux-command.zip

    Linux编程之内存映射 Linux知识点小结 10大白帽黑客专用的 Linux 操作系统 软件工具 超赞的Linux软件 Github仓库Zh En 程序员喜欢的9款最佳的...

    5-1-Linux设备树概述和开发指南.pdf

    1.3.2 内存映射设备 10 1.3.3 非内存映射设备 12 1.3.4 范围(地址转换) 12 1.4 中断如何工作 15 1.5 特殊节点 20 1.6 备注 20 2 基于AM437x平台开发板TL437x-EVM代码举例 21 2.1 led举例 21 2.1.1 设备树...

    探讨Android内存管理

    在看这篇文章之前,需要Linux内存管理基础,推荐先学习一些Linux内存管理基础知识点,这里我们在做一些应用层的优化工作,但从底层理解一些原理性的知识点,对我们有较大帮助。 主要讨论四点内容: Android 内存管理...

    操作系统(内存管理)

    文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半...

    深入理解计算机系统(英文版)

    本书的最大优点是帮助读者理解概念,让读者很清楚地在脑海中构造一个层次型的计算机系统,从最低层数据在内存中的表示(如我们一直陌生的浮点数表示),到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库...

    Linux系统故障诊断与排除--James Kirkland

    4.2.9 分配共享内存时“设备上无剩余空间”错误的故障诊断 101 4.2.10 其他性能工具 102 4.3 小结 103 第5章 针对PCMCIA和USB通过SAN添加新存储 104 5.1 配置 105 5.2 内核模块 106 5.3 通过PCI添加...

Global site tag (gtag.js) - Google Analytics