“一个好一点儿的计算机硕士毕业的学生。写一个
*** 作系统的
内核绝对是应该办到而且肯定可以办到的事儿。” ------这句话我们可以理解为”一个好的计算机硕士掌握的理论知识足够他搭建起一个简单的 *** 作系统框架“。\x0d\x0a\x0d\x0a我上 *** 作系统课(大二)的第一天就问我的老师,学完了这门课可以自己实现一个 *** 作系统了吗?老师说:”你可以基本掌握 *** 作系统中要处理的主要问题,但是即使实现最简单的五脏俱全的 *** 作系统还需要掌握很多很多东西,而且前提是你已经有很不错的代码能力。“\x0d\x0a\x0d\x0a回到题目上来,我们要实现一个简单的 *** 作系统,最先需要解决的是哪些问题?这个问题我相信翻开任何一本 *** 作系统书都可以得到答案,一般都是 *** 作系统书的前五,六章内容(第一章基本是 *** 作系统概念及发展历史)。\x0d\x0a包括:\x0d\x0a\x0d\x0a进程管理\x0d\x0a存储管理\x0d\x0a文件系统\x0d\x0a输入/输出\x0d\x0a这些大部分是讨论理论类的书,比如我们上课用的书是西电汤子瀛老师的《计算机 *** 作系统》,后来自己为了深入学习买了Andrew S. Tanenbaum的《Modern Operating Systems》。\x0d\x0a\x0d\x0a如果想写个 *** 作系统,除了理论知识外,动手之前最好先看看 *** 作系统源代码,Linux的代码都是开源的,可以先学习学习。不过对于我们这种初学者千万不要看最新的Linux内核代码,因为那是很多人的杰作,可能一辈子都看不完。最好先看看国内同济大学赵炯基于0.11的《Linux完全注释》,即使只看懂30%也至会让自己懂很多之前不知道的东西。\x0d\x0a\x0d\x0a理论类的书很少有提到Bootload问题的,就是加电之后从哪里开始执行的部分。仅仅是这个步骤也需要花不少时间去了解CPU知识,汇编语言知识等,相当不容易。不话说回来,这部分如果能处理好之后会发现组成原理,汇编语言,微机原理的知识被自己运用到了,成就感巨大。这部分内容,可以参看MIT的课程6.828 Operating System Engineering的课程,Google一下就能搜到不少大牛关于这门课的博客。如果英语不太好我记得华中科技大学有一个叫32位 *** 作系统实践的课,资料都放到网上了,看起来很不错。\x0d\x0a\x0d\x0a过了这一关,用《深入理解计算机系统》加上《现代 *** 作系统》看一下虚拟存储器的内容,这两本书这部分说得都很棒。虚拟存储器的概念贯穿所有,如果能弄懂,对很多方面都有很大的帮助,不仅仅是 *** 作系统这块。有了虚拟存储器概念之后对于链接,加载等知识理解就会深刻许多。 不过,这部分内容也需要对硬件部分有所了解,又是一坑。\x0d\x0a\x0d\x0a之后回到进程上来之后,终于可以把工作重心从硬件部分转移过来了。但是我们又将面对进程创建,进程调度,进程通信三大问题,既然是简单实现,就先不考虑线程的事。
算法书中会给很多,不过这些算法都是有一定的局限性,比如调度算法,对应的调度算法优劣差异很大,至于如何抉择就看个人需求。不过话说回来, *** 作系统里的”算法“和ACM里的算法在难度上差很多,还是比较容易实现的。\x0d\x0a\x0d\x0a内容太多了,就不完全展开了,后面就看自己“耐力”了,写 *** 作系统是需要坚持很长实践+大量知识积累的。有些问题还涉及到哲学的观点,这里推荐上海交大邹恒明教授的《 *** 作系统之哲学原理》。除了理论方面的书,现在市面上也有直接教如何实现一个 *** 作系统的,比如《Orange'S:一个 *** 作系统的实现》和《30天自制 *** 作系统》(仅有的几本“XX天XX”而不是烂书的书),起步阶段跟着这些书来还是很不错的。\x0d\x0a\x0d\x0a总之,实现最最基本的功能也许可以做到。实现功能强大,鲁棒性强的 *** 作系统极难。1、目前的 *** 作系统市场我认为更像“生态圈”,无论硬件或是软件都围着Windows转,因为Windows占有大部分市场,硬件生产商和软件开发商都要赚钱,没有多大市场的东西他们根本就是懒得去做。
2、计算机软件并不是只有什么QQ和MSN这流的,还有许许多多的行业软件,中间件等等,所有这些大部分在Windows上都已经运行得很好了,没有谁会去把成熟的应用完全推翻然后去开发一个根本没有市场的东西。
3、linux严格来说只是一个内核,什么ubuntu、Fedora之类的只是一个发行版本,就是把一些软件和内核包装起来做成的一个发行版本。雨林木风之流的更不要提了,算不上是发行版本,只不过拿ubuntu改了个主题罢了。安卓也是基于linux的,只不过封装了自己的api和gui而已。苹果macOS是基于BSD的,linux和BSD都是类unix系统。
4、看看大部分行业软件都是人家国外人开发的,数据库之类的也是外国人开发的,你就懂了。中国并不能孤立在世界之外。按你的说法,我们自己也搞一套,或许真的可以,但……所有你想要实现的软件你得都得自己开发,网络上的各种通讯协议,各种文件系统……还是配套的硬件……想想吧。
5、我想到了一个比较词比较适合你的想法,哪就是“闭门造车”。
评论列表(0条)