当我使用以下代码将调度策略设置为 Deadline 时:
struct sched_attr attr = {
.size = sizeof(attr),
.sched_policy = SCHED_DEADLINE,
.sched_runtime = 30000000,
.sched_period = 100000000,
.sched_deadline = 100000000
};
pid_t pid = getpid();
printf("pid=(%d)\n",pid);
if (sched_setattr(pid, &attr, 0)){
printf("[ERROR] sched_setattr()\n");
perror("[ERROR] sched_setattr()\n");
}
// Check scheduler policy is set correctly
printf("Scheduler Policy is %d.\n", sched_getscheduler(pid));
上述代码运行结果如下:
pid=(XXXXXX)
Scheduler Policy is 6.
谁能解释一下 sched_getscheduler(pid) 的哪个返回 int 值对应于哪个调度程序策略?
例如:根据上述代码,我认为 6 对应于 SCHED_DEADLINE 策略。
最佳答案
你可以很容易地在你的系统上自己找到这样的东西,例如:
$ grep -r SCHED_DEADLINE /usr/include/
/usr/include/linux/sched.h:
#define SCHED_DEADLINE 6
$ grep define.SCHED_ /usr/include/linux/sched.h
#define SCHED_NORMAL 0
#define SCHED_FIFO 1
#define SCHED_RR 2
#define SCHED_BATCH 3
#define SCHED_IDLE 5
#define SCHED_DEADLINE 6
关于c - sched_getscheduler(pid)返回的int值分别对应什么调度策略? [C],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54635617/