问题:
1.存储程序方式是指的什么
2.如何通过内存来提高磁盘的访问速度
3.Windows为例,他为了节约内存用了哪些手段
1.存储数据的部件:(存储介质)
1)寄存器 :CPU内部 速度最快 ,数量少
2)内存:速度中等,数量中等
( 内存地址不代表内存)
3)磁盘:慢速、容量大、价格低
2.存储式计算机数据的流动方向:硬盘->内存->寄存器
3.磁盘缓存:提高数据从硬盘到内存的效率 ( 内存当磁盘用)
4.节约硬盘的编程方式:
1)函数共用 (动态链接库)
2)被调用方清理栈
3)数据压缩
1.存储程序方式是指的什么
2.如何通过内存来提高磁盘的访问速度
3.Windows为例,他为了节约内存用了哪些手段
1.存储数据的部件:(存储介质)
1)寄存器 :CPU内部 速度最快 ,数量少
2)内存:速度中等,数量中等
( 内存地址不代表内存)
3)磁盘:慢速、容量大、价格低
速度顺序:从上到下
容量顺序:从下到上
2.存储式计算机数据的流动方向:硬盘->内存->寄存器
3.磁盘缓存:提高数据从硬盘到内存的效率 ( 内存当磁盘用)
历程:
嫌弃磁盘读取速度不够快
=>解决方法: 磁盘缓存:在CPU读取硬盘数据的同时,硬盘将数据同样传送到内存中,下次CPU访问该数据的时候直接就从内存读取,速度会有提升
=> 导致内存不够用
=>解决方法:虚拟内存(在磁盘中划出一块区域用于程序的加载)
=>例:在加载程序的时候,会出现“Loading”提示,期间计算机内部可能在发生page in以及page out的操作,即内存中的数据与缓存在磁盘中的数据进行置换
4.节约硬盘的编程方式:
1)函数共用 (动态链接库)
2)被调用方清理栈
3)数据压缩
RLE压缩法(AAAALLLL=A4L4)
=> 图像、EXE的压缩,但是无法很好的压缩文本
对于文本:采用哈夫曼算法( 可逆算法 ):
=>找频率
=>频率高的用短bit表示
=>例如文本中出现'C' 100次,‘D’ 10次 。可以用01代表'C' ,用10代表‘D’
=>计算:一个字母占1个字节,1字节=8bit。那么原文中‘C’应该占用:8*100=800字节,压缩过后,用01替代'C',那么需要的空间是:2bit*100=200字节,节省出了600字节的空间
=>频率高的用短bit表示,而频率低的用长bit表示,即有可能出现6bit表示一个字母的情况,这时候因为该字母出现的少,所以更能节省空间
5.概念补充:一簇=一个扇区=512byte ==>最小单位
=>即使只 存了2byte的数据 也同样会占512byte
=>注意:一簇里面不能装两个不同的文件
=>即:不能把两个不同文件的数据写入同一个扇区