写一个操作系统内核有多难?大概的内容,步骤是什么?
发布网友
发布时间:2022-04-23 22:07
我来回答
共1个回答
热心网友
时间:2023-01-20 14:10
“一个好一点儿的计算机硕士毕业的学生。写一个操作系统的内核绝对是应该办到而且肯定可以办到的事儿。” ------这句话我们可以理解为”一个好的计算机硕士掌握的理论知识足够他搭建起一个简单的操作系统框架“。\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总之,实现最最基本的功能也许可以做到。实现功能强大,鲁棒性强的操作系统极难。
写一个操作系统内核有多难?大概的内容,步骤是什么?
“一个好一点儿的计算机硕士毕业的学生。写一个操作系统的内核绝对是应该办到而且肯定可以办到的事儿。” ---这句话我们可以理解为”一个好的计算机硕士掌握的理论知识足够他搭建起一个简单的操作系统框架“。我上操作系统课(大二)的第一天就问我的老师,学完了这门课可以自己实现一个操作系统了...
分区讲解系统
"分区讲解系统是一种在展馆或展厅使用的讲解系统,也被称为团队智慧讲解系统、展厅分区讲解系统、展馆讲解系统、分区解说系统等不同称谓。它适用于讲解员向游客进行团队讲解的情况,讲解员可手持无线讲解发射器进行语音讲解,参观者无需佩戴耳机,也可以听到现场预先安装的分区扩音设备发出的声音。这种系统可实现同一场馆、多团队、多区域同时讲解,且区域间语音切换自然。技术优势包括采用RFID技术进行控制,所有安装设备的参数都可以通过无线遥控器进行控制调节。它还具有小巧轻便的主机,可迅速安装,并且分区数不受限制。这种系统普遍适用于各…团队分区讲解系统适用于讲解员向游客进行团队讲解的情况,讲解员可手持无线讲解发射器进行语音讲解,参观者无需佩戴耳机,也可以听到现场预先安装的分区扩音设备发出的声音,避免耳机对参观者造成的不适及分发和回收耳机的不便,或其他扩音设备...
写一个操作系统内核有多难?大概的内容、步骤是什么?
。有一本日本人写的书叫《30天自制操作系统》一步一步带你写出一个操作系统内核(可以写到光盘上,从光盘启动,第一节就叫你如何实现一个“hello,world”),一般计算机的本科生(就是会一点点C语言的那种理工科生),有点耐心的话,每天2~3小时,三个月基本能够看完,跟着撸出一个操作系统内核。
如何从零开始写一个简单的操作系统
在完成 Bran's 后,我又部分参考了 写一个操作系统内核有多难?大概的内容、步骤是什么? - To浅墨的回答 中推荐的:hurley25/hurlex-doc · GitHub 文档,完成了一些简单的调试函数和库函数,printk 和内存分配。事实证明,尽早写好调试函数诸如 panic, assert 和 printk 是非常重要的。 大量地使...
Linux 2.6.34内核编译
Load an Alternate Configuration File,导入.config文件 注:内核配置有两种方法,一种是直接置入内核* ;另一种是编成模块M ;两种方法各有优点;直接编入内核的,比如设备的启动,不再需要加载模块的这一过程了;而编译成模块,则需要加载设备的内核支持的模块;但直接把所有的东西都编入内核也不是可...
设计一个操作系统难吗?
操作系统有多种实现方法与设计思路,下面仅选取最有代表性的三种做一简单的叙述。 1.整体式系统结构设计 这是最常用的一种组织方式,它常被誉为“大杂烩”,也可说,整体式系统结构就是“无结构”。 这种结构方式下,开发人员为了构造最终的目标操作系统程序,首先将一些独立的过程,或包含过程的...
如何成为一个Linux内核开发者
- 子系统中间层(为了兼容性?)- 在不同操作系统间易于移植的驱动程序- 减缓(甚至阻止)内核代码的快速变化这篇文档对于理解Linux的开发哲学至关重要。对于将开发平台从其他操作系统转移到Linux的人来说也很重要。Documentation/SecurityBugs如果你认为自己发现了Linux内核的安全性问题,请根据这篇文档中的步骤来提醒其他...
操作系统的内核技术是什么
1 微内核系统调度技术 与传统的操作系统内核相比,微内核调度系统中最突出的特征是增加了处理机和处理机集及线程的管理,并且向用户提供了灵活的手段来控翩自己的程序在处理机上的运行.这{羊,微内核系统就能很好地支持多处理机体系结构.同时,线程为用户提供了细粒度的并行处理机制,使得同一个用户任务中的不同线程...
开发一个移动操作系统有多难
如果你要开发自己的内核,难度会进一步加大。其实,国内并不是没有自己的操作系统,在微软时代就出现过“国产系统”,但无法建立自己的生态,此外,市场是否能够接受都是一个问题。一般后来者是很难插足的,毕竟别的系统通过不断的优化和改进,而后来者是很难做到这一点的。而建立生态,首先得各个厂商的...
Linux操作系统的主要组成部分是什么?
1、内核 内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。2、shell shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口...
请问什么是操作系统内核?
内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、内核体系结构 请点击输入图片描述 设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。 [2]现代操作系统设计中,为减少系统本身的开销,往往将一些与硬件...