心得:了解了内存和磁盘的关系,以及数据的压缩方法
知识点:
1、现在计算机采用的是存储程序方式(程序内置方式),即在存储装置中保存程序,并逐一运行的方式
2、磁盘缓存
通过使用内存来提高磁盘访问速度的机制称为Disk Cache(磁盘缓存),即把从磁盘中读出的数据存储到内存空间中的方式
Windows操作系统提供了磁盘缓存机制。把低速设备的数据保存在高速设备中,需要时可以直接将其从高速设备中读出,这种缓存的方式在其他情况下也会用到
3、虚拟内存
把磁盘的一部分作为假想内存来使用的机制称为虚拟内存(virtual memory)。这与磁盘缓存是假想的磁盘(实际上是内存)相对,虚拟内存是假想的内存(实际上是磁盘)
实际内存也称为物理内存
Windows操作系统提供了虚拟内存机制。虚拟内存的方法有分页式和分段式两种。Windows采用的是分页式,该方式是指在不考虑程序构造的情况下,把运行的程序按照一定大小的页(page)进行分割,并以页为单位在内存和磁盘间进行置换。在分页式中,我们把磁盘的内容读出到内存称为Page In,把内存的内容写入磁盘称为Page Out。一般情况下,Windows计算机的页的大小是4KB
4、节约内存的编程方法
①通过DLL文件实现函数共有
DLL(Dyanmic Link Library)文件,顾名思义,是在程序运行时可以动态加载Library(函数和数据的集合)的文件。注意:多个应用可以共有同一个DLL文件
静态链接即在EXE程序文件中,静态加载函数的方式。 Windows的操作系统本身也是多个DLL文件的集合体,在不变更EXE文件的情况下,只通过升级DLL文件就可以更新
②通过调用_stdcall来减小程序文件的大小
C语言中在调用函数后,需要执行栈清理处理指令。栈清理处理是指,把不需要的数据从接收和传递函数的参数时使用的内存上的栈区域中清理出去。该命令不是程序记述的,而是在程序编译时由编译器自动附加到程序中的。编译器默认将该处理附加在函数调用方
5、磁盘的物理结构
磁盘的物理结构是指磁盘存储数据的形式
磁盘是通过把其物理表面划分成多个空间来使用的,划分的方式有扇区方式(指将磁盘划分为固定长度的空间)和可变长方式(指把磁盘划分为长度可变的空间)两种。一般的Windoes计算机所使用的硬盘和软盘采用的都是扇区方式。扇区方式中把磁盘表面分成若干个同心圆的空间就是磁道,把磁道按照固定大小(能存储的数据长度相同)划分而成的空间就是扇区
在Windoes计算机中,一般磁盘的1个扇区是512字节
6、文件是将数据存储在磁盘等存储媒介中的一种形式。程序文件中存储数据的单位是字节。文件就是字节数据的集合。在任何情况下,文件中的字节数据都是连续存储的
7、压缩数据的方法
①RLE算法,即把文件内容用“数据*重复次数”的形式来表示的压缩方法。RLE算法是一种很好的压缩方法,经常被用于压缩传真的图像等,但它并不适合文本文件(文本文件是由不同类型的字符组合而成的,而且不同的字符出现的次数也是不同的)的压缩
②哈夫曼算法,是哈夫曼于1952年提出来的压缩算法,即为各压缩对象文件分别构造最佳的编码体系,并以该编码体系为基础来进行压缩。在哈夫曼算法中,通过借助哈夫曼树构造编码体系,即使在不使用字符区分符号的情况下,也可以构建能够明确进行区分的编码体系,即就算表示各字符的数据位数不同,也能够做成可以明确区分的编码。
哈夫曼算法能够大幅提高压缩比率,用哈夫曼算法压缩过的文件中读取数据后,就会以位为单位对该数据进行排查,并与哈夫曼数进行比较,看是否达到了目标编码,所以哈夫曼算法可以对数据进行区分。哈夫曼算法的关键就在于“多次出现的数据用小于8位的字节数来表示,不常用的数据则可以用超过8位的字节数来表示”。注意,不管是不满8位的数据还是超过8位的数据,最终都要以八位为单位保存到文件中。日本人比较常用的压缩软件LHA,使用的就是哈夫曼算法。
8、莫尔斯编码
莫尔斯编码是1837年莫尔斯提出的。莫尔斯编码不是通用语言,而是通过“嗒 嘀 嗒 嘀”这些长点和短点的组合来传递文本信息的。实际上,根据字符种类的不同,莫尔斯电码符号的长度也是不同的。莫尔斯编码把一般文本中出现频率高的字符用短码来表示,这里所说的出现频率是根据印刷行业的印刷活字数目而确定的。莫尔斯编码是根据日常文本中各字符的出现频率来决定各字符的编码的数据长度的。在莫尔斯编码中E的数据长度最短
9、·······