process. Whenever the processor needed to look up a translation, it
consulted the page table. As long as the process only accessed
memory that it didn't own, all was well. If the process accessed
process. Whenever the processor needed to look up a translation, it
consulted the page table. As long as the process only accessed
memory that it didn't own, all was well. If the process accessed
use your new page table management code to construct the page tables
only as page faults occur for them.
use your new page table management code to construct the page tables
only as page faults occur for them.
frames that you use for storing user virtual pages. Be sure to pass
the @code{PAL_USER} flag to this function when you do so, because that
allocates pages from a ``user pool'' separate from the ``kernel pool''
frames that you use for storing user virtual pages. Be sure to pass
the @code{PAL_USER} flag to this function when you do so, because that
allocates pages from a ``user pool'' separate from the ``kernel pool''
There are many possible ways to implement virtual memory. The above
is simply an outline of our suggested implementation.
There are many possible ways to implement virtual memory. The above
is simply an outline of our suggested implementation.
around the loop, @code{read_bytes} represents the number of bytes to
read from the executable file and @code{zero_bytes} represents the number
of bytes to initialize to zero following the bytes read. The two
around the loop, @code{read_bytes} represents the number of bytes to
read from the executable file and @code{zero_bytes} represents the number
of bytes to initialize to zero following the bytes read. The two
for @var{aux} and ignore the values passed to the hash function and
comparison functions. (You'll get a compiler warning if you don't use
the @var{aux} parameter, but you can turn that off with the
for @var{aux} and ignore the values passed to the hash function and
comparison functions. (You'll get a compiler warning if you don't use
the @var{aux} parameter, but you can turn that off with the
if you like, but it should be the underlying mechanism, directly or
indirectly, for two reasons. First, running out of pages in the user
pool just causes user programs to page, but running out of pages in
if you like, but it should be the underlying mechanism, directly or
indirectly, for two reasons. First, running out of pages in the user
pool just causes user programs to page, but running out of pages in