摘要: linux0.11系统调用的执行过程是怎样的? (1) 答:当执行系统调用函数时,系统调用函数会执行int 0x80中断命令,同时将系统调用号放入eax寄存器中,并将要传递给系统的参数放入ebx,ecx,edx中。中断处理程序会执行system_call()函数。(2) system_call()函数首先保存原段寄存器,在将调用参数压入栈中。然后将ds(在保护模式下,ds装的是段选择符)、es指向内核数据段,cs段会在中断产生时由中断门的段选择符赋值为内核代码段,并将原段选择符保存到栈中。然后调用对应的功能函数。当从功能函数返回时,内核会查看当前任务运行状态,如果不在就绪态就去执行调度程序。如 阅读全文
posted @ 2010-01-20 22:53 qiang.xu 阅读(985) 评论(0) 推荐(0) 编辑
摘要: 到了main.c,其实main.c中的大部分的内容是调用函数来实现初始化的工作,但是还是将它看完了。下面就是代码了。主要参考的是linux内核完全注释,在一些不太明白的地方,参考网上的介绍。废话少说。还有很长的路啊。努力啊O(∩_∩)O~。/** main.c功能描述。*///main.c程序的主要功能是利用setup.s程序取得的系统参数设置系统的// 的根文件设备号和一些全局变量。这些变量至两名了内存的开始地址// 系统包含的内存容量和作为高速缓存区内存末端地址。如果还定义了// 虚拟盘,则主存将会相应的减少。整个内存的镜像如下 ://// -------- 阅读全文
posted @ 2010-01-20 09:33 qiang.xu 阅读(2265) 评论(0) 推荐(0) 编辑