linux内核taskstruct结构体字段分析.ppt

linux内核taskstruct结构体字段分析.ppt

ID:52472520

大小:360.37 KB

页数:19页

时间:2020-04-08

linux内核taskstruct结构体字段分析.ppt_第1页
linux内核taskstruct结构体字段分析.ppt_第2页
linux内核taskstruct结构体字段分析.ppt_第3页
linux内核taskstruct结构体字段分析.ppt_第4页
linux内核taskstruct结构体字段分析.ppt_第5页
资源描述:

《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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。