仅仅为了是个人学习记录,
烟酒生的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
}