提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
世上有两种耀眼的光芒,一种是正在升起的太阳,一种是正在努力学习编程的你!一个爱学编程的人。各位看官,我衷心的希望这篇博客能对你们有所帮助,同时也希望各位看官能对我的文章给与点评,希望我们能够携手共同促进进步,在编程的道路上越走越远!
提示:以下是本篇文章正文内容,下面案例可供参考
一、进程优先级
1.1、进程优先级的基本概念
- 指定进程获取某种资源(如:CPU等)的先后顺序。
- 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。
- 还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。
- Linux中优先级数字越小,优先级越高。
要维护一个进程的优先级:task_struct 进程控制块(是描述进程,里面包含了进程的所有属性) ---> struct ----> 内部字段 ----> (default_proi = 80) + (nice = ??) = proi(新的优先级)。
进程的优先级也是进程控制块中所有属性的一种(是内部字段中的一部分)。
1.2、优先级 VS 权限
权限:是能不能的问题。
优先级:已经能了,我们获取资源的顺序。
1.3、为什么要有优先级?
进程访问的资源(CPU)始终都是有限的,系统中进程大部分情况都是较多的。
操作系统关于调度和优先级的原则:分时操作系统,基本的公平,如果进程因为长时间不被调度,就造成了饥饿问题。
1.4、Linux的优先级的特点 && 查看方式
- ps -l:只能查看当前终端(当前所在分频页面)下启动的进程。
- ps -al:查看所有终端下启动的进程。
我们很容易注意到其中的几个重要信息,有下:
- UID : 代表执行者的身份
- PID : 代表这个进程的代号
- PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号
- PRI :代表这个进程可被执行的优先级,其值越小越早被执行
- NI :代表这个进程的nice值
- 每次调整优先级,都是从80开始的
- nice/renice:可以对一个指定的进程,在启动前或运行时,对进程的优先级做动态调整
- nice并不能让你任意调整,而是有范围的!若任意调整的话,会打破原则中基本的公平
- 一个进程的优先级是不能频繁更改的
NI:进程优先级的修正数据,nice值,新的优先级 = 优先级 + nice,达到对于进程优先级动态修改的过程。
nice并不能让你随意调整,而是有范围的。[-20~19]
1.5、PRI and NI
- PRI也还是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小 进程的优先级别越高
- 那NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值
- PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice
- 这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行
- 所以,调整进程优先级,在Linux下,就是调整进程nice值
- nice其取值范围是-20至19,一共40个级别。
1.6、用top命令更改已存在进程的nice
- top
- 进入top后按“r”–>输入进程PID–>输入nice值
1.7、其他概念
- 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。
- 独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰。
- 并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行。
- 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。
多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进的方式:
如果这种方式下,进程过多,CPU切换负担过重,那么这些进程会出现卡顿的情况,本质是每一个进程被CPU调度的周期变长了。
二、命令行参数
vim Makefile
myprocess : m