linux内核taskstruct结构体字段分析.ppt_第1页
linux内核taskstruct结构体字段分析.ppt_第2页
linux内核taskstruct结构体字段分析.ppt_第3页
linux内核taskstruct结构体字段分析.ppt_第4页
linux内核taskstruct结构体字段分析.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

linux内核源码分析,进程管理(一)郭海林2012.9.29,重要数据结构双向链表(1),结构体定义:structlist_headstructlist_head*next,*prev;,list_head,list_head,list_head,list_head,重要数据结构双向链表(2),为什么要使用这种结构?容器机制将对象嵌入到另一个对象中怎样通过链表元素找到容器对象的实例?,重要数据结构双向链表(3),./include/linux/list.h,list_entry(p,t,m)已知类型为t的数据结构包含了一个list_head字段,该字段的名字是m,地址为p,返回类型为t的数据结构地址list_entry(0 x.,structtask_struct,tasks),重要数据结构散列表(1),结构体定义表头:structhlist_headstructhlist_node*first;节点:structhlist_nodestructhlist_node*next,*pprev;,重要数据结构散列表(2),进程结构体剖析(1),structtask_structvolatilelongstate;/*-1unrunnable,0runnable,0stopped*/.longexit_state;/.,进程的状态宏定义:#defineTASK_RUNNING0#defineTASK_INTERRUPTIBLE1#defineTASK_UNINTERRUPTIBLE2#define_TASK_STOPPED4#define_TASK_TRACED8/*intsk-exit_state*/#defineEXIT_ZOMBIE16#defineEXIT_DEAD32/.,进程结构体剖析(2),structtask_struct/.structlist_headtasks;/将系统中所有进程通过双向链表链接起来!/.,怎样访问所有的进程呢?,#definefor_each_process(p)for(p=)#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;/threadgroupleader/.系统调用getpid()返回什么?,进程结构体剖析(4.1),structtask_struct/.structtask_struct_rcu*real_parent;/*realparentprocess*/structtask_struct_rcu*parent;/*recipientofSIGCHLD,wait4()reports*/structlist_headchildren;/*listofmychildren*/structlist_headsibling;/*linkageinmyparentschildrenlist*/.,进程之间的关系:父子关系兄弟关系,进程结构体剖析(4.2),假设现在有进程A,生成三个子进程B、C、D,B进程又生成一个子进程E。五个task_struct怎么进行链接?,进程结构体剖析(5.1),structtask_struct/./*PID/PIDhashtablelinkage.*/structpid_linkpidsPIDTYPE_MAX;/.,关键结构体,structupidintnr;structpid_namespace*ns;structhlist_nodepid_chain;,structpid_linkstructhlist_nodenode;structpid*pid;,structpidatomic_tcount;unsignedintlevel;structhlist_headtasksPIDTYPE_MAX;structrcu_headrcu;structupidnumbers1;,count,lever,task0,task1,task2,nr,ns,pid_chain,pid命名空间(1),1,2,3,4,5,6,7,8,10,9,2,1,3,1,lever0,lever1,lever2,pid命名空间(2),structnsproxyatomic_tcount;structuts_namespace*uts_ns;structipc_namespace*ipc_ns;structmnt_namespace*mnt_ns;structpid_namespace*pid_ns;structnet*net_ns;,structpid_namespace/.unsignedintlevel;structpid_namespace*parent;/.;,结构图,见板书.,重要函数(1),根据进程的命名空间ns以及局部PID号nr,怎么找到进程的task_struct?nr,ns-upid-pid-task_struct,重要函数(2),给出task_struct、ID类型、命名空间,怎么取得命名空间局

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论