zoukankan      html  css  js  c++  java
  • Linux高端内存

    Linux高端内存是针对物理内存来说的,虚拟内存没有高端这个概念。Linux系统将虚拟内存分为两个部分,即用户地

    址空间和内核地址空间,对于32位系统来说,虚拟地址空间为4GB,其中用户空间范围为0-3GB,内核空间范围为

    3-4GB。Linux将3GB开始的内核虚拟地址空间的896M地址直接映射到物理地址空间的0-896M,这部分是永久性映

    射,剩下的128M则可根据需要进行动态映射,也称临时性映射。如果没有动态映射,那么1GB的内核虚拟地址空间最

    多只能访问1GB的物理内存,那么如果物理内存大于1GB,就会有一部分物理内存无法被内核访问到,显然不是我们

    想要的。因此,对于32位系统来说,高端物理内存是内核虚拟地址空间后128M可动态映射使内核得以访问的物理内

    存,用户空间虚拟地址也是映射到这部分物理内存。下面这个图解释了这一情况:

                ________________ _____                    
               |Other KernelData|___  |  |                |
               |----------------|   | |__|                |
               |     Kernel     |  |____|   Real Other   |
      3 GB --->|----------------|       |   Kernel Data  |
               |                |      |                |
               |              __|_\_\____|__   Real       |
               |      Tasks     |      |     Tasks      |
               |              __|___\_\__|__   Space      |
               |                |      |                |
               |                |      |----------------|
               |                |       |Real KernelSpace|
               |________________|       |________________|
          
               Logical Addresses          Physical Addresses

    从上面的图我们可以领悟到,只有在物理内存大小超过了内核虚拟地址空间的时候,才会存在高端内存,否则内核虚

    拟地址空间的大小已经使其足够访问所有的物理内存了。

     

    Linux内存管理涉及大量的内容,要深入理解可以搞一些大部头的书籍来阅读。

     

    推荐一些写得比较清晰的文章:

    A Clarification on Linux Addressing

    Linux Memory Management

    Linux 虚拟内存和物理内存的理解

     

  • 相关阅读:
    一些专有名词词汇
    UE、UI、 IA和IxD傻傻分不清
    关于SNMP4J取值乱码解决方法
    个人推荐
    软件系统分类
    Ext 4.2树节点搜索功能
    android picke ui
    android 滚轮
    一、dialog.show()引起的android.view.WindowManager$BadTokenException错误
    fragment getactivity 为null解决
  • 原文地址:https://www.cnblogs.com/woshiweige/p/4521271.html
Copyright © 2011-2022 走看看