谈谈缓冲区BUFFER的使用

Author: 陕西 会肖 Date: 1995-08-04

        一个BUFFER有528个字节。它连续占用内存中528个字节的区段,这是一般情况。如果用户建立大于32MKB的硬盘,BUFFER可以更大些。
        冲缓区的工作原理:当用户请求磁盘信息时,DOS在读写磁盘之前首先查找其磁盘缓冲区,如果缓冲区中有所请求的信息时,那么DOS立即把它传递给要求该信息的程序或命令;如果磁盘缓冲区中没有所请求的信息,那么DOS首先把数据从磁盘读到某个磁盘缓冲区,然后再把它传递给有关命令或程序,当所有瑗冲区都装满时,就用最近较少使用的那个缓冲区。两者在传递数据的过程中截然不同的是:从磁盘读数据要作物理移动__读写头与磁盘本身都要移动;而从缓冲区读写数据只是把信息从内存的一部分传递到另一部分。前者速度以毫秒度量,而后者以毫微秒度量。
        设置缓冲区的数目即BUFFERS=n[,m]中的n时要考虑的因素:①系统内存容量有多大?由于一个缓冲区差不多要使用1/2K字节的内存,如果用户的内存不够大或者软件要求使用绝大部分内存,那BUFFERS的数目不宜太大。
        ②用户使用的磁盘驱动器的类型。驱动器越多越大,缓冲区也就越多越好。
        ③系统的组织方式。如果子目录多或者子目录嵌套较深,那么BUFFER也是越多越好,DOS把子目录信息读到缓冲区中,可以提高文件查找速度。
        ④与用户的DOS版本高低有关。DOS版本越高,BUFFERS也应越大。
        ⑤与用户使用的软件有关。对于随机读写文件的软件或使用部分代码覆盖技术的软件,缓冲区越多,会运行得越好;对于数据库应用软件用户在增加缓冲区数目时会注意到其性能的提高。
        BUFFERS=n[,m]中的m表示前瞻缓冲区的数目,可设定为0到8(预设置为1)。一个前瞻缓冲区占有512字节。它是为提高循环文件的处理效率而设定的,对于一些以随机存取读写的应用程序(读写一个完整的文件)而言,设置前瞻缓冲区对这类应用程序没有多大益处。
        对DOS3.3以上版本,有一个公式自动确定与文件相适应的缺省缓冲区数(n):
        驱动器容量  RAM容量     缺省缓冲区数目
        ≤360       <128K             2
        >360K      ≤128K             3
        128<RAM<256         5
        256<RAM<512        10
        RAN>512        15
        上限:用户可用的全部内存。
        下限:缺省值。
        理想缓冲区的数目:把最小缓冲区的数目放在CONFIG.SYS文件里,重新引导计算机,观察运行情况。逐次增加两至三个缓冲区,如果在某一点有放慢的迹象,那么把BUFFERS降到前一次的水平;如果磁盘驱动器指示灯频繁闪亮,也应降低到前一次的BUFFERS数目。这个“前一次”的数目就是BUFFERS最佳值的上限。
        如果没有可用的扩充内存或者所有的扩充内存都用它,系统会显示错误提示,BUFFERS的设定值会被取消,系统将采用预设值。若MS-DOS 被放入内存高端,缓冲区也将在内存高端,这样会给应用程序更多的内存空间。