我一直想做的一件事是开发我自己的操作系统(不一定像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)


当前回答

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

其他回答

请访问www.mosa-project.org查看托管操作系统联盟(MOSA)项目。他们正在用c#设计一个AOT/JIT编译器和完全托管的操作系统。一些开发人员来自不活跃的SharpOS项目。

下面是一些值得加入讨论的Stack Overflow页面:

创建自定义操作系统的障碍 为x86架构开发操作系统

一个简单而基本的操作系统开发教程,旨在成为一个学期的项目。它将指导您使用基本组件构建一个操作系统。这对初学者来说是个很好的开始。相关论文在这里。

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

Movitz是一个用Common Lisp编写的Lisp环境,运行在“金属”上。不幸的是,Movitz主页上的一些链接拒绝访问,但是您可以从trac页面找到关于如何下载和编译源代码的说明。此外,可以在本页的存档中找到现成的图像。

恕我直言,这非常有趣,因为它将Lisp机器的概念带回了当前可用的硬件上。它在商业上失败了,但这并不能证明这个想法是坏的。

Unix仇恨者手册是一本有趣的书,它半严肃地斥责Unix及其衍生概念。很多章节都在讨论Lisp机器的概念到底有多好。