欢迎来到天天文库
浏览记录
ID:52472520
大小:360.37 KB
页数:19页
时间:2020-04-08
《linux内核taskstruct结构体字段分析.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、linux内核源码分析进程管理(一)郭海林2012.9.29重要数据结构——双向链表(1)结构体定义:structlist_head{structlist_head*next,*prev;};list_headlist_headlist_headlist_headnextprevnextprevnextprevnextprev重要数据结构——双向链表(2)为什么要使用这种结构?容器机制——将对象嵌入到另一个对象中怎样通过链表元素找到容器对象的实例?nextprevtask_structlist_headnextprevtask_structl
2、ist_headnextprevtask_structlist_head重要数据结构——双向链表(3).../include/linux/list.hlist_entry(p,t,m)已知类型为t的数据结构包含了一个list_head字段,该字段的名字是m,地址为p,返回类型为t的数据结构地址list_entry(0x.....,structtask_struct,tasks)重要数据结构——散列表(1)结构体定义表头:structhlist_head{structhlist_node*first;};节点:structhlist_node{
3、structhlist_node*next,**pprev;};重要数据结构——散列表(2)pprevnexthlist_headhlist_nodenullfirstfirstfirsthlist_nodepprevnextpprevnexthlist_nodenull为什么要这么定义?进程结构体剖析(1)structtask_struct{volatilelongstate;/*-1unrunnable,0runnable,>0stopped*///...longexit_state;//...}进程的状态宏定义:#defineTASK_
4、RUNNING0#defineTASK_INTERRUPTIBLE1#defineTASK_UNINTERRUPTIBLE2#define__TASK_STOPPED4#define__TASK_TRACED8/*intsk->exit_state*/#defineEXIT_ZOMBIE16#defineEXIT_DEAD32//...进程结构体剖析(2)structtask_struct{//...structlist_headtasks;//将系统中所有进程通过双向链表链接起来!//...}怎样访问所有的进程呢?#definefor_ea
5、ch_process(p)for(p=&init_task;(p=next_task(p))!=&init_task;)#definenext_task(p)list_entry_rcu((p)->tasks.next,structtask_struct,tasks)给出全局pid号,怎么找到相应进程的task_struct?进程结构体剖析(3)structtask_struct{//...pid_tpid;//进程标识符(线程)pid_ttgid;//线程组的领头线程IDstructtask_struct*group_leader;//
6、threadgroupleader//...}系统调用getpid()返回什么?进程结构体剖析(4.1)structtask_struct{//...structtask_struct__rcu*real_parent;/*realparentprocess*/structtask_struct__rcu*parent;/*recipientofSIGCHLD,wait4()reports*/structlist_headchildren;/*listofmychildren*/structlist_headsibling;/*linkage
7、inmyparent'schildrenlist*///...}进程之间的关系:父子关系兄弟关系childrensiblingchildrensiblingchildrensiblingchildrensiblingchildrensiblingADCBEPNNPPPNNP进程结构体剖析(4.2)假设现在有进程A,生成三个子进程B、C、D,B进程又生成一个子进程E。五个task_struct怎么进行链接?进程结构体剖析(5.1)structtask_struct{//.../*PID/PIDhashtablelinkage.*/structp
8、id_linkpids[PIDTYPE_MAX];//...}enumpid_type{PIDTYPE_PID,PIDTYPE_PGID,PIDTYPE_SID,P
此文档下载收益归作者所有