内核线程优先级设置的方法介绍

18kueen

18kueen

2016-02-19 10:06

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是内核线程优先级设置的方法介绍,一起来学习了解下吧!

  个人理解,内核级线程和进程是一样的,前者与POSIX线程(pthread)有很大的区别。因此,内核的进程调度策略和系统调用也适用于内核级线程。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  调度策略有三种:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

    1.SCHED_NORMAL 非实时调度策略,默认情况下是100~139,由nice值决定;

    2.SCHED_FIFO实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃

    3.SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。同样可以被高优先级抢占。

  两种实时优先级范围在0至MAX_RT_PRIO-1之间,默认为0到99。

  相关的系统调用(来自于LKD,不同内核可能有所不同):

nice()  设置进程的nice值sched_setscheduler()设置进程的调度策略sched_getscheduler()获取进程的调度策略sched_setparam()设置进程的实时优先级sched_getparam()获取进程的实时优先级sched_get_priority_max()获取实时优先级的最大值sched_get_priority_min()获取实时优先级的最小值sched_rr_get_interval()
获取进程的时间片值sched_setaffinity()设置进程的处理器的亲和力sched_getaffinity()获取进程的处理器的亲和力sched_yield()暂时让出处理器

  设置时需要用到struct sched_param这个结构。

  以下为我写的内核线程中的部分代码:
代码如下:

struct sched_param param;
    param.sched_priority = 99;
    sched_setscheduler(current, SCHED_FIFO, ¶m)//出错时返回-1

展开更多 50%)
分享

猜你喜欢

内核线程优先级设置的方法介绍

编程语言 网络编程
内核线程优先级设置的方法介绍

[JAVA100例]067、线程优先级

编程语言 网络编程
[JAVA100例]067、线程优先级

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java多线程编程之限制优先级

Java JAVA基础
Java多线程编程之限制优先级

实战Java多线程编程精要之限制优先级

编程语言 网络编程
实战Java多线程编程精要之限制优先级

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

详解CSS优先级的读法及优先级四个级别

Web开发
详解CSS优先级的读法及优先级四个级别

CSS优先级规则的细节

Web开发
CSS优先级规则的细节

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

学DIV CSS技术,如何入门?

学DIV CSS技术,如何入门?

java实现日历(某年的日历,某月的日历)用户完全自定义

java实现日历(某年的日历,某月的日历)用户完全自定义
下拉加载更多内容 ↓