我一直想做的一件事是开发我自己的操作系统(不一定喜欢Linux或Windows,但比我已经做过的简单的引导加载程序要好)。
我很难找到资源/指南,让您不必编写一个简单的"Hello“操作系统。
我知道很多人可能会推荐我看Linux或BSD;但是这样的系统的代码库(大概)太大了,我不知道从哪里开始。
有什么建议吗?
更新:为了让通过Google登陆这个帖子的人更容易,这里有一些OS开发资源:
其他资源:
我找到了一个很好的资源,名为MikeOS,"MikeOS是一个学习工具,用来演示OSes的工作原理。它使用16位的真实模式进行BIOS访问,这样就不需要复杂的驱动程序了。“
更新11/14/08
我在免费字节指南to...Free和非自由操作系统中找到了一些链接到OSKit和ExOS库等工具包的资源。在操作系统开发中,这些似乎是非常有用的。
更新的2/23/09
Ric东京在这个问题中推荐nanoos。Nanoos是用C++编写的操作系统。
更新日期:2009年9月3日
Dinah为有抱负的OS开发人员提供了一些有用的堆栈溢出讨论:创建自定义操作系统的障碍讨论了在开发OS时可能遇到的陷阱,而OS开发则是一个更一般的讨论。
更新日期:2009年9月7日
LB提供了一个指向Pintos项目的链接,这是一个为学生学习操作系统开发而设计的教育操作系统。
更新7/27/09 (仍然强大!)
我偶然发现了一个来自伯克利的在线操作系统课程,收录了23场讲座。
TomOS是MikeOS的一个分支,它包含一些内存管理器和鼠标支持。作为MikeOS,它被设计成一个教育项目。它是用NASM汇编语言编写的。
更新日期:2009年4月8日
我发现幻灯片和其他材料可以和上面列出的在线伯克利讲座一起使用。
更新日期8/23/09
堆栈溢出上的所有标有osdev的问题
OS/161是一个用c++编写的学术操作系统,运行在模拟硬件上。这个操作系统在Nachos中是类似的。谢谢诺维拉!
tangurena推荐http://en.wikipedia.org/wiki/MicroC/OS-II,一种专为嵌入式系统设计的操作系统。还有一个同伴书。
Linux内核开发由罗伯特洛夫建议安德斯。这是“广受好评的内部人士对Linux内核的看法”。
2009年8月9日更新
感谢蒂姆·S·范·哈伦向我们介绍了宇宙,一个完全用c#编写的操作系统。
tgiphil告诉我们托管操作系统联盟(MOSA)框架,“一组工具、规范和源代码,以促进基于公共中间语言的托管操作系统的开发。”
更新9/24/2009
Steve在使用Visual的windows上找到了几个用于开发的资源,请查看BrokenThorn的VS 2005指南设置或OSDev's VS科。
2012年5月9日更新
kerneltrap.org不再可用。linux内核v0.01可从kernel.org获得。
更新12/21/2012一个基本操作系统开发教程设计为一个学期的项目。它指导您使用基本组件构建操作系统。对于初学者来说是个很好的开始。相关纸。谢谢斯鲁詹!
2013年11月15日更新
从头开始编写一个简单的操作系统。谢谢詹姆斯·摩尔!
2013年8月12日更新
如何制作计算机操作系统,谢谢,阿德托尼!
2014年10月3日更新
2016年9月12日更新
编写自己的玩具操作系统
2016年12月10日更新
编写一个简单的操作系统-from擦伤 (谢谢@Tyler )
发布于 2008-09-05 12:38:38
在这个简要概述之后,有很多关于为X86平台编写操作系统所涉及的链接。
似乎最有希望的链接(www.nondot.org/sabre/os/ most )不再可用,因此您需要通过Archive.org版本来阅读它。
在一天结束时,引导程序获取内核的机器代码,将其放入内存,然后跳转到它。您可以将任何机器代码放入您想要的内核中,但是大多数C程序都需要操作系统,所以您需要告诉编译器,它不会有所有这些代码,或者引导程序必须创建其中的一些代码。
然后,内核完成所有的繁重工作,我怀疑它就是您想要的示例内核。但是,在拥有一个写着"Hello“的内核和一个加载命令解释器、提供磁盘服务以及加载和管理程序的内核之间,还有很长的路要走。
你可能想要考虑订阅ACM来访问他们以前的文献--在80年代末和90年代早期的计算机杂志中有很多关于如何使用创建可供选择的OSs的文章。在这个时代,可能也有一些书已绝版。您可以通过查找这些杂志的索引(在该网站上可用-单击杂志名称附近的“索引”)来获得相同的信息,然后四处询问有副本的人。
最后,我知道usenet已经死了(因为互联网末日的预言家是这么说的),但是你会发现来自那个时代的许多老专家仍然住在那里。你应该搜索google组(他们有dejanews的旧资源库),我希望你会发现很多人在十年或1.5年前问的问题和你现在问的一样。您甚至可能在Linus最初开发linux时遇到他的许多帮助查询。如果搜索没有显示任何内容,请在适当的新闻组中询问(可能以comp.arch开头,但搜索名称中包含OS的新闻组)。
发布于 2008-09-04 04:30:31
Minix要小得多,是为学习而设计的,而和它一起写的书也是一个很好的工具。
更新:我想Minix 3有点不同的目标,但是Minix 2 (当然还有第一个版本)是为了教学目的。
发布于 2008-10-20 05:09:44
作为一个白手起家写了一个实时多任务操作系统的人.
键盘卸载例程,键盘驱动程序,磁盘驱动程序,视频驱动程序,文件系统,最后一个引导加载程序-这只是第一次启动它没有任何事情做!
..。我非常强调熟悉硬件是多么的重要!尤其是如果你真的想自己去做,而不是仅仅选择一个其他人已经为你准备好的原始系统。例如,联系英特尔,并要求他们为您的CPU类型的CPU卡!这将为你-“别针”,中断,操作码,你的名字!
记住,硬件使这一切成为可能。研究硬件。你不会后悔的。
。
https://stackoverflow.com/questions/43180
复制相似问题