X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fthreads.texi;h=377343d77323a114becf54644c9e011857e78d00;hb=877208550085617dd296fd66df541b46aa0e91a8;hp=f1fd4dffbb0e4061be96b2104680a8f30ce13685;hpb=695e26795ff43edb514abd99e566d1eee32194d6;p=pintos-anon diff --git a/doc/threads.texi b/doc/threads.texi index f1fd4df..377343d 100644 --- a/doc/threads.texi +++ b/doc/threads.texi @@ -240,6 +240,12 @@ serial drivers. Interrupt queue, for managing a circular queue that both kernel threads and interrupt handlers want to access. Used by the keyboard and serial drivers. + +@item rtc.c +@itemx rtc.h +Real-time clock driver, to enable the kernel to determine the current +date and time. By default, this is only used by @file{thread/init.c} +to choose an initial seed for the random number generator. @end table @node lib files @@ -277,7 +283,11 @@ more information. @item random.c @itemx random.h -Pseudo-random number generator. +Pseudo-random number generator. The actual sequence of random values +will not vary from one Pintos run to another, unless you do one of +three things: specify a new random seed value on the @option{-rs} +kernel command-line option on each run, or use a simulator other than +Bochs, or specify the @option{-r} option to @command{pintos}. @item round.h Macros for rounding. @@ -364,13 +374,7 @@ with each other, requiring lots of last-minute debugging. Some groups who have done this have turned in code that did not even compile or boot, much less pass any tests. -Instead, we recommend integrating your team's changes early and often, -using a source code control system such as CVS (@pxref{CVS}) or a -group collaboration site such as SourceForge (@pxref{SourceForge}). -This is less likely to produce surprises, because everyone can see -everyone else's code as it is written, instead of just when it is -finished. These systems also make it possible to review changes and, -when a change introduces a bug, drop back to working versions of code. +@localcvspolicy{} You should expect to run into bugs that you simply don't understand while working on this and subsequent projects. When you do, @@ -480,9 +484,9 @@ priority. If necessary, you may impose a reasonable limit on depth of nested priority donation, such as 8 levels. You must implement priority donation for locks. You need not -implement priority donation for semaphores or condition variables -(but you are welcome to do so). You do need to implement -priority scheduling in all cases. +implement priority donation for the other Pintos synchronization +constructs. You do need to implement priority scheduling in all +cases. Finally, implement the following functions that allow a thread to examine and modify its own priority. Skeletons for these functions are @@ -633,7 +637,7 @@ does not actually mean that @func{pass} called @func{debug_panic}. In fact, @func{fail} called @func{debug_panic} (via the @func{PANIC} macro). GCC knows that @func{debug_panic} does not return, because it is declared @code{NO_RETURN} (@pxref{Function and Parameter -Attributes}), so it doesn't include any code in @func{pass} to take +Attributes}), so it doesn't include any code in @func{fail} to take control when @func{debug_panic} returns. This means that the return address on the stack looks like it is at the beginning of the function that happens to follow @func{fail} in memory, which in this case happens @@ -696,7 +700,7 @@ kernel thread but the first. Don't worry about the possibility of timer values overflowing. Timer values are expressed as signed 64-bit numbers, which at 100 ticks per second should be good for almost 2,924,712,087 years. By then, we -expect Pintos to have been phased out of the CS 140 curriculum. +expect Pintos to have been phased out of the @value{coursenumber} curriculum. @end table @node Priority Scheduling FAQ