• [Linux内存]——内核地址空间


    一,为什么需要高端内存
    答:对于32位机器,linux虚拟内存最大为4G,其中3-4G空间是用作内核空间,考虑到如果物理内存大于1G,那么物理内存不能得到完全的映射, 因此,Linux 规定“内核直接映射空间” 最多映射 896M 物理内存,ARM体系架构上有高端内存的概念,不过不是固定在896M以上的区域~

    二,linux内核地址空间

    linux虚拟地址3G到4G的空间为内核地址空间,内核空间是由内核负责映射,他并不会跟着进程改变,是固定的。

    1,3G---3G+896M是直接映射区,该区域的线性地址和物理地址存在线性转换关系:线性地址=3G+物理地址。

    2,3G+896M---3G+896M+120M为动态内存映射区,该区域由内核函数vmalloc来分配,特点是:线性空间连续,但是对应的物理空间不一定连续。vmalloc分配的线性地址所对应的物理页可能处于低端内存,也可能处于高端内存。

    3,接下来4M为永久内存映射区,该区域可访问高端内存。访问方法是使用alloc_page(_GFP_HIGHMEM)分配高端内存页或者使用kmap函数将分配到的高端内存映射到该区域。4,最后4M为固定映射区,该区域和4G的顶端只有4k的隔离带,其每个地址项都服务于特定的用途,如ACPI_BASE等

    注:以上的值不是固定的,在各个不同平台上或者各个不同实现上可能都是不同的~

    Error Value(1 page)
     
    vector table(4 k)
     
    FIXADDR_START
    IO map space
    VMALLOC space
    VMALLOC_OFFSET
    LOW Memory
    Manager sys buffer
    padding
    .data .bss
    .text
    .init data
    pgd
    Boot parameters
    PKMAP_BASE
    *.ko
    user space

  • 相关阅读:
    T-SQL:Varchar和Nvarchar区别(八)
    UI5-文档-4.1-Hello World!
    UI5-文档-4-Walkthrough
    UI5-文档-3-Hello World!
    UI5-文档-2.5-开发混合Web容器
    UI5-文档-2.4-Node.js-Based开发环境
    UI5-文档-2.3-使用SAPUI5工具为Eclipse开发应用程序
    UI5-文档-2.2-使用SAP Web IDE开发应用程序
    UI5-文档-2.1-使用OpenUI5开发应用
    UI5-文档-2-开发环境
  • 原文地址:https://www.cnblogs.com/zhiliao112/p/4251200.html
Copyright © 2020-2023  润新知