操作系统开发的入门资源有哪些?

610

我一直想做的事情是开发自己的操作系统(不一定像Linux或Windows那样花哨,但比我已经完成的简单引导程序要好)。

我很难找到超过编写简单的“Hello World”操作系统的资源/指南。

我知道很多人可能会推荐我看Linux或BSD;但是像那样的系统代码库(据推测)非常庞大,我不知道从哪里开始。

有什么建议吗?

更新:为了让通过Google进入此帖子的人更容易,请参考以下操作系统开发资源:

其他资源:

我发现了一个很好的资源,名为MikeOS,"MikeOS是一个学习工具,用于演示简单操作系统的工作原理。它使用16位实模式进行BIOS访问,因此不需要复杂的驱动程序"

更新于11/14/08

我在Freebyte's Guide to...Free and non-free Operating Systems找到了一些资源,链接到诸如OSKit和ExOS库之类的套件。这些似乎非常有用,可以帮助入门OS开发。

更新于2/23/09

Ric Tokyo在这个question中推荐了nanoos。Nanoos是一个用C++编写的操作系统。

更新于3/9/09

Dinah提供了一些有用的Stack Overflow讨论,适合有志于开发操作系统的人:Roadblocks in creating a custom operating system讨论了在开发操作系统时可能会遇到的问题, 而OS Development则是一个更一般性的讨论。

更新于7/9/09

LB提供了一个链接到Pintos Project,这是为学习操作系统开发的学生设计的教育性操作系统。

更新于7/27/09(仍在继续!)

我偶然发现了伯克利提供的在线操作系统课程,共有23节课。

TomOSMikeOS的一个分支,包括一些内存管理和鼠标支持。与MikeOS一样,它是一个教育项目。它是用NASM汇编语言编写的。

更新于8/4/09

我找到了与上述在线伯克利课程相配套的幻灯片和其他材料

更新于8/23/09

所有在stackoverflow上标记为osdev的问题

OS/161是一个基于模拟硬件运行的用C语言编写的学术性操作系统。这个操作系统类似于Nachos。感谢Novelocrat!

tangurena 推荐 http://en.wikipedia.org/wiki/MicroC/OS-II,这是一个为嵌入式系统设计的操作系统。还有配套书籍

Anders 建议阅读 Robert Love 的Linux Kernel Development。这是一本"广受赞誉的内部人士对 Linux 内核的深入分析"。

更新于 2009 年 9 月 18 日

感谢 Tim S. Van Haren 告诉我们Cosmos,这是一个完全用 c# 编写的操作系统。

tgiphil 向我们介绍了 Managed Operating System Alliance (MOSA) Framework,这是"一组工具、规范和源代码,用于促进基于公共中间语言的托管操作系统的开发"。

更新于 2009 年 9 月 24 日

Steve 找到了几个使用 Visual Studio 在 Windows 上进行开发的资源,请看BrokenThorn's guide setup with VS 2005或者OSDev's VS Section

更新于2012年9月5日

kerneltrap.org不再可用。Linux内核v0.01可从kernel.org获取。

更新于2012年12月21日 一个基本的操作系统开发教程,旨在作为一个学期的项目。它指导您构建具有基本组件的操作系统。非常适合初学者入门。相关论文。感谢Srujan!

更新于2013年11月15日

从零开始编写简单的操作系统。感谢James Moore!

更新于2013年12月8日

如何制作计算机操作系统。感谢ddtoni!

更新于2014年3月18日

ToAruOS是一个大部分从零开始构建的操作系统,包括GUI界面

2016年9月12日更新

编写自己的玩具操作系统

2016年12月10日更新

从零开始编写简单操作系统(感谢@Tyler C)


5
不要忘记访问http://forums.osdever.net。 - Brenden
17
为什么这种好的通用问题在 Stack Overflow 上总是被关闭? - Pratik Singhal
38
这个问题被点赞了370次,被投票赞成了422次,自从StackOverflow首次推出以来就存在。社区似乎很喜欢它,但由于某些原因,一小部分人必须让所有人都失望。这就是为什么我开始真的不喜欢S.O. - Giovanni Galbo
1
Unikernels(只做一件事并做好它)有一个非常有趣的趋势,这些努力非常相关。通常情况下,您可以在虚拟机中冷启动unikernel,并在不到一秒钟的时间内运行用户代码。我见过一种解决方案,仅针对此类服务的DNS查找会使DNS服务器触发“引导虚拟机”,以便在实际请求服务时准备就绪。 - Thorbjørn Ravn Andersen
4
我从这个开始,https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf - Tyler C
显示剩余4条评论
28个回答

3

我曾经尝试过Cosmos,它是一个完全用CIL兼容语言实现的操作系统项目。由于它是用C#编写的,所以非常适合我。对于像我这样从未尝试过构建操作系统的人来说,能够在很短的时间内运行“Hello World”操作系统真的很酷。


3

2
这里有一篇名为“从零开始编写简单操作系统”的论文。它涵盖了编写引导程序、进入x86-32保护模式以及使用C语言编写基本内核。它似乎做得很好,详细地解释了每个步骤。

我按照这本书的指引并基于其中的代码进行了开发。有这样一本书作为起点真是太棒了。 - user3405291

2

通过使用x86 JS模拟器ARM模拟器,可以很好地了解不同硬件组件的工作原理,并在您喜爱的浏览器中进行测试而无需退出。


2
Movitz是一个用Common Lisp编写并在“金属上”运行的Lisp环境。不幸的是,Movitz主页上的一些链接无法访问,但您可以在trac页面上找到下载和编译源代码的说明。此外,可以在此页面的存档中找到准备好的映像。
在我看来,这非常有趣,因为它将Lisp机概念带回了当前可用的硬件上。尽管它在商业上失败了,但这并不能证明这个想法是错误的。 Unix怀恨者手册是一本有趣的书,半认真地抨击Unix及其衍生品的概念。许多部分都论述了Lisp机概念的优越性。

1

对程序员来说,这是个有趣的问题。建造像Windows或Mac这样的操作系统需要很长很长很长的时间,但如果你想建造一个简单的操作系统,那么尽你所能就可以了。

  1. 你需要专注于汇编语言、C和C++。你应该是这些语言的专家。
  2. 首先阅读一本关于操作系统如何工作的好书[谷歌搜索],然后阅读Wiki OS中的所有信息。
  3. 在YouTube上搜索“如何用汇编语言创建自己的操作系统”,观看视频,Eg. Video
  4. 下载Linux操作系统源代码并自行编译,尝试自行修改代码
  5. 现在你已经是一位经验丰富的操作系统编辑者了,现在下载MinixQNX并开始使用它们进行开发,并从这里获取它们的文档Minix DocQNX Doc
现在你已经获得了创建操作系统的硕士学位(虽然还有一点点需要进步),现在请将这些知识传授给你的朋友,并与他们合作尝试创建一个像Mac、Linux或Windows一样强大的操作系统。

编辑们请编辑我的答案并删除http:和www之间的空格,因为我是新来者,所以声望不高,请帮我处理这些事情。 - BharatKhanna

1
当你制作了一个基本的操作系统后,继续开发变得很困难,因为没有太多关于制作GUI或移植库的资源。但是我认为看一下ToAruOS会很有帮助!该操作系统底层的代码非常简单!但同时,他已经移植了像cairo、python(还未完成,但即将完成)、sdl等东西,创建了共享内存,还制作了自己的小部件工具包。所有这些都是用C语言编写的。
另一个有趣的操作系统是pedigreeOS。它由JamesM制作(jamesM's kernel tutorial背后的人)。虽然它比ToaruOS拥有更多功能,但也更大且更令人困惑。
但无论如何,这两个操作系统都会对你有很大的帮助,特别是ToAruOS。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接