• 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函数时,系统在分配虚拟内存时已经为它分配好了物理内存。

  • 相关阅读:
    MongoDB中常用的find
    MongoDB文档的增删改操作
    我的notepad++
    MongoDB入门知识
    Python基础5-常用模块
    Python基础4
    Python基础3(2017-07-20)
    Python基础2(2017-07-18)
    Python基础1(2017-07-16)
    Python简介(2017-07-16)
  • 原文地址:https://www.cnblogs.com/51qianrushi/p/4294379.html
Copyright © 2020-2023  润新知