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

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

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

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

有什么建议么?

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

  • 编写自己的操作系统(感谢Adam)

  • Linux从零开始(谢谢约翰)

  • SharpOS(C#操作系统)(感谢lomaxx)

  • Minix3和Minix2(感谢Mike)

  • OS Dev Wiki和论坛(谢谢史蒂夫)

  • BonaFide(感谢史蒂夫)

  • 布兰(谢天谢地)

  • 滚动你自己的玩具UNIX克隆操作系统(谢谢史蒂夫)

  • Broken Thorn OS开发系列

  • 其他资源:

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

    更新11/14/08

    我在Freebyte的指南中发现了一些资源...免费和非免费的操作系统,链接到OSKit和ExOS库等工具包。 这些对于开始操作系统开发看起来非常有用。

    Updated 2/23/09

    Ric Tokyo在这个问题上推荐nanoos。 Nanoos是用C ++编写的操作系统。

    2009年9月9日更新

    Dinah为有抱负的操作系统开发人员提供了一些有用的堆栈溢出讨论:创建自定义操作系统的路障讨论了开发操作系统和操作系统开发时可能遇到的缺陷,这是一个更一般的讨论。

    2009年9月9日更新

    LB提供了Pintos项目的链接,该项目是为学习操作系统开发的学生设计的教育操作系统。

    2009年7月27日更新(仍然强劲!)

    我偶然发现了伯克利的在线操作系统课程,共有23个讲座。

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

    2009年8月4日更新

    我发现幻灯片和其他材料与上面列出的在线伯克利讲座一起。

    更新8/23/09

    所有问题在stackoverflow上标记为osdev

    OS / 161是一个用c语言编写的学术操作系统,可以在模拟硬件上运行。 这款操作系统在Nachos中类似。 谢谢小说家!

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

    安德斯建议由Robert Love开发Linux内核。 这是“广受好评的内部人士对Linux内核的看法”。

    Updated 9/18/2009

    感谢Tim S. Van Haren向我们介绍了Cosmos,一个完全用C#编写的操作系统。

    tgiphil告诉我们有关托管操作系统联盟(MOSA)框架,这是一套工具,规范和源代码,用于促进基于通用中间语言的托管操作系统的开发。“

    2009年9月24日更新

    Steve在Visual Studio中找到了一些在Windows上开发的资源,查看了使用VS 2005或OSDev的VS部分的BrokenThorn的指导设置。

    2012年9月5日更新

    kerneltrap.org不再可用。 linux kernel v0.01可从kernel.org获得

    Updated 12/21/2012一个基本的操作系统开发教程,旨在成为一个学期的项目。 它指导您通过基本组件构建操作系统。 初学者入门非常好。 相关论文。 感谢Srujan!

    Updated 11/15/2013

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

    更新12/8/2013

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

    更新3/18/2014

    ToAruOS主要是从零开始构建的操作系统,包括GUI

    2016年9月12日更新

    编写自己的玩具操作系统

    2016年12月10日更新

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


    在简要介绍了为X86平台编写操作系统的过程后,有很多链接。

    似乎最有前途的链接(www.nondot.org/sabre/os/articles)已不再可用,因此您需要浏览Archive.org版本以阅读它。

    在一天结束时,引导加载程序获取内核的机器代码,将其放入内存并跳转到内存。 你可以在你想要的内核中放入任何机器代码,但是大多数C程序需要一个操作系统,所以你需要告诉你的编译器它不会有这些,或者引导加载器需要创建一些。

    内核然后完成所有繁重的工作,我怀疑这是您想要的示例内核。 但是,在拥有内核的情况下,要求拥有一个内核来加载命令解释器,提供磁盘服务以及加载和管理程序之间有很长的路要走。

    您可能需要考虑订阅ACM以访问其较早的文献 - 在早期的计算杂志中,有关80年代末90年代初期的大量文章介绍了如何创建其他操作系统。 也有可能从这个时代已经绝版的书籍。 您可以通过查找这些杂志的索引(可在该网站上找到 - 点击杂志名称附近的“索引”),然后询问有副本的人,免费获得相同的信息。

    最后,我知道usenet已经死了(因为互联网末日的先知这么说),但是你会发现那个时代许多棘手的老专家仍然住在那里。 你应该搜索谷歌小组(他们有dejanews的旧版本库),我希望你会发现很多人在十年前或者1.5之前就问过同样的问题,你现在正在问。 你甚至可能碰到Linus Torvalds的许多疑问,因为他最初是在开发linux。 如果搜索没有提出任何问题,请在相应的新闻组中查询(可能以comp.arch开头,但是搜索名称中带有OS的程序)。


    Minix小得多,专为学习目的而设计,而且该书也是一个很好的例子。

    更新:我猜Minix 3是有点不同的目标,但Minix 2(当然是第一个版本)是用于教学目的。


    作为从头开始编写实时多任务操作系统的人......

    键盘反弹程序,键盘驱动程序,磁盘驱动程序,视频驱动程序,文件系统以及最后一个启动加载程序 - 这只是第一次启动而无需任何操作!

    ......我无法强调足够熟悉硬件的重要性! 如果你真的想自己做这一切,而不是仅仅选择一个其他人已经为你制定的原始系统,那就更是如此。 例如,联系英特尔,并要求他们为您的CPU类型提供CPU卡! 这将为你解决 - “引脚”,中断,操作码,你的名字!

    请记住,硬件使这一切成为可能。 研究硬件。 你不会后悔的。

    链接地址: http://www.djcxy.com/p/71663.html

    上一篇: What are some resources for getting started in operating system development?

    下一篇: Understanding PrimeFaces process/update and JSF f:ajax execute/render attributes