X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fvm.texi;h=37b53f766d9f710b8b9ed134846ae7b2abbc6843;hb=bfd2e965e1aa5f2b00dff6b11be770c6cbe7313d;hp=840e506a129586d9c2857f22a86a4325cdfafc01;hpb=8abbb333aea445641d967befd3ca477502ea770b;p=pintos-anon diff --git a/doc/vm.texi b/doc/vm.texi index 840e506..37b53f7 100644 --- a/doc/vm.texi +++ b/doc/vm.texi @@ -316,12 +316,12 @@ Some way of translating in software from virtual page frames to physical page frames. Pintos provides a hash table that you may find useful for this purpose (@pxref{Hash Table}). -It is possible to do this translation without adding a new data -structure, by modifying the code in @file{userprog/pagedir.c}. However, -if you do that you'll need to carefully study and understand section -3.7, ``Page Translation Using 32-Bit Physical Addressing,'' in -@bibref{IA32-v3a}, and in practice it is probably easier to add a new -data structure. +You don't strictly need a new data structure for this. You could +instead modify the code in @file{userprog/pagedir.c}. If you do that +you'll need to thoroughly understand how 80@var{x}86 page tables work +by, e.g.,@: studying section 3.7, ``Page Translation Using 32-Bit +Physical Addressing,'' in @bibref{IA32-v3a}. In practice, most groups +use a separate data structure. @item Some way of finding a page on disk (in a file or in swap) if it is not @@ -420,11 +420,10 @@ Bits}) to implement an approximation to LRU. Your algorithm should perform at least as well as the ``second chance'' or ``clock'' algorithm. -Your design should allow for parallelism. Multiple processes should -be able to process page faults at once. If one page fault require +Your design should allow for parallelism. If one page fault requires I/O, in the meantime processes that do not fault should continue -executing and other page faults that do not require I/O should be able to -complete. These criteria require some synchronization effort. +executing and other page faults that do not require I/O should be able +to complete. These criteria require some synchronization effort. @node Lazy Loading @subsection Lazy Loading @@ -670,7 +669,7 @@ kernel functions need to obtain memory. You can layer some other allocator on top of @func{palloc_get_page} if you like, but it should be the underlying mechanism. -Also, you can use the @option{-u} option to @command{pintos} to limit +Also, you can use the @option{-ul} option to @command{pintos} to limit the size of the user pool, which makes it easy to test your VM implementation with various user memory sizes. @@ -713,7 +712,7 @@ with the file mapped into your address space, you can directly address it like so: @example -write (addr, 64, STDOUT_FILENO); +write (STDOUT_FILENO, addr, 64); @end example Similarly, if you wanted to replace the first byte of the file,