Организация планирования в UNIX
0<PNICE<2*NZERO. Поле P_NICE наследуется при порождении процесса.
P_CPU - это системная составляющая. Она формируется системой (ядром). Для этого используются прерывания по сигналу от таймера. Во время программного обслуживания часов происходит переоценка приоритетов процессов. А, следовательно, может произойти смена выполнения процессов. В отсутствие другого процесса системные часы реализуют функцию квантования времени между большим числом пользователей. В зависимости от кванта, значение поля будет увеличиваться на 1, следовательно приоритет процесса понижается. Приоритет непривилегированного процесса не может стать ниже P_USER (системная константа, например, 50).
Таким образом приоритет складывается из:
P_PRI = P_USER + (P_NICE-NZERO) + P_CPU/16
Он не может быть меньше P_USER, P_NICE P_CPU, причем пользовательская составляющая учитывается в виде разности (P_NICE-NZERO).
При учете P_CPU следует иметь в виду, что это поле увеличивается на 1 через прерывание по таймеру и не понятно проработал ли процесс полные 20 сек. Поэтому берется некое усреднение (делим на 16). Значение всех констант, входящих в эту формулу неотрицательно.
Замечание. Всегда P_NICEіNZERO (для (P_NICE-NZERO) процессов), следовательно значение приоритета і P_USER, следовательно приоритет непривилегированного процесса не может быть меньше 50. Для привилегированного процесса P_PRI і P_USER-NZERO = 30. P_PRI Ј P_USER+NZERO -1=69. Пусть есть 2 процесса, причем ни они, ни их родители не меняли поле P_NICE. Тогда P_NICE=NZERO и процессы имеют начальные значения, равные значению P_USER. Поле P_CPU каждые 20 секунд увеличивается на 1, но в приоритет эта составляющая входит с коэффициентом 1/16. Это означает, что дополнительная единица набежит через 16 таймерных интервалов. Поле P_CPU второго процесса не меняется, т.е. его приоритет постоянный. Через 320 микросекунд разница приоритетов составит 1 в пользу второго процесса. Как толь это произойдет, то автоматически произойдет смена процессов (подразумевалось, что изначально приоритеты процессов были равны).
предыдущаяследующая