问题 存储程序方式是指什么? 如何通过内存来提高磁盘的访问速度? 以Windows为例,它为了节约内存,用了哪些手段? 1.存储程序方式是指:将程序存储在计算机的存储器中,电脑在运行这个程序时,直接从存储器中加载到内存来直接运行就可以了,这种方式是相对于之前的通过插线、剪纸带(外部介质存储程序)而言的。 能够存储数据的东西,分别有哪些呢? 内存(注意:内存地址并不一定代表内存)、磁盘、寄存器 寄存器:CPU内部,速度最快、数量最少,价格最高 内存:一般快、数量一般多,价格一般高 磁盘:最慢、数量最多、价格最低 2.提高磁盘的访问速度的方法是使用磁盘缓存。 磁盘缓存:第一次读取的时候,会把磁盘中的数据加载到使用数据的地方,同时也将这一部分数据加载到内存中,下一次再取数据的时候,直接在内存中取数据就可以了。也就是将内存当磁盘用。(win95、win98的系统)注意:磁盘缓存并不是一次性全部写入,因为内存太小,盛不下。这时,又出现了虚拟内存的概念,那么什么是虚拟内存呢? 虚拟内存:将磁盘中的一块来作为内存使用,解决一些程序需要很大的内存才能运行的问题。 因为CPU只能执行内存中的程序,所以需要将虚拟内存中的数据加载到物理内存中才能被CPU执行,这就需要物理内存和虚拟内存中数据进行交换,目前有两种交换方式,一种是分页式,另一种是分段式。 分页式:不考虑程序的逻辑,将程序分为一页一页的(一页一般是4kb),来进行一页一页的交换。 分段式:按照程序的逻辑(比如数据块,计算块)来划分代码的分离方式。 磁盘:扇区,簇的方式进行读写,一簇等于一个扇区,一簇里面,不能有相同的文件。 3.以Windows为例,它为了节约内存,用了哪些手段有:函数公用、被调用方清理栈等方法。 函数共用:动态链接库(dll),Windows中几乎所有的共用函数都是用的dll 被调用方清理栈:一般在函数调用完成之后来进行栈的清理,Windows:_stdcall,在被调用方清理,这样非常节省空间 节约磁盘空间的方法有数据压缩等方法。 rle压缩算法:比如 AAAAVVVVBFF压缩为:A4V4B1F2,来达到节省空间的目的,主要是来压缩图像、EXE文件等。但是它是不能压缩文本的。 对于文本使用最多的压缩算法是:哈夫曼压缩。