Peter.Y的技术博客

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2007年8月5日

摘要: Linux进程所需具备的四要素:1.程序代码。代码不一定是进程专有,可以与其它进程共用。2.系统堆栈空间,这是进程专用的。3.在内核中维护相应的进程控制块。只有这样,该进程才能成为内核调度的基本单位,接受调度。并且,该结构也记录了进程所占用的各项资源。4.有独立的存储空间,表明进程拥有专有的用户空间。以上四条,缺一不可。如果缺少第四条,那么就称其为“线程”。如果完全没有用户空间,称其为“内核线程”;如果是共享用户空间,则称其为“用户线程”。 阅读全文
posted @ 2007-08-05 18:55 Peter.Y 阅读(892) 评论(0) 推荐(0) 编辑

摘要: 1. 在Linux的内核底层中的代码,多数是以汇编语言完成的。   汇编代码以两种形式存在,一种是纯汇编代码,后缀名为.s的文件。当然这样的汇编代码其中也加入了预编译选项,而不是单纯的汇编。另一种是在C语言中嵌入汇编语言。虽然在ANSI的C语言标准中并没有关于汇编片段的规定,但事实上各种实际使用的C编译中都作了这方面的扩充。GNU的C编译器gcc也在这方面作了很强的扩充。  GNU的C编译器gcc在内核“纯”汇编代码中采用了不同于常用386汇编语言的句法;而在嵌入C程序的汇编片段中,也增加了一些指导汇编工具如何分配使用寄存器、以及如何与C程序中定义的变量相结合的语言成分。这些成分使得这种汇编语 阅读全文
posted @ 2007-08-05 06:21 Peter.Y 阅读(842) 评论(0) 推荐(0) 编辑

摘要: 对于Linux中的C,采用gcc编译器进行编译,其内核源代码的编译也依赖相应的gcc版本。  由于内核中需要大量的使用双链表,因此将双链表数据结构抽象出来,成为list_head结构体。对于这样的问题,内核源代码采用的方法如下:  利用宏container_of(ptr,type,member) ({  const typeof( ((type *)0)-member) * __mptr = (ptr); (type *)( (char *)__mptr - offsetof(type,member));})  其中ptr表示list成员指针,type表示宿主结构体类型,member表示宿 阅读全文
posted @ 2007-08-05 00:20 Peter.Y 阅读(263) 评论(0) 推荐(0) 编辑

2007年8月3日

摘要: 1.CPU的位数,如16位或32位,是指处理器中“算术逻辑单元(ALU)”的宽度。通常,系统总线中的数据部分(数据总线),与ALU具有相同的宽度(但也有例外)。2.Intel采用分段方法进行寻址,且对于段寄存器的访问指令不属于特权级,因此,称其为“实地址模式”。3.80386的段式内存管理机制  CPU中增设两个寄存器:全局段描述表寄存器GDTR(global descriptor table register)和局部段描述表寄器LDTR(local descriptor table register)。访问这两个寄存器的指令被设计成为特权指令。段寄存器的高13位被用作访问段描述表的偏移量,与 阅读全文
posted @ 2007-08-03 20:23 Peter.Y 阅读(355) 评论(0) 推荐(0) 编辑