前言
极度投入,深度沉浸,边界清晰
前端小菜鸡一枚,分享的文章纯属个人见解,若有不正确或可待讨论点可随意评论,与各位同学一起学习~
欢迎关注
『前端进阶圈』
公众号 ,一起探索学习前端技术......公众号回复
加群
或 扫码
, 即可加入前端交流学习群,长期交流学习......公众号回复
加好友
,即可添加为好友
热点面试题:进程相关问题?
Q: 父进程或子进程死亡会影响双方吗?
- R: 子进程死亡不会影响父进程,但在子进程死亡时,会向它的父进程发送死亡信号。
- R: 父进程死亡会影响子进程。
Q: 什么是进程?
- R: 一段程序执行的过程,是一个动态的概念。
- A: 每个进程的产生都有属于自己的一个
ID(pid)
,并且也会携带一些父进程的ID(ppid)
。进程死亡时,ID将被回收。
Q: 进程间如何获取 CPU 资源?
- R: 进程间靠优先级来获取 CPU 资源,根据时间片段轮换来更新优先级(每个进程都会进行轮换运行,这个时间会比较短,所以给我们的感觉就像是系统在同时运行好多进程)。
Q: 何为孤儿进程?
- R: 子进程死亡需要父进程来处理,那以此来说正常的流程就是子进程先死然后父进程再死。如果出现父进程比子进程先死时,子进程就没有了父进程来处理,这样的话就会形成孤儿进程。
Q: 孤儿进程后续怎么处理的?
- R: 孤儿进程将会被分配给一号进程init,init进程将会收养孤儿进程,并由init进程对他们完成状态收集工作。
Q: 何为僵尸进程?
- R: 进程是按照父进程产生子进程,子进程产生子子进程的方式来创建和完成互协功能。当一个进程完成终止后,它的父进程会调用
wait() 或 waitpid()
来取出子进程的终止状态。如果父进程没有取出子进程的终止状态,那此时系统进程中还会依然保留这子进程退出状态的一些信息,这时进程表项就将一直被占用。此时,这个占着系统进程的子进程就被称为 僵尸进程
。
Q: 孤儿进程与僵尸进程的区别是什么?
- R: 孤儿进程是不占用资源的(由于父进程已经死亡,系统会帮助父进程回收处理孤儿进程,所以是不占用资源的),而僵尸进程会占用进程ID,损害运行系统
Q: 如何避免僵尸进程?
- 直接将父进程杀死,让僵尸进程就会变为孤儿进程。
- 当子进程完成终止状态后,父进程及时调用
wait() 或 waitpid()
方法进行释放子进程占用的资源。 - 采用信号SIGCHLD通知处理,并在信号处理程序中调用 wait 函数
文章特殊字符描述:
- 问题标注
Q(question)
- 答案标注
R(result)
- 注意事项标准:
A:(attention matters)
- 详情描述标注:
D:(detail info)
- 总结标注:
S:(summary)
- 分析标注:
Ana:(analysis)
- 提示标注:
T:(tips)
往期回顾:
- 热点面试题:Node.js 中的垃圾回收机制?
- 热点面试题:简述 http3.0~http1.0 分别有什么改进?
- JavaScript中的AMD和CMD规范
- Vue数据监听Object.definedProperty()方法的实现
最后:
- 欢迎关注
『前端进阶圈』
公众号 ,一起探索学习前端技术...... - 公众号回复
加群
或 扫码
, 即可加入前端交流学习群,长期交流学习...... - 公众号回复
加好友
,即可添加为好友