22.3.3基本调度功能
本节介绍GNU C库中用于设置进程的绝对优先级和调度策略。
便携性说明:在具有以下功能的系统上部分中定义了宏_POSIX_PRIORITY_SCHEDULING<unistd.h>.
对于调度策略是传统调度的情况微调调度的功能位于传统调度.
不要试图过多地利用这些名称和结构功能。它们与本手册中描述的概念不匹配因为函数是由POSIX.1b定义的,但实现在使用GNU C库的系统上,与POSIX相反结构沉思。POSIX方案假设主调度参数是调度策略,优先级值(如果有)是调度策略的一个参数。在然而,实现的优先级值是王者和调度如果有什么区别的话,政策只会微调优先权的效果。
本节中的符号由包含文件声明附表。小时.
便携性说明:在POSIX中pid _ t
的参数下面的函数是指进程ID。在Linux上,它们实际上是线程ID,并控制如何使用调度特定线程与整个系统有关。结果行为不符合至POSIX。这就是为什么以下描述提及任务和任务ID,而不是进程和进程ID。
- 数据类型:结构sched_param¶
-
此结构描述了绝对优先级。
int计划优先级
绝对优先级值
- 功能:整数 sched_set调度程序 (pid_tpid控制器,整数政策,常量结构sched_param*参数)¶
-
初步:|MT-安全|AS-安全|交流-安全|请参见POSIX安全概念.
此函数用于设置绝对优先级和调度策略用于任务。
它指定由参数和调度策略政策到ID为的任务pid控制器,或调用任务,如果pid控制器为零。如果政策是阴性,sched_set调度程序
保留现有的调度策略。
以下宏表示的有效值政策:
附表_其他
¶
传统调度
SCHED_FIFO格式
¶
先进先出
附表_RR
¶
轮转罗宾
成功后,返回值为0
。否则,它就是-1
和错误编号
相应设置。这个错误编号
特定于值该功能包括:
EPERM公司
- 调用任务没有
CAP_SYS_NICE盖
许可和政策不是附表_其他
(或者是负数现有策略不是附表_其他
. - 调用任务没有
CAP_SYS_NICE盖
许可及其所有者不是目标任务的所有者。也就是说调用任务既不是任务的有效uid,也不是任务的真实uidpid控制器.
ESRCH公司
没有pid为的任务pid控制器和pid控制器不为零。
EINVAL公司
- 政策未标识现有计划策略。
- 由确定的绝对优先级值*参数在外部调度策略的有效范围政策(或现有调度策略,如果政策为负数)或参数是无效的。
计划获取优先级最大值
和计划获取优先级最小值
告诉你有效范围是什么。 - pid控制器为负值。
- 功能:整数 sched_get调度程序 (pid_tpid控制器)¶
-
初步:|MT-安全|AS-安全|交流-安全|请参见POSIX安全概念.
此函数返回分配给具有身份证件pid控制器,或调用任务,如果pid控制器为零。
返回值是调度策略。请参见sched_set调度程序
可能的值。
如果函数失败,则返回值为-1
和错误编号
相应设置。
这个错误编号
此函数的特定值为:
ESRCH公司
没有pid为的任务pid控制器它不是零。
EINVAL公司
pid控制器为负值。
请注意,此函数与sched_set调度程序
因为虽然该函数设置调度策略和绝对值优先级,此函数仅获取调度策略。要获得绝对优先级,使用计划获取参数
.
- 功能:整数 sched设置参数 (pid_tpid控制器,常量结构sched_param*参数)¶
-
初步:|MT-安全|AS-安全|交流-安全|请参见POSIX安全概念.
此函数用于设置任务的绝对优先级。
其功能与sched_set调度程序
具有政策=-1
.
- 功能:整数 计划获取参数 (pid_tpid控制器,结构sched_param*参数)¶
-
初步:|MT-安全|AS-安全|交流-安全|请参见POSIX安全概念.
此函数用于返回任务的绝对优先级。
pid控制器是所需绝对优先级的任务的任务ID要知道。
参数是指向函数存储任务的绝对优先级。
成功后,返回值为0
。否则,它就是-1
和错误编号
相应设置。这个错误编号
特定于值该功能包括:
ESRCH公司
没有ID为的任务pid控制器它不是零。
EINVAL公司
pid控制器为负值。
- 功能:整数 计划获取优先级最小值 (整数政策)¶
-
初步:|MT-安全|AS-安全|交流-安全|请参见POSIX安全概念.
此函数返回最低绝对优先级值允许具有调度策略的任务政策.
在Linux上,SCHED_OTHER的值为0,其他值为1。
成功后,返回值为0
。否则,它就是-1
和错误编号
相应设置。这个错误编号
特定于值该功能包括:
EINVAL公司
政策未标识现有计划策略。
- 功能:整数 计划获取优先级最大值 (整数政策)¶
-
初步:|MT-安全|AS-安全|交流-安全|请参见POSIX安全概念.
此函数返回最高绝对优先级值对于具有调度策略的任务允许政策.
在Linux上,SCHED_OTHER的值为0,其他值为99。
成功后,返回值为0
。否则,它就是-1
和ERRNO公司
相应设置。这个错误编号
特定于值该功能包括:
EINVAL公司
政策未标识现有计划策略。
- 功能:整数 计划rr获取间隔 (pid_tpid控制器,结构timespec*间隔)¶
-
初步:|MT-安全|AS-安全|交流-安全|请参见POSIX安全概念.
此函数返回用于用于具有的任务的循环调度策略(如果使用)任务IDpid控制器.
它将时间长度返回为间隔.
对于Linux内核,循环时间片总是150微秒,以及pid控制器甚至不需要真正的pid。
返回值为0
论成功与病理案例如果失败,则返回值为-1
和错误编号
已设置相应地。这没有什么具体的问题函数,因此没有特定的错误编号
值。
- 功能:整数 计划收益率 (无效)¶
-
初步:|MT-安全|AS-安全|交流-安全|请参见POSIX安全概念.
此函数自动放弃任务对CPU的请求。
从技术上讲,计划收益率
导致执行调用任务立即准备好跑步(而不是跑步之前)。这意味着如果它的绝对优先级高于0被推到共享其绝对优先级,并准备运行,当其下一个转弯处到达。如果其绝对优先级为0,则更高复杂,但仍有将CPU让给其他任务。
如果没有其他任务共享调用任务的绝对值优先级,此函数没有任何效果。
在某种程度上,包含的程序忽略了其他系统中的进程正在执行以及执行速度,这函数显示为no-op。
返回值为0
论成功与病理案例如果失败,则返回值为-1
和错误编号
已设置相应地。这没有什么具体的问题函数,因此没有特定的错误编号
值。