fd目录包含了所有该进程使用的文件描述符,而fdinfo目录包含的是对应的fd目录中进程打开文件的操作权限。
|
|
|
|
8.root符号链接文件
该文件指向的是根目录(/)。
9.stat文件
该文件的内容反应的是该进程的PCB(task_struct结构)的一些数据域的信息。下面我们来具体看一下它的含义。首先我们在终端上启动gedit程序,然后使用系统监视器(gnome-system-monitor)查看gedit进程的pid为11942,然后我们读取它的stat文件
|
|
|
|
|
|
果是双击启动的,那么该项0,也就是说该程序不是在终端下启动的)。终端的进程组号为7293,该进程的标志为4202496,对应十六进制为0x402000。对于进程的标志,内核定义在/include/linux/sched.h中,都已PF_开头(process flags),0x402000=PF_RANDOMIZE | PF_USED_MATH,表示没有设置fpu的话,这个进程在使用任何变量之前都需初始化(PF_USED_MATH),并且该进程的虚拟地址空间是不固定的(PF_RANDOMIZE )。接下来的4个(5017 0 0 0)是该进程的缺页管理的统计,说明该进程发生了5017次次缺页(次缺页:Copy on Write页和匿名页)(min_flt),并且其所有子进程没有发生次缺页(cmin_flt),没有发生主缺页(主缺页:从映射文件或交换设备读入的页面数)(maj_flt),并且其所有子进程没有发生住缺页(cmaj_flt)。该进程在用户态下运行的时间是80个jiffies(在我的系统中jiffies等于250,所以80个jiffies为20秒)(cputime_to_clock_t(utime)),该进程在内核态下运行的时间是10个jiffies(2.5秒)(cputime_to_clock_t(stime)),该进程的所有子进程在用户态下运行的时间为0(cputime_to_clock_t(cutime)),所有子进程在内核态下运行的时间为0(cputime_to_clock_t(cstime))。该进程的动态优先级为20(priority),静态优先级为0(nice)。该进程所在的线程组里的线程个数为1(num_threads)。接下来的一个"0"是直接输出的,没有含义。下面的1292037是该进程的的创建时间,说明该进程的创建时间是开机后大约3.6小时时创建的(start_time=task->real_start_time,start_time/100/3600=小时)。该进程的虚拟地址空间的大小是61636608B(),该进程当前主流物理内存空间的大小是4481B,能驻留物理地址空间的最大值为4294967295B(4GB),在虚拟地址空间的代码段的起始地址是134512640(0x8048000,一般的应用程序虚拟地址空间的代码段的起始地址都是0x80xxxxx,可以使用objdump -d查看),虚拟地址空间的代码段的结束地址是135099420(0x80D741C),虚拟地址空间的栈的起始地址是3216990608(0xBFBF6190),堆栈指针的当前值为3216990068(0xBFBF5F74),可见我的系统的堆栈的扩展方向是向下扩展(每压栈一个数,esp向下递减)。
下一条要执行的指令的地址是3085931536(0xB7EF9410)。接下来的7个(0 0 4096 0 0 0 0 )是与信号有关的,内核注释说在这里已经没有作用,这里就不做解释。下面一个是进程退出时向父进程发送的信号,该出发送的信号为SIGCHLD(17)。下来一个0表示该进程运行在第0个cpu上。该进程的实时程的相对优先级别为0,该进程是一个非实时进程。
