Linux进程讲解 五 进程优先级

41 篇文章 1 订阅
35 篇文章 5 订阅

   之前我们介绍进程的时候就说过,为什么要有PCB,PCB记录了很多信息,因为我们的程序并不是说,一直在CPU运行直到结束,而是一个进程运行一会,另一个再运行一会。所以来说进程占用CPU应该是一个我们可控的东西,因为有的进程相对来说比较重要,有的就不是很重要。我们就像让CPU先去执行那些比较重要的进程,并且给他分配相对多的时间。进程优先级起作用的方式从发明以来基本没有什么变化,无论是只有一个cpu的时代,还是多核cpu时代,都是通过控制进程占用cpu时间的长短来实现的。就是说在同一个调度周期中,优先级高的进程占用的时间长些,而优先级低的进程占用的短些。

  

我们可以通过ps -l指令来查看,这里边UID代表的是执行者的身份,PID就是我们当前就进程的一个进程号码,PPID上次也说过了是我们的进程的父进程的进程号。PRI代表这个进程的优先级值,这个值越小越优先被执行。NI代表这个进程的nice值。Nice值代表的是我们这个进程可被执行的优先级的修正值,

PRI(new)=PRI(old)+nice,也就是说我们是通过修改这个nice值来改变进程的优先级的,如果nice值为正那说明这个进程的优先级被修改的更低了,如果nice为负说明这个进程的优先级被提高了。 所以在Linux下修改我们的进程优先级就是通过我们的nice值来修改,nice是有取值范围的-20到19一共四十个级别。

  这里我们编写一个程序,程序很简单就是不断的让你的程序休眠

输出你的进程的pid,这样查看优先级的时候比较容易操作。

在程序运行开始之前我们可以通过nice指令来修改进程的优先级

nice -n (数字)  /.test

这里我们的数字是-5,test就是我们的可执行文件名

可以看到第一次我们的语句失败了,他说我们没有权限,所以我们在运行nice语句的时候要加上sudo获取管理员权限,然后拿到输出的pid数值,在另一个终端下,用ps -l -p (pid)来查看

这时候可以看到我们的进程NI值变成了-5,PRI变成了以前的80-5也就是75。

 这种情况是我们在进程执行前修改进程的优先级,我们也可以在进程执行过程中修改进程的优先级。

我们再次打开我们的进程,然后在另一个终端下边输入

renice (数字) -p pid,

这里需要注意的是我们的nice和renice都是在不断的给NI赋值修改的,这是不累计的,也就是说我先用nice给了NI一个-5,等程序运行开始之后又用renice给NI了一个-10,这时候我们PRI就是80-10=70而不是说80-5-10=65.

 

可以看到我们进程的NI变成了10,PRI就直接是70.

 当程序运行的时候我们还可以通过top指令来修改,但是这也是需要获取管理员权限的,所以我们要提前获取管理员权限,然后再运行top指令

出来top界面之后按r

之后会让你输出程序的pid输入后按回车

之后会让你输出renice的值输入后按回车

之后按q退出我们的top指令,再通过ps -l指令来查看我们进程的优先级发现变化成了60.

 我们可以通过修改进程的优先级来修改程序的执行时间,从而保证那些重要的进程能够流畅的运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值