X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pintos-anon;a=blobdiff_plain;f=doc%2Fthreads.texi;h=1231168e34224ab3aca2ee50479087ceb0abdf46;hp=ac28ba86830da78c8431fd400edd164c5d959b94;hb=d4def0ac6ef072cf0cf8a968784bc21371bd4d58;hpb=f0563386a8c672a1460473b0b4b175e74eaf5c5c diff --git a/doc/threads.texi b/doc/threads.texi index ac28ba8..1231168 100644 --- a/doc/threads.texi +++ b/doc/threads.texi @@ -791,4 +791,32 @@ scheduler at the same time. Yes. In general, your implementation may differ from the description, as long as its behavior is the same. + +@item Some scheduler tests fail and I don't understand why. Help! + +If your implementation mysteriously fails some of the advanced +scheduler tests, try the following: + +@itemize +@item +Read the source files for the tests that you're failing, to make sure +that you understand what's going on. Each one has a comment at the +top that explains its purpose and expected results. + +@item +Double-check your fixed-point arithmetic routines and your use of them +in the scheduler routines. + +@item +Consider how much work your implementation does in the timer +interrupt. If the timer interrupt handler takes too long, then it +will take away most of a timer tick from the thread that the timer +interrupt preempted. When it returns control to that thread, it +therefore won't get to do much work before the next timer interrupt +arrives. That thread will therefore get blamed for a lot more CPU +time than it actually got a chance to use. This raises the +interrupted thread's recent CPU count, thereby lowering its priority. +It can cause scheduling decisions to change. It also raises the load +average. +@end itemize @end table