前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >想写一个自己的操作系统,比如Unix或Linux,最起码我需要具备些什么?需要怎么做?

想写一个自己的操作系统,比如Unix或Linux,最起码我需要具备些什么?需要怎么做?

作者头像
程序员互动联盟
发布2020-04-02 22:21:58
1.5K0
发布2020-04-02 22:21:58
举报

想要写一个操作系统的人大部分都是带着兴趣玩,毕竟现在主流的操作系统windows,苹果系统,linux系统属于目前比较常见的系统,其中linux内核属于开源可以看到其全部的代码,很多研究操作系统都是以linux为参考的模型,毕竟开源的代码研究起来也方便,但是对于个人来讲要去写一个操作系统难度可想而知了,曾经有个北京的同事已经工作了十几年主要的精力就是在研究底层,是个疯狂的linux内核研究者只要是是家里没事就会呆在公司加班研究linux内核,有时候一起吃饭讨论研究linux内核的主要在哪块,他讲到其实linux内核已经不是当初设计的样子了,现在的代码的更新速度之快让人发指,在全球范围内真正对于核心内核代码具备修改能力的非常有限,而且已经被国外巨头公司收到自己的公司作为储备资源。

说到linux内核非常的关键代码就是内存管理,这块也是linux内核非常关键的代码,每次和同事一起讲到内存管理他就会两眼放光,曾经有一次公司组织让他给大家讲下linux内核的内存管理,结果一口气讲了3个小时中间没有任何的停歇,讲的大家都快睡着了他还在激情澎湃在讲着,说到内存管理他能一口气讲3天3夜,说到linux代码的贡献者,大部分可能是对一些驱动细节或者测试用例的提交,这些本身的技术含量不是很大但是需要遵守里面的代码规范,一旦不规范连基本的机器检测都通过不了,虽然看起来是开源的社区对于代码规范要求也是极其严格的。

说到每次研究linux内核的心得,最大的快乐在于看懂一行里面核心代码的设计意图,能够看懂linux核心代码的为什么要这么实现就已经代表水平非常不错的人了,倒不是linux内核代码有多深奥,关键需要对于内核的工作原理以及常见的知识有足量的储备,当然如果长期跟踪代码实现的规律可能研究起来就比较顺畅了,如果短时间内想彻底的看明白还是存在非常大的难度的,所以想要研究一个linux内核的代码,建议现在linux内核社区浸泡一段时间,然后了解周围的基本知识,当然首先要具备一定程度的编程能力。

对于操作系统来讲本质还是一个软件产品,但是又有其特殊性属于给别的软件产品提供开发的环境,所以对于硬件资源支配以及用户的行为最贴近的软件系统了,由于用户体验极强所以其开发语言需要在性能上极强,操作系统主要的开发语言有C语言和汇编语言,很多人在网络上喊着C语言已经过时了,这些都是只看到表面的现象,只不过底层的语言不像之前显得那么重要了,但是很多软件系统的底层还是离不开C语言,而且像操作系统这么繁杂的工程C语言也是主力军,可以预见在未来C语言在应用级别的开发在减少,但是对于底层的维护能力还是在加强,大家都跑去开发高级语言了,总得需要有人来维护底层的而且对于维护和修改能力还是非常高,真正掌握高技巧的C语言能力的人还是照样在编程市场拿高薪。

由于操作系统功能太过复杂所以真要想要玩转linux内核建议看一本《linux内核完全剖析基于0.12内核》的书籍,专门抽取了早期的linux内核的版本在逐行讲解的一本书,里面详细的介绍了linux内核主要功能是如何实现的,以及为什么要这么去实现,但是由于历史太过久远不要企图和现在的linux内核做对比,中间优化迭代的版本太多了多的会让你怀疑人生,所以不要企图去了解其中的来龙去脉,还是先从基本的原理入手去解决,对于linux内核需要掌握的知识先从基本的编程语言和常见的操作系统运行的原理开始着手准备,希望能帮到你。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员互动联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档