如何永久修改进程优先级的优先级

更改进程的优先级_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
更改进程的优先级
|0|0|暂无简介
总评分4.2|
浏览量1444186
试读已结束,如果需要继续阅读或下载,敬请购买
定制HR最喜欢的简历
你可能喜欢
您可以上传图片描述问题
联系电话:
请填写真实有效的信息,以便工作人员联系您,我们为您严格保密。> 巧设进程优先级 让低配电脑也流畅运行
巧设进程优先级 让低配电脑也流畅运行其它网站
  笔者这台买了三年多了,奔四2.8的在当时也算得上豪华了,可现在,运行很多程序都很缓慢,更别说多任务处理了,可是卖了又有点可惜,有没有办法能够两全其美呢?经过几番思量,笔者找到了一个巧妙的办法,只需动动手,就可以有效提高电脑的运行效率!
巧设进程优先级 让低配电脑也流畅运行
  我们都知道,任务处理要依靠CPU进行,而一个CPU的处理能力是有限的,现在的双核或者多核CPU的原理就是让CPU可以分别处理不同的任务,以提高运行效率。那么普通CPU怎么办呢?其实我们只需要反其道而行之,利用系统的“Windows任务管理器”,手动分配进程的优先级,就可以很大程度上改善CPU的运行效率,从而达到电脑提速的目的。
  例如,QQ作为常用工具,经常是开机便一直运行,并占用一个进程,但我们又不是时时刻刻都在使用它,而这时,我们就可以通过“Windows任务管理器”,将QQ进程的优先级设置为“低于标准”或者“低”(如图),这样,在我们挂着QQ的同时再运行其他程序,就会因为QQ所占用进程的优先级已经降低,从而提高其他程序的运行效率,加快程序运行速度。
&相关阅读:
·华为EMUI系统学iOS 在更新日志直白提出
&&·Windows应用内购出BUG 买了却不能用
&&·微软发布Windows 10专业版免费升级
&&·微软:绝对不会强迫用户升级Win10系统
&&·webOS 3.0明年发布 成LG智能电视系统
看完本文后的感受:
频道热词:&&&&&&
下载周排行榜
软件名称下载量
26373310924610915599393959357887347020437774281735409
月热门资讯排行
排行 文章标题
精美壁纸推荐
美女明星风景动漫手机Linux内核_学习笔记(61)
作为多任务的操作系统,Linux内核为每个创建的进程分配时间片并根据其优先级进行调度。当进程被创建时,其对应的task_struct里包含了四个优先级:
struct task_struct {
&&&&&&&&&&&&&&&&……
&&&&&&&&&&&&&&&&int prio, static_prio, normal_
&&&&&&&&&&&&&&&&unsigned int rt_
&&&&&&&&&&&&&&&&……&
&&&&&&&&};
在内核头文件include/linux/sched.h中定义了如下宏
#define&&&&MAX_USER_RT_PRIO 100
&&&&&&&&#define&&&&MAX_RT_PRIO MAX_USER_RT_PRIO
&&&&&&&&#define&&&&MAX_PRIO (MAX_RT_PRIO + 40)
内核中规定进程的优先级范围为[0, MAX_PRIO-1]。其中实时任务的优先级范围是[0, MAX_RT_PRIO-1],非实时任务的优先级范围是[MAX_RT_PRIO, MAX_PRIO-1]。优先级值越小,意味着级别越高,任务先被内核调度。
那任务的优先级又是如何确定的呢?和task_struct中的成员是什么关系?
① prio指的是任务当前的动态优先级,其值影响任务的调度顺序。
&&&&&&&&② normal_prio指的是任务的常规优先级,该值基于static_prio和调度策略计算。
&&&&&&&&③ static_prio指的是任务的静态优先级,在进程创建时分配,该值会影响分配给任务的时间片的长短和非实时任务动态优先级的计算。
&&&&&&&&④ rt_priority指的是任务的实时优先级。若为0表示是非实时任务,[1, 99]表示实时任务,值越大,优先级越高。
static_prio = MAX_RT_PRIO + 20 + nice(nice的缺省值是0,范围[20, 19])
rt_priority缺省值为0,表示非实时任务。[1,99]表示实时任务
对于实时任务,prio = normal_prio = static_prio
对于非实时任务 prio = normal_prio = MAX_RT_PRIO – 1 – rt_priority
prio的值在使用实时互斥量时会暂时提升,释放后恢复成normal_prio
下面来了解一下如何在应用程序中改变进程的优先级。
#include &sys/time.h&
&&&&&&&&#include &sys/resource.h&
&&&&&&&&int setpriority(int which, int who, int prio);&
&&&&&&&&//该函数可以修改进程、进程组或用户所有进程的nice值从而影响static_prio
&&&&&&&&which : PRIO_PROCESS&&&& // 修改某个进程
&&&&&&&&&&&&&&&&PRIO_PGRP&&&&// 修改进程组
&&&&&&&&&&&&&&&&PRIO_USER&&&&// 修改用户所有进程
&&&&&&&&who : 进程号(0表示当前调用进程)、进程组号或UID&
&&&&&&&&prio : 新的用户态优先级(即nice值,范围[-20,19])
&&&&&&&&返回值 : 执行成功返回0,失败返回-1并设置errno
&&&&&&&&if (setpriority(PRO_PROCESS, 0, 2) &0)
&&&&&&&&&&&&&&&&perror(“fail to setpriority”);
&&&&&&&&&&&&&&&&exit(-1);
&&&&&&&&……
&&&&&&&&************************************************************************
&&&&&&&&#include &sched.h&
&&&&&&&&int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param);
&&&&&&&&struct sched_param
&&&&&&&&&&&&&&&&int __sched_
&&&&&&&&};
&&&&&&&&// 该函数修改某个进程的调度策略和rt_priority
&&&&&&&&pid : 要修改的进程号,0表示当前调用进程
&&&&&&&&policy : 调度策略&
&&&&&&&&&&&&&&&&SCHED_OTHER(针对非实时进程的调度策略)
&&&&&&&&&&&&&&&&SCHED_RR(针对实时进程的轮转调度策略)
&&&&&&&&&&&&&&&&SCHED_FIFO(针对实时进程的先进先出调度策略)
&&&&&&&&param : 指向的结构体中存放着要设置的rt_priority
&&&&&&&&返回值 : 执行成功返回0,失败返回-1并设置errno
&&&&&&&&……
&&&&&&&&struct sched_param sp = {1};
&&&&&&&&if (sched_setscheduler(0, SCHED_FIFO, &sp) & 0)
&&&&&&&&&&&&&&&&perror(“fail to sched_setscheduler”);
&&&&&&&&&&&&&&&&exit(-1);
&&&&&&&&……
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:80441次
积分:2129
积分:2129
排名:第15420名
原创:114篇
转载:103篇
(1)(3)(5)(3)(2)(5)(10)(9)(11)(13)(15)(14)(8)(12)(3)(7)(9)(1)(2)(1)(1)(4)(1)(9)(6)(13)(10)(31)(11)

我要回帖

更多关于 进程优先级有什么用 的文章

 

随机推荐