内存和磁盘的亲密关系

  内存与磁盘都是用来存储东西的吗?是的,也可以说不是的,磁盘内的东西是可以永久存储的,而内存里面的东西一掉电就啥也没有啦。内存作为直接跟CPU打交道的汉子,速度叫磁盘快了N多,但是比较贵,磁盘就是傻大便宜喽。程序平时安装什么的都放在磁盘,当需要运行的时候,会被拷贝到内存,然后运行,也只有被拷贝到内存,才能运行,就是这么任性。

 为了解决磁盘和内存之间速度与价格之间的冲突,设计了磁盘缓存和虚拟内存两种方式,磁盘缓存指的是在内存里画个圈圈,用来缓存磁盘的东东,虚拟内存则是反着的,对于虚拟内存来说,他把程序进行分页式,对Windows来说,每页为4Kb,将暂时不用的页与磁盘之间进行交换Swap。

  内存兄价格如此奔放,因此,编程的时候不得不考虑如何节约内存,书中说了两种方式:一,通过DLL(动态库加载)文件实现函数共有,省下重复函数调用占的空间;二,通过调用——stdcall来减小程序文件大小,C语言中,函数传递参数是通过栈来实现,函数的返回值是通过寄存器来返回;因此,在调用函数后,需要执行栈清理处理指令,把不需要的数据从接收盒传递参数时用的内存上的栈区域中清理出去,默认,栈的清理处理会附加在调用函数那边处理,而使用_stdcall Func()就可以把栈清理处理变为在被调用函数一方执行,对反复调用的函数而言,会省掉一些空间。

  磁盘的物理结构,磁盘的划分方式有扇区方式和可变长方式两种,扇区是对磁盘进行物理读写的最小单位,Windows系统一个扇区为512字节,对磁盘来说,一个簇可包含一个或多个(2的n次方)扇区;对软盘而言,一个簇固定为1个扇区。簇的大小的划分,对数据读写影响较大,弱簇划分过小,磁盘访问次数会增加,速度变慢。因此,扇区和簇的大小,是由处理速度和存储容量的平衡来决定。

发布了7 篇原创文章 · 获赞 1 · 访问量 4172
展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览