一个嵌入式操作系统的实现过程

作为计算机的灵魂,操作系统是科技发展不可能绕开的一座城。近些年来,伴随着机器人、物联网、云计算、边缘计算等概念的兴起,计算已经无处不在。计算的实时性、可靠性、安全性也被广大学者和工程师们从各种不同的维度展开,对操作系统的深入了解能够帮助我们构建更好的数字世界。从零开始实现一个操作系统也是一类技术爱好者的追求。

我的专业是自动化,整天都在跟各种传感器、电机打交道。我经常需要写一些单片机的程序来收集传感数据,编写控制逻辑。对于简单的逻辑,裸机系统就可以完成;复杂一点的,通常都会移植 μC/OS、FreeRTOS 这样的嵌入式系统。对于操作系统的理解能够帮助我设计和实现出更高效的控制系统。但是自动化是一个口径很宽的专业,我们学院对于计算机原理、操作系统等一些计算机基础知识,都只是概括性的介绍。

整个学生时代,操作系统对于我而言是一个很神秘的东西。虽然从教科书和课堂上了解了一些关于操作系统的基本原理,但也只是学到了进程、线程、临界区、分时复用等很多名词。留下了很多疑问,进程是怎么创建出来的?又是怎么切换的?系统调度要配合什么数据结构?在听说有 Linux 这样的开源系统的时候,我曾想从它的源码中找到答案。但经过多年的发展,Linux 已经变成庞然大物,让我望而却步。

一直到硕士毕业那年,机缘巧合地看到了于渊写的《Orange'S一个操作系统的实现》这本奇书, 得以管窥一二。他从只有二十行左右引导扇区代码出发,一步步呈现了一个操作系统框架。这一下子激发了我对操作系统的研究热情,感觉亲自写一个操作系统是一件很酷的事情。随着工作的深入,我对计算机的体系结构也逐渐有了清晰的认识,萌生了自己写一个操作系统的想法。

目前市面上有很多操作系统,比如大家耳熟能详的,在PC机领域占据霸主地位的Windows,苹果公司独家的Mac OS,与C语言互相成就的Unix,基于Linux内核的各种发行版(Redhat, Debian, CentOS, Ubuntu……),移动设备的iOS, Android等等。这些操作系统的功能一般都比较强大,复杂度也比较高,服务于智能手机、个人电脑甚至是巨大的超算。

未完待续

读者对象

内容安排

致谢

results matching ""

    No results matching ""