• 已解决 73498 个问题
  • 已帮助 5995 位优秀工程师

MMU工作原理

731278512@qq.com 2018-03-15 浏览量:917
MMU是如何工作的呢?加入有个代码段,里面申请了一个大的内存空间,并且是一次性要写入数据。当MMU将其映射到不同且不连续的位置,甚至是不在同一时刻处于物理内存中的位置时。数据将如何写入呢?这个问题简单描述下,就是MMU已经将内存如上所说映射了,我要一次性写入大块数据,MMU怎么处理?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 物理空间连不连续不重要,对进程而言,也就是运行的程序,它只存在虚拟地址空间,它的虚拟地址空间是连续的,而至于它的物理地址在哪里这不是它该关心的,这是操作系统关系的东西,这里要说一下,MMU的存在有两个目的:1、虚拟地址到物理地址的转换;2、内存保护。
    • 发布于 2018-03-15
    • 举报
    • 评论 4
    • 1
    • 0
大写加粗的L 回复了 @曲终人散@:对的,进程是不关心物理地址连不连续,但是MMU关心吧?我其实就是想知道,他是怎么把进程申请的资源分散到物理内存还不会导致程序执行错误的? 回复
@曲终人散@ 回复了 @曲终人散@:这个就涉及到页目录和页表的知识了,虚拟地址会被MMU进行分段处理,前10位映射页目录地址,中间10位映射页表地址,最后12位为页内偏移,MMU内部就有这样一张映射表,当然我说的是二级页表,这方面的知识挺多的,你可以专门看看我刚刚说到的点。 回复
大写加粗的L 回复了 @曲终人散@:了解了,下去找资料看看,多谢 回复
电子老工程师 回复了 :Q 24,0-JXS32-9-10/15-T1-FU-WA-LF Jauch Quartz 请参考。 回复

其他答案 数量:5
  • 对实际普通进程而言,它是运行在连续虚拟内存空间上的,但这在实际环境中所有的进程都运行在连续且很大的内存空间上是不现实的,所以MMU就起到了分隔进程内存空间,进行内存虚拟空间和实体物理内存空间映射转换的作用。这样的作用是动态的,进程无关的。所以大多数情况下,你不需要了解具体如何运作。

    你所谓申请大的缓冲,一次性写入数据,这个我想你只要不太过份(比如过份的完成超过实体物理空间大小),一般都没有问题。

    对于这种有超级多数据处理的程序,一般人其实用不到的,我想你大多数时候也用不到(比如必须使用外排序的大量数据运算)。

    • 发布于2018-03-16
    • 举报
    • 评论 1
    • 1
    • 0
电子老工程师 回复了  :物料引脚发黑,应该受潮氧化引起。 回复

  • MMU只是负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访问权限的检查保护每个进程所用的内存不被其他进程破坏。具体使用时直接调用逻辑地址就好,只是实际存储地址不连续,逻辑地址还是连续的。
    • 发布于2018-03-16
    • 举报
    • 评论 1
    • 1
    • 0
电子老工程师 回复了  :可以用前台BOM系统直接进行匹配 回复

  • MMU只是一个地址翻译器而已,你进行读取和写入的时候还是操作原来的存储区域的,所以你描述的大量还是少量是没我区别的,大量数据操作也是由单字操作组合而成的,它是把每次读写的地址进行翻译的
    • 发布于2018-03-15
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :请给出参数,分类,便于寻料 回复

  • 按照正常的方法写入就行,具体后面的操作编译器会替你搞定的
    • 发布于2018-03-15
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :这两颗料原厂都没有查到更多信息,区别没有确认到 回复

  • MMU只关心你要写入的内容是怎样的,写入的内容必须是连续的,后面才不会出错,至于物理内存和逻辑内存的映射关系它会帮你弄好,你无需关心这个。

    • 发布于2018-03-31
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :11AA040-I/TO,Microchip Technology,供参考 回复

MMU工作原理