skaiuijing

前言

这是sparrow系列的最后一篇了,到了这里,也就意味着Sparrow的教程正式完结了。

相信读者也从教程中领略到了一些属于自己的东西。

Sparrow并不是一个完整的RTOS内核,它还缺少了很多东西,对比基本实时操作系统内核的来说,不说shell这些命令调试窗口,它甚至连IPC机制这些都没有,显然,它是残缺的、不完整的。但是,笔者的文章终究也是止步于这二十篇了,这些东西留给读者自己去完成了。

Sparrow虽然只是一个小玩具,但它确实是一个真真正正的RTOS,也是一个良好的学习素材,值得读者去细细品味它的设计原理。要知道,不少知名的RTOS的初始版本也不过千行。

我很期待读者在学习完教程后自己去修改Sparrow的源码,以及实现队列这些IPC同步机制,甚至是模仿linux内核或者RTT等操作系统,把iic、spi等协议进行集成,完成一个设备驱动模型。

但是,笔者应该是不会进行这些扩展性的更新了,因为Sparrow只是一个用于学习的RTOS,现在,它的使命已经完成了。

还有一个不得不说的原因就是:写教程真的太累了。当时写Sparrow只花了两天时间,但是写教程,却耗费了二十天的空闲时间。如果内容再次增加,笔者有点难以坚持下去了。为了避免Sparrow的教程受到笔者情绪的影响,干脆就在这里结束吧。

Sparrow的教程只是一个入门教程,笔者也只是一个引路人,对于想写一个复杂操作系统的读者来说,Sparrow终究是太小,也太简单了。

计算机领域的明珠,需要你们自己去探索了。

现在,笔者突然想跟大家谈论一些多余的东西。

杂谈

说来感慨,当时有人邀请笔者回答一个“如何为stm32写一个操作系统“的话题,笔者点进去,发现下面的发言都在冷嘲热讽,那一瞬间,笔者内心其实也有点五味陈杂。

笔者相信也许很多人会怀疑写一个RTOS到底有什么用,跟着教程一步步写出一个Sparrow RTOS到底能收获什么?

笔者的答案很遗憾:

其实并没有很直接的作用

是的,当你把大量的时间花在阅读RTOS源码和理解源码上,甚至是写RTOS时,你的能力并不会明显提高。但是,得到一个东西的代价是为了得到它而失去的东西。你失去的是大量的时间精力。在这些失去的时间中,你只需要花费其中的一小部分,就可以把RTOS运用得滚瓜烂熟了,完全够在工作中使用了。

那么我们为什么还要写一个实时操作系统?

笔者的答案是,只要你有一个写RTOS的想法,你就可以去做。

读者回忆一下你求学时,总有一些沉迷游戏、直播、运动的朋友,他们为什么从来不考虑这些有什么用?

只要你有一个写RTOS的想法,有一定的时间,你可以开始了。

写一个操作系统不需要理由,但是理由会在你写操作系统的过程中出现。

可能是你发现你的c语言水平提高了,可能是你发现你对操作系统的理解更加深刻了,可能是你明白了如何更加高效的使用操作系统了,这就是一个工程师的“内功”所在。这些东西,是实打实的,只有通过自己动手耗费大量时间才能获得的!

总而言之,请相信笔者那句话:只要你有一个写操作系统的想法,你就可以去做。

如果读者非要一个理由的话,或许,计算机世界其实也是世界的一部分。对计算机底层的思考,其实来自我们对世界的好奇心,这是人类理性的一部分,使人们不断追求知识和理解世界。

缘由与结语

Sparrow RTOS的教程到这里终究是结束了,不知道读者从中学习到了什么,获得到了什么,又或是领悟了什么。

关于如何写一个操作系统的教程有很多,但到了现代的操作系统,例如商用类型的RTOS的教程,就有些少了。虽然也有一些,但大多都是直接讲源码。导致不少人看得晕头转向,不知所云。

有很多人能够写一个RTOS,也有一些博客,不过称得上详细具体又全面,手把手类型的,中文互联网上很少。因为大多写得出的人都不屑于讲,就算讲,也未必浅显易懂,往往三言两语带过。

但是对RTOS和OS原理产生好奇的,想动手写一个OS的人,却是很多。

如今,Sparrow的教程已经完结了,希望写下的教程能够帮助想写RTOS,但却彷徨无助,不知所措的朋友。

笔者也没想到,当初只是随手记录性质的文章,会有这么多人阅读,会有这么多人对设计一个RTOS感兴趣。

笔者只是一个很普通的开发者,过着很普通的生活,做着很普通的事。跟大家一样,每天在繁忙的事情中不能脱身。

之所以抽出大量的时间写这么一系列博客,笔者也说不清,或许是一种想分享的喜悦,又或者是,只是想写就写了。

如果非要问我写作的缘由的话,

或许,笔者只是想用一只小小的Sparrow的视角,带领大家仰望遥不可及的天空。