X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Ffilesys.texi;h=f245daa48ea1e6d592a86146ddddf9947ca9cffe;hb=c9667cc796f96017951f8ac90978846918c184d7;hp=1b666b3b6e3ca24dbc3c1579ee3c8df4b10b934f;hpb=ccbd8543c5ad589e878a3924b2dd39d5a6a2f39d;p=pintos-anon diff --git a/doc/filesys.texi b/doc/filesys.texi index 1b666b3..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 @@ -366,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