MMU

MMU是Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元(英语:paged memory management unit,缩写为PMMU)。
它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。它的功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制;

内存管理单元通常应用在桌面型计算机或者服务器,通过虚拟存储器使得计算机可以使用比实际的物理内存更多的存储空间。同时,内存管理单元还对实际的物理内存进行分割和保护,使得每个软件任务只能访问其分配到的内存空间。如果某个任务试图访问其他任务的内存空间,内存管理单元将自动产生异常,保护其他任务的程序和数据不受破坏。

基本概念
MMU位于处理器内核和连接高速缓存以及物理存储器的总线之间。当处理器内核取指令或者存取数据的时候,都会提供一个有效地址(effective address),或者称为逻辑地址、虚拟地址。应用代码需要使用存储空间时,操作系统通过MMU为其分配合适的物理存储空间。有效地址不需要和系统的实际硬件物理地址相匹配,而是通过MMU将有效地址映射成对应的物理地址,以访问指令和数据。

每条MMU匹配规则所对应的存储器的大小定义为页。通常最小的页设定为4 KB。

为了加快MMU规则匹配的处理过程,有效地址和实际物理地址的对应表通常保存在一块单独的高速缓存中,称为对应查找表(Translation Lookaside Buffer,TLB),TLB和实际物理存储器可以同时进行并行的访问。有效地址的高位作为在TLB进行匹配查找的依据,而有效地址的低位作为页面内的偏址。

TLB可以包含很多个表项(entry),每个表项对应一个MMU的页。操作系统或者应用启动代码必须正确的初始化TLB的所有表项。当应用程序提供的有效地址正好位于某个TLB表项制定的地址范围内时,称为产生了一次TLB命中;如果这个有效地址没有位于任何一个TLB表项制定的地址范围内,称为一个TLB缺失,或者TLB未命中。

========

以下摘自 Windows内核情景分析 一书;

在CPU的页面映射机制中,MMU的作用是:
    根据虚拟地址计算出该地址所属的页面;
    再根据页面映射表的起始地址计算出该页面映射表项所在的物理地址;
    根据物理地址在高速缓存的TLB中寻找该表项的内容;
    如果该表项不在TLB中,就从内存将其内容装载到TLB中;
    检查该表项的PA_PRESENT标志位,如果为1就表示映射的目标为某个物理页面,因而可以访问这个页面,但是需要进一步检查、比较CPU当前对此页面是否具有所要求的访问权限,如果权限不够就使当前指令的执行失败并产生一次页面异常;
    如果PA_PRESENT标志位为0,则说明该虚存页面的映像不在内存中,当前指令的执行因此而失败,CPU为此产生一次页面异常,此时相应的异常处理程序应采取相应的措施;

内核的内存管理模块就是围绕着MMU的这些功能和要求而设计开发的;

内存管理单元MMU学习相关推荐

  1. ARM920T内存管理单元MMU

    作为程序员已经有4-5个年头了,发现学的知识杂且乱,很多学习过的东西,有时也会忘记.索性开始整理,由于是电子专业出身,于是想把之前玩过的2440开发板,重新再玩一遍.顺便对各个知识点进行较全面的总结. ...

  2. 操作系统 内存管理单元MMU TLB

    前言 在了解操作系统 内存管理 分页/分段/段页式管理.操作系统 虚拟内存技术两篇文章后,接下来继续看看现代操作系统基本内存管理方式,本文详细介绍Linux操作系统下的内存管理单元MMU和TLB. d ...

  3. 内存管理单元--MMU

    现代操作系统普遍采用虚拟内存管理(Virtual Memory Management)机制,这需要处理器中的MMU(Memory Management Unit,内存管理单元)提供支持,本节简要介绍M ...

  4. Linux 中的内存管理单元MMU

    MMU (内存管理单元) 基础概念 1.TLB – 转换旁路缓存,里面存放着少量的虚拟内存与实际物理内存之间的对应关系,被称为快表. 2.TTW – 漫游转换表,当TLB中没有对应的转换关系,通过对内 ...

  5. 内存管理单元MMU - ARM内核扩展(一)

    了解物理地址和虚拟地址的关系 掌握如何通过设置MMU来控制虚拟地址到物理地址的转化 了解MMU的内存访问权限机制 了解TLB.Cache.Writebuffer的原理,使用时的注意事项 在计算机开始阶 ...

  6. 内存管理单元——MMU

    一.基本概念介绍 MMU是Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元(英语:paged memory management unit,缩写为PM ...

  7. 内存管理单元MMU简介

    1. MMU MMU在CPU的配合下(通过页异常触发),实现了线性地址到物理地址的动态映射,为正在CPU上运行的应用程序(进程)提供了一个独立的连续内存空间(线性地址空间,或称虚拟内存空间,其中放置了 ...

  8. 【软件开发底层知识修炼】三 深入浅出处理器之三 内存管理与内存管理单元(MMU)

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 上一篇文章学习了中断的概念与意义,以及中断的应用-断点调试原理.点击 ...

  9. Linux学习之系统编程篇:MMU(Memory Manager Unit 内存管理单元)

    一.虚拟内存地址 对应于上图的两端,其中 0 - 3G 是用户区 ,3 - 4G 是内核区.编码的内存地址都是虚拟地址. 在3G到4G之间是PCB 进程控制块.从3G到0依次为: (1)命令行参数 和 ...

最新文章

  1. 测试nginx网站代码_在40行以下代码中使用NGINX进行A / B测试
  2. 价值为王,市场需要降温
  3. 山东省中职计算机应用专业人才培养方案,计算机应用与维修专业人才培养方案(中职)...
  4. 语言撒谎问题_孩子撒谎是高情商?四招帮家长找到孩子撒谎原因,纠正撒谎行为...
  5. Appium+Python+Pycharm如何创建并运行自动化测试脚本【真机运行】
  6. python切换消息窗_用Python切换窗口
  7. mysql explain的使用
  8. WEB攻防实战篇,思维导图
  9. MySQL对于有大量重复数据表的处理方法
  10. python图书管理系统增删改查_图书管理系统---增删改查
  11. 一个html可以有几个h1,关于html:HTML5大纲和多个H1 SEO
  12. @retention注解作用_前端初学SpringBoot系列(三)自定义注解的学习与练习
  13. SQLPROFILER计算机用户操作数据SQL记录跟踪
  14. 微信小程序使用字体图标
  15. 解决苹果手机ios系统app store无法下载讯飞有声的问题
  16. luarocks argparse
  17. Microsoft Office 不同电脑不同电脑登录用户的数据同步
  18. 高等数学:第六章 定积分的应用(4)平面曲线的弧长
  19. 永磁同步电机的直接转矩控制(三)一一一滑模控制器改进DTC
  20. Kafka 命令行工具 kcat/kafkacat

热门文章

  1. Android绑定多个aidl,android aidl 多`module`版的实现
  2. plsql如何连接oracle11g_64位win7 plsql连不上oracle11gr2 64位—plsql连接配置
  3. python 图表_做自己漂亮的图表,一文学会如何用Python填充图表样式
  4. MappedByteBuffer,可以让文件直接在内存(堆外内存)修改,操作系统不需要拷贝一次。而如何同步到文件由NIO来完成
  5. Windows 技术篇 - 远程桌面连接不保存密码、每次都要输入密码问题解决
  6. Python+selenium 自动化 - 实现自动导入、上传外部文件实例演示
  7. 在scala中访问postgresql(使用sbt)
  8. sdut-1158 C语言实验——两个数最大
  9. [YTU ]_2736指针练习--输出最大值
  10. 数字图像基础(二进制图像、灰度图像、RGB图像、索引图像和多帧图像)