一个编译器包含的阶段至少包含三个部分的进程是什么?

先回顾下之前的三篇文章:




通过這三篇文章的学习我们知道无论内核进程还是用户进程,都是可以用task_struct来描述的那么本篇我们实践下如何通过task_struct字段把系统中所有的进程包含的信息打印出来,比如:属性信息状态,进程标识符优先级信息,亲属关系文件系统信息,内存方面的信息等

  1. 从0号进程开始通过list_for_each函数来遍历进程链表

  2. 从该地址中找到task_struct所对应的“属性信息,状态进程标识符,优先级信息亲属关系,文件系统信息内存信息”等信息。

或者直接用do_each_thread函数从0号进程开始遍历所有进程

这里列出一部分常用信息,更多的信息可以翻看之前的文章《

//调度标志,表示该進程是否需要重新调度,若非0,则当从内核态返回到用户态,会发生调度 //若进程不在任何CPU上运行, cpus_runnable 的值是0,否则是1 这个值在运行队列被锁时更新 //用於将系统中所有的进程连成一个双向循环链表, 其根是init_task //Linux可以运行由其他UNIX操作系统生成的符合iBCS2标准的程序 //记录进程在每个CPU上所消耗的用户态时間和核心态时间 //进程的权能分别是有效位集合,继承位集合允许位集合 //NULL if no tty 进程所在的控制终端,如果不需要控制终端则该指针为空 //进程的CPU状态,切换时要保存到停止进程的task_struct中

最后我们看下,最后打印的信息是什么样子的:

我要回帖

更多关于 编译器包含的阶段 的文章

 

随机推荐