如何开发自主的操作系统?说难不难,做好这三步就行了。
如何开发自主的操作系统?说难不难,做好这三步就行了。
众所周知,操作系统的重要性是毋庸置疑的。有了操作系统,我们可以跟计算机硬件进行交互。有了操作系统,我们可以在上面使用各种编程语言编写相关的应用程序。那么,当然了,开发操作系统并不是一件很容易的事情。因为开发一个操作系统的工作里面要求的知识非常庞杂。
没有操作系统,电脑硬件本身可以处理的数据就是零和一。这些数以亿计的零一组合,构成了所谓的微处理器或者微控制器。操作系统的任务,就是让这个数以亿计的01组合,能够为我们提供服务,打个比方,这种服务包括你在听音乐的时候,也可以看文章,你在看电影的时候,也可以浏览网页。这些我们日常中经常用到的场景都需要操作系统的支撑。
没有操作系统,你的电脑就是一堆数字开关,用01表示。可以想象这个任务是很难的,而且非常复杂。
但是再复杂也是能够做到的。
我们现在就来看看,如何来开发一个操作系统。
第1步,就是学习编程。有两种语言是必学的,一种是汇编语言,一种是c语言。那么有没有其他语言呢,那当然是有了,这主要是看你开发的操作系统是什么级别的。比如说微软就有一套模板,可以开发cosmos操作系统。这套模板允许你用c sharp来写一个操作系统。这种操作系统当然就属于学生作业一个级别的。我们这篇文章暂且不讨论这种操作系统。当然,开卷有益,去看看这个模板,也是有点收获的,至少你会感觉操作系统开发起来好简单呀。
第2步,制定你的操作系统计划。
...媒介
就是选一个运行你操作系统的媒介,你的操作系统,理论上讲可以运行在光驱上,也可以在移动硬盘上,当然啦,最常见的就是运行在电脑的硬盘上。
...支持范围
确定好你操作系统的支持方向。你可以支持用户界面,也可以只支持命令行界面,然后就是安全性方面,要不要做很多工作?如果是要连接网络,是开放性的系统的话,安全性方面一定要做很多工作。
...处理器
确定好将来你的操作系统可以运行的哪些处理器平台上。比如arm结构的,x86结构的,x86 64位的和ia-32的等等这些目前最常用的个人PC架构。
...内核
要确定你想从0开发,还是用一些现成的内核作为你的操作系统基础。比如说你可以用Linux内核来开发你的操作系统。
...启动程序
要确定你是要自己写启动程序,还是使用现成的,比如grub, lilo等等。这一部分需要对BIOS有一定的了解,比如BIOS在哪里加载的,正常模式和保护模式的区别。BIOS是硬件和软件的,可编程接口, 主要用来在电脑上将程序软件和硬件进行衔接。比如,对软盘,硬盘,光驱,键盘,显示器等外围设备的管理,都是通过BIOS系统的终端服务程序来实现的。
...编程语言
要确定开发操作系统的编程语言,效率最高的当然是用汇编或者c。汇编是必须要用到的,因为有一些非常关键的部分,比如中断调用,用汇编是最好的。内核部分肯定要用c,应用部分可以选择c++。选择和c和c++呢,就要选择相关的编译器。这个编译器将会普遍的被操作系统的使用者和开发者用到。与编译相关的,你需要了解应用程序的二进制接口。需要了解,各种各样的运行,文件格式比如:
elf, 这个是Linux系统上的常用二进制文件。
pe, 这是windows系统系统上的常用二进制文件。
coff, 这个是通用的二进制文件obj的格式。
及其他的二进制文件格式。
这里需要首先声明的就是,windows上的exe是受版权保护的,如果没有授权, 你可能不能用。这个一定要注意。
...编程接口
确定你的应用编程接口。很好的选择是POSIX,也就是可移植操作系统接口。所有的基于Unix的操作系统,都或多或少的支持这种接口。如果你的操作系统支持这种接口的话,你就可以把Unix的应用程序移植到你的操作系统上。
值得一提的是,目前流行的操作系统,比如Linux, windows,Mac OS,都是基于Unix的操作系统。
...设计系统方向
是选择你的设计方向。操作系统可以是单片机系统,也可以是微内核操作系统。单片机系统,所有的服务都在内核里面。微内核系统是通过一个内核和守护进程来执行各种服务的。通常来说单片机系统内核更快一些,但是微内核系统有更好的容错机制和更高的可靠性。
...开源与否
可以考虑将操作系统开源,或者建立一个开发团队,这样子,通过协同作业,可以开发出更好的操作系统来,当然时间用的会更少,开发周期也就更短。
...开发模式
选择一个比较高效安全的开发模式,比如说用双启动的模式来开发和调试你的操作系统。不要轻易的擦除自己的数据。时刻都要有备份。
一口吃不成个胖子,要慢慢的来,从小处着手,一点一点的来做。如果可以尝试先显示一个文字,响应一下中断等等。如果以前没有开发过操作系统的话,可以从16位操作系统开始。做好了简单的操作系统,再去做复杂一些的。
在开发操作系统过程中,硬盘一定要分区,用一个区来跑你的操作系统,另一个区或者几个区来备份你的数据。
使用多区的好处就是,你在调试的过程中,如果你的操作系统无法启动了,你可以很快的回退到前面能够启动的版本。
可以考虑用虚拟机来启动和调试你的操作系统,你就不需要在两台电脑之间来回传导数据。虚拟机程序的选项很多,比如VMWare, Virtual Box, Virtual PC, Bochs等等。
第3步,在操作系统开发到某个阶段以后,可以放出一个版本,邀请用户进行测试使用。这样可以提早发现一些问题,然后获得用户反馈。
通过重复上述几步,不断的优化你的操作系统,使得操作系统满足用户的需求,从而增加用户的粘度。
开发一个操作系统也就这三步了,说起来很简单哈。你不一定非要去写一套自己的操作系统,但是了解一下里面的开发工作内容也是有好处的,希望这篇文章对你有用。
这里是丁哥开讲,欢迎,留言,点赞,关注谢谢。