读书笔记:《深入理解计算机系统》 之 第六章 存储器层次结构

计算机里面的存储有两种,一种是我们常说的内存,一种则是外存例如硬盘。

随机访问存储器也就是RAM,我们常说的内存,分为静态的(SRAM)和动态的(DRAM),静态的一般用来作为高速缓存存储器,一般不会超过几兆,而动态的作为主存,一般有几千兆。

内存属于断电后会失去存储信息的存储器,所以还存在着非易失性存储器,在断电后还能保存相关信息,也就是ROM,我们称之为只读存储器,闪存就是其中的一种。存储在ROM设备中的程序称为固件,当一个计算机系统通电之后就会运行存储在ROM中的固件,可以理解为硬件内部的程序,例如声卡有自己的固件,而我们电脑上需要装驱动驱使声卡起作用,驱动相当于系统与硬件的接口。

在计算机系统中,是通过总线连接主存和cpu来进行相关的数据的操作,总线相当于一个集成,部件连接着内存主线,CPU主线,还有其他的各种设备的主线,例如显示器,键盘,鼠标等等。

除了内存存储,还有磁盘存储,而磁盘又分为传统硬盘和固态硬盘。

传统的硬盘是通过旋转磁盘进行寻址来查找数据的,有一个传动臂在磁盘上的一层薄薄的气垫上寻址,速度很快,80km/h,超出了我的想象,书里有个比喻,相当于一个摩天大楼倒下后8秒内转过一次地球。

而固态硬盘基于闪存技术,简单的来说,它不需要移动,它是通过固件来进行访问底层的存储物理设备。

计算机的存储方式对于我们的程序其实也有一定的影响,我们可以借助计算机存储的规则来使得我们的程序可以更快的查找到所需要的数据。

一个编写良好的计算机程序具有良好的局部性,比如说时间局部性和空间局部性,这样可以加快程序运行的速度。

例如,web浏览器将最近被引用的文档放在本地磁盘上利用的就是时间局部性。

而空间局部性性,有一个经典的程序案例,下面两个程序只是调换了i和j的位置,但是性能相差很大,因为上面的具有良好的空间局部性,可以快速的按照内存存储顺序来查找数据,而下面的程序则需要有顺序的跳跃查找,性能跟前面一个比可想而知。

发布了41 篇原创文章 · 获赞 15 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ScanQ/article/details/102771573