进程
- 1.进程优先级(了解)
- 2.进程切换
1.进程优先级(了解)
1.什么叫做进程优先级?
我们知道权限是能还是不能做的问题,那对应的优先级就是能做,但是是先做还是后做的问题。
2.为什么存在优先级?
因为资源太少了
3.linux优先级特点。
优先级本质上就是PCB里面一个整数数据,也可能是几个。
我们看看linux下进程优先级怎么表示的。
ps -la //查看进程信息
PRI是对应的优先级。,PRI值越低优先级越高。
一个进程刚出来是有优先级的,并且linux支持进程运作中,进行优先级调整的,调整的策略就是更改nice完成的。因此nice的范围也是优先级的范围。
调整进程优先级
sudo top
r
输入调整进程的pid
输入调整范围
确定之后,按q退出。
发现进程优先级确实改变了,但是我明明把nice的设为-100,才到-20,而PRI为60。
再看下面一个。
这次修改nice值为100,但是只有19,而PRI为99。
从这我们就可以看出nice范围和PRI范围。
nice[-20,19] PRI[60,19]
并且最终优先级=老的优先级(默认为80)+nice
2.进程切换
进程的特性:
竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。
独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰。
并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行。
并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。
这里主要讲讲进程的切换问题。
1.当我们的进程在运行的时候,一定会产生非常多的临时数据,这份数据属于当前进程! CPU内部虽然有一套寄存器,但是寄存器里面保存的数据是属于当前进程的。 所以
寄存器硬件 != 寄存器内的数据
2.进程在运行的时候要占有CPU,但是进程并不是一直要占有到进程结束。如写一段while(1)死循环,我们还可以操作其他进程。
这是因为进程在运行的时候,都有自己的时间片,超过时间不管该进程有没有执行完都会被剥离,等待下次运行。然后切换下个进程。
这里就有一个问题了。当我再次运行被剥离的进程,这个进程会从头开始重新运行,还是会沿着被剥离的时候再继续往下运行呢?
这里就和上大学然后去当兵类似,去当兵肯定会去保留学籍,然后退伍之后回来接着上。
离开学校,保留学籍,上下文保护
回到学习,恢复学籍,上下文恢复
那为什么要保护和恢复呢?
保护就是为了恢复的。
注意,保留的是cpu内寄存器的数据,而不是寄存器。
进程在切换的时候,要进行进程的上下文保护,当进程再恢复运行的时候,要进行上下文的恢复!
在任何时候,cpu里面的寄存器里面的数据,看起来是大家都能看到的寄存器上,但是寄存器内的数据,只属于当前进程。
寄存器被所有进程共享,寄存器内的数据,是每个进程各种私有的。