教你设计一个简单的系统 自己写操作系统难吗( 二 )


对于运维、测试同学 , 你要维护和测试的任何产品 , 其实是基于操作系统的 。比如给服务配置多大的内存、多大的缓存空间?怎样根据操作系统给出的信息 , 判断服务器的问题出现在哪里 。随着你对操作系统的深入理解和掌握 , 你才能透过现象看本质 , 排查监控思路也会更开阔 。
除了工作 , 操作系统离我们的生活也并不遥远 , 甚至可以说是息息相关 。要知道 , 操作系统其实不仅仅局限于手机和电脑 , 你的智能手表、机顶盒、路由器 , 甚至各种家电中都运行着各种各样的操作系统 。
可以说 , 操作系统作为计算机的灵魂 , 眼前的工作、日常的生活 , 甚至这个行业未来的“诗与远方”都离不开它 。
操作系统很难 , 我能学得会么?
但即使是大学时期就学过操作系统的同学 , 也可能会感觉学得云里雾里 。更别说非科班的一些人 , 难度更甚 , 甚至高不可攀 。那为什么我这么有信心 , 给你讲好操作系统这门课呢?这还要从我自己的学习经历说起 。
跟许多人一样 , 我看的第一本C教程就是那本“老谭C” 。看了之后 , 除了能写出那个家喻户晓的“hello world”程序 , 其它什么也干不了 。接着我又开始折腾C、Java , 结果如出一辙 , 还是只能写个“hello world”程序 。
还好我有互联网 , 它让我发现了数据结构与算法 , 经过一番学习 , 后来我总算可以写一些小功能的软件了 , 但或许那根本就称不上功能 。既然如此 , 我就继续折腾 , 继续学习微机原理、汇编语言这些内容 。
最后我终于发现 , 操作系统才是我最想写的软件 。我像着了魔一样 , 一切操作系统、硬件层相关的书籍都找来看 。
有了这么多的“输入” , 我就想啊 , 既然是写操作系统 , 为什么不能把这些想法用代码实现出来 , 放在真正的计算机上验证一下呢?
LMOS的雏形至此诞生 。从第一行引导代码开始 , 一次又一次代码重构 , 一次又一次地面对莫名的死机而绝望 , 倒逼我不断改进 , 最终才有了现在的LMOS 。因为一个人从零开始 , 独立开发操作系统这种行为有点疯狂 , 我索性就用LMOS(liberty , madness , operating , system)来命名了我的操作系统 。
经过我这几年的独立开发 , 现在LMOS已经发布了8个测试版本 。先后从32位单CPU架构发展到64位多CPU架构 , 现在的LMOS已经是多进程、多线程、多CPU、支持虚拟内存的x86_64体系下的全64位操作系统内核 , 代码量已经有10万多行了 。
后来 , 我又没忍住自己的好奇心 , 写了个嵌入式操作系统——LMOSEM 。由于有了先前的功底 , 加上ARM体系很简单 , 所以我再学习和实现嵌入式操作系统时 , 就感觉驾轻就熟了 。

推荐阅读