|
|
发表于 2005-9-8 00:30:24
|
显示全部楼层
Post by liqinliqin
我说的linux,至少2.6以前是这样,如果进程在系统空间可以被抢占,那linux的就是一个实时的内核。
注意你这句话和你的第一句话已经有差别了,先来看你的第一句话
你说
preemption分为两种
user preemption, kernel preemption
userp preemption里的一种情况是
当interrupt handler运行完,返回user space的时候
而且这种情况在2.4内核也是有的,在2.4里如果这个时候task_struct里need_resched被设置,那么scheduler就会被调用
最常见的interrupt就是timer interrupt
它发生的频率一般都是几百上千赫兹
也就是说一秒钟内就有这么次机会有可能发生preemption
你可以想一下
你写个程序,里面用个scanf,运行之后会停在scanf里,等你输入
这个时候实际上是在read()系统调用里
你不按回车read就不返回
但是这个时候,难道就不能做其他事情了么,放的歌会停么,浏览器不能打开网页么
所以2.4内核里你的第一句话也是不成立的
再看你的这句话
Post by liqinliqin
如果进程在系统空间可以被抢占,那linux的就是一个实时的内核。
kernel preemption,2.4内核好像确实是不可以的
但2.6是可以的,不过不是任何时候都可以,可以看看Linux kernel development相关章节
可Linux,至少vanilla source,不是实时内核
kernel preemption只是实时内核的必要条件 |
|