Hi Eddy,
PK> Actually its even more intelligent than that, if the memory being
PK> swapped out is part of an EXE file that never actually changes while
PK> it is in memory, it doesn't really swap it out, it marks the PAGE as
PK> being swapped and then continues, but when it needs that PAGE in
PK> again, it just loads it directly from the image it stored in the SWAP
PK> file that it wrote when the application was initially loaded!
ET> So you say that it loads pages from the swap file wich
ET> aren't being swapped out before??
There was a fundamental change in the logic of the USE of SWAPPER.DAT
somewhere between V2.0 and V2.11 but I can't remember enough of the details
(it was too long ago) of when all this changed. The main change was that a
PAGE in memory that was from the EXECUTABLE part of a program that NEVER
altered, was written to the SWAP file just ONCE, and subsequently was never
written again. This provided a small performance improvement on systems that
were doing a lot of swapping.
ET> IIRC, OS/2 (at least Warp 4) reloads pages from an
ET> executable file (such as .EXE-, .DLL-files) from that
ET> executable file where it is loaded from again (and not
ET> from the swap file) when it's needed again.
No, you can't load pages DIRECTLY from the .EXE file itself, the .EXE file
format does not contain an EXACT memory print of what that application looks
like once it is loaded into memory. The only place such a print could be taken
is directly from memory AFTER the .EXE is loaded.
Interestingly, I have been doing a bit of work with NT lately, and of course I
started making comparisons.........;-) One of the first things I noticed is
that NT DEFINATELY bogs down on swap file performance once your memory is
over-committed, even if its only by a small amount. On the other hand, the
OS/2 SWAP file can be quite large and yet performance seems to be excellent by
comparison, barely noticeable.
Cheers.............pk.
--- Maximus/2 3.01
* Origin: Another Good Point About OS/2 (3:772/1.10)
|