下一步:,上一个:,向上:进程CPU优先级和调度  [目录][索引]


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。否则,它就是-1ERRNO公司相应设置。这个错误编号特定于值该功能包括:

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错误编号已设置相应地。这没有什么具体的问题函数,因此没有特定的错误编号值。


下一步:传统调度,上一个:实时调度,向上:进程CPU优先级和调度  [目录][索引]