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

我很难找到资源/指南,让你过去写一个简单的“Hello World”操作系统。

我知道很多人可能会推荐我看看Linux或BSD;但是这样的系统的代码库(大概)太大了,我不知道从哪里开始。

有什么建议吗?

更新:为了让通过谷歌登陆这篇文章的人更容易,这里有一些操作系统开发资源:

编写自己的操作系统(感谢Adam) Linux从零开始(谢谢John) SharpOS (c#操作系统)(感谢lomaxx) Minix3和Minix2(谢谢迈克) OS开发Wiki和论坛(感谢Steve) BonaFide(谢谢史蒂夫) 布兰(谢谢史蒂夫) 制作你自己的克隆unix操作系统玩具(谢谢史蒂夫) 断刺OS开发系列

其他资源:

我找到了一个叫MikeOS的很好的资源,“MikeOS是一个演示简单操作系统如何工作的学习工具。它使用16位实模式进行BIOS访问,因此不需要复杂的驱动程序。”

更新11/14/08

我在Freebyte的指南上找到了一些资源…免费和非免费的操作系统,链接到工具包,如OSKit和ExOS库。在开始操作系统开发时,这些似乎非常有用。

更新2/23/09

Ric Tokyo在这个问题上推荐了纳米。Nanoos是一个用c++编写的操作系统。

更新3/9/09

Dinah为有抱负的操作系统开发者提供了一些有用的Stack Overflow讨论:创建自定义操作系统的路障讨论了在开发操作系统时可能遇到的陷阱 和操作系统开发是一个更一般的讨论。

更新7/9/09

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

更新7/27/09(仍然强劲!)

我偶然发现了一门来自伯克利的在线操作系统课程,有23节课。

TomOS是MikeOS的一个分支,包括一个小的内存管理器和鼠标支持。作为MikeOS,它被设计成一个教育项目。它是用NASM汇编程序编写的。

更新8/4/09

我找到了上面列出的伯克利在线讲座的幻灯片和其他材料。

更新8/23/09

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

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

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

由Robert Love编写的Linux内核开发是由Anders推荐的。这是一本“广受好评的内部人士对Linux内核的看法”。

更新9/18/2009

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

tgiphil向我们介绍了托管操作系统联盟(MOSA)框架,“一套工具、规范和源代码,用于促进基于公共中间语言的托管操作系统的开发。”

更新9/24/2009

Steve找到了一些使用Visual Studio在windows上开发的资源,查看BrokenThorn的VS 2005指南或OSDev的VS章节。

更新9/5/2012

Kerneltrap.org不再可用。linux内核v0.01可从kernel.org获得

更新12/21/2012 一个基本的操作系统开发教程,设计为一个学期的项目。它将指导您使用基本组件构建一个操作系统。这对初学者来说是个很好的开始。相关的论文。谢谢Srujan !

更新11/15/2013

从头开始编写一个简单的操作系统。谢谢詹姆斯·摩尔!

更新12/8/2013

如何制作一个电脑操作系统谢谢ddtoni!

更新3/18/2014

ToAruOS是一个从头开始构建的操作系统,包括GUI

2016年9月12日更新

编写自己的玩具操作系统

2016年12月10日更新

从头开始写一个简单的操作系统(谢谢@Tyler C)


当前回答

这是另一个问题。我想提一下ptos…我记得我的Nachos和ptos的操作系统课程似乎可以在x86上运行。

其他回答

我在本科时的操作系统课程让我们为OS/161构建了许多子系统,这是一个简单的、类似bsd的内核,它提供了一些基础知识,同时在实现更高级别服务时留下了探索各种设计空间决策的自由。

如上所述,OSDev Wiki(到目前为止)是操作系统开发的最佳来源。对于那些说德语的人来说,低水平。eu Wiki也很棒。一些相对不知名的Incitatus OS,一个简单的内核和一组很小的用户空间应用程序。它非常适合用于了解操作系统开发的复杂主题。

我曾经摆弄过Cosmos,它是“一个完全用符合CIL的语言实现的操作系统项目”。它是用c#编写的,所以这正合我的胃口。对于像我这样从未尝试过构建操作系统的人来说,能够在短时间内运行一个“Hello World”操作系统实际上是一件非常酷的事情。

麻省理工学院6.828课程:操作系统工程是一个很好的资源。

x6—简单的类unix教学操作系统,用ANSI C为x86编写 http://pdos.csail.mit.edu/6.828/2012/xv6.html

XV6源代码—作为带有行号的印刷小册子 http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf

XV6书-解释了操作系统设计的主要思想 http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

材料紧凑:92页的原始资料和96页的评论。

我喜欢它比Minix的书还多!这是真正的宝石!

你可能还想看看SharpOS,这是一个用c#编写的操作系统。