朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux进程优先级的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成!
C 语 言 专 栏:C语言:从入门到精通
数据结构专栏:数据结构
个 人 主 页 :stackY、
C + + 专 栏 :C++
Linux 专 栏 :Linux
目录
1. 优先级
1.1 基本概念
1.2 为什么要有优先级呢?
1.3 简单原理
1.4 修改优先级
2. 进程其它概念
1. 优先级
在我们系统中存在许多的队列,我们所允许的进程的PCB在这些队列中都会进行排队,那么排队的本质其实就是一个确认优先级的过程!
1.1 基本概念
- cpu资源分配的先后顺序,就是指进程的优先权(priority)。
- 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。
- 还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。
简单的说就是得到某种资源的先后顺序!
1.2 为什么要有优先级呢?
也就是说为什么要在这些队列中排队,本质上就是资源不足的问题,在我们的计算机中,有许多的软硬件资源,但是这些资源往往都是没有进程多的,
优先级和权限
优先级表示的是你已经可以得到这个资源了,只不过是时间问题;
权限表示的是你能否得到这种资源。
1.3 简单原理
其实就是PCB中的一个整形字段, 数值越小,优先级越大(类似于各种排名)。
Linux进程的优先级的范围:60 ~ 99;
Linux中默认进程的优先级都是80。
1.4 修改优先级
Linux是支持动态进程优先级调整的:
可以看到进程优先级的后面有一个NI列,那么这列就叫做进程的nice值,nice值的具体含义就是进程优先级的修正数据。
优先级和nice之间的规则就是:PRI(新) = PRI(旧) + nice值
PRI(旧):都是从80开始的!
接下来我们就具体的操作一下:
① 先输入top指令,打开我们对应的任务管理器
② 输入r,然后输入你所想要调整优先级的进程pid,然后按下Enter
③ 输入所要修正的nice值,然后再次查询
Linux允许我们将进程的优先级降低,但是不会轻易允许我们将进程优先级调高,所以需要调高时需要使用超级用户或者在top指令前面加上sudo。
nice值的修正最小值是-20,超过部分统一当成-20
nice值的修正最大值是19,超过部分统一当成19
所以就对应了进程优先级的数据范围60 ~ 99
为什么要将优先级限定在一定的范围内?
OS在调度的时候,需要较为均衡的让每一个进程都得到调度!保证OS调度的公平性。
我们把一些优先级较低的进程,长时间得不到CPU资源的这种情况叫做进程饥饿
2. 进程其它概念
- 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级
- 独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰
- 并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行
- 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发
在我们的系统中会存在许多的进程,那么当一个进程被调度时,并不是占有了CPU就一直运行,每隔一段时间,就会被从CPU上剥离下来,所以,Linux内核支持进程之间对CPU资源进行抢占的!这种抢占的方式也叫做基于时间片的轮转式抢占内核。
因为CPU的速度是非常快的,在一段时间它就会推进多个进程的代码轮转式运行,让这些进程高频繁的切换,然后给我们的直观感受就是只有我们的代码在运行,其实在这段时间,除了我们的代码在运行之外,还有更多的进程代码在执行,所以像这种在一个时间间隔之内,多个进程的代码同时被推进的状态叫做并发。
朋友们、伙计们,美好的时光总是短暂的,我们本期的的分享就到此结束,欲知后事如何,请听下回分解~,最后看完别忘了留下你们弥足珍贵的三连喔,感谢大家的支持!