虚拟内存
我记得我小时,我爸买了一台1米手机,没错就是1米手机,笑死我了,他还以为是小米,不得不说,真的垃圾,还贼贵,真的小米确实是把手机打下来了。后面我换了一部联想手机,但是,用着用着,我就觉得内存好小啊,完全不够,当时是很多手机都可以root,所以,我发现我也root成功了,我还非常高兴,后面,我看到有那些刷机和扩容软件,我就试了一下,后面手机白屏了,开不了机,我觉得是这个软件把我的系统刷没了,当时也是啥也不懂,更别说用电脑去搞啥固件了。
MCU扩容
后面学习了嵌入式,我才发现,嵌入式是可以扩容的,我一开始还非常担心,这个扩容会不会不安全啊,会不会出现我小时候的问题啊,现在发现,完全不会的。扩容其实是很安全的,MCU本身也是使用了虚拟的内存来实现编址的,也就是32位4G的空间,但是,MCU根本没用到4G啊,用256kb都算大的了,虽然确实有上M大小的MCU,但是离4G空间还差远了。
SDRAM的储存单元叫BANK(一般有4个),每个BANK中以阵列形式排列,先指定BANK号和行地址,然后指定列地址,则能确定唯一地址。
就是选择和使用BANK,然后访问和使用这些地址就ok了,因为MCU早就为了这些扩容的地址进行编址了。
虚拟内存的意义
说白了,就是为了以后,虽然说一个产品出场是一定满足自身寻求的,比如笔记本电脑,他出场是一定能满足系统调度和使用,还有很多操作的,但是它允许用户扩容,也允许用户更换设备。
同时,内存是程序的以进行的基础,进程的进行内存资源是非常必要的,如何在有限的内存中运行足够大的程序,变成了一个非常有挑战的事情,而虚拟内存相对于物理内存可以提供更大的空间。
简单来说,虚拟内存可以让系统看上去去拥有比物理内存大得多的内存空间,为多道程序的执行提供了资源。
还有就是统一编址了,所有外接的内存也得满足给定的要求,这样系统和内核就能正常访问他们啦,这种随插随用的方法,非常适合嵌入式。