X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Ffilesys.texi;h=f245daa48ea1e6d592a86146ddddf9947ca9cffe;hb=c9667cc796f96017951f8ac90978846918c184d7;hp=9075c9a5a3c2f113319b980fb205bba596d00b2a;hpb=a96d2712f349629d7fe2186e2620f1704cbdee50;p=pintos-anon diff --git a/doc/filesys.texi b/doc/filesys.texi index 9075c9a..f245daa 100644 --- a/doc/filesys.texi +++ b/doc/filesys.texi @@ -16,6 +16,7 @@ to 5% extra credit if you do enable VM. @menu * Project 4 Background:: +* Project 4 Suggested Order of Implementation:: * Project 4 Requirements:: * Project 4 FAQ:: @end menu @@ -108,6 +109,33 @@ out the file system contents is the standard Unix ``tar'' format. You can use the Unix @command{tar} program to examine them. The tar file for test @var{t} is named @file{@var{t}.tar}. +@node Project 4 Suggested Order of Implementation +@section Suggested Order of Implementation + +We suggest implementing the parts of this project in the following +order to make your job easier: + +@enumerate +@item +Buffer cache (@pxref{Buffer Cache}). Implement the buffer cache and +integrate it into the existing file system. At this point all the +tests from project 2 (and project 3, if you're building on it) should +still pass. + +@item +Extensible files (@pxref{Indexed and Extensible Files}). After this +step, your project should pass the file growth tests. + +@item +Subdirectories (@pxref{Subdirectories}). Afterward, your project +should pass the directory tests. + +@item +Remaining miscellaneous items. +@end enumerate + +You should think about synchronization throughout. + @node Project 4 Requirements @section Requirements @@ -287,11 +315,12 @@ disk. Otherwise, fetch the block from disk into cache, evicting an older entry if necessary. You are limited to a cache no greater than 64 sectors in size. -Be sure to choose an intelligent cache replacement algorithm. -Experiment to see what combination of accessed, dirty, and other -information results in the best performance, as measured by the number -of disk accesses. For example, metadata is generally more valuable to -cache than data. +You must implement a cache replacement algorithm that is at least as +good as the ``clock'' algorithm. Your algorithm must also account for +the generally greater value of metadata compared to data. Experiment +to see what combination of accessed, dirty, and other information +results in the best performance, as measured by the number of disk +accesses. You can keep a cached copy of the free map permanently in memory if you like. It doesn't have to count against the cache size. @@ -365,6 +394,10 @@ if B's data is all nonzero bytes, A is not allowed to see any zeros. Operations on different directories should take place concurrently. Operations on the same directory may wait for one another. +Keep in mind that only data shared by multiple threads needs to be +synchronized. In the base file system, @struct{file} and @struct{dir} +are accessed only by a single thread. + @node Project 4 FAQ @section FAQ