我在第五章中主要了解到了内存和磁盘的亲密关系。在计算机的5大部件内,内存和磁盘也都被归类为存储部件。利用电流来实现存储的内存,同利用磁效应来实现存储的磁盘,也是有差异的。从存储容量来看,内存是高速高价,而磁盘则是低速廉价。内存主要是指主内存(负责存储CPU中运行的程序指令和数据内存),磁盘主要是指硬盘。
大前提,计算机中主要的存储部件是内存和磁盘。磁盘中存储的程序,必须要加载到内存后才能运行。在磁盘中保存的原始程序是无法直接运行的。这是因为,负责解析和运行程序内容的CPU,需要通过内部程序计数器来指定内存地址,然后才能读出程序。即使CPU可以直接读出并运行磁盘中保存的程序,由于磁盘读取速度慢,程序的运行速度还是会降低。总之,存储在磁盘中的程序需要读入到内存后才运行。
使用磁盘缓存可以大大改善磁盘数据的访问速度。Windows提供了磁盘缓存机制作为操作系统,对普通用户来说,磁盘缓存发挥显著效果的时代只延续到Windows95/98。现在,随着硬盘访问速度的大幅改善,磁盘缓存的效果也没有之前明显了。把低速设备的数据保存在高速设备中,需要时可以直接将其从高速设备中读出。虚拟内存是指把磁盘的一部分作为假想的内存来使用。这与磁盘缓存是假想的磁盘(实际是内存)相对,虚拟内存是假想的内存(实际上是磁盘)。
磁盘的物理结构是指磁盘存储数据的形式。磁盘是通过把其物理表面化分成多个空间来使用,划分的方式有扇区方式和可变长方式两种,前者是指将磁盘划分为固定长度的空间,后者则是指把磁盘划分为长度可变的空间。一般的Windows计算机所使用的硬盘和软盘,采用的都是扇区方式。扇区方式中,把磁盘表面分成若干个同心圆的空间就是磁道,把磁盘按照固定大小(能存储的数据长度相同)划分而成的空间就是扇形。
我在第六章中了解了文件的压缩。文件是将数据存储在磁盘等存储媒介中的一种形式。程序文件中存储数据的单位是字节。文件就是字节数据的集合。如果文件中存储的数据是文字,那么该文件就是文本文件。如果是图形,那么该文件就是图像文件。在任何情况下,文件中的字节数据都是连续存储的。
文件的压缩机制RLE算法的机制,把文件内容用“数据×重复次数”的形式来表示的压缩方法称为RLE算法。RLE算法是一种很好的压缩方法,经常被用于压缩传真的图像等。因为图像文件本质也是字节数据的集合体,所以可以用RLE算法来压缩。然而,在实际=的文本文件中,同样字符多次重复出现的情况并不多见。虽然针对相同数据经常连续的图像、文件等,RLE算法可以发挥不错的效果,但它并不适合文本文件的压缩。不过,因为该压缩机制非常简单,因此使用RLE算法的程序也相对更容易编写。
哈夫曼算法是哈夫曼于1952年提出的压缩算法。文本文件是由不同类型的字符组合而成的,而且不同的字符出现的次数也是不同的,哈夫曼算法的关键就在于“多次出现的数据用小于8位的字节数来表示,不常用的数据则可以用超过8位的字节数来表示”。为了更好的了解哈夫曼算法,现了解莫尔斯编码。莫尔斯编码不是通过语言,而是通过“嗒 嘀 嗒 嘀”这些长点和短点的组合来传递文本信息的。实际上,根据字符种类的不同,莫尔斯电码符号的长度也是不同的。莫尔斯编码把一般文本中出现频率高的字符用短编码来表示。
可逆压缩和非可逆压缩图像文件还可以使用与前文介绍的RLE算法、哈夫曼算法不同的其他压缩算法。这是因为,多数情况下,并不要求压缩后的图像文件必须还原到与压缩前同等的质量。我们把能还原到压缩前状态的压缩称为可逆压缩,无法还原到压缩前状态的压缩称为非可逆压缩。
压缩算法的种类大概有一二十种。之所以有如此多的压缩算法,是因为压缩比率,压缩需要的处理时间以及各种文件的需求等是不一样的。