关于Linux内核源代码的一个问题

george3038 2008-06-11 11:23:09
请问在Linux2.4.0内核代码中,
函数static inline void forget_original_parent(struct task_struct * father)
遍历子进程为何要用遍历所有进程的方法?
for_each_task(p) {
if (p->p_opptr == father) {
/* We dont want people slaying init */
p->exit_signal = SIGCHLD;
p->self_exec_id++;
p->p_opptr = reaper;
if (p->pdeath_signal) send_sig(p->pdeath_signal, p, 0);
}
}


我认为从最年轻的子进程开始沿着由各个task_struct结构中的指针p_osptr所形成的链表遍历,性能会更好。
但是在forget_original_parent()函数中为什么使用遍历所有进程的方法呢?
...全文
150 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
linuxguy 2008-06-23
  • 打赏
  • 举报
回复
mark!!!!!!!!!!!
george3038 2008-06-21
  • 打赏
  • 举报
回复
好像讲不通呀。

forget_original_parent()函数中是要遍历某个进程的子进程,好像与INIT进程和孤儿进程没有关系呀。
Dualing 2008-06-12
  • 打赏
  • 举报
回复
我的见解,不一定对啊。。。
因为在LINUX中,会经常产生孤儿进程,所有的孤儿进程都由INIT接管,
据此,由INIT开始遍历应该能容易提高查找的效率。

4,438

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧