从C语言源代码分析,神秘的Linux系统是如何记录和描述进程的?
|
Linux 系统中的进程必定处于这 5 种状态之一。从上到下,分别表示进程处于:
现在就明白有时无法通过 kill 命令杀死 D 状态的进程了,这是因为这些进程处于不响应信号的状态,kill 命令本质上是发送 SIGKILL 信号,自然无法杀死该进程。 父进程和子进程 进程的父进程和子进程也属于进程的资源,因此也被记录在 task_struct 结构体中,请看相关C语言代码: ![]() 访问当前进程的父进程和子进程是方便的 所以要访问当前进程的父进程和子进程是方便的,例如:
稍稍思考一下,应该能够发现进程结构体 task_struct 中的 parent 指针和 children 指针其实构成了一条链表,通过这样的链表,我们能够轻易的访问进程的父进程,祖父进程…, 以及子进程,孙进程… 等。不过应该明白,对于拥有大量进程的系统来说,重复遍历所有进程的开销是很大的。 小结 本节先讨论了Linux内核如何记录和描述进程资源,可以看出,内核管理进程其实就是管理 task_struct 结构体。接着,通过C语言源代码查看了内核如何访问 task_struct 结构体,以及如何区分进程,最后我们一起还讨论了进程的状态和家族树,可见,Linux内核源代码也并不是神秘到不可理解。 【编辑推荐】
点赞 0 (编辑:3v站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 微软发布新操作系统 不想立即提升 可以这样暂停Windows 11更
- Windows – 导出GFI MailArchiver电子邮件以导入Exchange 2
- Win10系统安装KB3124200补丁Office 2016设定丢失怎么办
- 小编教你win10护眼模式怎么设定
- 各种NLP操作难实现?谷歌开源序列建模框架Lingvo
- windows-server-2008-r2 – 远程桌面服务器始终显示登录屏幕
- Windows 10那烦人的自动更新,原来这一设定就能彻底禁用!
- windows – 如何实际监控带宽使用情况
- 管理Windows 10设置以获得更好的性能
- windows-server-2008-r2 – 允许来自同一用户的多个远程桌面


