《Linux内核设计与实现》读书笔记 第三章

本章讨论了linux进程的生命周期,以及进程相关的一些抽象概念;

一、进程描述符

二话不说,先看一下进程描述符(task_struct)源码,这个结构体定义在<linux/sched.h>中,因为这个结构体太大了,就不贴代码了,就简单记录一些重要的字段吧;

  • pid
    进程id

  • state
    进程状态

进程状态机.png
  • parent
    指向父进程描述符

  • children
    子进程链表

二、进程的生命周期

  • 创建
    分为fork和exec两步,fork通过写时拷贝当前进程创建子进程,exec读取可执行文件载入地址空间运行;

  • 终结
    通过exit退出执行,释放进程占用的资源,状态置为僵死,此时进程描述符依然存留在内存中,直到父进程调用wait为止;
    如果父进程先行exit了,其子进程将会沦为孤儿进程,之后这些子进程退出时,由于没有父进程调用wait,其进程描述符永远无法回收;
    对于这种情况,应对方法是为其找到养父进程,实在找不到就由init进程充当其养父;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容