Chinaunix
标题:
实时调度优先级设置到最高后,系统不响应其他操作
[打印本页]
作者:
jhl19880722
时间:
2014-10-18 09:40
标题:
实时调度优先级设置到最高后,系统不响应其他操作
测试程序为
#define _GNU_SOURCE
#include <sched.h>
int main()
{
int prio = 99;
sched_setscheduler(0, SCHED_FIFO, (struct sched_param*)&prio);
while(1);
return 0;
}
(环境:ubuntu ,kernel 3.5.0-17-generic,Intel Core2 双核)启动后系统不响应其他操作,关闭程序都关不掉。如果prio = 50,其他操作就能正常响应。
想请问一下这是什么原因?
作者:
embeddedlwp
时间:
2014-10-18 18:46
除了stop class和deadline class的进程没有可以抢占他的,你的“其他操作”应该不会触发这两类的进程。
作者:
jhl19880722
时间:
2014-10-18 22:20
回复
2#
embeddedlwp
中断也不能中止?其他操作不能中止,那在界面上看到的状况跟死机了一样,这是为什么啊?程序只在一个cpu上运行,还剩下一个cpu,按我的理解其他的程序应该有资源能够运行啊。这个地方不是很了解,谢谢了。
作者:
smalloc
时间:
2014-10-19 01:34
“关掉程序”是怎么操作的?
作者:
jhl19880722
时间:
2014-10-19 08:43
回复
4#
smalloc
用CTRL+C关闭的,关闭不掉。想通过kill关闭,但是shell没有反应。最后通过把计算机断电关闭的。
作者:
embeddedlwp
时间:
2014-10-19 09:54
回复
5#
jhl19880722
SCHED_FIFO会一直在运行,除非自己让出CPU,这样检查signal pending的点就都走不到。
你这里设置的是最高优先级的rt,除了stop class, deadline class的进程,其他也抢占不了。
作者:
瀚海书香
时间:
2014-10-20 14:13
回复
1#
jhl19880722
FIFO的进程,需要自己sleep释放CPU
作者:
humjb_1983
时间:
2014-10-21 09:12
jhl19880722 发表于 2014-10-18 22:20
回复 2# embeddedlwp
中断也不能中止?其他操作不能中止,那在界面上看到的状况跟死机了一样,这是为什 ...
这个时候应该还能响应中断的,可以使用sysrq组合键打印下各个核上的堆栈。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2