随笔分类 -  嵌入式之Linux内核学习

摘要:/** 本程序主要是实现系统调用中断int 0x80的入口处理过程机信号检测过程,* 同时给出了两个系统调用功能的底层接口sys_execve和sys_fork。还列出了* 处理过程类似的协处理器出错int 16,设备不存在int 7,硬盘中断int 46,* 软盘中断int 38的中断处理程序。**//** linux/kernel/system_call.s** (C) 1991 Linus Torvalds*//** system_call.s contains the system-call low-level handling routines.* This also contain 阅读全文
posted @ 2010-01-28 21:53 qiang.xu 阅读(2085) 评论(0) 推荐(0) 编辑
摘要:/** linux/kernel/asm.s** (C) 1991 Linus Torvalds*//** asm.s contains the low-level code for most hardware faults.* page_exception is handled by the mm, so that isn't here. This* file also handles (hopefully) fpu-exceptions due to TS-bit, as* the fpu must be properly saved/resored. This hasn' 阅读全文
posted @ 2010-01-28 21:50 qiang.xu 阅读(890) 评论(1) 推荐(0) 编辑
摘要: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 阅读(986) 评论(0) 推荐(0) 编辑
摘要:到了main.c,其实main.c中的大部分的内容是调用函数来实现初始化的工作,但是还是将它看完了。下面就是代码了。主要参考的是linux内核完全注释,在一些不太明白的地方,参考网上的介绍。废话少说。还有很长的路啊。努力啊O(∩_∩)O~。/** main.c功能描述。*///main.c程序的主要功能是利用setup.s程序取得的系统参数设置系统的// 的根文件设备号和一些全局变量。这些变量至两名了内存的开始地址// 系统包含的内存容量和作为高速缓存区内存末端地址。如果还定义了// 虚拟盘,则主存将会相应的减少。整个内存的镜像如下 ://// -------- 阅读全文
posted @ 2010-01-20 09:33 qiang.xu 阅读(2269) 评论(0) 推荐(0) 编辑
摘要:参考资料 Linux内核完全注释.pdf 网上相关资料! setup程序的主要作用是利用rom bios的中断来读取机器系统参数,并将这些数据保存在0x90000! 开始的位置(覆盖掉了bootsect程序所在的位置),所取得的参数被内核的相关程序使用。注意在bootsect! 中已经将该模块和system、模块加载到内存中。! 然后setup程序将system模块从地址0x10000-0x8fff(当时认为内核的最大值)整块移动到内存的绝对地址! 0x00000处。接下来加载中断描述符表寄存器idtr和全局描述符表gdtr,开启a20地址线,重新设置两个! 中断控制芯片,将硬件终端号重新设置 阅读全文
posted @ 2010-01-19 08:36 qiang.xu 阅读(2088) 评论(0) 推荐(0) 编辑
摘要:呵呵,终于将linux 0.11 下面的boot文件夹下的三个文件读完,下面是相关注释,没有汇编基础的人也是可以读的。废话少说,下面就是linux的源码了。参考资料 Linux内核完全注释.pdf 网上相关资料!时间 : 2010-1-14!工作 : 阅读linux 0.11 源码中的bootsect.s!总体linux启动过程如下:!!当PC得电源打开之后,80x86结构的CPU将自动进入实时模式,并且从0xFFFF0开始自动执行程序代码,这个地址通常是!ROM-BIOS的地址。PC机的BIOS将执行系统的检测,并且在物理地址的0处开始初始化中断向量。此后,它将可启动设备的第一!扇区(512 阅读全文
posted @ 2010-01-19 08:29 qiang.xu 阅读(3209) 评论(0) 推荐(2) 编辑
摘要:计算机中的存储器分为:主存和辅存。其中需要指明的是主存是可以被处理器直接访问的,而辅存是不能被处理器直接访问的。主存的容量一般相对于辅存而言是较小的,所以在现代的计算机体系中,通常使用的是耳机存储模式。利用辅存的大容量来提供较大的存储空间,存储准备运行的程序和数据,当需要时,在将其载入主存中。计算机中的存储管理都是由操作系统来实现的。但是需要说明的是操作系统在实现存储管理时需要硬件的支持。比如说:用户程序使用的都是逻辑地址,而处理器在执行程序时需要使用的是绝对的地址来实现寻址的操作。于是操作系统大众存储管理模块就必须配合计算机中的硬件俩实现将逻辑地址向绝对地址的转换。1程序的重定位在多道程序设 阅读全文
posted @ 2010-01-17 09:53 qiang.xu 阅读(568) 评论(0) 推荐(0) 编辑