Linux进程优先级

Linux进程优先级

  • 1.进程优先级
    • 1.1 基本概念
    • 1.2 优先级取值范围
  • 2.查看进程优先级
  • 3.调整进程优先级

1.进程优先级

1.1 基本概念

由于系统中进程数量众多,而CPU资源比较少甚至只有一个,进程之间需要竞争来使用CPU。这时让一个比较重要、需要优先执行的进程去和其他进程竞争,显然是不合理的。为了更合理的分配CPU资源, 就有了进程优先级。

优先级高的进程有优先执行的权利。此外,优先级还影响分配给进程的时间片长短。 重要的进程,应该分配多一些cpu时间片,好让其尽快完成任务。所有的进程都会有机会运行,但优先级高的进程会获取更多的cpu执行时间。配置进程优先级对多任务环境的Linux很有用,可以改善系统性能。

1.2 优先级取值范围

实时进程与非实时进程

  • 和其他操作系统类似,Linux也支持两种进程:实时进程和非实时进程。 实时进程具有一定程度上的紧迫性,要求对外部事件做出非常快的响应;而非实时进程则没有这种限制。所以,调度程序要区分对待这两种进程,通常,实时进程要比非实时进程优先运行。实时进程会一直运行直到退出,除非它阻塞才会释放CPU, 实时进程只能被更高优先级的实时进程抢占,任意实时进程比非实时进程的优先级都要高。 这两种进程的区分也反映在task_struct 数据结构中。

进程优先级取值范围

在linux系统中,进程优先级的取值范围是0-139 , 而这个值又是由另外两个值组成的,一个是代表实时进程(realtime)优先级范围是[0, 99],另外一个是代表非实时进程,取值范围是[100, 139]。 所以,Linux进程实际上实现了140个优先级范围,取值范围是从 [0, 139],这个值越小,优先级越高。

  • 动态优先级:实时进程优先级, 范围 [0,99],该区间被称为动态优先级,优先级随着进程执行情况的变化而改变,以便获得更好的调度性能。
  • 静态优先级:非实时进程的优先级, 范围[100,139], 该区间被称为静态优先级,该值不会随着时间而进行改变,但系统可以通过nice来进行修改。

2.查看进程优先级

在这里插入图片描述
输入命令 ps -l 即可查看,其中有几个重要的信息:

  • UID : 代表执行者的身份
  • PID : 进程号
  • PPID : 父进程的进程号
  • PRI : 进程优先级, 越小越优先
  • NI : 进程的nice值, 用于调整进程优先级

同样使用top命令也可查看
Linux进程优先级_第1张图片
PRI 代表的就是进程的优先级. 其值越小, 优先级越高, 即越早的被CPU所执行

  • NI:nice值, nice 是用来修改 PRI 的 , 也就是说用来调整进程优先级的, PRI(new) = PRI(old) + nice。当nice值为负值的时候,那么该程序优先级会变高 (PRI数值降低)。在Linux下,调整进程优先级就是更改NI,也就是nice值,nice的取值为 [ -20 ~ 19 ],一共40个范围。

  • PR:PR是在top 命令执行后的显示,其代表的是进程的静态优先级,与静态优先级(static_priority)关系为 :PR = static_priority - 100。static_priority取值为[100, 139],所以PR取值是 [0, 39]。PR和NI关系为 : PR(new) = PR(old) + nice

3.调整进程优先级

用top命令更改已存在进程的nice值来调整进程优先级

  • 执行 top 命令
  • 进入top后输入r ===》输入需要修改的进程的进程号PID ===》再输入nice 的值 , 按回车即可

其他概念

  • 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级
  • 独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰
  • 并行: 多个进程在多个CPU下分别同时进行运行,这称之为并行
  • 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发

你可能感兴趣的:(Linux)