Linux 0.11内核之旅
JOJO___
嵌入式,Web,移动开发
展开
-
Linux 0.11内核之旅(一) :bootsect.s
linux 0.11内核是Linus大神写的很早的一个版本的内核,麻雀虽小五脏俱全,总共代码不过两万多行,很适合linux内核入门者拿来对比学习。下面记录本人阅读的第一个源文件也是内核上电执行的第一个文件bootsect.s.启动流程(bootsect.s)1.开机2.BOIS会读取软盘的第一个扇区(512Byte),里面放着bootsect.s,读取到内存中0x07C0:0...原创 2019-03-01 09:10:21 · 300 阅读 · 0 评论 -
Linux 0.11内核之旅(二) :setup.s
本文记录setup.s ,它紧接着bootsect.s,继续执行。启动流程2(setup.s)1.打印 msg = " Now we are in setup"2.调用BIOS中断,获取光标位置存入 0x9000:0000 获取内存大小存入 0x9000:0002...原创 2019-03-01 09:50:46 · 171 阅读 · 0 评论 -
Linux 0.11内核之旅(三) :head.s
head.s是紧接着setup.s执行的,为什么叫head.s呢,因为它之前被setup.s从0x1000:0000搬运至0x0000:0000,正好放在在内存的起始位置。启动流程3(head.s)1.填充IDT表,所有表项都指向函数,此函数只打印"Unknown interrupt\n\r",不做任何其他操作2.重新配置全局描述符寄存器(GDTR),即更换GDT表。3.重新...原创 2019-03-01 11:55:17 · 233 阅读 · 0 评论 -
Linux 0.11内核之旅(五) :main.c之move_to_user_mode
紧接着,上一篇博文Linux 0.11内核之旅(四) :main.c之硬件初始化继续描述main函数后半段的move_to_user_mode,再贴一下main函数代码void main(void) /* This really IS void, no error here. */{ /* The startup routine assumes (well,...原创 2019-03-05 07:01:47 · 785 阅读 · 0 评论 -
Linux 0.11内核之旅(四) :main.c之硬件初始化
紧接着head.s,之后进入c语言环境的main()函数main函数如下:void main(void) /* This really IS void, no error here. */{ /* The startup routine assumes (well, ...) this *//* * Interrupts are still disa...原创 2019-03-03 12:02:08 · 546 阅读 · 0 评论 -
Linux 0.11内核之旅(六) :main.c之fork调用流程
紧接着,上一篇博文Linux 0.11内核之旅(五) :main.c之move_to_user_mode继续分析main函数后半段的fork系统调用流程。void main(void) /* This really IS void, no error here. */{ /* The startup routine assumes (well, ...) t...原创 2019-03-23 08:24:31 · 597 阅读 · 0 评论