/tiny-OS-kernel

《从零开始写一个操作系统》

Primary LanguageAssembly

Making your tiny OS

Let's start!

what should know before

  • C语言和x86汇编

    当然,只需要简单的汇编基础就可以,至于C语言,也不需要很多知识,了解源文件到可执行文件的流程。

  • linux基本命令

    在简单的内核编译中,我们用到了linux下的一些工具,比如nasm,当然这些windows下也有,包括gcc。但编译过程是在linux虚拟机中完成的。

Tools

我们会用到什么工具呢?

  • 文本编辑器,如Notepad++sublime等等,最简单的记事本也可以。
  • 二进制查看器,当然,这个也不是很关键,一来sublime工具本身就能已16进制形式显示,同时虚拟机也有帮助我们解析的工具。
  • linux虚拟机,这里我们用到的是Ubuntu i386。需要安装工具nasmvimgccreadelf等。

当然,你不必担心,用到这些工具或者资料的时候,文中都会有超链接,你可以去下载查阅。同时互联网上也有大量的资料供你翻阅。

Result

最后我们做的结果是?

最后当然不是一个非常完整的操作系统,这更像是一次研究探索和对OS的了解,以及对C语言和汇编的关系的认识,最后是对硬件和软件如何打交道的一种认识。

7个部分,我们仅仅完成了加电开机自启,加载主引导扇区,然后加载更多的信息到内存,最后简单实现了从实模式进入保护模式,仅此而已,但操作系统的雏形大致也是如此。

Reference

在整个过程中,我们参考了一些视频和电子课本

[1]30天自制操作系统》

[2]Oranges一个操作系统的实现》

[3] 51CTO

等等。

其中主要参考的是电子书[2][1]中的内容更加全面,最后完成的效果也更加完善。

Last

源文件和笔记一并上传至GitHub,如果您有任何问题,也可以通过djh113@126.com联系我。每个文件夹是独立的结构,编译的二进制文件并未上传,但源码和工具都已上传。