操作系统——磁盘存储器管理

在整理老师在磁盘存储器管理这一届提出的四个问题:

1、外存分配方式在操作系统整体框架中处于何种地位?

2、外存分配方式的设计和磁盘物理结构有什么关系?

3、顺序、链接、索引三种外存分配方式,你更喜欢哪种?

4、如果让你设计新的外存管理方式,你有何思路?

似乎一直将这个外存理解成了机械硬盘,所以实在想不明白这三种分配方式在其他的存储器(比如U盘、光盘、SSD)上是如何应用的。

此处的博文是在了解SSD工作原理时,发现的比较全的两篇

https://blog.csdn.net/Lyon_yong/article/details/79178794

http://oserror.com/backend/ssd-principle/

NVRAM(non-volatile random access memory)非易失性随机访问存储器

NVRAM的加速卡的创新在于结合了DRAM高速及耐写特性以及NAND闪存的非易失性,实现的性能十倍于最快速的固态硬盘

知乎问题1:

如果硬盘能达到内存的速度,那操作系统的设计是否会有变化?

或者这么说,如果未来,内存的容量大幅增加到上T,价格大幅下降到白菜价,并且有断电不掉数据的特性,计算机行业会发生怎样的变化?
_-----------------------------------------------------------------------
非常感谢各位的回答,然后发现问题被修改了,改变后的问题改变了我的讨论意图。
1. 不考虑内存变大了,硬盘变得更大的情况,也就是说,现在我的电脑只有cpu,内存,主板,没有了硬盘了。
2.开关机变快是一个很好的点。除此之外,由于内存是完全随机存储,去掉了硬盘中的机械寻道所要求的局部性,再加上速度方面的优势。操作系统的虚拟内存是否还有存在的必要性?文件系统会有哪些针对性的变化?程序员使用的编程模型是否会有变化?等等
就像内存数据库和普通数据库会有很多不同一样?这种情况下,不是将所有的信息直接放到内存中这么简单。

https://www.zhihu.com/question/21442122

知乎问题2:

问:如果硬盘速度足够快,内存这东西是不是就可以取消了?
答:先来一堆废话:这是一个很棒的问题!可能是我在知乎计算机类看到的最棒的问题之一!还没看到一个足够棒的解答(包括@冯东的),那么我来试试能不能写一个够棒的答案:
再来一个简单的回答:如果硬盘速度足够快,内存这东西在一些计算设备上就会消失了,但在更多的计算设备上依然存在内存、硬盘的分级存储架构。


最后是一个前计算机体系机构爱好者写过最长的答案:
为什么要有内存,为什么要有硬盘?
还得从计算机体系架构的基本理论讲起。
目前我们用的各种计算机,基本上都是冯诺依曼架构,它的 CPU在运行过程中都要从存储系统中读取指令,读写数据。
CPU的运行速度远远大于外部存储器--硬盘的读写速度。举个例子,假设硬盘的读取时间为10ms,CPU为1GHZ,硬盘找到CPU需要的一个32bit/64bit数据,CPU至少已经空等了10000000个周期,很浪费时间啊。
在计算机发展的早期,还没有硬盘, CPU也不是很快,因此上面那种CPU空等情况并不太多。但是著名的摩尔定律让 CPU速度18个月就翻一番,内存速度提高的没这么快,硬盘提速就更慢了, CPU的速度与存储器读写速度的鸿沟越来越大,怎么办呢?
幸好地球人找到了一个基本原理:
1.局部性原理
程序运行过程中,CPU对内存的访问在一段时间内常常集中在一小块连续区域内。只要这一小块数据的访问时间足够快,CPU就不太会碰到空等的情况。


另外一个是比较显而易见的现实:
2.越快的存储器越贵,越慢的存储器越便宜。
2012年7月的数据:
2G DDR3 内存99元,合50元/G
500G 硬盘 400元,合0.8元/G
缓存都不单卖,没法拿出来说,反正比内存贵的多就是了。
还有一个:
3.快速的存储通常断电后数据就丢失,断电不丢数据存储器一般速度比较慢。
这个也好理解,保证断电不丢数据通常得多做一点点事情么,自然就慢了。
多少人写的东西没来得及存盘,电脑断电后就找不到了有没有!(感谢Word的自动保存功能!知乎也有了!)
基于以上几点,现代计算机大都采用多级存储架构:
最高的一级是 CPU内的寄存器,跟 CPU的速度一样快。然后是多级Cache(中文:高速缓存),每一级速度略慢。接着是前面提到的内存。以上统称为一级存储,通常断电后数据丢失。
再往下就是硬盘。也就是二级存储,我们的数据大都放在这里,断电也不会丢。SSD或者Flash也在这一级。
另外还有比硬盘更慢的算是三级存储,比如大部分人没见过的磁带啊,光盘柜啊,现在时髦的云存储也可以算是三级存储(高级的SAN其实算是第二级了)。


The memory hierarchy in most computers is:
Processor registers – the fastest possible access (usually 1 CPU cycle), only hundreds of bytes in sizeLevel 1 (L1) cache – often accessed in just a few cycles, usually tens of kilobytesLevel 2 (L2) cache – higher latency than L1 by 2× to 10×, usually has 512 KiB or moreLevel 3 (L3) cache – higher latency than L2, usually has 2048 KiB or moreMain memory – may take hundreds of cycles, but can be multiple gigabytes. Access times may not be uniform, in the case of a NUMA machine.Disk storage – millions of cycles latency if not cached, but can be multiple terabytesTertiary storage – several seconds latency, can be huge
上面讲了这么多,还没讲到正题,假如硬盘速度足够快,内存是不是就会取消呢?
请再抬头看看2、3,自己考虑一下,如果硬盘像现在的内存这么快了,内存、Cache还有CPU会不会同步发展,是不是也会相应的比现在的内存快很多呢?在这种情况下好像上面表里的架构不需要怎么改变,只是把延迟大小改改就够了。


是不是有点小失望?稍等一下,别走,Stay tuned!
咱们还有One more thing!



其实我们现在有很多计算设备中是没有硬盘的,只是用Flash存储程序和数据,再载入内存中运行,比如我们用的手机、GPS导航仪等等。这里的Flash我认为跟问题中的硬盘是一回事情,就是第二级存储器。在运行过程中内存需要一直供电,包括你按下开关锁定屏幕以后。维持内存刷新所消耗的电流,占智能手机待机电流中相当的大的比重。
假如硬盘像现在的内存一样快,还断电不丢数据的话……
就可以把内存丢掉,程序直接在硬盘上运行!一方面省去的程序和数据载入内存的时间,另外一方面,待机时就不需要耗电来维持内存刷新了,待机时间会大大延长。
也许你的下下下下下下个手机就没有内存了,程序都在Flash上直接执行。
但是这样的架构就把上表中的Memory这一层拿掉了,至少操作系统这个层面需要做很大的改变,像Unix、iOS、Linux、Windows这些主流的操作系统,都是没法直接支持这样的架构的。
不过,其实有一个 OS是针对这样的架构设计的,只不过它的假设是内存永远不断电,而不是没有内存。很可惜的是这个奇葩的 OS已经死亡了,它就是Palm OS。(不是 webOS哦,虽然webOS也是Palm开发的,那是基于Linux的)
关于Palm系统的内存使用方式,可以看看中国palm界著名乌鸦嘴、巨硬拼音开发者UGLee的文章 《不间断的运行》,虽然是快
原文地址:https://www.cnblogs.com/zx-zhang/p/10150474.html