Update docs.
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 26 Sep 2004 07:58:01 +0000 (07:58 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 26 Sep 2004 07:58:01 +0000 (07:58 +0000)
doc/filesys.texi
doc/pintos.css
doc/threads.texi
doc/vm.texi
src/TODO

index 7f739bfaadd1dd2d20ce76744cd271a111b55869..b496de763334f2437e48924ea56129becc678d39 100644 (file)
@@ -24,10 +24,6 @@ filesystem implementation.
 Your submission should define @code{THREAD_JOIN_IMPLEMENTED} in
 @file{constants.h} (@pxref{Conditional Compilation}).
 
 Your submission should define @code{THREAD_JOIN_IMPLEMENTED} in
 @file{constants.h} (@pxref{Conditional Compilation}).
 
-FIXME FIXME FIXME
-The first step is to understand the default filesystem provided by the
-base code.  
-
 @menu
 * File System New Code::        
 * Problem 4-1 Large Files::     
 @menu
 * File System New Code::        
 * Problem 4-1 Large Files::     
@@ -212,17 +208,16 @@ request for disk block 2 is handled asynchronously.  In other words,
 the process will block to wait for disk block 1, but should not block
 waiting for disk block 2.
 
 the process will block to wait for disk block 1, but should not block
 waiting for disk block 2.
 
-FIXME
 When you're implementing this, please make sure you have a scheme for
 making any read-ahead and write-behind threads halt when Pintos is
 ``done'' (when the user program has completed, etc), so that Pintos
 When you're implementing this, please make sure you have a scheme for
 making any read-ahead and write-behind threads halt when Pintos is
 ``done'' (when the user program has completed, etc), so that Pintos
-will halt normally and print its various statistics.
+will halt normally and the disk contents will be consistent.
 
 @node File System Design Document Requirements
 @section Design Document Requirements
 
 As always, submit a design document file summarizing your design.  Be
 
 @node File System Design Document Requirements
 @section Design Document Requirements
 
 As always, submit a design document file summarizing your design.  Be
-sure to cover the following points :
+sure to cover the following points:
 
 @itemize @bullet
 @item
 
 @itemize @bullet
 @item
@@ -279,24 +274,21 @@ document.
 @b{What exec modes for running Pintos do I absolutely need to
 support?}
 
 @b{What exec modes for running Pintos do I absolutely need to
 support?}
 
-FIXME FIXME
-The most standard mode is to run your Pintos with all the command
-flags on one command line, like this: @samp{pintos -f -cp shell
-shell -ex "shell"}.  However, you also need to support these flags
-individually---especially since that's how the grader tests your
-program.  Thus, you should be able to run the above instead as:
+You also need to support the @option{-f}, @option{-ci}, and
+@option{-ex} flags individually, and you need to handle them when
+they're combined, like this: @samp{pintos -f -ci shell 12345 -ex
+"shell"}.  Thus, you should be able to treat the above as equivalent
+to:
 
 
-FIXME
 @example
 pintos -f
 @example
 pintos -f
-pintos -cp shell shell
+pintos -ci shell 12345
 pintos -ex "shell"
 @end example
 
 pintos -ex "shell"
 @end example
 
-Note that this also provides a way for you to validate that your disks
-are really persistent.  This is a common problem with a write behind
-cache: if you don't shut down properly it will leave the disk in an
-inconsistent state.
+If you don't change the filesystem interface, then this should already
+be implemented properly in @file{threads/init.c} and
+@file{filesys/fsutil.c}.
 
 @item
 @b{Will you test our file system with a different @code{DISK_SECTOR_SIZE}?}
 
 @item
 @b{Will you test our file system with a different @code{DISK_SECTOR_SIZE}?}
index b00c2ce8432c9c12cc01fc051b1b7d56cde6f491..3dee90c4782ed4a7dbd1da9b78cab1e7f7ad8dd8 100644 (file)
@@ -1,11 +1,12 @@
 body {
        background: white;
        color: black;
 body {
        background: white;
        color: black;
-       padding: 0em 12em 0em 3em;
+       padding: 0em 1em 0em 3em;
        margin: 0
 }
 body>p {
        margin: 0
 }
 body>p {
-       margin: 0pt 0pt 0pt 0em
+       margin: 0pt 0pt 0pt 0em;
+       text-align: justify
 }
 body>p + p {
        margin: .75em 0pt 0pt 0pt
 }
 body>p + p {
        margin: .75em 0pt 0pt 0pt
@@ -54,75 +55,11 @@ a:hover {
         text-decoration: underline
 }
 
         text-decoration: underline
 }
 
-div.menu {
-       margin: 0;
-       font-size: 80%;
-       font-weight: bold;
-       line-height: 1.1;
-       text-align: center;
-       position: absolute;
-       top: 2em;
-       left: auto;
-       width: 8.5em;
-       right: 2em;
-}
-div.menu p, span.menuitem {
-       display: block;
-       margin: 0;
-       padding: 0.3em 0.4em;
-       font-family: Arial, sans-serif;
-       background: #ddd;
-       border: thin outset #000;
-       color: #000;
-       text-indent: 0em;
-}
-IMG.menuimg {
-       width: 50%;
-       height: auto;
-       border-width: 0
-}
-
-div.menu a, div.menu em {
-       display: block;
-       margin: 0 0.5em
-}
-div.menu a, div.menu em {
-       border-top: 2px groove #000
-}
-div.menu a:first-child {
-       border-top: none
-}
-div.menu em {
-       color: #fff
-}
-
-div.menu a:link {
-       text-decoration: none;
-       color: blue
-}
-div.menu a:visited {
-       text-decoration: none;
-       color: gray
-}
-div.menu a:hover {
-       background: blue;
-       color: white
-}
-
-div.menu span.menugap + span.menuitem {
-       display: block;
-       margin-top: 1em
-}
-
-span.hide {
-       display: none
-}
-
-body>div.menu {
-       position: fixed
-}
-
 address {
        font-size: 90%;
        font-style: normal
 }
 address {
        font-size: 90%;
        font-style: normal
 }
+
+HR { 
+       display: none
+}
index 451eff8ee2cc73bff7901efe24d077aba5a2d021..6a36e0829861adc06ce37b16f149ce682204eb9e 100644 (file)
@@ -74,7 +74,7 @@ thing the new thread does is to return from
 @code{switch_threads()}.  We realize this comment will seem cryptic to
 you at this point, but you will understand threads once you understand
 why the @code{switch_threads()} that gets called is different from the
 @code{switch_threads()}.  We realize this comment will seem cryptic to
 you at this point, but you will understand threads once you understand
 why the @code{switch_threads()} that gets called is different from the
-@code{switch_threads()} that returns.  @c FIXME
+@code{switch_threads()} that returns.
 
 @strong{Warning}: In Pintos, each thread is assigned a small,
 fixed-size execution stack just under @w{4 kB} in size.  The kernel
 
 @strong{Warning}: In Pintos, each thread is assigned a small,
 fixed-size execution stack just under @w{4 kB} in size.  The kernel
@@ -133,12 +133,13 @@ above.
 
 @item palloc.c
 @itemx palloc.h
 
 @item palloc.c
 @itemx palloc.h
-Page allocator, which hands out system memory one 4 kB page at a time.
+Page allocator, which hands out system memory in multiples of 4 kB
+pages.
 
 @item malloc.c
 @itemx malloc.h
 A very simple implementation of @code{malloc()} and @code{free()} for
 
 @item malloc.c
 @itemx malloc.h
 A very simple implementation of @code{malloc()} and @code{free()} for
-the kernel.  The largest block that can be allocated is 2 kB.
+the kernel.
 
 @item interrupt.c
 @itemx interrupt.h
 
 @item interrupt.c
 @itemx interrupt.h
@@ -170,7 +171,108 @@ directories and page tables.  This will be more important to you in
 project 3.  For now, you can ignore it.
 @end table
 
 project 3.  For now, you can ignore it.
 @end table
 
-FIXME devices and lib directories?
+@menu
+* devices code::                
+* lib files::                   
+@end menu
+
+@node devices code
+@subsection @file{devices} code
+
+The basic threaded kernel also includes these files in the
+@file{devices} directory:
+
+@table @file
+@item timer.c
+@itemx timer.h
+System timer that ticks, by default, 100 times per second.  You will
+modify this code in Problem 1-1.
+
+@item vga.c
+@itemx vga.h
+VGA display driver.  Responsible for writing text to the screen.
+You should have no need to look at this code.  @code{printf()} will
+call into the VGA display driver for you, so there's little reason to
+call this code yourself.
+
+@item serial.c
+@itemx serial.h
+Serial port driver.  Again, @code{printf()} calls this code for you,
+so you don't need to do so yourself.  Feel free to look through it if
+you're curious.
+
+@item disk.c
+@itemx disk.h
+Supports reading and writing sectors on up to 4 IDE disks.  This won't
+actually be used until project 2.
+
+@item intq.c
+@itemx intq.h
+Interrupt queue, for managing a circular queue that both kernel
+threads and interrupt handlers want to access.  Used by the keyboard
+and serial drivers.
+@end table
+
+@node lib files
+@subsection @file{lib} files
+
+Finally, @file{lib} and @file{lib/kernel} contain useful library
+routines.  (@file{lib/user} will be used by user programs, starting in
+project 2, but it is not part of the kernel.)  Here's a few more
+details:
+
+@table @file
+@item ctype.h
+@itemx inttypes.h
+@itemx limits.h
+@itemx stdarg.h
+@itemx stdbool.h
+@itemx stddef.h
+@itemx stdint.h
+@itemx stdio.c
+@itemx stdio.h
+@itemx stdlib.c
+@itemx stdlib.h
+@itemx string.c
+@itemx string.h
+Implementation of the standard C library.  @xref{C99}, for information
+on a few recently introduced pieces of the C library that you might
+not have encountered before.  @xref{Unsafe String Functions}, for
+information on what's been intentionally left out for safety.
+
+@item debug.c
+@itemx debug.h
+Functions and macros to aid debugging.  @xref{Debugging Tools}, for
+more information.
+
+@item random.c
+@itemx random.h
+Pseudo-random number generator.
+
+@item round.h
+Macros for rounding.
+
+@item syscall-nr.h
+System call numbers.  Not used until project 2.
+
+@item kernel/list.c
+@itemx kernel/list.h
+Doubly linked list implementation.  Used all over the Pintos code, and
+you'll probably want to use it a few places yourself in project 1.
+
+@item kernel/bitmap.c
+@itemx kernel/bitmap.h
+Bitmap implementation.  You can use this in your code if you like, but
+you probably won't have any need for project 1.
+
+@item kernel/hash.c
+@itemx kernel/hash.h
+Hash table implementation.  Likely to come in handy for project 3.
+
+@item kernel/console.c
+@itemx kernel/console.h
+Implements @code{printf()} and a few other functions.
+@end table
 
 @node Debugging versus Testing
 @section Debugging versus Testing
 
 @node Debugging versus Testing
 @section Debugging versus Testing
index 6f4428e11e0aeb40043adcaa63ec6fd7df66c40b..094d1828a2f0d03a91fd2e2b809aab019c98c2ee 100644 (file)
@@ -528,8 +528,9 @@ the linker manual, accessible via @samp{info ld}.
 @item
 @b{Do page tables need to created lazily?}
 
 @item
 @b{Do page tables need to created lazily?}
 
-No.  You can create the page tables at load time (or @code{mmap} time)
-if you like.
+No.  You can create the page tables at load time (or @code{mmap}
+time).  Real OSes often manage their page tables lazily, but it's just
+an unneeded complication for our purposes.
 
 @item
 @b{Our code handles the PageFault exceptions. However, the number of
 
 @item
 @b{Our code handles the PageFault exceptions. However, the number of
index 681fded81a2c4259aa3146f1dbb90bab4294f33d..a234cfc77a0f448db75f71f6f48b8a3f9d817f4a 100644 (file)
--- a/src/TODO
+++ b/src/TODO
@@ -1,3 +1,5 @@
+* Add stats.
+
 * Write, test VM.
 
 * Handling of read-only pages?
 * Write, test VM.
 
 * Handling of read-only pages?
@@ -5,9 +7,6 @@
 * Test list, hash ADTs.
   - Finish comments for hash.[ch].
 
 * Test list, hash ADTs.
   - Finish comments for hash.[ch].
 
-* Compile and install gdb, dbg versions.
-  - Test gdb version.
-
 * References/bibliography.
   - Userprog refers to [SysV-i386].
 
 * References/bibliography.
   - Userprog refers to [SysV-i386].