Subject: Re: Is anyone there?!?
To: None <jiho@postal.c-zone.net>
From: Chuck Cranor <chuck@dworkin.wustl.edu>
List: tech-kern
Date: 03/16/1998 13:28:09
>From: jiho@postal.c-zone.net
>Well, hrmph....actually, I was looking to follow whatever might be going
>on and then see if I had additional questions.
what is going on? well, the current status is that the code is in the
tree and the selection of VM system is a compile-time option. porting
and bug report collecting is currently in progress (uvm currently runs ok
on alpha, hp300, i386, mvme68k, and vax). i would expect thing to remain
moving at the current slow-but-steady pace for the next few months.
>Unfortunately, I wasn't able to get a kernel with it running. I have a
>1.2/i386 installation. A 1.3 kernel built (by hand for my hardware)
>with uvm refused to boot -- froze trying to run init, I think.
>My 1.2 kernel with uvm as a drop-in replacement never built successfully.
i'm not clear on how you managed to compile a 1.3-release kernel with
uvm, but i can tell you that in order to have success with that sort
of project you'd have to un-do the address-space sharing vfork-related
changes introduced in the tree around 1998/01/03. if you want to play
with uvm, your best bet is to try and run a -current (1.3E) kernel.
>One thing I do know is that with the Mach vm system, shared libraries
>don't share code pages properly. I've tested things pretty thoroughly,
>and that conclusion sifts out consistently. Code pages from core process
>files are properly shared; those from shared library files are not. You
>are literally better off to run a completely statically linked system,
>than to use any shared libraries (especially with X).
hmm, well, i haven't observed anything along these lines. if you look
at how both static and dynamic binaries are run you'll note that it all
goes through the same memory-mapping mechanism. for the static part of
a demand-paged binary, we are routed through vmcmd_map_pagedvn() in
kern/exec_subr.c to vm_mmap(). for programs that use shared libs,
ld.so uses mmap(2) to map the libs in. the code path on that would
be sys_mmap() -> vm_mmap() [all in vm/vm_mmap.c]. so, both static
and dynamic code-related memory mappings boil down to vm_mmap() calls.
what sort of tests did you run when looking into this?
chuck