oldbegger 发表于 2004-10-29 11:28:19

读内核发现一个有趣的问题,所谓的FIFO...呵呵

每次新创建进程,都插入到内核就绪队列的头部,而遍历时从头开始找优先级高的进程,就是说后插入的优先级相同的进程要先于先插入的同优先级的进程运行。这明明是后进先出嘛,真不知道FIFO的意义何在。欢迎讨论!

shuyong 发表于 2004-11-4 21:06:33

新创建的进程有较高的优先级。你也不希望刚启动的程序半天都没有反应吧:-(。

fanda 发表于 2004-11-4 21:36:41

呵呵,解释的好

uranushiko 发表于 2004-11-4 22:30:23

不对吧,不管是往阻塞对列还是就绪队列插入,都应该是插入到队尾啊,不然就不叫进程队列,应该叫进程堆栈了

suowei1979 发表于 2004-11-5 10:01:02

队列肯定是FIFO的
后边的插到队尾

oldbegger 发表于 2004-11-5 10:10:24

后来的插入的是队列的头部,怎么能是FIFO?请看看代码。

suowei1979 发表于 2004-11-5 10:22:00

那只能这么说

后来的插入的是**的头部,**不能称为队列了,应该有其他叫法吧

oldbegger 发表于 2004-11-5 10:59:48

代码上写的是runqueue_head,也就是就绪队列。见sched.c

suowei1979 发表于 2004-11-5 11:11:34


没深入读过,不太明白了也
:)

suowei1979 发表于 2004-11-5 11:12:52

我的sched.c中没发现runqueue_head
我的kernel version:2.6.9

oldbegger 发表于 2004-11-5 11:22:23

哦,我的是2.4。2.6变了很多,她变成了优先级队列,每个优先级一个队列。
页: [1]
查看完整版本: 读内核发现一个有趣的问题,所谓的FIFO...呵呵