zoukankan      html  css  js  c++  java
  • linux内存管理子系统

    一、Linux内存管理模型
      1、虚拟地址与物理地址的映射
      2、物理地址的分配
    二、虚拟地址与物理地址的映射
      1、虚拟地址空间分布
        32位处理器有32根地址总线,可访问4G的物理空间。其中有0-3G为用户程序空间,剩下3-4G为内核空间。内核空间又分为如下四个部分。
        A、直接映射区:3G-3G+896M
                    该部分物理地址和虚拟地址之间的关系是很简单的线性关系。896这个数字很特殊,小于896M的空间称为低端内存空间,大于896M的空间为高端内存空间。
        B、vmalloc区:
          既可访问低端内存空间,又可访问高端内存空间。
        C、永久映射区:
          专门用来访问高端内存空间。
        D、固定映射区:
          和特殊的寄存器建立关系,其虚拟地址和物理地址的关系往往是固定的。
      2、虚拟地址与物理地址之间的映射
        这部分内容详见裸机部分MMU的总结。
    三、物理内存分配(转自国嵌论坛)
      1、一般来说,在调用malloc函数、new函数等时会分配,但是linux略有不同。Linux采用的是虚拟地址管理,当分配到一段虚拟内存时,并不会分配物理内存与之对应。只有当访问这块内存时才会分配物理空间,避免浪费。
      2、当我们去访问这个虚拟地址,他会将其转换为物理地址,此时Linux内核发现没有与之对应的物理内存。于是引发缺页异常,再去看页框(页帧)有无空闲的物理内存,有的话就分配空闲的物理内存与虚拟地址建立对应关系。
      3、凡是缺页异常的都是先得到虚拟地址,并没有得到实际的物理内存。
      4、当在内核中调用kmalloc函数时,系统在分配虚拟内存时已经为它分配好了物理内存。

  • 相关阅读:
    Java上等价类划分测试的实现
    软件测试の因果图法的测试运用
    display: block; 和 display: inline; 的区别
    CSS实现垂直居中
    CSS中实现水平居中
    HTTP头部信息
    HTTP PUT方法和POST方法的区别
    理解 ajax xhr jsonp
    深入理解JavaScript系列
    Angular 1.x 指令笔记
  • 原文地址:https://www.cnblogs.com/51qianrushi/p/4294379.html
Copyright © 2011-2022 走看看