DT),其起始地址存放在中断描述符表寄存器(IDTR)中,其格式如下:
32位基址值 界限
其中各个结构的相应联系可以如下表示:
通过上面的说明可以得出通过IDTR寄存器来找到system_call函数地址的方法:根据IDTR寄存器找到中断描述符表,中断描述符表的第0x80项即是system_call函数的地址,这个地址将在后面的讨论中应用到。
1.2.Linux 的LKM(可装载内核模块)技术
为了使内核保持较小的体积并能够方便的进行功能扩展,Linux系统提供了模块机制。模块是内核的一部分,但并没有被编译进内核,它们被编译成目标文件,在运行过程中根据需要动态的插入内核或者从内核中移除。由于模块在插入后是作为Linux内核的一部分来运行的,所以模块编程实际上就是内核编程,因此可以在模块中使用一些由内核导出的资源,例如Linux2.4.18版以前的内核导出系统调用表(sys_call_t页码:[1] [2] [3] [4] [5] [6] 第3页、共6页 |