本文是JackOS开发日记的第0篇,主要记录了为什么我想开发一个自己的操作系统出来
JackOS开发日记 0:为什么要写一个操作系统
程序员的梦想不就是开发一个属于自己的操作系统么?
1. 为什么要写一个操作系统(内核)
写一个操作系统的原因有很多,功利点说,写操作系统内核的原因包括但不限于:
- 写一个操作系统内核会极大地帮助到未来找工作
- 写一个操作系统内核会极大地加深我们对计算机的理解
- ……
但我觉得,对于我来说,更重要的不在于功利,而在于求知。在学操作系统这门课的时候,学着诸如线程、进程、虚拟内存等概念,以及进程调度、银行家算法、内存置换算法等等,因为学习的都是抽象的概念和算法,自己对于操作系统到底是如何实现一个操作系统、操作系统是怎么运行程序的、这些算法到底有什么用?等等问题完全不理解,或者说因为缺少实际写代码的经验,总觉得操作系统离我很远很远。因此为了解决这份疏远感,获得对操作系统切身的体会,感到亲切,我决定自己动手开始写一个操作系统。
除了想要消除对操作系统的陌生感以外,写一个操作系统也是我的一个理想,写一个操作系统内核出来,这件事本身就很酷,很有趣,也很好玩。
因此,综合万千思绪,我想要写一个操作系统内核出来。
2. 为什么要写这个专栏文章
事实上,在写这篇文章前,我已经开始写操作系统有一段时间了,已经成功的写出了BootLoader。启动扇区的代码成功拉取了BootLoader,然后BootLoader可以加载内核代码了。
但是在开发的过程中,我会学习到很多的新知识,慢慢地我发现如果不把这些知识记录下来,我就会忘记这些知识,所以一方面为了记录这些新的知识,我需要写一些文章把这些知识记录下来。
此外,也是为了作为开发过程中的记录,毕竟写一个内核是一个长期的工程,写一些文章记录开发过程中的点点滴滴我觉得是很有必要的,因此我需要写一些文章记录开发过程。
3. 关于专栏文章
内核开发日记这个专栏的文章不会是每天都会更新的文章,相比,我更希望是我觉得有必要写一篇日记记录的时候,我才会写一篇文章记录下来。
此外,相比于我写的其他一些教程性质的博客,这一系列的文章相比于教会人如何写操作系统的教程,我更希望是日记形式的开发记录。因此这一专栏文章中的知识可能并不会连贯。在未来当我写完操作系统之后我会专门写一个教程性质的专栏,专门讲解如何开发操作系统,并且在专栏中会对必要的知识进行讲解。