第五章节中,主要讲诉内存与磁盘的密切关系。本章我学习了为了加快了磁盘访问速度所以有了磁盘缓存,磁盘缓存是把从磁盘中读出的数据存储到内存中的方式,内存当做磁盘的缓存。不过现在好像已经有了新技术。虚拟内存把磁盘作为部分内存来使用,
上一小节是把内存中的一部分当做磁盘,这里是把一部分磁盘当做内存。但要记得正在运行中的程序一定是在内存中的,所以被存储到虚拟内存(磁盘)中的内存数据属于当前没在运行中的程序。虚拟内存的交换方法有两种:分页式、分段式,主要区别就是交换数据的大小不同,Windows采用分页式,页大小是4KB,数据由磁盘到内存的过程称为Page In,由内存到磁盘的方式称为Page Out虚拟内存在Windows中也可以叫作页文件
节约内存的编程方法:
使用DLL文件(Dynamic Link Library)达到多个程序共享同一函数的效果,这样内存中就不会出现同一个代码实现属于两个程序的情况。用DLL还有一个好处是可以在不修改exe文件的情况下,通过对DLL的更新来更新程序中的功能。更多DLL内容见第8章
C语言中,在函数声明时加入_stdcall,可以达到在函数被调用完后,被调用函数自己清理内存栈中的数据,而不是由调用方来来清除,这样如果函数被调用多次的话,就可以减少调用方的清理内存栈代码
磁盘的物理结构:
扇区是对磁盘进行物理读写的最小单位,一般是521KB;簇是Windows对磁盘读写的最小单位,簇要求是扇区的整数倍,具体1簇等于多少扇区,要根据处理速度和存储容量来权衡确定;如果文件大小没有达到1簇,那么磁盘中也会占用1簇的空间,剩下的部分也不能存其他的信息了,只能空着,这感觉和Linux中的块是一个概念