这几天看pid命名空间,一开始还是有点晕的,不过后来还是理解了。
下图就是我用画图板画出来的,PID命名空间的大部分结构基本上在图上显示出来。
首先得注意的是,因为有PID命名空间的存在,所以一个PID资源可以被好几个进程共同享用(task_struct),所以一个进程可以有好多不同的ID,由于正常的机器上,只有一个命名空间,所以资源都是全局的,并且是唯一的。
命名空间我没有详细画出来,毕竟全部画出来,工作量还是比较大。
pid的管理方式是PID_hash散列链表.
pid_hash
0 upid upid upid ...
1 upid upid .....
2
3
4
5
6
....
搜索一个pid资源的方式是通过求余算法,方便找到对应的upid.