Mail Archives: djgpp/2000/03/01/23:07:32
On Wed, 1 Mar 2000, Damian Yerrick wrote:
> >SmartDrv flushes its buffers when a program exits
>
> It flushes its write caches when a program exits _to command.com_.
No, it hooks function 4Ch of Int 21h and writes the cached data when a
program exits, even if it doesn't exit to COMMAND.COM.
> Even this can be disabled; see the Smartdrv docs.
I explained in my other message that the only thing you can disable is
the delay in program's exit until the cache is flushed, but you cannot
prevent Smartdrv from writing cached data when the program exits.
> >And because SmartDrv flushes buffers on program exit, a RAM disk is
> >better with pipes as well.
>
> See above.
See above.
> >The problem is that with SmartDrv, you don't have the same kind of
> >control on what is cached and what's not, it is entirely up to
> >SmartDrv.
>
> And Smartdrv is Smarter than you.
Most of the time, but not always. For example, it has no way of
knowing (and I have no way of telling it) that I want a certain group
of files to be kept in the cache permanently. This would be the
equivalent of copying the compiler, the assembler, the linker, etc. to
a RAM disk.
> >For example, if some program calls the `sync' function, SmartDrv
> >flushes and empties all of its buffers, and forgets about any gcc.exe
> >it was caching.
>
> Or does it only commit its write cache?
No, it actually forgets everything about cached data. The system call
used by the `sync' library function causes a kind of reinitialization
of the entire cache.
> If you have Windows 9x installed, long filenames can be an issue.
If you use Microsoft's RAMDRIVE.SYS, yes. But you can get any of the
several alternatives from SimTel, and even with RAMDRIVE, the problems
begin only if you go past 8MB.
- Raw text -