索引
- ➡️进程优先级
- 1.什么叫做优先级
- 2.为什么会存在优先级
- 3.看看Linux怎么做的
- 4.查看进程优先级的命令
- 😊进程的一些特性
- ➡️进程切换
➡️进程优先级
1.什么叫做优先级
优先级和权限有些区别,权限决定能还是不能,优先级的前提是能,接下来是先做还是后做的问题。在计算机中来看也就是先还是后获得一些资源的问题。cpu资源分配的先后顺序,就是指进程的优先级(priority)。 优先级高的进程有优先执行权利。配置进程优先级对多任务环境的linux很有用,可以改善系统性能。还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。
2.为什么会存在优先级
原因就是因为计算机中的资源相对于要访问它们的进程来说太少了,大家都想争这些个资源,所以才会有进程优先级来确定谁先谁后。
3.看看Linux怎么做的
优先级本质就是PCB里面的一个整数数字。
ps -la
PRI就是优先级英文priority的前三个字母
NI就是nice的前两个字母
Linux支持进程运行中进行优先级调整,调整的策略就是更改nice值完成。
一般对于Linux来讲priority数字越小优先级越高
nice表示进程可被执行的优先级的修正数值。
Linux的最终优先级=老的优先级(一般默认是80)+nice
当nice值为负值的时候,那么该程序优先级值将变小,即其优先级会变高,则其越快被执行。
nice的取值范围是-20至19,一共40个级别,当然如果你设置的nice值大于19或者小于-20的话默认这个范围也不会改变,小于-20的都当-20处理,大于19的都当19处理。
需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化。可以理解nice值是进程优先级的修正修正数据。
4.查看进程优先级的命令
用top命令更改已存在进程的nice:
sudo top
1️⃣进入top后按“r”
2️⃣输入进程PID,输入想要改变的nice值(-20~19)
3️⃣注意:输入的时候不能在小键盘区输入,只能在主键盘区上输入数字。
最后就改变priority的值啦。
😊进程的一些特性
➡️竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。
➡️独立性: 多进程运行,需要独享各种资源,多进程运行期间进程运行的这个动作互不干扰,就好比父子进程,父进程先退了,我子进程依然运行;子进程先退了,父进程也依然运行。
➡️并行: 一般一个CPU只能运行一个程序,多个进程在多个CPU下分别,同时进行运行,这称之为并行。
➡️并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。
对于并发的解释:一个进程如果拥有了CPU开始执行代码的时候不是这个进程在CPU上跑完了它才能够才能被从CPU上拿下来,当代计算机它采用的叫做时间片轮转的策略也就是说不管你这个进程未来执行完要花多长时间,反正我只给你比如说10毫秒的时间让你占用CPU,只要时间到了,那么这个进程必须得被操作系统从CPU上剥离下来,放在运行队列里,在运行队列的尾部再继续重新排队,等CPU再重新调度其他进程。其中多进程在同一个CPU下,我们采用进程不断的切换的方式就可以让我们的一个系统内的一个单CPU的计算机在一个时间段内可以同时让多个进程的代码得以推进的这种现象我们称之为并发。所以给我们宏观上是一个CPU在执行多个进程。
➡️进程切换
-
我们都知道CPU永远在做着三件事情:第一取指令,第二分析指令,第三执行指令。
-
它内部有各种各样的寄存器,其中有一个叫做pc的寄存器,pc叫做程序计数器或者pc指针:里面存放着当前正在执行指令的下一条指令的地址。
-
当我们的进程在运行的时候一定会产生非常多的临时数据,这份数据属于当前进程。CPU内部虽然只有一套寄存器硬件但是寄存器里面保存的数据是属于当前进程的。
-
进程在运行的时候占有CPU进程并不是一直要占有到进程结束。 进程在运行的时候都有自己的时间片,具体和上述的并发类似,这里不过多赘述。
-
进程在切换的时候要进行进程的上下文保护,当进程在恢复运行的时候要进行上下文的恢复。
-
在任何时候CPU里面的寄存器的数据看起来是大家都能访问到,但是寄存器内的数据只属于当前运行的进程,寄存器被所有进程共享,寄存器内的数据却是每个进程各自私有的。