X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fthreads.texi;h=f1fd4dffbb0e4061be96b2104680a8f30ce13685;hb=a4a330725f78a769e6592edffdf5627e8d1d7623;hp=1231168e34224ab3aca2ee50479087ceb0abdf46;hpb=d4def0ac6ef072cf0cf8a968784bc21371bd4d58;p=pintos-anon diff --git a/doc/threads.texi b/doc/threads.texi index 1231168..f1fd4df 100644 --- a/doc/threads.texi +++ b/doc/threads.texi @@ -524,7 +524,7 @@ scheduler with the @option{-mlfqs} kernel option. Passing this option sets @code{thread_mlfqs}, declared in @file{threads/thread.h}, to true when the options are parsed by @func{parse_options}, which happens -midway through @func{main}. +early in @func{main}. When the 4.4@acronym{BSD} scheduler is enabled, threads no longer directly control their own priorities. The @var{priority} argument to @@ -740,11 +740,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? @@ -768,14 +766,6 @@ becomes the higher of the newly set priority or the highest donated priority. When the donations are released, the thread's priority becomes the one set through the function call. This behavior is checked by the @code{priority-donate-lower} test. - -@item Calling @func{printf} in @func{sema_up} or @func{sema_down} reboots! - -@anchor{printf Reboots} -Yes. These functions are called before @func{printf} is ready to go. -You could add a global flag initialized to false and set it to true -just before the first @func{printf} in @func{main}. Then modify -@func{printf} itself to return immediately if the flag isn't set. @end table @node Advanced Scheduler FAQ