Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Jul 2008 12:07:51 -0400
From:      "FreeBSD Hackers" <ml.freebsd.hackers@gmail.com>
To:        "Max Laier" <max@love2party.net>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: General questions about virtual memory
Message-ID:  <591f70e00807300907n1a0585efr455bf1f8fc60b4e8@mail.gmail.com>
In-Reply-To: <200807301536.23274.max@love2party.net>
References:  <591f70e00807300459j74aac11eob0bea7cdf4b4dcd4@mail.gmail.com> <200807301536.23274.max@love2party.net>

next in thread | previous in thread | raw e-mail | index | archive | help
>
> This suggest that you don't understand virtual memory at all.  Go back to
> the
> start of the chapter and re-read.  The page directories and page tables
> describe a *virtual* address space.  For a given architecture the *virtual*
> address space has a fixed size (4GB for i386), so the page table structure
> is
> always the same size (though it might be sparsely populated).  Inside the
> page


Ack!  As soon as I read this I realized the mistake I had made in my
thinking.  This was a dumb question, and I knew better than to ask.  Somehow
I had confused myself.

----- 8< -----

If a read request is made to a virtual address who's data has been swapped
out, the CPU traps to the OS to fix the problem.  Assuming there are no free
page frames for the new data, a page frame is selected and evicted to make
room for the new page.  Whatever page was chosen belongs to a process
somewhere in the system.  When that page frame gets swapped, the PTE
pointing to that page frame must be updated to indicate that that data is no
longer in RAM.  How does the OS find that PTE?  Does it search through every
entry of every page table for every process in the system until it finds it?

Kevin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?591f70e00807300907n1a0585efr455bf1f8fc60b4e8>