普通x86架构下的Linux内存布局大家应该都很清楚了. 物理内存分为ZONE_DMA, ZONE_NORMAL和ZONE_HIGHMEM三个区, 虚拟内存则一般是0-3G为用户空间, 3G-(4G-1)为内核空间. 那么, x86-64架构下呢?

有多大

首先, 目前大部分的操作系统和应用程序并不需要16EB( 2^64 )如此巨大的地址空间, 实现64位长的地址只会增加系统的复杂度和地址转换的成本, 带不来任何好处. 所以目前的x86-64架构CPU都遵循AMD的Canonical form, 即只有虚拟地址的最低48位才会在地址转换时被使用, 且任何虚拟地址的48位至63位必须与47位一致(sign extension). 也就是说, 总的虚拟地址空间为256TB( 2^48 ).

如何布局

然后, 在这256TB的虚拟内存空间中, 0000000000000000 - 00007fffffffffff(128TB)为用户空间, ffff800000000000 - ffffffffffffffff(128TB)为内核空间. 这里需要注意的是, 内核空间中有很多空洞, 越过第一个空洞后, ffff880000000000 - ffffc7ffffffffff(64TB)才是直接映射物理内存的区域, 也就是说默认的PAGE_OFFSET为ffff880000000000. 从这里我们也可以看出, 这么大的直接映射区域足够映射所有的物理内存, 所以目前x86-64架构下是不存在高端内存, 也就是ZONE_HIGHMEM这个区域的(参考这篇).

如何映射

64位寻址模式是PAE的扩展. 页大小支持PAE所支持的4K和2M, 以及独有的1G. 页表分为4级, 不但扩展了PAE的Page-Directory Pointer Table, 还添加了一个Page-Map Level 4(PML4)映射表. 巧妙之处在于, 这个表不但可以通过扩展来支持以后的完整64位地址空间, 也兼容很有可能出现的第5级页表.

linux 64位 虚拟内存空间,Linux在x86-64下的虚拟内存布局相关推荐

  1. linux 64位内存划分,linux 64位内存空间大小?(linux 64 bits memory space size? [closed])

    linux 64位内存空间大小?(linux 64 bits memory space size? [closed]) 在Linux 32bit中,内核占用1GB的内存,而用户空间将占用剩余的gigs ...

  2. 发行版中的i386/i686/x86-64的区别: i386用来处理32位系统,i686是i386的下集;x86-64用来处理64位系统。 linux发行版中的i386/i686/x86-64各自含

    发行版中的i386/i686/x86-64的区别: i386用来处理32位系统,i686是i386的下集:x86-64用来处理64位系统. linux发行版中的i386/i686/x86-64各自含义 ...

  3. linux 32位中文版,topogun linux|TOPOGUN For linux v2.0.13647中文免费版 64位/32位 - 121下载站...

    topogun是一款独立跨平台的拓补软件,软件可以兼容win.mac.linux等操作系统,小编为大家带来的这个是topogun 2.0 linux版本,适用于32位.64位操作系统,软件拥有强大的友 ...

  4. Mac技巧之查看苹果电脑 Mac OS X 系统是否开启 64 位运算,以及设置 32/64 位模式的方法

    Mac技巧之查看苹果电脑 Mac OS X 系统是否开启 64 位运算,以及设置 32/64 位模式的方法 引用功能被关闭了. 苹果电脑 Mac OS X 10.6 雪豹系统同时支持 32 位和 64 ...

  5. 计算机配置64位,任何电脑都可以装64位系统吗|是不是所有的电脑都可以装64位系统...

    电脑都可以装64位系统吗?相信大家都看到,现在新买的电脑都是自带64位系统,这时候就有部分用户产生了疑惑,是不是所有电脑都能装64位系统?其实不然!操作系统分32位和64位,就说明了有些电脑不能装64 ...

  6. 预装64位Win8/8.1电脑安装64位Win7详细过程(单/双系统)

    http://www.iruanmi.com/install-64bit-windows-7-on-a-pre-installed-win8-pc/ 很多人买了预装64位Win8/8.1的电脑后想重装 ...

  7. win7系统64位系统怎么计算机配置,win7 64位系统对计算机硬件配置有哪些要求

    某些较旧的计算机还需要安装WIN7 64位系统吗?但是尚不清楚对win7 64位系统的计算机硬件配置有何要求!计算机科学网络的编辑将带您回答这个问题,希望对大家有帮助! WIN7 64位系统的优点 w ...

  8. 酷睿i3能当服务器系统吗,i3能装64位系统吗 i3处理器装64位系统行不行

    intel i3处理器可以装64位系统吗?我们知道操作系统对电脑硬件都有一定的要求,32位和64位系统要求不一样,64位系统要求比较高,比如win7 64位系统,需要电脑硬件支持才能安装.那么i3能装 ...

  9. 华为matebooke不能下python_为什么华为matebookE明明是64位配置装Pr之类的64位软件却显示32位无法安装64位?...

    为什么华为matebookE明明是64位配置装Pr之类的64位软件却显示32位无法安装64位? 按照图上来说你已经是64位系统了,装不了或者不能用的并不因为你升级成专业版就可以用,还是一样的情况.至于 ...

  10. 64位汇编之linux系统调用

    linux系统中64位汇编和32位汇编的系统调用主要有以下不同: (1)系统调用号不同.比如x86中sys_write是4,sys_exit是1:而x86_64中sys_write是1, sys_ex ...

最新文章

  1. 使用OpenCV和Imutils构建图像的蒙太奇效果
  2. DNS MX记录一定要放在A记录之前
  3. java多线程的题目_Java多线程一个有趣的题目
  4. 分组后分页_SQL(约束、视图、分页、序列、索引、同义词、创建用户,为用户授权、执行计划的使用 数据的导入导出)...
  5. 恒大汽车:引入腾讯、滴滴等投资者 筹集约40亿港元
  6. JS难点之hoist
  7. 已知三点坐标,求外接圆圆心坐标与半径。
  8. linux+psp+模拟器下载,PSP1.5模拟器全教程+最新版本下载(最终版)
  9. MAC系统中安装labelme
  10. 计算机网络vtp,VTP学习笔记(二)
  11. nuc element i5-8265U黑苹果配置
  12. unity-摄像机跟随
  13. 爬取百度贴吧图片-python-requests
  14. Node - fs(文件系统)
  15. 深圳周边户外活动经典线路----转载
  16. 【毕业设计】大数据分析的航空公司客户价值分析 - python
  17. MySQL关系运算和连接运算_关系数据库系统能够实现的三种基本关系运算
  18. mybatis mysql查询树形结构_mybatis树结构查询的方法
  19. 保持左右脑平衡的方法
  20. linux车机软件市场,车机UI(用户界面)的发展现状

热门文章

  1. Unity Twitter登录接入
  2. 双绞线为什么要绞起来
  3. JavaScript中的NaN
  4. 多线程编程(3):线程池ThreadPool
  5. IntelliJ Idea设置护眼浅绿色背景方法
  6. 李大狗:从 Logo, Basic 到区块链 - Mixin Network 开发者访谈系列 第二期
  7. springboot整合jpa之Specification
  8. 【python 监控报警】python自动发钉钉机器人报警
  9. 基于Docker从零搭建Prometheus监控报警系统
  10. 微信小程序:聊天斗图微信表情包