标签:
第二章
内核开发的特点:
1内核编程时既不能访问C库,也不能访问标准的C头文件。
2内核编程时必须使用GNU C。
3内核编程时缺乏像用户空间那样的内存保护机制。
4内核编程时难以执行浮点计算。
5内核给每个进程只有一个很小的定长堆栈。
6由于内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发。
7要考虑可移植性的重要性。
第三章 进程管理
从这章开始讲些非前言性质的东西。这本书是比较偏理论的,不是罗列大量源码,或者教你怎样写内核的。所以读法是,泛泛而读,掌握要旨,多记住一些关键内容。
内核把进程的列表存放在叫task list的双向循环链表中。链表中的每一项都是类型为task_struct、称为进程描述符的结构,该结构定义在<linux/sched.h>文件中。进程描述符中包含一个具体进程的所有信息。
分配进程描述符:Linux通过slab分配器分配task_struct结构,这样才能达到对象复用和缓存着色的目的。在2.6以前的内核中,各个进程的task_struct存放在它们内核栈的尾端。这样做是为了让那些像×86那样寄存器较少的硬件体系结构只要通过栈指针就能计算出它的位置,而避免使用额外的寄存器专门记录。由于现在的slab分配器动态生成task_struct,所以只需在栈顶(向下增长的栈)或栈底(向上增长的栈)创建一个新的结构,struct thread_info。
标签:
原文地址:http://www.cnblogs.com/rixiang/p/4674485.html