初窥进程————进程的优先级

进程优先级

一.对进程优先级初步的了解

    了解一个东西,我们往往先从三个方面入手,分别为是什么,为什么,怎么做?

  • what:
    进程优先级实质上就是得到cpu资源的先后顺序。
  • why:
    cpu负荷有限,不能一瞬间全部处理完,目标资源稀缺,导致要通过优先级确认谁先谁后。
  • how:
    本质上优先级其实是在task_struct里的一个int型变量,他的比较逻辑是值越低,优先级越高,反之则是值越高优先级越低。他是一个基于时间片的分时操作系统,为考虑公平性,优先级可能会变化,但是变化幅度不能太大。(时间片后面我们会谈,可以理解为系统分配给每个进程的运行时间
二.优先级vs权限

    在初学时我们容易将这两个概念弄混,想着优先级高不就证明他的权限高吗,他的权限高不就证明他的优先级高吗。
    实则不然,他们两个分别应用于不同的情况:

  • 优先级:对应能得到资源先后的问题
  • 权限:是否能得到某种资源

    可以看到,是有权限再谈优先级,光有优先级没权限也是空扯,他们是相辅相成的关系。

三.查看当前进程的优先级

在linux或者unix系统中,⽤ps ‒l命令则会类似输出以下⼏个内容:
在这里插入图片描述
我们很容易注意到其中的⼏个重要信息,有:

  • UID : 代表执⾏者的⾝份
  • PID : 代表这个进程的代号
  • PPID :代表这个进程是由哪个进程发展衍⽣⽽来的,亦即⽗进程的代号
  • PRI :代表这个进程可被执⾏的优先级,其值越⼩越早被执⾏
  • NI :代表这个进程的nice值(进程优先级的修正数据)

而其中的PRI和NI,与我们的进程优先级有关。

四.PRI和NI
  • PRI:也就是进程的优先级,值越小越早执行,值越大越晚执行。默认为:80,且每次和nice值运算,哪怕之前的值不是80,最后都会变成 (80 + nice)。
  • NI:就是我们说的nice值,其表⽰进程可被执⾏的优先级的修正数值.
  • PRI值越⼩越快被执⾏,那么加⼊nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。所以当nice值为负值的时候,那么该程序将会优先级值将变⼩,即其优先级会变⾼,则其越快被执⾏。
  • nice其取值范围是*20⾄19,⼀共40个级别。相当于PRI的取值范围是60至99
  • 优先级设立不合理,会导致优先级低的进程,长时间得不到CPU资源,进而导致:进程饥饿。
  • 所以我们调整进程优先级,实际上是调整nice值,至于为什么不直接调整PRI呢?包括nice的取值范围限制,进程饥饿的解决,这些该怎么解决呢?这又牵扯到Linux的真实调度算法,我下一篇会来谈这个问题,这里就不展开讨论了。

注意:我们使用ps -l命令展现的已经为经过运算的PRI(new),不需要再在PRI基础上+nice。

五.查看进程优先级的命令

用top指令更改已存在进程的nice:

  • top
  • 进⼊top后按“r”‒>输⼊进程PID‒>输⼊nice值

注意:

  • 其他调整优先级的命令:nice,renice
  • 一些系统函数

我们常用top指令

六.小结

    进程的优先级,单看概念我们可能没有太多体会,这是因为他需要和linux中的真实调度算法连接起来,很多现在不是很明朗的设计也会恍然大悟了,我们下一节来谈这个。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值