【lesson11】进程收尾

文章目录

  • 孤儿进程
  • 进程优先级
  • 独立性
  • 并行
  • 并发

孤儿进程

概念:父进程创建子进程,然而父进程却先退出,这是的子进程是孤儿进程。
孤儿进程必须被领养,必须被1号进程领养。
演示:
【lesson11】进程收尾_第1张图片
运行然后重开一个窗口,用监控指令监测两个进程。
【lesson11】进程收尾_第2张图片
从图中我们可以看到父进程退出后,子进程的父进程立马就变成了,1号进程。这个过程就叫托孤。
总结:父进程退出,子进程还在,这个子进程就叫做孤儿进程。
1号进程就是操作系统本身。

为什么要被领养呢?
因为未来子进程要退出的时候,父进程早已不在,而子进程需要返回退出结果和被回收,这些工作只有父进程才会做,所以需要领养进行回收.
在上面我们也可以看到,父进程退出后,子进程立马变为后台进程。
【lesson11】进程收尾_第3张图片
而在之前还是前台进程
【lesson11】进程收尾_第4张图片

进程优先级

为什么要有优先级?
因为CPU资源是有限的!!进程太多了,所以就需要通过某种方式竞争资源。
例子:就比如你们学校图书馆的座位是有限的,你需要通过竞争才能抢到一个座位。
什么是优先级?
确认是谁应该先获得某种资源,或者谁后获得某种资源。
而我们可以用数据表明优先级的。
Linux具体优先级做法:
优先级 = 老的优先级 + NICE值
演示:
【lesson11】进程收尾_第5张图片
重开一个窗口,用ps -la指令可以查看进程的PRI(老的优先级) 和 NI(NICE值)

【lesson11】进程收尾_第6张图片
NICE值是可以更改的
演示:
【lesson11】进程收尾_第7张图片
运行,然后再开两个窗口一个更改NI值,一个观察优先级。
更改NI值步骤:
1.先运行程序,并且输入top指令然后Enter,开启监测指令
监测指令:

while :; do ps -al; sleep 1; echo "-----------------------"; done

【lesson11】进程收尾_第8张图片

2.进入top后,再输入r指令
【lesson11】进程收尾_第9张图片
3.然后输入要更改的进程PID,然后Enter
【lesson11】进程收尾_第10张图片
4.再输入要更改的NI值大小,然后Enter
【lesson11】进程收尾_第11张图片
5.观察监测指令
【lesson11】进程收尾_第12张图片
我们发现优先级和NI值确实变了,优先级在80的基础上加了19.
我们之后更改NI值还是在80的基础上+或者-不会再99的基础上+或者-

Linux不允许我们把NI值往低了调,所以这里就不演示往低处调了。

我们这里发现NI值是有范围的,范围是[-19,19]。

独立性

多进程运行需要独享资源,多进程运行期间互不干扰。
这个其实很好理解,我们们手机上的应该程序如果有一个应用程序挂掉了,对其它程序的运行并不影响。

并行

多个进程在对各CPU下分别同时运行。
【lesson11】进程收尾_第13张图片

并发

多个进程在一个CPU下采用切换的方式,在一段时间内,让多个进程都得以推进。
【lesson11】进程收尾_第14张图片

这就达到了多个进程同时推进的效果

进程A运行是的临时数据,叫做A的上下文数据。
上下文数据可以被丢弃吗?
绝对不可以!

结论:当进程A暂时被切换下来的时候,需要进程A顺便带走自己的上下文数据!
带走临时数据暂时保存起来的目的就是为了下次回来的时候,能恢复上去,就能继续按照之前的逻辑继续向后运行就如同没有中断过一样。
例子:
张三是京华大学大一的学生,想去当兵,如果张三不大招呼直接跑去当兵,等张三当兵回来就会发现自己已经被学校开除了,因为学校发现张三天天旷课,学业全挂所以直接开除张三的学籍。
相反的李四也是京华的学生,也想去当兵,去之前提前跟学校打招呼,学校保留了他上学时的所有数据,并且保留了他的学籍。等李四服兵役结束回来,学校立马恢复他的学籍和各种信息。

CPU内的寄存器只有一份,但是上下文可以有多份,分别对应不同的进程!
就像图书馆里的座位,座位虽然只有一份,但每个座位上都坐过不同的人。

你可能感兴趣的:(linux,linux,服务器,运维)