views:

510

answers:

4

Hi,

I am trying to investigate the behaviour of the Windows Kernel with respect to Memory Mapped Files / Virtual Memory. Specifically I am interested in determining how frequently the contents of a memory mapped file are flushed (by Windows) to disk and what criterion Windows uses for deciding it is time to do so.

I have done a bit of research online and, apart from the MSDN which deals more with the 'hows and whys' rather than detailing the internal workings, there doesn't appear to be much information. If anyone can point me to any articles or has looked into this before and has some insight I would welcome it.

Thanks.

A: 

The internal workings are an implementation detail and subject to change. They're not documented anywhere because Microsoft doesn't want you relying on the details.

I've got to ask: Why do you care? If you have hard real-time requirements, Windows might not be the OS for you...

Roger Lipscombe
+1  A: 

Memory mapped files are controlled by the modified page writer in the kernel - they're flushed whenever the memory that backs the page needs to be re-used (so it can happen under memory pressure).

The system also keeps track of the number of dirty pages and writes them after a threshold is reached.

You can find more information about in this article about Windows memory management changes for Windows Vista - it doesn't directly answer your question about how the memory manager treats modified pages but you can infer some of the details based on the information in the article.

Larry Osterman
+2  A: 

I suggest reading Microsoft Windows Internals by Mark Russinovich and David Solomon, in fifth edition also with Alex Ionescu.

msuvajac
+1  A: 

I would suggest that you obtain a copy of

Microsoft® Windows® Internals Fourth Edition: Microsoft Windows Server 2003 Windows XP and Windows 2000

There are pdfs floating around in the cyber cloud.

This is the book done by the "sysinternals" crowd who have written some very good windows utils over the years.

http://www.microsoft.com/technet/sysinternals

You will have to read the chapters on

Memory Management

Storage Management

Cache Manager

File Systems

They don't directly address your concern but if you manage to read, digest and grasp the very techical paragraphs you can work it out yourself. However if you can predict why Windows does what it does "You are a better man than most".

Happy brain freeze reading that lot.