Linux中的进程优先级
目录
- Linux中的进程优先级
- 引入
- 1、基本概念
- 2、查看进程
- 3、PRI和NI
- 4、修改进程优先级
- 5、进程切换
- One more thing
引入
在Linux操作系统中,进程的优先级对于系统的性能和响应时间至关重要。进程的优先级决定了该进程在系统资源分配中所占的比例。Linux中的进程调度器根据进程的优先级来决定何时运行哪个进程。因此,理解Linux进程的优先级非常重要,可以帮助我们更好地管理和优化系统性能。
在本文中,我们将深入探讨Linux进程的优先级。首先,我们将介绍进程的基本概念,然后深入了解Linux进程的优先级如何工作,包括如何设置和修改进程的优先级。最后,我们将讨论如何使用Linux进程优先级来优化系统性能。
1、基本概念
由于系统资源是优先的,因此CPU需要以一定的顺序分配资源,优先级即是进程获取资源的先后顺序,优先权高的进程有优先执行权,配置进程优先权对多任务环境的Linux很有用,可以改善系统性能
优先级与权限:能还是不能—>能,先做还是后做的问题
为什么存在优先级?——因为资源太少了
Linux优先级特点:很快,优先级的本质是PCB里面的一个整数数字(也有可能是几个)
2、查看进程
我们通过以下指令来得到当前中断进程的信息:
ps -l
其中包含了:
UID
:代表执行者的身份;PID
:代表这个进程的代号;PPID
:父进程代号,代表这个进程是由哪个进程发展衍生而来的;PRI
:代表这个进程可被执行的优先级,其值越小越早被执行;NI
:代表这个进程nice值。
我们此时运行一个睡眠程序:
此时我们查看进程信息(ps -l
通常看不到该进程,我们加上-a
选项即可看到)
ps -la
3、PRI和NI
PRI(priority)
&&NI(nice)
PRI是进程的实时优先级,值越小,优先级越高,表示进程越重要,应该更早地获得CPU时间片;NI是进程的优先级偏移值(nice),范围是-20~+19
,NI的默认值是0,可以通过nice命令来改变它。
进程的总优先级 = PRI + NI。例如,一个PRI为80,NI为-5的进程的总优先级为75。当进程需要获得CPU时间片时,调度器会根据进程的总优先级来进行调度,总优先级越高的进程会更早地获得CPU时间片。
需要注意的是,NI的取值范围是有限制的,只能在-20到+19之间,而且只有超级用户(root)才能将NI设置为负数。这是为了避免普通用户通过提高进程优先级来影响系统的稳定性。
4、修改进程优先级
top
指令是一款常用的系统监控工具,它可以实时地查看系统的运行状态,包括CPU占用率、内存占用率、进程运行情况等等
用top
指令修改nice值:
输入top
指令—>按R
键—>输入要更改进程的PID
—>输入修改后的nice值
例如我们运行如下程序,使得它一直打印输出该进程与其父进程的PID
:
我们在另一个终端监视并查看该进程信息,并更改其nice值:
按回车之后再输入要修改的nice值,即可实现对进程优先级的修改:
此时我们再通过ps
指令查看该进程优先级:
ps -la
此时由于nice值由0更改到了5,因此进程总优先级PRI即被更改成了85;
前面介绍到,PRI初始值为80,而允许修改的NI值在-20到+19之间,为什么要限定NI值的修改范围呢?
Linux系统一共有140个优先级,很多优先级不是给普通的进程使用的,
60~99
这40个优先级是给用户使用的;因为操作系统存在多个系统进程,用户随意修改NI值会导致系统进程优先级过低,从而降低系统的稳定性和响应性能
5、进程切换
CPU永远在做三件事情:
1、取指令
2、分析指令
3、执行指令
CPU中有一个名为PC
寄存器,其作用是存储当前正在执行指令的下一条指令的地址;当我们的进程在运行的时候,一定会产生非常多的临时数据,这份数据属于当前进程!
而对于CPU而言,CPU内部虽然只有一套寄存器硬件,寄存器里面保存的数据,是属于当前进程的(寄存器硬件!=寄存器内的数据);上下文数据存放在进程PCB(tast_struct)当中
在进程运行的时候,都有进程的时间片;当进程发生切换的时候,要进行进程的上下文保护,当进程在恢复运行的时候,要进行上下文的恢复!
One more thing
1、竞争性:系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级
2、独立性:多进程运行,需要独享各种资源,多进程运行期间互不干扰;进具有独立性,不会因为一个进程挂掉或者异常,而导致其他进程出现问题
3、并行::多个进程在多个CPU下分别,同时进行运行,这称之为并行
4、并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发;