在这里,先祝各位读者们新春快乐,猴年发大财,伴随着猴年的钟声,第9章的写作也终于完成了,
这一章经过了很多次修改和设计才得以完成,其中包含了内存池原理,kmalloc函数以及一些页表重映射函数的实现。以后,随着更多系统功能的实现,还会再次完善以上功能。
今天就先更新这么多了,我要去写第10章高级中断处理单元啦~!估计也会非常耗时,坚持,↖(^ω^)↗。

date:2016/02/13 22:36

Hello,各位读者们,截止到今天,第10章的内容已经基本完成,现在已经实现了中断上半部处理功能等, 由于现在的内核线程以及PCB结构体还不够完善,所以中断下半部的实现可能要推迟到进程管理单元完善以后。而且目前,还没想好工作队列机制的应用场景。。。。。
渐渐的发现,后续章节的写作会越来越耗时了,不光是涉及的知识多,而且需要考虑的内容也非常多,比如:为后续章节做铺垫、预留出调用接口等等。
接下来,要进入第11章的写作啦,准备实现键盘、鼠标和硬盘驱动程序,这也算是为后续的图形系统和应用程序做准备吧。

date: 2016/03/28 22:17

Hi,everyone:
今天是五一国际劳动节,终于进入第12章的多核处理器写作,我正在写多核引导程序。这一章的调试工作比较麻烦,目前还没法在物理平台上调试,Bochs这货好像调试不了子CPU,看来它还有很多需要改进的地方啊。暂时向大家汇报到这里,祝大家节日快乐~!

更正:使用“set $cpu = - move debugger control to cpu in SMP simulation ”可以设置SMP处理器组中的目标调试处理器,例如:

<bochs:6> set $cpu = 1
<bochs:7> r
CPU1:
rax: ffff8000_0014dff0 rcx: 00000000_00000022
rdx: 00000000_00000004 rbx: ffff8000_001077aa
rsp: ffff8000_01607fd8 rbp: ffff8000_01607ff8
rsi: 00000000_000005a0 rdi: ffff8000_0014dff0
r8 : 00000000_00ff0000 r9 : 00000000_00ffff00
r10: 00000000_00000000 r11: 00000000_00000000
r12: 00000000_00000000 r13: 00000000_00000000
r14: 00000000_00000000 r15: 00000000_00000000
rip: ffff8000_00114b6f
eflags 0x00000206: id vip vif ac vm rf nt IOPL=0 of df IF tf sf zf af PF cf
<bochs:8> set $cpu = 0
<bochs:9> r
CPU0:
rax: 00000000_0000005f rcx: 00000000_00000023
rdx: 00000000_00000004 rbx: ffff8000_001077aa
rsp: ffff8000_00007b18 rbp: ffff8000_00007b38
rsi: 00000000_000005a0 rdi: ffff8000_0014dfe8
r8 : 00000000_00ff0000 r9 : 00000000_00000000
r10: ffff8000_01608000 r11: ffff8000_01608000
r12: ffff8000_01608000 r13: 00000000_00000000
r14: 00000000_00000000 r15: 00000000_00000000
rip: ffff8000_0010895a
eflags 0x00000296: id vip vif ac vm rf nt IOPL=0 of df IF tf SF zf AF PF cf
<bochs:10> 

date: 2016/05/01 21:45

经过几天的调试,多核处理器已经引导起来了,一个新世界即将开始,不多说了,上几张图吧,启动了16个核心,我觉得还是挺不错的。

enter image description here
图1

enter image description here
图2

这段引导代码,着实费了很大功夫,目前只是引导成功了,但是还需要重新架构一下,还有很多细节需要完善,暂时先写这些吧,各位,晚安~

enter image description here
图3

顺便感谢一下,从latte主播的歌声里获得的灵感,有些歌声可以触碰到心灵,谢谢~

date: 2016/05/05 20:42

系统更新:由于CentOS6.7系统环境存在BUG,在使用Bochs虚拟机时,图形界面显示有问题(早就发现了)。所以,本程序的编译系统将从CentOS6升级为CentOS7,同时Bochs也从2.6.6升级为2.6.8。

date: 2016/05/16 11:34

第12章关于进程调度器和多核处理器的内容实在是不太好写啊,内容非常多,而且难度也比较大,目前依然在设计进程调度器,本册书将以基础为主,故此进程调度器不会也不应该太过复杂。
由于全书内容比较多,第12章写完预计会超过600页,又因为全书页数有限制,所以,关于窗口管理器等显示部分的内容将会跳票到后续书籍中讲解了。这样的话会有一个好处就是本书可以早一些与大家见面了。

date: 2016/06/22 22:51

本以为这个月可以将第12章结束的,可是在写到最后一节的时候,编译后的可执行文件突然从384KB增长到736KB,而且在电脑上会出现自动重启现象,真让人头疼,正在分析原因中。。。。。

date: 2016/07/20 10:39

这个问题已经解决了,原来是错误的将变量定义在了头文件(.h)中,又因为头文件有循环嵌套现象,最后导致编译出来的文件急剧增大,将变量定义在代码文件(.c)中并在头文件中使用extern关键字声明即可解决此问题,看来是个低级的错误,学艺不精啊,哈哈哈哈

既然这个问题已经解决了,看来本月将第12章写完还是蛮有希望的嘛~~!!

date : 2016/07/20 16:07

虽然比预期计划稍微延后了几天,但是第12章终于完成了,现在正式进入到第13章的写作中。
我准备在第13章中实现FAT32文件系统,这样可以兼容其他操作系统,方便文件传输。

date: 2016/08/04 09:37

开发FAT32文件系统已经有一段时间了,目前已经可以检索出FAT32文件系统中的目录和文件,正在设计VFS文件系统层。

date: 2016/08/23 13:56

在这里,祝大家中秋节快乐,阖家幸福,喜乐安康。
最近工作比较忙,写作进度有点慢,截止到此刻,第13章已经完成了三分之一的写作,FAT32文件系统解析起来还是很麻烦的,由于版权问题,FAT32文件系统在Linux和Windows中的实现是不同的。。。。。。 先写这么多吧,大家好好过节噢~~~~~~~

date: 2016/09/15 20:35

hey,everyone

已经进入秋天了,第13章已完成三分之二,现在该写令人头疼的VFS层了,感觉有些难熬,希望这个月能够完成它吧~~~!

date: 2016/10/11 08:55

经过不懈的努力,第13章基本上已经完结了,准备进入第14章的写作(系统调用API),本以为可以在POSIX标准的基础上开发出系统调用API接口,但是它的框架太大了,不知道能不能实现,先学习几天再说~

date: 2016/10/27 16:52

这个POSIX规范和glibc源码看的实在让人煎熬,没想到又是一块难啃的骨头。现在,暂时实现了一个框架,但是还没有实现API接口,看来还得继续向深处挖掘一番啊~~~~~~~头疼中,这个glibc源码到底是谁写的???。。。。想自学的读者们,我建议你们看1.09版把,2.X版太晦涩了。。。。。

date: 2016/11/17 10:29

实现了open、close、read、write、fork、execve等系统API接口,目前遇到一个BUG正在解决。。。。同时还升级完善了键盘驱动程序,现在键盘驱动程序可以借助VFS向应用层提供open、close、read、write等操作接口啦,感觉棒棒哒,啊哈哈哈哈哈

date: 2016/12/17 22:21

年终总结

岁岁因何折绿柳,不舍昼夜是光阴,感谢大家这么长时间以来的支持、鼓励、陪伴与关注。
今年过得非常充实,用痛并快乐着来形容,也是有过之而无不及。
经过半个月的BUG修正,现在的系统运行速度已经超乎想象的快了,
支持内核抢占功能后,操作系统的实时性确实有大幅度提升,希望它能继续保持这个运行速度。
现在我已经开始着手写SHELL程序了,SHELL就不设计的那么复杂了,它能为本书暂时画上个句号即可。
更强大、更诱人的功能还在未来向我们招手。
希望你们能和我一样,在20岁时去追寻一个梦,而不是在30岁时去追悔一个梦!!!!
最后,祝大家新年快乐~~~!O(∩_∩)O~

此致!
敬礼~!

date: 2016/12/31 10:26