从零编写linux0.11 - 序

最初接触到自制操作系统的书是《30天自作操作系统》,因为这本书,我对如何制作操作系统有了基本的了解。 但这本书有些本末倒置了,重点的内存管理、进程管理、文件系统等方面介绍得太少,反而把大篇幅花在了gui和shell上。

我看的第二本自制操作系统的书是《一个64位操作系统的设计与实现》,64位操作系统在不少地方与32位操作系统不同,比如进程切换的方式,不过在用C语言编程时对此没有多大感触 。这个操作系统的代码不够精简,不宜阅读,我并没有读完这本书。

后来想看看实际的操作系统源代码,首选的肯定是linux,但如今linux的代码上百万行,不易阅读。但早期版本的linux源代码倒是不多,而且网上有相关的书作指导,最后我选择了linux0.11版本作为研究对象,《linux内核完全注释:基于0.11内核》作为辅导书,开始研读代码。

操作系统的代码量很大,不易理解,尤其是文件系统方面,多次阅读我还是不得其中门路,有些灰心丧气。

这时,我认为可以从零重新实现linux0.11,逐渐地理解操作系统设计的思路和解决各种问题的方法。

将要面临的问题

目前,我已经修改了linux0.11的代码,并编译出可运行的内核,但在执行shell时会损坏文件系统,由于没有shell的代码,也就没法调试,我准备自己写一个简陋的shell。

linux0.11的可执行文件是a.out格式的,网上关于编译a.out格式可执行文件的资料太少,我会将linux0.11支持的可执行文件格式改为elf格式。elf格式可执行文件的运行还要牵扯到静态库,动态库,怎么调用系统调用也是一个问题。

linux0.11在bochs中运行时需要插入一个文件系统磁盘,接着就不能用gui界面调试了,为了解决这个问题,我准备将内核与文件系统放在同一个硬盘中,这样的话就需要改改bootloader,让它在文件系统中找到kernel。

如何一步步写出linux0.11也是一个考验。我也只是一个操作系统的新手,对于如何整体把握操作系统的逐步实现需要花费大把时间思考。

最后祝愿大家能在操作系统上更上一层楼。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值