X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2F44bsd.texi;h=743dad36fca230323600e4f9add0465fcad742df;hb=9f013d0930202eea99c21083b71098a0df64be0d;hp=d27343f655d979540f74b1243fcffb4000e6bbe8;hpb=b492098dbb2bd50aef4104bcef418ba53f30a4eb;p=pintos-anon diff --git a/doc/44bsd.texi b/doc/44bsd.texi index d27343f..743dad3 100644 --- a/doc/44bsd.texi +++ b/doc/44bsd.texi @@ -113,7 +113,9 @@ the formula @noindent where @var{recent_cpu} is an estimate of the CPU time the thread has used recently (see below) and @var{nice} is the thread's -@var{nice} value. The coefficients @math{1/4} and 2 on @var{recent_cpu} +@var{nice} value. The result should be rounded down to the nearest +integer (truncated). +The coefficients @math{1/4} and 2 on @var{recent_cpu} and @var{nice}, respectively, have been found to work well in practice but lack deeper meaning. The calculated @var{priority} is always adjusted to lie in the valid range @code{PRI_MIN} to @code{PRI_MAX}. @@ -182,7 +184,7 @@ current value of @var{recent_cpu} decays to a weight of .1 in received ``recently,'' with the rate of decay inversely proportional to the number of threads competing for the CPU. -Assumptions made by some of the tests require that updates to +Assumptions made by some of the tests require that these recalculations of @var{recent_cpu} be made exactly when the system tick counter reaches a multiple of a second, that is, when @code{timer_ticks () % TIMER_FREQ == 0}, and not at any other time. @@ -298,8 +300,8 @@ Suppose that we are using a @m{p.q} fixed-point format, and let @am{f = 2^q, f = 2**q}. By the definition above, we can convert an integer or real number into @m{p.q} format by multiplying with @m{f}. For example, in 17.14 format the fraction 59/60 used in the calculation of -@var{load_avg}, above, is @am{(59/60)2^{14}, 59/60*(2**14)} = 16,111 -(rounded to nearest). To convert a fixed-point value back to an +@var{load_avg}, above, is @am{(59/60)2^{14}, 59/60*(2**14)} = 16,110. +To convert a fixed-point value back to an integer, divide by @m{f}. (The normal @samp{/} operator in C rounds toward zero, that is, it rounds positive numbers down and negative numbers up. To round to nearest, add @m{f / 2} to a positive number, or