1.人开发操作系统需要什么水平

系统很难开发么,电脑系统究竟多难开发

“一个好一点儿的计算机硕士毕业的学生。写一个操作系统的内核绝对是应该办到而且肯定可以办到的事儿。” ------这句话我们可以理解为”一个好的计算机硕士掌握的理论知识足够他搭建起一个简单的操作系统框架“。

我上操作系统课(大二)的第一天就问我的老师,学完了这门课可以自己实现一个操作系统了吗?老师说:”你可以基本掌握操作系统中要处理的主要问题,但是即使实现最简单的五脏俱全的操作系统还需要掌握很多很多东西,而且前提是你已经有很不错的代码能力。“

回到题目上来,我们要实现一个简单的操作系统,最先需要解决的是哪些问题?这个问题我相信翻开任何一本操作系统书都可以得到答案,一般都是操作系统书的前五,六章内容(第一章基本是操作系统概念及发展历史)。

包括:

进程管理

存储管理

文件系统

输入/输出

这些大部分是讨论理论类的书,比如我们上课用的书是西电汤子瀛老师的《计算机操作系统》,后来自己为了深入学习买了Andrew S. Tanenbaum的《Modern Operating Systems》。

如果想写个操作系统,除了理论知识外,动手之前最好先看看操作系统源代码,Linux的代码都是开源的,可以先学习学习。不过对于我们这种初学者千万不要看最新的Linux内核代码,因为那是很多人的杰作,可能一辈子都看不完。最好先看看国内同济大学赵炯基于0.11的《Linux完全注释》,即使只看懂30%也至会让自己懂很多之前不知道的东西。

理论类的书很少有提到Bootload问题的,就是加电之后从哪里开始执行的部分。仅仅是这个步骤也需要花不少时间去了解CPU知识,汇编语言知识等,相当不容易。不话说回来,这部分如果能处理好之后会发现组成原理,汇编语言,微机原理的知识被自己运用到了,成就感巨大。这部分内容,可以参看MIT的课程6.828 Operating System Engineering的课程,Google一下就能搜到不少大牛关于这门课的博客。如果英语不太好我记得华中科技大学有一个叫32位操作系统实践的课,资料都放到网上了,看起来很不错。

过了这一关,用《深入理解计算机系统》加上《现代操作系统》看一下虚拟存储器的内容,这两本书这部分说得都很棒。虚拟存储器的概念贯穿所有,如果能弄懂,对很多方面都有很大的帮助,不仅仅是操作系统这块。有了虚拟存储器概念之后对于链接,加载等知识理解就会深刻许多。 不过,这部分内容也需要对硬件部分有所了解,又是一坑。

之后回到进程上来之后,终于可以把工作重心从硬件部分转移过来了。但是我们又将面对进程创建,进程调度,进程通信三大问题,既然是简单实现,就先不考虑线程的事。算法书中会给很多,不过这些算法都是有一定的局限性,比如调度算法,对应的调度算法优劣差异很大,至于如何抉择就看个人需求。不过话说回来,操作系统里的”算法“和ACM里的算法在难度上差很多,还是比较容易实现的。

内容太多了,就不完全展开了,后面就看自己“耐力”了,写操作系统是需要坚持很长实践+大量知识积累的。有些问题还涉及到哲学的观点,这里推荐上海交大邹恒明教授的《操作系统之哲学原理》。除了理论方面的书,现在市面上也有直接教如何实现一个操作系统的,比如《Orange'S:一个操作系统的实现》和《30天自制操作系统》(仅有的几本“XX天XX”而不是烂书的书),起步阶段跟着这些书来还是很不错的。

总之,实现最最基本的功能也许可以做到。实现功能强大,鲁棒性强的操作系统极难。

人开发操作系统需要什么水平

一般计算机的本科生(大一的会点C语言,有点耐心,3个月)就可以了。。。有一本日本人写的书叫《30天自制操作系统》一步一步带你写出一个操作系统内核(可以写到光盘上,从光盘启动,第一节就叫你如何实现一个“hello,world”),一般计算机的本科生(就是会一点点C语言的那种理工科生),有点耐心的话,每天2~3小时,三个月基本能够看完,跟着撸出一个操作系统内核。根本不需要什么硕士水平。不需要前面说的各种文档。事实上作者的目标甚至是中学生也能看得懂,感觉基本做到了(最后也就几十k的代码)。写完之后会很有成就感。

我的第一本计算机厚书就是《30天自制操作系统》。写出来有什么鼠标键盘输入,汉字显示(书中是日文显示,由于日文中有汉字,所以其实可以算汉字显示),多进程(多任务),段页式内存管理,各种驱动,定时器,文件系统(读硬盘,文件目录和内容读取等),窗口,音乐播放,内核保护,api,小游戏,播放,应有尽有。

如果大学能够跟着写完,绝对,毕业面试的时候能吹嘘一下。。。当然里面的c语言编译器不是自己写的(编译器工作量真不小)。。。我当初就是看不惯国内那些书在那里装比,没有真正的拿得出手的科研成果,然后在那里装比的各种著作。然后人家这本,哈哈,真的就能够跟着撸出一个操作系统内核,而且,绝对是效率不错,结构可以的东西。

LINUX系统的核心是一个人写的。

至于需要什么样的水平,需要大神级的水平,至于什么样才能算大神级的水平,等你成了大神自然就知道了

当然,如果仅仅是写一个单任务系统,也不是很难,但是你需要考虑全面就非常非常难了,很简单,你看windows系统发展了多少年还有多少bug,你就明白了