[FreeVMS] pager question

Guido guidoj at users.sourceforge.net
Sat Jun 29 21:02:34 CEST 2013


On Saturday 29 June 2013 18:10:16 BERTRAND Joël wrote:
> 	When a process try to access to a unmapped page, it generates a
> pagefault IPC. This IPC is received by an event handler loop in its
> parent (for example, PAGER.SYS sends L4_PAGEFAULT IPC to VMSKERNEL.SYS
> and all IPC are caught in sys/sys_loop.c).
> 
> 	Child process does not know if its request can or will be done. It only
> sends L4_PAGEFAULT IPC to its parent and waits for an answer. This
> answer can be a new L4_MapItem() or a L4_AbortIpc_and_stop(). Thus, I
> don't see why we need to separate L4_PAGEFAULT IPC in two IPC calls.

The question is if the the process should try to access an unmapped page if it 
actually tries to allocate memory. Shouldn't the process try to request more 
pages first and wait for them to be mapped into its address space before it 
tries to access them?

It seems to me that this makes the pagefault handling algorithm needlessly 
complex. The algorithm could as simple as "if the page is mapped, load it from 
cache or swap, otherwise kill the process". A pagefault should be an exception 
not a function.

IMHO a page fault and a memory request are completely different and should not 
be combined into one IPC call. I'm afraid that combining them will in de long 
run this only hurt reliability, stability and maintainability of the OS.

Regards,
Guido




More information about the FreeVMS mailing list