进程的优先级介绍
每一个进程都有各自的优先级,那么优先级有什么用呢?
之前我们在讲PCB(进程控制模块)和进程的状态中的R状态我们可以知道,cpu在运行众多进程需要拥有一个运行队列(run_queue)来完成所有进程的“同时进行”,而这个“同时进行”也只是相对于我们的肉眼来讲,而实际上,如果你的cpu只有一个,那么这些进程是不会真正意义上同时进行的,而是通过每个进程运行以微秒为时间单位来运行队列中的所有进程。

至于每个进程运行时间的多少,是经过OS调度模块来决定的,它决定着每个进程能分配到多少cpu的资源,而进程的优先级,影响着OS调度模块对进程的权重。
如何查看一个进程的优先级?
通过 ps -al 指令可以查看进程的优先级
-a 显示所有终端机下执行的程序,除了阶段作业领导者之外
-l 采用详细的格式来显示程序状况

PRI(priority)默认值为80(一个进程的优先级)PRI值越小越快被执行
NI (nice值):影响PRI的值(取值范围为-20 - 19)
进程的默认PRI值是80,如果我们要修改一个进程的优先级,不是通过直接改变进程的PRI值,而是用过NI值。
通过top 指令改变进程的NI值


输入top指令后,输入r,再输入进程的PID,再输入你想更改的NI值,最后输入q退出
这里我们将nice值设置为10,然后再看看进程的优先级变化

PRI值变为了90,NI值变为了10.
那么我们再讲NI值设置一次为15,PRI值会变成多少呢?

这里我们可以看到 PRI值变为了95,NI值变为了15.
所以这就说明 PRI(new) = PRI(old)+ NI
那我们再来试一试如果nice设置为-100会怎么样?

注意:我这里是用的sudo top (用了超级管理员身份)才能修改这么大的nice值
但是我们这里又能看到 NI值为-20,这就验证了我们上面的说法,NI值的取值范围为(-20 - 19)
实际上,我们一般不会去修改一个进程的优先级,操作系统默认的就挺好的了,为什么呢?
1. 即便你设置了nice值,其实差别并不大,所以设置了也没啥用。
2. 操作系统拥有强大的算法,不要小看了操作系统,操作系统所作出的操作已经很优了。
进程的优先级影响OS调度模块,决定CPU资源分配。通过`ps-al`可查看优先级,`top`命令可调整nice值改变进程执行顺序。nice值范围是-20到19,PRI(new)=PRI(old)+NI。通常不建议手动调整,因为操作系统默认调度已优化。
1297

被折叠的 条评论
为什么被折叠?



