这是我通过电话筛选参加的面试问题。
我给出了答案:
Running State (R)
,interruptible State (S)
和IO wait
。
但我想我可能会错误地理解这个问题,或者在我的答案中可能会遗漏某些东西,我只是觉得这样。
所以我通过互联网检查了一些愚蠢的分散信息。我仍然不确定答案是什么。
您如何看待这个问题的答案?
答案 0 :(得分:2)
没有标准的计算负载平均值的方法,这取决于操作系统。这是Linux's load calculator:
long calc_load_fold_active(struct rq *this_rq)
{
long nr_active, delta = 0;
nr_active = this_rq->nr_running;
nr_active += (long) this_rq->nr_uninterruptible;
if (nr_active != this_rq->calc_load_active) {
delta = nr_active - this_rq->calc_load_active;
this_rq->calc_load_active = nr_active;
}
return delta;
}
Linux为负载平均值计算为活动的进程是Running(R)和Uininterruptible(D)。
不计入可中断睡眠(S),也不计算已解散(Z)或停止(T)。