今天学习了一些电脑关于存储的知识:ROM和RAM。有了一定的了解,就写出来一下。因为在nginx和varnish上也有用到这两个知识,一个是根据内存,一个是根据硬盘对数据进行缓存。
ROM(只读存储器)在断电之后数据也不会消失,一般用来存储系统文件,和软件数据。
RAM(随机存储存储器)断电之后数据会消失,内存,cache,buffer,都是这类的存储。
RAM又有sram,dram,静态ram一般指的是cache,动态ram一般指的就是内存,buffer之类数据。
由于cpu的工作频率和cpu的工作频率不同,在内存中读取数据,会比较慢,内存跟不上cpu的步骤,所以在cpu和内存之间有cache可以提高cpu读取的效率,但造价高,体积大。而且在cache中读取数据还会有命中的概率问题,有的请求在cache中找不到,一般的命中率在80左右,所以又会有一级和二级缓存的区别,在一级缓存中找不到的请求可以在二级缓存中寻找。如果都找不着就需要在内存中去寻找了,而内存是cpu寻找的数据的存放场所,所以内存是不可缺少的。而且内存的容量是cache无法比拟的。
buffer(缓冲)是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的,避免了程序在尽心读写的时候的很多分散的操作都要去进行。将操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。 buffer是由各种进程分配的,被用在如输入队列等方面。一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。

cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提高系统性能