问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

写一个操作系统内核有多难?大概的内容,步骤是什么

发布网友 发布时间:2022-04-23 13:09

我来回答

2个回答

热心网友 时间:2023-06-26 22:55

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

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

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

进程管理
存储管理
文件系统
输入/输出
这些大部分是讨论理论类的书,比如我们上课用的书是西电汤子瀛老师的《计算机操作系统》,后来自己为了深入学习买了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”而不是烂书的书),起步阶段跟着这些书来还是很不错的。

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

热心网友 时间:2023-06-26 22:55

还是有点难的,主要是工程量很大,一个内核的话,基本你需要完成内存管理,进程管理,bootloader等等,这每个部分又有很多小的部分要考虑,总之是麻烦的要死。最先完成的部分是bootloader,完成启动加载,初始化简单的文件系统,开启段页等等,具体步骤可以参考《一个系统的完成》和《30天自制操作系统》等书,有详细讲解。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
正确的调搓丝板方法 正确的调搓丝板方法介绍 搓丝板失效的多种原因及如何预防? 副职领导签批公文技巧 上级审批意见怎么写 怎么卸摘网吧电脑上的“世界之窗”浏览器 怎么才能卸载世界之窗浏览器? 麻烦帮我翻译两个句子,谢谢,谢谢。 ...结构层次和结构关系 原理讲下 谢谢谢谢 老师讲过了我么听懂啊_百度... 这两个句子的主干是什么,谢谢谢谢 为什么会有人选择一辈子不结婚呢? 应该先看《自己动手写操作系统》还是《linux内核完全注释》 《linux内核注释权威》pdf下载在线阅读全文,求百度网盘云资源 Linux内核完全注释电子书txt全集下载 linux 内核完全注释中 RTFSC 啥意思 linux内核完全注释 linux0.11 怎么编译运行 linux内核完全注释 有学习的必要吗 想看懂赵炯的那本《Linux内核完全注释》需要具备哪些知识? 《Linux内核完全注释》pdf下载在线阅读,求百度网盘云资源 Linux内核完全注释的目录 linux内核完全注释 现在的小孩子几岁开始上幼儿园? 孩子几岁能够入幼儿园?幼儿园入园的要求是什么? 天翼云盘空间不够用了怎么办? 孩子多大上幼儿园合适? 华为云空间云存储不足怎么办,云备份不足怎么办 孩子多大岁数,才是上幼儿园的最佳年龄呢? 为什么天翼云盘转存说空间包不足哪里可以调试吗 宝宝多大可以上幼儿园?上幼儿园是最佳时期是什么时候? 小孩子多大了以后,才适合上幼儿园呢? 百度网盘还有空间,却提示空间不足? 赵炯的《Linux内核完全注释》 与 《Linux内核完全剖析》,《Linux内核设计的艺术》,Linux内核设计与实现 linux的源代码 linux内核学习指导 怎样注释掉linux内核的一段代码 linux内核完全注释 linux内核源代码情景分析 哪本好?我是想做嵌入式开发。 国内租车app哪个好? 共享租车哪个平台APP比较好用? 哪个平台可以租面包车? 公司租车app哪些好? 汽车租赁app哪个好? 线上租车app哪些好? 私人租车app哪些好? 汽车租赁app哪家划算 杭州租车app有哪些? 有名的十大租车app推荐? 商务车出租app哪个好? 新能源租车app推荐? 我的手机型号是诺基亚5250 夜间使用搜狗输入法的时候 那个操作界面很亮... 汽车租赁app哪些靠谱? 搜狗键盘的亮度输入时为什么会变暗,跟手机上的界面亮度上下分开了不一样