zoukankan      html  css  js  c++  java
  • [国嵌攻略][106][Linux内存管理子系统]

    内存管理子系统

    1.虚拟地址与物理地址的映射

    2.物理内存的分配

    Linux虚拟地址空间分布

    设备最后访问的一定是物理地址,但Linux系统中使用的都是虚拟地址。虚拟地址简单的来说就是程序中使用的地址。所以存在虚拟地址到物理地址之间的映射关系。

    Linux系统支持的虚拟地址空间由硬件来决定。例如处理器是32位,那么访问到的虚拟地址空间就是4G。0-3G是用户空间,也就是应用程序空间。3-4G是内核空间,内核空间又被划分为4个部分,第一个部分是直接映射区(3-3.896G),第二个部分是vmalloc区,第三个部分是永久映射区,第四个部分是固定映射区线性区。

    虚拟地址转换为物理地址

    基地址加地址起始部分得到页目录地址,页目录地址加上地址中间部分得到物理页基地址,物理页基地址加上地址最后部分得到物理页中的存储单元。

    直接映射区的虚拟地址就是3G加上物理地址(<896M)。

    vmalloc区的虚拟地址与物理地址没有简单的映射关系,既可以访问低端内存(<896M),也可以访问高端内存(>896M)。

    永久映射区是用来固定访问高端内存(>896M)的。

    固定映射区线性区与特殊的寄存器建立起关系,用来访问固定的寄存器。

    物理内存的分配

    得到虚拟地址时,不一定分配到了物理内存,只有到访问虚拟地址时,才会分配物理内存。

    当程序使用虚拟地址时会产生缺页异常,然后从空闲页框中得到物理内存,例如使用malloc,fork,excute,mmap,vmallc函数。使用kmalloc函数分配虚拟地址时会同时分配物理内存。

  • 相关阅读:
    Linux开机自动启动ORACLE设置
    linux下查找过滤文件内容
    weblogic 修改控制台访问路径
    ASM实例挂载磁盘失败错误日志
    weblogic服务器下一个domain建多个server(端口)
    Oracle Profile
    codeforces_724C_Ray Tracing
    struts2_validate表单验证
    struts2.5.2 通配符问题_亲测有用
    hibernate+struts2
  • 原文地址:https://www.cnblogs.com/d442130165/p/5245514.html
Copyright © 2011-2022 走看看