首页 文章

什么是开始操作系统开发的资源? [关闭]

提问于
浏览
561

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

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

我知道很多人可能会建议我看看Linux或BSD;但是像这样的系统的代码库(大概)是如此之大,以至于我不知道从哪里开始 .

有什么建议?

更新:为了让通过Google登陆此帖子的人们更容易,这里有一些操作系统开发资源:

其他资源:

我找到了一个名为MikeOS的好资源,"MikeOS is a learning tool to demonstrate how simple OSes work. It uses 16-bit real mode for BIOS access, so that it doesn't need complex drivers"

已于11/14/08更新

我在Freebyte's Guide to...Free and non-free Operating Systems找到了一些资源,它们链接到OSKit和ExOS库这样的工具包 . 这些在开始OS开发时似乎非常有用 .

2009年2月23日更新

Ric Tokyo推荐nanoosquestion中 . Nanoos是一个用C语言编写的操作系统 .

2009年3月9日更新

Dinah为有抱负的操作系统开发人员提供了一些有用的Stack Overflow讨论:Roadblocks in creating a custom operating system讨论了在开发操作系统时可能遇到的陷阱,OS Development是一个更为一般性的讨论 .

2009年7月9日更新

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

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

我偶然发现伯克利有一个23个讲座 .

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

2009年8月4日更新

我发现slides and other materials与上面列出的在线伯克利讲座一致 .

2009年8月23日更新

stackoverflow上的所有questions tagged osdev

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

tangurena推荐http://en.wikipedia.org/wiki/MicroC/OS-II,一款专为嵌入式系统设计的操作系统 . 还有companion book .

安德斯建议罗伯特·洛夫提出Linux Kernel Development . 这是"widely acclaimed insider's look at the Linux kernel."

2009年9月18日更新

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

tgiphil告诉我们关于Managed Operating System Alliance (MOSA) Framework,"a set of tools, specifications and source code to foster development of managed operating systems based on the Common Intermediate Language."

2009年9月24日更新

Steve使用Visual Studio在Windows上找到了一些开发资源,请查看BrokenThorn's guide setup with VS 2005OSDev's VS Section .

2012年9月5日更新

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

更新时间:12/21/2012一个基本的OS开发tutorial旨在成为一个学期的项目 . 它将指导您构建具有基本组件的操作系统 . 初学者非常好的开始 . 相关paper . 谢谢Srujan!

更新于2013年11月15日

Writing a Simple Operating System From Scratch . 谢谢James Moore!

更新于2013年12月8日

How to make a computer operating system谢谢ddtoni!

更新于3/18/2014

ToAruOS an OS built mostly from scratch, including GUI

2016年9月12日更新

Writing your own Toy Operating System

2016年12月10日更新

Writing a Simple Operating System —from Scratch(谢谢@Tyler C)

28 回答

  • 3

    一个相当简单的OS研究将是μC/ OS . 这本书有一张软盘,上面有源文件 .

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

  • 1

    我想包括Samy Pesse的这个回复How-to-Make-a-Computer-Operating-System . 是一项正在进行的工作 . 很有意思 .

  • 3

    已经回答了,但是当我在大学学习操作系统时,我们开始使用早期的Linux内核并添加了简单的现代功能(基本文件系统,虚拟内存,多任务处理,互斥体) . 好开心 . 你可以跳过一些非常疯狂的低级程序集,只能用于保护模式和页面表格,同时还要学习一些内容 .

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

  • 7

    以下是其他一些值得纳入此讨论的Stack Overflow页面:

    Roadblocks in creating a custom operating system
    Developing an operating system for the x86 architecture

  • 5

    这是一篇名为“Writing a Simple Operating System From Scratch”的论文 . 它包括编写引导加载程序,进入x86-32保护模式,以及用C编写基本内核 . 它似乎很好地解释了所有细节 .

  • 3

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

    键盘去抖动程序,键盘驱动程序,磁盘驱动程序,视频驱动程序,文件系统,最后是一个启动加载程序 - 这只是第一次启动它而无需做任何事情!

    ......我无法强调熟悉硬件的重要性!如果你真的想自己完成所有这一切,而不是仅仅拿起别人已经为你准备好的原始系统,那就更是如此 . 例如,联系英特尔并要求他们提供适用于您的CPU类型的CPU卡!这将为您奠定 - “引脚”,中断,操作码,您的名字!

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

    .

  • 7

    Movitz是一个用Common Lisp编写并运行"on the metal"的Lisp环境 . 不幸的是,Movitz main page拒绝访问的一些链接,但您可以找到有关如何从trac page下载和编译源代码的说明 . 此外,可以在this page的存档上找到就绪图像 .

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

    The Unix haters handbook是一本有趣的书,它严肃地指责Unix及其衍生物的概念 . 许多部分论述了Lisp机器概念有多好是 .

  • 4

    当我开始使用我的基本操作系统时,我需要一个像Stepping stones for a basic operating system这样的基本指南 . 它帮助我摆脱了我的头脑 .

    如果你想从绝对没有(纯汇编代码)

  • 6

    书籍中的操作系统基础知识有很好的资源 . 由于没有太多要求从头开始创建新操作系统,因此您不会在互联网上找到大量的业余爱好者类型信息 .

    我推荐Tanenbaum的标准教科书“现代操作系统” . 您也可以通过Calingaert找到有用的“操作系统元素” - 这是一本书的简要概述,从设计者的角度给出了操作系统的粗略草图 .

    如果您对实时系统感兴趣(并且您至少应该了解实时操作系统的差异和原因),那么我还建议使用Labrosse的“MicroC / OS-II” .

    编辑:

    你能用“技术性更强”来明确你的意思吗?这些书提供了伪代码实现细节,但您是在寻找示例操作系统,还是特定机器/语言的代码片段?

    -亚当

  • 2

    我玩了Cosmos,这是"an operating system project implemented completely in CIL compliant languages."它是用C#写的,所以这就是我的小巷 . 对于像我这样从未尝试构建操作系统的人来说,能够立即运行"Hello World"操作系统实际上非常酷 .

  • 4

    开始攻击Minix . 它比Linux(显然)小得多,它的设计考虑了教学目的(至少有一些) . 不过Minix 3,这是一个完全不同的故事 .

  • 12

    Minix要小得多,专为学习目的而设计,the book to go with it也是一个很好的 .

    更新:我认为Minix 3有一个不同的目标,但Minix 2(当然还有第一个版本)是出于教学目的 .

  • 3

    如上所述,OSDev Wiki(到目前为止)是OS开发的最佳来源 . 对于那些说德语的人来说,lowlevel.eu Wiki也很棒 . 相对未知的东西Incitatus OS,一个带有一小组用户空间应用程序的简单内核 . 它非常适合用于进入OS开发的复杂主题 .

  • 1

    您还可以查看SharpOS,这是他们用c#编写的操作系统 .

  • 2

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

  • 1

    我发现Robert Love的Linux内核开发非常有趣 . 它告诉您Linux内核中的不同子系统如何以非常实际的方式工作 . 由于源是可用的,Linux是攻击的主要候选者 .

  • 3

    刚来自另一个问题 . 我想提一下Pintos ...我记得我的操作系统课程与Nachos和Pintos似乎是可以在x86上运行的那种东西 .

  • 2

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

  • 6

    当你创建了一个基本的操作系统时,它就会在创建GUI或移植库时获得许多资源 . 但我认为看看ToAruOS会有很大帮助!

    该操作系统表面下的代码非常简单!但与此同时,他已经移植了诸如cairo,python,(尚未很快)sdl之类的内容,制作了共享内存,并且他还制作了自己的widget工具包 . 它全部用C语写 .

    另一个有趣的操作系统是pedigreeOS . 它是由JamesM(背后的男人)制作的 . 虽然它具有比ToaruOS更多的功能,但它也更大,更令人困惑 .

    但无论如何,这两个操作系统将帮助你很多,特别是ToAruOS .

  • 35

    在为X86平台编写操作系统所涉及的内容之后,有很多链接 .

    似乎最有希望的链接(www.nondot.org/sabre/os/articles)已不再可用,因此您需要通过Archive.org version来阅读它 .

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

    然后内核完成所有繁重的工作,我怀疑它是你想要的示例内核 . 但是,要让内核说“Hello world”,拥有一个加载命令解释器的内核,提供磁盘服务,加载和管理程序,还有很长的路要走 .

    您可能需要考虑订阅ACM以访问他们的旧文献 - 在早期计算杂志中有很多关于如何create alternative OSs的文章 . 这个时代也有可能出版的书籍已经绝版 . 您可以通过查找这些杂志的索引(可在该网站上找到 - 点击杂志名称附近的"index")然后四处询问有副本的人来免费获得相同的信息 .

    最后,我知道usenet已经死了(因为互联网厄运的先知可以这么说),但你会发现那个时代的许多笨拙的老专家仍然住在那里 . 你应该搜索谷歌小组(他们有dejanews的旧存储库),我希望你会发现许多人在十年或1.5年前问你现在问的相同问题 . 你可能会在Linus Torvalds的许多查询中遇到帮助,因为他最初正在开发linux . 如果搜索没有提起任何内容,请在相应的新闻组中询问(可能以comp.arch开头,但搜索名称中包含OS的那些) .

  • 18

    x86 JS simulatorARM simulator对于了解不同的硬件如何工作以及在不退出您喜欢的浏览器的情况下进行测试也非常有用 .

  • 31

    有趣的程序员问题 . 看到构建像Windows或Mac这样的操作系统需要很长时间,但如果你想构建一个简单的操作系统,那么你可以尝试一下

    • 您需要关注汇编语言,C和C.你应该是这些语言的专家 .

    • 首先阅读一本关于OS如何工作的好书[Google it],然后阅读Wiki OS中的所有信息

    • 在youtube中搜索"How to create your own OS in Assembly Language"观看视频,Eg. Video

    • 下载Linux OS源代码并自行编译并尝试自行修改代码

    • 现在您是一名经验丰富的操作系统编辑器,现在下载MinixQNX并开始与他们一起开发并从这里获取他们的文档Minix DocQNX Doc

    现在你已经获得了硕士学位(不完全只是为了更多)去创建操作系统现在将这个知识分发给你的朋友,并帮助他们尝试创建一个像Mac,Linux或Windows一样强大的操作系统

  • 5

    你可能想看看linuxfromscratch .

    Linux From Scratch(LFS)是一个项目,为您提供构建自己的自定义Linux系统的分步说明,完全来自源代码 .

  • 9

    我希望有一个地方可以获得有关开发自己的操作系统的所有信息 . 最接近的是OS Dev WikiForums . 它们提供了大量有关设置,开发和设备硬件信息的良好信息 .

    还有一些很棒的教程在BoneFide,我已经使用了Bran的入门教程,现在我正在查看一个基于他名为Roll your own toy UNIX-clone OS的更新的教程 .

    我再次检查:“操作系统:设计和实现”

    如果你想在Windows上开发,请查看jolson的博客文章 .

    编辑:要使用Visual Studio在Windows上进行开发,请查看BrokenThorn's guideOSDev's wiki .

  • 15

    写一个微控制器OS . 我推荐一个基于x86的微控制器 . 现代操作系统非常庞大 . 首先学习基础知识 .

  • 93
  • 11

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

    XV6 - 用ANSI C for x86编写的简单的类Unix教学操作系统http://pdos.csail.mit.edu/6.828/2012/xv6.html

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

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

    材料紧凑:92页来源和96页评论 .

    我比Minix的书更喜欢它!这是一个真正的宝石!

  • 4

    一个简单而基本的OS开发tutorial旨在成为一个学期的项目 . 它将指导您构建具有基本组件的操作系统 . 初学者非常好的开始 . 相关文件是here .

相关问题