首先,为什么要有内存,为什么要有硬盘? 还得从计算机体系架构的基本理论讲起。局部性原理程序运行过程中,处理器对内存的访问在一段时间内常常集中在一小块连续区域内。只要这一小块数据的访问时间足够快,处理器就不太会碰到空等的情况。 如果硬盘速度足够快,内存就可以取消了? 图1 1.局部性原理:程序运行过程中,处理器对内存的访问在一段时间内常常集中在一小块连续区域内。只要这一小块数据的访问时间足够快,处理器就不太会碰到空等的情况。 如果硬盘速度足够快,内存就可以取消了? 图2 2.越快的储存器越贵,越慢的储存器越便宜。 2012年7月的数据: 2G DDR3 内存99元,合50元/G 500G 硬盘 400元,合0.8元/G 缓存都不单卖,没法拿出来说,反正比内存贵的多就是了。 3.快速的储存通常断电后数据就遗失,断电不丢数据储存器一般速度比较慢。 这个也好理解,保证断电不丢数据通常得多做一点点事情么,自然就慢了。 多少人写的东西没来得及存盘,电脑断电后就找不到了有没有!(感谢Word的自动保存功能!知乎也有了!) 如果硬盘速度足够快,内存就可以取消了? 图3 我们现在有很多计算设备中是没有硬盘的,只是用Flash储存程序和数据,再载入内存中运行,比如我们用的手机、GPS导航仪等等。这里的Flash我认为跟问题中的硬盘是一回事情,就是第二级储存器。在运行过程中内存需要一直供电,包括你按下开关锁定屏幕以后。维持内存刷新所消耗的电流,占智能手机待机电流中相当的大的比重。假如硬盘像现在的内存一样快,还断电不丢数据的话…… 就可以把内存丢掉,程序直接在硬盘上运行!一方面省去的程序和数据载入内存的时间,另外一方面,待机时就不需要耗电来维持内存刷新了,待机时间会大大延长。 也许你的下下下下下下个手机就没有内存了,程序都在Flash上直接执行。但是这样的架构就把上表中的Memory这一层拿掉了,至少操作系统这个层面需要做很大的改变,像Unix、苹果iOS、Linux、Win这些主流的操作系统,都是没法直接支持这样的架构的。(修正: linux可以通过RAMDISK的形式来支持这个架构的,但是其实还是在第二层储存上来模拟第三层,感谢 @狼大人 的提醒。) 不过,其实有一个 OS是针对这样的架构规划的,只不过它的假设是内存永远不断电,而不是没有内存。很可惜的是这个奇葩的 OS已经死亡了,它就是Palm OS。(不是 webOS哦,虽然webOS也是Palm开发的,那是基于Linux的) 关于Palm系统的内存运用方式。 如果硬盘速度足够快,内存就可以取消了? 图4 |