大家好,我是苏貝,本篇博客带大家了解Linux的进程(4):优先级,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️
目录
- (A)什么是优先级
- (B) 为什么要有优先级
- (C) Linux的优先级的特点&&查看方式
- 1. renice命令
- 2. top命令
(A)什么是优先级
优先级是指定进程获取某种资源(如CPU)的先后顺序
一个进程有一个task_struct结构体,所以里面有许多内部字段,内部字段中存在几个与优先级有关的数据(如:int prio=?)
Linux中优先级数字越小,优先级越高
(B) 为什么要有优先级
进程访问的资源(如CPU)始终都是有限的,而系统中大部分情况下进程都是较多的,所以要存在优先级
操作系统关于调度和优先级的原则:分时操作系统(采用时间片轮转)
分时操作系统能保证基本的公平(每个进程一次最多只能被CPU调度一个时间片的时间,超过则被操作系统剥离出CPU,让其它进程被调度)。如果进程长时间不被调度,就会造成饥饿问题,在用户层面就觉得进程卡住了
(C) Linux的优先级的特点&&查看方式
先写出.c文件
编译运行,用ps -al查看进程信息
其中,PRI:进程优先级(Linux中进程的默认优先级是80)
NI:进程优先级的修正数据,nice值。
新的优先级=优先级+nice ,达到对于进程优先级动态修改的过程。但是nice并不能任意设置,而是有范围的,范围:[ -20,19](40个数据) 。如果nice>0,优先级数字变大,优先级越低;nice<0,优先级数字变小,优先级越高。
现在我们来试试动态修改进程的优先级
1. renice命令
renice nice -p pid
renice命令在Linux中用于修改已经运行的进程的优先级,且修改的是修正数据nice。
运行进程,进程一开始的优先级=80,nice=0;修改nice=40(超出范围,只能取19),新的优先级=优先级+nice=99
2. top命令
先运行进程,再执行top命令
出现上图后,直接按r,出现下面图片内容
按下想要修改优先级进程的pid,输入后会让我们输入想要修改的nice值
我们输入40,再按q退出top进程。再用ps -al查询进程的优先级,如我们所想的那样,99=80+19
上面是让nice>0,优先级数字变大,优先级变低。下面我们让nice<0,即优先级变高。注意:只有root能让nice<0,普通用户只能让nice>0
如果用普通用户:让nice=-10,最后会报错
我们用root来修改,从普通用户到root,只需要su -,然后输入root的密码。
执行top进程,再r,再输入想修改优先级进程的pid,输入nice值=-10,退出top进程(按q)
用ps -al查询进程的优先级
咦,为什么是70呢?不应该是99-10=89吗?事实上,每次调整优先级,都是从80开始的。也就是说,如果我们继续将nice设为10,那么优先级=80+10=90
好了,那么本篇博客就到此结束了,如果你觉得本篇博客对你有些帮助,可以给个大大的赞👍吗,感谢看到这里,我们下篇博客见❤️