|
发表于 2005-7-1 17:19:53
|
显示全部楼层
2.6 Linux有3个scheduling policy
#define SCHED_OTHER 0
#define SCHED_FIFO 1
#define SCHED_RR 2
第一个是普通进程的,后两个是实时进程的
一般的进程都是普通进程,系统中出现实时进程的机会很少
2.6 Linux有140个优先级
后40个和nice value一一对应,属于SCHED_OTHER
前100个属于SCHED_FIFO, SCHED_RR
FIFO,RR这两个的区别学过OS应该都知道吧
一个是先进先出,一个是round robin
因为SCHED_FIFO, SCHED_RR优先级高于所有SCHED_OTHER的进程
所以只要他们能够运行,在他们运行完之前,所有SCHED_OTHER的进程的都没有得到执行的机会
可以以root身份试一下这个小程序,普通用户无法调用sched_setscheduler系统调用
不过做好准备,一但运行起来之后,要结束就只有按机箱上的reset
- #include<sched.h>
- #include<unistd.h>
- int main(){
- struct sched_param sp;
- sp.sched_priority = 99;
- sched_setscheduler(0, SCHED_RR, &sp);
- printf("%d\n", sched_getscheduler(0));
- for(;;);
- return 0;
- }
复制代码 |
|