X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fthreads.texi;h=6eec6bb1ea5a44d1620b04faf8108b879d7ad5f1;hb=ed04361f6ec91e4f0db1550c2cc487a461b2d17b;hp=c1381d01dabd7107dc878e2763fe29668802cc2e;hpb=53a7f5d0952a4595f252247f5ee3d017468eb57e;p=pintos-anon diff --git a/doc/threads.texi b/doc/threads.texi index c1381d0..6eec6bb 100644 --- a/doc/threads.texi +++ b/doc/threads.texi @@ -364,13 +364,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 +474,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 +627,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 +690,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 @@ -740,11 +734,9 @@ to thread @var{B} (with priority 3), then @var{B}'s new priority is 5, not 8. @item Can a thread's priority change while it is on the ready queue? -Yes. Consider this case: low-priority thread @var{L} holds a -lock that high-priority thread @var{H} wants, so @var{H} donates its -priority to @var{L}. @var{L} releases the lock and -thus loses the CPU and is moved to the ready queue. Now @var{L}'s -old priority is restored while it is in the ready queue. +Yes. Consider a ready, low-priority thread @var{L} that holds a lock. +High-priority thread @var{H} attempts to acquire the lock and blocks, +thereby donating its priority to ready thread @var{L}. @item Can a thread's priority change while it is blocked?