当前位置:  编程技术>c/c++/嵌入式

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

    来源: 互联网  发布时间:2014-10-12

    本文导语:    个人理解,内核级线程和进程是一样的,前者与POSIX线程(pthread)有很大的区别。因此,内核的进程调度策略和系统调用也适用于内核级线程。   调度策略有三种:     1.SCHED_NORMAL 非实时调度策略,默认情况下是10...

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

  调度策略有三种:

    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


    
 
 

您可能感兴趣的文章:

  • 2.6内核种进程优先级的疑惑。。。
  • linux2.6内核的进程优先级是如何设置的?
  • 内核栈~ 内核线程 ~用户线程 之间关系 问题
  • Linux中内核线程不访问内核态地址空间?
  • (菜鸟基础问题)关于内核线程
  • linux内核是如何支持多线程的?
  • 内核线程问题
  • 内核进程线程问题,大家指教
  • 请教linux 2.6内核移植到arm上最大线程数量的问题。
  • 如何利用Linux内核线程来保存用户进程
  • 内核中的timer是不是可以理解为多线程,我想对一段代码加锁,如何实现,有没有可用的内核函数?
  • 超线程的内核无法启动?
  • 用户进程有自己独立的地址空间,内核线程没有自己的地址空间 该怎样理解: ?
  • 内核线程没有用户空间具体指的是哪个结构体?
  • 高分噢!内核线程绑定问题!急!!!
  • 寻linux内核线程补丁或相关资料
  • linux内核多线程使用那个函数啊?
  • 2.4内核下面最大线程数的问题
  • Linux内核线程睡眠问题
  • 哪位老大详细地讲解一下内核线程和轻量级进程、分别如何创建?多谢了。
  • (100分求助)用内核线程对用户进程操作(大侠/虾们出手了)
  • linux内核源代码中,在哪个文件的哪个地方可以看到定义线程切换时间片大小?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • [求助]如何设置uclinux内核中的内存
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • 在uboot下设置好的GPIO状态在进入内核后会被改变吗?
  • 急急急!!mac os怎么设置内核 CONFIG_PACKET=y
  • 如何查看并设置诸如ramdisk_size这类内核参数?
  • linux2.6 进入了start_kernel死掉是内核参数设置不对吗
  • 请教在grub里添加从备份内核启动的设置!
  • 自己设置一个套接字编译进内核时出错
  • 在redhat-linux7.2下,用lilo的方式启动,当升级内核时,如何修改/etc/lilo.conf文件?有没有什么设置让系统自动修改这个文件??
  • 编译好的内核,也设置好了,但是启动时候总是失败
  • 各位前辈,当代码执行一个系统调用fork()后,为什么如果共享页设置了写时拷贝位,在父进程之前调度子进程将具有优越性?内核如何能使子进
  • 请教关于编译内核的参数设置的文章
  • Linux内核中影响tcp三次握手的一些协议配置
  • Fedora Core 2自带的内核升级程序下载下来内核后,要不要再编译一遍内核?
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • 进程内核栈和操作系统内核栈的关系
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • 2.6内核下编译2.4内核
  • linux内核中的likely宏和unlikely宏介绍及用法
  • 谁能提供kgdb内核补丁内核模块的下载
  • CentOS 6.5 下载地址及如何升级内核(kernel)版本到 3.10.28
  • 编译新内核后怎么进入原来内核
  • docker使用的技术之Container内核原理介绍
  • 请问linux中如何判断内核是否已经启动。(在内核中写程序)
  • 内核模块跟内核版本不匹配????????
  • 请教:如何安装新内核(rpm包)而不同原来得内核冲突?? 在线等待!!
  • linux为什么要升级内核?升级内核有何作用?
  • 内核升级后,如何在新的内核中加载显卡驱动?
  • 内核源码和结果make过的内核源码有什么区别
  • 不重新编译内核能修改内核函数吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3