X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pintos-anon;a=blobdiff_plain;f=doc%2F44bsd.texi;h=ba67ddaa876e6504f2c2b95993b7810415dd0c6c;hp=8cff146f07c17be0a1363f3c457a9be7d06e719b;hb=17102846d22591590c37548f8514067e2be6c5f6;hpb=f415a37905c57f61b444806bf84f5405184452aa diff --git a/doc/44bsd.texi b/doc/44bsd.texi index 8cff146..ba67dda 100644 --- a/doc/44bsd.texi +++ b/doc/44bsd.texi @@ -44,7 +44,7 @@ vary over time. A well-designed scheduler can often accommodate threads with all these requirements simultaneously. For project 1, you must implement the scheduler described in this -appendix. Our scheduler resembles the one described in @bibref{4.4BSD}, +appendix. Our scheduler resembles the one described in @bibref{McKusick}, which is one example of a @dfn{multilevel feedback queue} scheduler. This type of scheduler maintains several queues of ready-to-run threads, where each queue holds threads with a different priority. At any given @@ -76,17 +76,16 @@ Thread priority is dynamically determined by the scheduler using a formula given below. However, each thread also has an integer @dfn{nice} value that determines how ``nice'' the thread should be to other threads. A @var{nice} of zero does not affect thread priority. A -positive @var{nice}, to the maximum of 20, increases the numeric -priority of a thread, decreasing its effective priority, and causes it -to give up some CPU time it would otherwise receive. On the other hand, -a negative @var{nice}, to the minimum of -20, tends to take away CPU -time from other threads. +positive @var{nice}, to the maximum of 20, decreases the priority of a +thread and causes it to give up some CPU time it would otherwise receive. +On the other hand, a negative @var{nice}, to the minimum of -20, tends +to take away CPU time from other threads. The initial thread starts with a @var{nice} value of zero. Other threads start with a @var{nice} value inherited from their parent thread. You must implement the functions described below, which are for use by test programs. We have provided skeleton definitions for them in -@file{threads/thread.c}. by test programs +@file{threads/thread.c}. @deftypefun int thread_get_nice (void) Returns the current thread's @var{nice} value. @@ -237,14 +236,13 @@ nearest integer. @node 4.4BSD Scheduler Summary @section Summary -This section summarizes the calculations required to implement the -scheduler. It is not a complete description of scheduler requirements. +The following formulas summarize the calculations required to implement the +scheduler. They are not a complete description of scheduler requirements. Every thread has a @var{nice} value between -20 and 20 directly under its control. Each thread also has a priority, between 0 (@code{PRI_MIN}) through 63 (@code{PRI_MAX}), which is recalculated -using the following formula whenever the value of either variable term -changes: +using the following formula every fourth tick: @center @t{@var{priority} = @code{PRI_MAX} - (@var{recent_cpu} / 4) - (@var{nice} * 2)}.