物联网嵌入式芯片之MMU

举报
o0龙龙0o 发表于 2021/10/28 22:17:34 2021/10/28
【摘要】 为什么LiteOS用在cortex-M上,鸿蒙却安装在Cortex-A上呢,这个Cortex-M和A的区别在哪里?操作系统只能装在A系列的原因是什么,这就要说的今天的主题部件MMU

0、前沿

为什么LiteOS用在cortex-M上,鸿蒙却安装在Cortex-A上呢,这个Cortex-M和A的区别在哪里?操作系统只能装在A系列的原因是什么,这就要说的今天的主题部件MMU

1、MMU

MMU内存管理单元,有时称作分页内存管理单元(英语:paged memory management unit,缩写为PMMU)。它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。

它的功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制,在较为简单的计算机体系结构中,负责总线的仲裁以及存储体切换。

Cortex-M0、M3、M4、M7都没有MMU这个部件,就不仅能进行虚拟地址映射,从而不能装在通用操作系统。

2、MMU工作原理

       现代的内存管理单元是以页的方式,分割虚拟地址空间(处理器使用的地址范围)的;页的大小是2的n次方,通常为几KB(千字节)。地址尾部的n位(页大小的2的次方数)作为页内的偏移量保持不变。其余的地址位(address)为(虚拟)页号。

      有些情况下,软件自身的错误可以引发页错误,这时内存管理单元可以检测到页错误,然后通知操作系统终止出错的程序。通常来说, 操作系统会为每个程序分配虚拟内存地址,而不会让程序直接访问物理内存。这种内存保护特性可以避免某个程序非法访问其他程序的虚拟内存空间。

      此外,内存管理单元能够减少程序的内存碎片化现象。也就是说,当程序分配并释放内存块后,可分配的连续内存块的最大尺寸亦远小于尚未分配的内存量。虚拟内存机制可以在内存分页机制的基础上,将多个不连续的物理内存区块映射为一个连续的虚拟内存块。

MMU原理

3、MMU与操作系统

     操作系统需要抽象内存,方便用户对内存进行访问,这样就方便代码工程师完成抽象的内存和地址操作,这样就需要MMU作为桥梁,进行地址的转译,内存的映射,通过该这样的操作,可以保证物理内存的安全,同时保证了系统的统一性,在不同芯片上进行移植时不要考虑内存和数据与程序中的数据对的对应关系,可以说是操作系统内存操作的重中之重。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。