从C语言源代码分析,神秘的Linux系统是如何记录和描述进程的?
|
Linux 系统中的进程必定处于这 5 种状态之一。从上到下,分别表示进程处于:
现在就明白有时无法通过 kill 命令杀死 D 状态的进程了,这是因为这些进程处于不响应信号的状态,kill 命令本质上是发送 SIGKILL 信号,自然无法杀死该进程。 父进程和子进程 进程的父进程和子进程也属于进程的资源,因此也被记录在 task_struct 结构体中,请看相关C语言代码: ![]() 访问当前进程的父进程和子进程是方便的 所以要访问当前进程的父进程和子进程是方便的,例如:
稍稍思考一下,应该能够发现进程结构体 task_struct 中的 parent 指针和 children 指针其实构成了一条链表,通过这样的链表,我们能够轻易的访问进程的父进程,祖父进程…, 以及子进程,孙进程… 等。不过应该明白,对于拥有大量进程的系统来说,重复遍历所有进程的开销是很大的。 小结 本节先讨论了Linux内核如何记录和描述进程资源,可以看出,内核管理进程其实就是管理 task_struct 结构体。接着,通过C语言源代码查看了内核如何访问 task_struct 结构体,以及如何区分进程,最后我们一起还讨论了进程的状态和家族树,可见,Linux内核源代码也并不是神秘到不可理解。 【编辑推荐】
点赞 0 (编辑:呼伦贝尔站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 微软你的手机App 将面临Win11全新设计 将Spotify集成到操作
- windows-server-2003 – 从目录服务还原模式中降级2003 DC
- 有了Lutris,Linux现在也可以启动Epic游戏商城
- Linux服务器如何查看CPU使用率、内存占用情况
- 外接USB升级问题已修复 微软可以正常升级Windows 10五月更新
- 查找 Linux 发行版名称、版本和内核详细信息
- 如何加速运行Windows 10的PC?
- 你所不知道的Linux文件与管理,带你进入Linux世界
- PowerTOP:在Linux上监视电量使用和改善笔记本电池寿命
- windows-server-2008 – Windows Server 2008 R2 64位内存泄

