MMU内存管理单元之闲谈

闲谈MMU内存管理单元

	一个新技术不会无缘无故的产生,其的出现必然是为了解决上一个技术上的瓶颈, 突然想随便谈一谈MMU。

1.1 从求职开始说起

1.1.1 单片机工程师与嵌入式工程师

  有一个现象,在找工作的时候,凡是涉及到在Linux、VxWorks或QNX等操作系统的岗位大多数都叫做嵌入式开发工程师(SOC),而 关键词为stm32、单片机、FreeRTOS、uCOS等的岗位名称大多为单片机开发工程师,或者为嵌入式开发工程师(MCU方向)

  虽然说单片机开发也属于嵌入式开发,但是招聘单位却在尽量对“单片机开发工程师”和“嵌入式开发工程师”做出区分,为何会有这样的现象?

1.1.2 MCU与SOC

  片上系统(SoC)这个术语的定义随着半导体行业和芯片行业的飞速发展也在发生着变化,而且随着时间的推移会发生变化,但微控制器单元(MCU)从几十年前就有了明确的定义。很多文档交替使用这两个术语,这是因为半导体行业的发展在一步一步拉近SOC与MCU的距离。它们都属于嵌入式系统领域,随着SOC与MCU之间的差异很小,就像比较汽车和公共汽车一样,我们会得到相同的答案,比如都有轮子,都有乘客,都有引擎,当我们进行更多分析时,我们可能会发现它们之间的区别。在 MCU 和 SoC 的情况下也是如此,它们之间存在一些技术或非技术差异,现在越来越多的工程师将处理器是否具有MMU作为了区分SOC与MCU的标准。

  SOC有MMU,一般都会移植Linux这种多进程的操作系统,由于操作系统对硬件和软件做了很好的隔离,使得开发者不必过多的关注硬件,得益于Linux的开源,即使是新出产的硬件,其在Linux上的驱动两周后基本就会有了。
   而MCU因为没有MMU,不能移植Linux这种多进程的操作系统,整个系统只需要完成一个独立的任务,开发者需要投入很大精力去研究具体使用的硬件和寄存器,由于没有操作系统的保护,一旦程序出现问题也较难定位。

1.2 浅谈MMU

  关于MMU的概念介绍,网上的资料千篇一律,笔者就不再此过多复述,笔者想谈谈自己对MMU的理解

1.2.1 笔者对MMU的理解

  一个新技术不会无缘无故的产生,其的出现必然是为了解决上一个技术上的瓶颈,MMU亦是如此,MMU中文翻译为内存管理单元,名如其意,我们可以推测出,其出现与内存管理有关,虽然MMU是硬件,但它和软件也是紧密相连的,毕竟内存管理可不是硬件的事,只是硬件提供了MMU以便软件能够更好的管理内存。

1.2.2 MMU的诞生

1.2.2.1 内存不够用了

  早在上个世纪,当我们的老前辈还在使用DOS的时代,半导体行业还没有现在这么发达,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。

  随着图形界面的兴起还有用户需求的不断增大,应用程序的规模也随之膨胀起来,终于瓶颈出现了,那就是应用程序太大以至于内存容纳不下该程序,这个时候的半导体的发展速度已经跟不上软件发展的速度了。

1.2.2.2 局部性立了大功

  当内存容量无法满足越来越大的应用程序后,限于当时半导体的水平,前辈们想到了一个非常有效的解决办法:CPU的取指是一条一条运行的,应用程序固然很大,但要想让程序运行,不需要把整个程序都加载到内存啊,我只要把当前CPU需要的部分加载到内存就可以了啊!

扫描二维码关注公众号,回复: 13436124 查看本文章

1.2.2.3 有效果,但不够完美

  注意这个时候MMU还没出生,程序员先将程序分割成块,假如分成了10块(Block0-Block9),Block0的程序先运行,等Block0运行完将调用Block1,以此方法运行确实在那段时期解决了应用程序大于内存容量也能运行的问题。

  但是程序也能程序的执行顺序分割程序是一个费时费力的工作,这无疑加重了程序员的工作负担,程序员花十分钟时间搞出一版程序却要花2小时去分割程序,还不够完美。

1.2.2.4 MMU横空出世

  不久,前辈们又找到了办法,这就是虚拟存储器(virtual memory)。虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比如对一个16MB的程序和一个内存只有4MB的机器,操作系统通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片段,这样就可以把这个16M的程序运行在一个只具有4M内存机器上了。而这个16M的程序在运行前不必由程序员进行分割。
  MMU就是支持虚拟存储器实现的硬件条件。
  至此,终于解决了内存不够用的问题

猜你喜欢

转载自blog.csdn.net/weixin_42314225/article/details/120006387