您的位置:首页 > 运维架构 > Linux

烟酒生DAY_ONE_linux内核学习-------task_struct的头文件分析

2016-04-22 19:04 459 查看
仅仅为了是个人学习记录,

烟酒生的linu内核记录生活第一天DAY1

希望能坚持毕业后

task_struct{

state//描述现在任务中的状态

stread_info//俗称线程状态

/*找了 本书,看了其结构为:

struct stread_info{

struct task_task *task;//又有一个指向该任务的指针,不过正常嘛,毕竟线程信息,肯定要指向任务的呗

strcut exec_domain *exec_exec_domain;//呵呵,貌似是执行的,暂时还不知道,我先看看内核

unsigned long flags;//标记,32位无符号唉,线程信息里肯定需要标记的吧,看这个具体内容吧,我暂时也不知道唉

_u32 cpu

_s32preempt_count

mm_segment_addr_limit;看他的字面意思吧,内存区段地址的限制,那估计就是不能用的内存地址块(某些地址不准 用,BIOS等吧)

u8 supervisor_stack[0];感觉是个堆栈吧

}

上面的是老版,让我们看看新版:

struct thread_info {
unsigned long
flags; /* low level flags */
int preempt_count;
/* 0 => preemptable, <0 => bug */
mm_segment_t
addr_limit; /* address limit */
struct task_struct
*task; /* main task structure */
__u32 cpu;
           /* cpu */
__u32 cpu_domain;
   
/* cpu domain */
struct cpu_context_save
cpu_context;    
 /* cpu context */
__u32 syscall;
                 
 /* syscall number */
__u8 used_cp[16];    
/ * thread used copro */
unsigned long
tp_value[2];    
 /* TLS registers */

#ifdef CONFIG_CRUNCH
struct crunch_state
crunchstate;

#endif
union fp_state
fpstate __attribute__((aligned(8)));
union vfp_state
vfpstate;

#ifdef CONFIG_ARM_THUMBEE
unsigned long
thumbee_state; /* ThumbEE Handler Base register */

#endif

忽然发现,相差不多,都有:

1.肯定要标记,要标记东西

2.肯定有一个指向主任务的指针,线程,得切换,所以必须得有,这个很重要唉

3.不能访问的内存地址,这个也重要,不能乱访问

4.要有一个指向执行的指针,这个也重要

好了,暂时也就了解这么多了

};

*/

usage//据说是使用法则

run_list;/*     这个是运行列表的意思嘛,list_head的类型很重要唉,双向指针,这个里面有优先级等级,例如我等级是NO.1,劳资要插入到第一种,所以双向链表可已插入要运行的地方*/

mm  /*这个嘛  .MAMA,memory,momory ,记忆记忆,当然是内存空间了

real_parent//真正的父亲,当然是所有人的老大,INIT(),PID=1

parent//上一个进程,因为双向链表,必定指明他是谁生出来的,老外用词还是不错的

tty   //占时还没看到,以后看到再补充

fs//fs_struct------>指向当前目录,唉

file//-------------------->指向文件的指针,这个也是,毕竟任务,你丫能不让他访问文件嘛,人家牛比着呢

signal//--------------------------》singnal_STRUCT

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux kernel