Linux内核理解
lupengcheng2025
这个作者很懒,什么都没留下…
展开
-
初始化内核页表
<br /> 内核维持着一组自己使用的页表,驻留在主内核全局目录中,主内核页全局目录的最高目录项部分作为参考模型,为系统中每个普通进程对应的页全局目录项提供参考模型(进程的内核态从oxc0000000-----oxffffffff的线性地址!)<br /> 内核页表的初始化化分为2个阶段:<br /> 第一阶段:在还未启动分页机制下初始化化一个寻址范围在0---8M的内核页表,这个最小限度的地址空间仅能内核装载到RAM和对其初始化核心数据结构。该部分是由startup_32()汇编语言函数实现的原创 2010-09-12 16:31:00 · 1403 阅读 · 0 评论 -
内核代码中巧妙的宏定义
<br /> 在阅读linux内核代码时,发现很多功能是用精简的宏定义实现的。巧妙的使用宏定义让C语言写出的代码似乎具备了C#,Java这些面向对象语言的功能,比如操作list_head(双向链表)的list_entry(p,t,m)宏,知所以需要实现这个宏是因为list_head经常是作为一些复杂数据结构的数据成员,其作用是实现这些复杂数据结构的链表。下面来看一下list_entry宏的实现:<br /> <br /> #define list_entry(ptr, type, member) /原创 2010-09-14 22:49:00 · 477 阅读 · 0 评论