kernel的rlimit变化

inux kernel里是不区分进程/线程的,都用的是struct task_struct结构。如果一个进程启动,然后创建n个线程,那么对内核来说,就是多了n+1个struct task_struct结构而已,且这后n+1个task_struct里的成员指针group_leader指向那个创建它们的进程。这个创建其它人的进程当然就是这个thread group的leader。

在2.6.9版的kernel里,每个task_struct有自己的rlim结构(就是用来限制进程访问资源的,可man setrlimit之),也就是说,你在其中一个线程setrlimit,只是影响自己,其它线程没变化。

但是在2.6.18版kernel里,一个thread group里的task_struct共享统一各rlim实例,也就是说,你在任意一个线程里setrlimit,所有该thread group里的线程,包括那个创建者进程,都会改变资源限制状态。

我是在redhat 4u和5u机器上分别跑同一套代码,发现这一不同的。

相关文章

分类

留言:

关于文章

This page contains a single entry by DongHao published on 02 22, 2011 2:05 PM.

代码小比较 was the previous entry in this blog.

rhel5 忘记root密码 is the next entry in this blog.

Find recent content on the main index or look in the 存档 to find all content.