Linux- 进程的优先级

进程的优先级介绍

每一个进程都有各自的优先级,那么优先级有什么用呢? 

之前我们在讲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. 操作系统拥有强大的算法,不要小看了操作系统,操作系统所作出的操作已经很优了。

猜你喜欢

转载自blog.csdn.net/fengjunziya/article/details/130548408