- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux内核的研究主线.doc
第一部分,系统在被引导进内存之前,内存的使用状况。及其他情况。
内存的使用状况:
系统是由loader(本程序中时setup)引导进内存的。(0.12版本内核不超过512KB)
内存的使用情况, 【参照233P的图】
Head程序结束之后的内存镜像 【参照251P中的图】
其他情况:
中断:只是预留了位置。但是还并没有添加中断处理
Gdt表:只是设置了2个系统使用的代码段和数据段。
页表:启动了页表。但是页表中的值跟实际的内存是一一对应的,所以对于内核来说他的线性地址就是实际实际地址。
第二部分,内核的初始化部分。Main.c是内核初始化的主程序
操作系统是由loader引导进内存的,首先看内核被引导进内存后,最先被执行的部分,也就是系统的整个初始化的部分。。。
看完之后得知1,进程0以及进程1的作用,
2,系统是如何进入到用户态的..move_to_user_mode
3,为什么fork和pause要使用内联函数,是为了不破坏堆栈….
一,内存的初始化 【这里参考笔记memory】
只是把初始化了一个数组用来表示当前主内存哪一个块可用。
二,陷阱门的初始化
只初始化了前48个。系统调用,8259a都没有设置。协处理器,串口在这里初始化。
三,块设备初始化(硬盘,软盘)
块设备有一张request请求表。初始化的时候只是把这张request表清0
四,字符设备初始化(键盘,显示器)
此函数为空,为了以后扩展
五,tty初始化
想要对tty有一定的了解就要从终端驱动程序的基本原理看起【第10章 449P】
键盘中断处理程序在这里被设置
第二部分,整个内核的中断(硬件中断以及系统调用.)
1,_syscall0, _syscall1, _syscall2是在unistd中定义的,0,1,2的区别是有相应的参数。用来定义系统调用的,内部都调用了0x80中断
2,中断总共有256个,前17个是intel的保留中断,kernel/asm.s是这17个中断的汇编实现函数。汇编实现函数中还会调用c语言的实现函数。C语言在kernel/traps中实现。。其他的硬件中断在其他的相应的硬件驱动中初始化。。。
3,在main函数的进程调度初始化的时候,把0x80中断进行了初始化,从此,可以使用系统调用。其中中断函数调用的是sysytem_call这个函数(在sys_call.s中定义),各个系统调用最后都是通过system_call来调用的。。。
把中断弄明白后就可以进行下一步的进展。。。时钟中断,也就是进程的切换。。在中断发生
的时候,cs就发生了改变。。也就是说。。代码又回到了内核。。。。。从线性地址0开始运行了。。。虽然此时使用的堆栈还是进程的堆栈,cs改变说明又使用gdt表。。进入内核的线性地址。
第三部分,进程的切换。。(在这部分中要理解进程的切换过程,包括堆栈的切换)(这个部分实际上是在第六部分看完之后才看的)
进程的结构
第四部分,进程的创建。其实主要就是fork的执行过程。。(主要在fork.c中实现)
第一步调用call _find_empty_process函数。到进程的pcb中寻找一个空闲项。
调用copy_process复制父进程。。
对这部分的详细了解可以参考fork的执行过程。。
核心—给pcb分配一页内存。
第五部分,内存的机制。
1,如何分配内存
2,页异常处理
内存的换入与换出(换出是由get_free_page调用的);
第六部分,块设备(为什么把它排在第六。是因为在研究内存的swap时候用到硬盘)
1,在块设备中我们首先研究ll_rw_blk。C这个文件,因为我们在研究swap的时候应用到了ll_rw_blk这个函数。所以我们按照事件驱动的形式。研究这个
2,ll_rw_blk之后我们就要研究hd.c还有floppy.c因为ll_rw_blk要调用do_hd_request等函数。。(目前我打算之研究hd.c的实现。因为floppy不经常使用,而且我们是要理解原理,hd.c与floppy的原理差不多)
我们从ll_rw_blk入手再到hd.c把块设备的基本原理了解清楚了。。
第七部分,文件系统。。
研究到这,我们还有3个部分没有看,就是文件系统,字符设备驱动程序还有数学协处理器。我选择先看文件系统。因为我们有了块设备的基础,研究文件系统更加容易。。
研究文件系统的步骤
从打开一个文件入手。。。open,在open结束之后又看了一下pipe的原理。大概了解了一下。
Open之后是write和read,在研究write的时候,就涉及到对4种设备的读写。块设备,管道设备。普通文件。字符文件。我们按顺序
您可能关注的文档
最近下载
- 专题01 定语从句100题(考点串讲)(word版有答案).docx VIP
- 凿井井架设计汇编.doc VIP
- 北京某电力隧道工程投标施工组织设计.doc VIP
- 《【阅读专题2】故物与深情:感受血缘中的亲情》教学课件.pptx VIP
- 人教版九年级英语 课文标注笔记 全册.pdf VIP
- 北京某电力隧道工程(投标)施工组织设计.pdf VIP
- 高压旋喷桩技术交底1 - 桩基础.docx VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(最新).pdf VIP
- 《【阅读专题1】忠与孝:体会宗法社会的伦理选择之难》教学课件 (1).pptx VIP
- 力普LP100说明书PDF_Image_Marked.pdf VIP
文档评论(0)