目录
写在开头
本文继续阅读总结《程序是怎样跑起来的》这本书(作者:矢泽久雄)。前两篇博客介绍了这本书的阅读感受,并分别对第一章CPU、第四章内存相关的知识进行了总结。详情见:
【计算机组成原理】读书笔记第一期:对程序员来说CPU是什么-优快云博客
【计算机组成原理】读书笔记第二期:使用有棱有角的内存_Bossfrank的博客-优快云博客

本文将介绍本书的第五章:内存与磁盘的亲密关系。主要介绍了内存与磁盘的相互关系、节约内存的编程方法和磁盘的物理结构。
内存与磁盘的关系
本文内存主要指主内存,即存储CPU中运行的程序指令和数据的区域,磁盘主要指硬盘。从存储容量上看,内存是高速(读取速度上)高价(价格上),磁盘则是低速廉价。
基本关系
磁盘中存储的程序,必须要加载到内存中才能运行。在磁盘中保存的原始程序是不能直接运行的。原因:负责解析和运行程序内容的CPU,需要通过内部程序计数器来指定内存地址才能读出程序(详见第一章总结)。即使CPU可以直接读出并运行磁盘中保存的程序,由于磁盘读取速度慢,程序的运行速度也会降低。

程序要加载到内存中才可运行(图5-1),这是理解内存和磁盘关系的基础。接下来介绍两种机制,分别是将内存空间暂时充当磁盘的磁盘缓存和将磁盘空间暂时充当内存的虚拟内存。
磁盘缓存
磁盘缓存(disk cache)是指把从磁盘中读出的数据存储到内存空间中的方式。通过这样的方式,当之后需要读取同一数据时,就不用再去读取访问速度缓慢的磁盘空间,而是直接从内存(即磁盘缓存)中把内容读出,使用磁盘缓存可以大幅度提高磁盘数据的访问速度。Windows提供了磁盘缓存机制,不过随着硬盘访问速度的大幅度改善,磁盘缓存的效果没有那么明显了。

虚拟内存
虚拟内存(virtual memory)是指把磁盘的一部分作为假想内存来使用。通过这一机制,当程序的大小略超过内存的剩余空间时,也可以运行程序。不过由于CPU只能执行加载到内存中的程序。虚拟内存虽说是把磁盘作为内存的一部分来使用,但实际上正在运行的程序部分,在这个时间点上是必须存在在内存中的。也就是说,为了实现虚拟内存,就必须把实际内存(也可称为物理内存)的内容,和磁盘上的虚拟内存的内容进行部分置换(swap),并同时运行程序。
&n

本文详细解读了内存与磁盘的关系,介绍了磁盘缓存和虚拟内存的作用,以及节约内存的编程策略,包括通过DLL共享函数和使用_stdcall优化。还讨论了磁盘的物理结构,如扇区和簇的概念。
最低0.47元/天 解锁文章
9万+

被折叠的 条评论
为什么被折叠?



