16.3.3
关于½程的执行顺序
我们知道
Linux
是多人多任务的环境,由
top
的输出½果我们也发现,
系统同时间有非常多的½程
在运行中,只是绝大部分的½程都在休眠
(sleeping)
状态而已。
想一想,如果所有的½程同时被唤
醒,那么
CPU
应该要先处理那个½程呢?也就是说,那个½程被执行的优先序比½高?
这就得要
考虑到½程的优先执行序
(Priority)
与
CPU
排程啰!
Tips
CPU
排程与前一章的例行性工作排程并不一样。
CPU
排程指的是每支½程被
CPU
运作的演算规则,
而例行性工作排程则是½某支程序安排在某个时间再½由系统执行。
CPU
排程与操作系统½
具有相关性!
.
Priority
与
Nice
值
我们知道
CPU
一秒钟可以运作多达数
G
的微指令次数,透过核心的
CPU
排程可以让各½程被
CPU
所切换运作,
因此每个½程在一秒钟内或多或少都会被
CPU
执行部分的½本。如果½程都是
集中在一个队列中等待
CPU
的运作,
而不具有优先级之分,也就是像我们去游乐场玩热门游戏需
要排队一样,每个人都是照顺序来!
你玩过一遍后还想再玩
(
没有执行完毕
)
,请到后面继续排队等
待。情况有点像底下这样:
图
16.3.1
、并没有优先级的½程队列示意图
上图中假设
pro1, pro2
是½急的½程,
pro3, pro4
是一般的½程,在这样的环境中,由于不具有优
先级,
唉啊!
pro1, pro2
还是得要继续等待而没有优待呢!如果
pro3, pro4
的工作又臭又长!那么
½急的
pro1, pro2
就得要等待个老半天才能够完成!真麻烦啊!所以啰,我们想要½½程分优先级
啦!如果优先序½高则运作次数可以½多次,
而不需要与½慢优先的½程抢位置!我们可以½½程
的优先级与
CPU
排程½行如下图的½释: