cvs commit: src/lib/libthread_xu Makefile src/lib/libthread_xu/arch src/lib/libthread_xu/arch/alpha src/lib/libthread_xu/arch/alpha/alpha pthread_md.c src/lib/libthread_xu/arch/alpha/include pthread_md.h src/lib/libthread_xu/arch/amd64 ...

Matthew Dillon dillon at
Tue Feb 1 10:41:49 PST 2005

:We have to touch the page tables for a process switch anyway, it's not
:that expensive to have a thread-local page mapping there I think.
:On the other hand the LDT approach costs for every access.

    The rfork'd processes are sharing the same page table, and the switch
    code detects this and does not bother to reload %cr3 (which saves a lot
    of cpu cycles), so you can't create a thread-local page mapping that way.

    As far as I know the LDT is the only way to create uniqueness between
    different processes sharing the same page table.  It's expensive, but 
    probably not as expensive as reloading %cr3.

    It would be interesting to test that hypothesis... what is more expensive?
    reloading %cr3 on every switch or reloading the LDT on every switch ?

					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>

More information about the Commits mailing list