SMARTDRV.EXE使用中的两个问题

Author: 湖北 钱庆 Date: 1995-09-29

        [drive:][path]SMARTDRV[[drive[+|-]]...][/E:ElementSize]
        [InitCacheSize][WinCachSize]][/B:<BufferSize>][/C][/R][/L][/Q][/V][/S]
        这里仅对容易产生问题的[InitCachesize]和[WinCacheSize]两个参数加以讨论。
        InitCacheSize:SMARTDRV运行时(Windows不在运行)高速缓存的大小(以KB为单位)。磁盘缓存的大小影响SMARTDRV运行的有效性。通常,缓存越大,SMARTDRV读取磁盘的次数就越少,从而提高了系统的运行效率。如果没有指定InitCacheSize的大小,SMARTDRV根据系统具有多少扩充内存来设置该值。
        WinCacheSize:Windows运行时,系统保留的高速缓存的大小(由于Windows尽可能多地使用扩充内存,因此系统要减少高速缓存的大小,多留一些扩充内存给Windows使用)。同样,如果没有特别指定,由系统设定缺省值。
        下表根据计算机具有的扩充内存容量,列出了InitCacheSize和WinCachSize的缺省值。
        扩充内存   InitCacheSize    WinCachSize
        最大为1MB  所有的扩充内存   0(无缓存)
        最大为2MB  1MB              256K
        最大为4MB  1MB              512K
        最大为6MB  2MB              1MB
        6MB以上    2MB              2MB
        根据笔者经验,如果扩充内存为2MB或2MB以上,则使用缺省配置就可以很好的工作,用户无需重新设定各个参数。但当系统的扩充内存仅有1MB时,就会带来一些问题。
        根据上表,当系统扩充内存为1MB时,所有的扩充内存全部都用作高速缓存,此时如果运行Windows不会产生问题,因为Windows运行后高速缓存自动减为0,Windows可用的扩充内存还是1MB。但其它的一些程序则往往因为不能使用扩充内存而不能运行或运行正常。如Borland C++2.0的集成开发环境的保护模式BCX.EXE此时就不能运行,去掉自动批处理文件中的C:\DOS\SMARTDRV后重新启动计算机,BCX.EXE就可以正常运行了。
        还有一个小问题是有的用户对以上两个参数不了解,以为是越大越好,于是将这两个参数设置得尽可能大。曾经碰到一台机子,显示扩充内存有3,264KB,该是够大了,可运行Windows时,却显示没有足够扩充内存。经过检查,原来是有人在自动批处理文件中加了一行: C:\DOS\SMARTDRV 3,264 3,264。这个命令的意思是启动时高速缓存的大小为3,264KB,Windows运行时高速缓存仍为3,264KB。这样一来Windows可用的扩充内存就为0了,怪不得显示没有足够扩充内存。解决的方法很简单,只要将参数去掉即可(当然进行合理设置亦可)。
        (湖北  钱庆)