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

其他回答

已经回答了,但是当我在大学学习操作系统时,我们从早期的linux内核开始,并添加了简单的现代功能(基本文件系统、虚拟内存、多任务处理、互斥锁)。很有趣的。你可以跳过一些真正疯狂的低级别组装的东西,同时仍然学会了一些内脏。

http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2

麻省理工学院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的书还多!这是真正的宝石!

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

你可能想从头开始看linux。

Linux From Scratch (LFS)是一个项目 这为您提供了一步一步的步骤 说明如何建立自己的 自定义Linux系统,完全从 源代码。

可以研究的一个相当简单的OS是µC/OS。这本书有一张印有出处的软盘。

http://en.wikipedia.org/wiki/MicroC/OS-II