Gio*_*lbo 586 operating-system kernel osdev
我一直想做的一件事是开发我自己的操作系统(不一定像Linux或Windows那样花哨,但比我已经完成的简单的引导加载程序更好).
我很难找到资源/指南,让你过去编写一个简单的"Hello World"操作系统.
我知道很多人可能会建议我看看Linux或BSD; 但是像这样的系统的代码库(大概)是如此之大,以至于我不知道从哪里开始.
有什么建议?
更新:为了让通过Google登陆此帖子的人们更容易,这里有一些操作系统开发资源:
编写自己的操作系统(感谢Adam)
Linux From Scratch(感谢John)
SharpOS(C#操作系统)(谢谢lomaxx)
OS Dev Wiki和论坛(感谢Steve)
BonaFide(谢谢史蒂夫)
布兰(谢谢史蒂夫)
滚动你自己的玩具UNIX克隆操作系统(谢谢史蒂夫)
其他资源:
我找到了一个名为MikeOS的好资源,"MikeOS是一个学习工具,用于演示操作系统的简单操作.它使用16位实模式进行BIOS访问,因此不需要复杂的驱动程序"
版权所有11/14/08
我在Freebyte的指南中找到了一些资源...免费和非免费的操作系统链接到OSKit和ExOS库等工具包.这些在开始OS开发时似乎非常有用.
2009年2月23日更新
Ric Tokyo在这个问题上推荐了nanoos.Nanoos是一个用C++编写的操作系统.
更新于3/9/09
Dinah为有抱负的操作系统开发人员提供了一些有用的Stack Overflow讨论:创建自定义操作系统的障碍讨论了在开发操作系统和操作系统开发时可能遇到的陷阱是一个更为一般性的讨论.
2009年7月9日更新
LB提供了Pintos项目的链接,Pintos项目是为学生学习OS开发而设计的教育操作系统.
2009年7月27日更新(仍然很强劲!)
我偶然发现了伯克利的在线操作系统课程,有23个讲座.
TomOS是MikeOS的一个分支,包括一些内存管理器和鼠标支持.作为MikeOS,它旨在成为一个教育项目.它是用NASM汇编程序编写的.
2009年8月4日更新
我发现幻灯片和其他材料与上面列出的在线伯克利讲座一致.
2009年8月23日更新
OS/161是一个用c语言编写的学术操作系统,可在模拟硬件上运行.该操作系统在Nachos中类似.感谢Novelocrat!
tangurena推荐http://en.wikipedia.org/wiki/MicroC/OS-II,这是一款专为嵌入式系统设计的操作系统.还有一本配套书.
安德斯建议Robert Love 开发Linux内核.这是"广受好评的内部人员对Linux内核的看法".
2009年9月18日更新
感谢Tim S. Van Haren向我们讲述了Cosmos,一个完全用c#编写的操作系统.
tgiphil向我们介绍了托管操作系统联盟(MOSA)框架,"一套工具,规范和源代码,用于促进基于通用中间语言的托管操作系统的开发."
2009年9月24日更新
Steve使用Visual Studio在Windows上找到了一些开发资源,请查看BrokenThorn的VS 2005或OSDev VS部分的指南设置.
2012年9月5日更新
kerneltrap.org不再可用.linux内核v0.01可从kernel.org获得
12/21/2012更新了 一个基本的OS开发教程,旨在成为一个学期的项目.它将指导您构建具有基本组件的操作系统.初学者非常好的开始.相关论文.谢谢Srujan!
更新于2013年11月15日
从头开始编写简单的操作系统.谢谢James Moore!
更新于2013年12月8日
如何制作电脑操作系统 谢谢ddtoni!
更新于3/18/2014
2016年9月12日更新
2016年12月10日更新
编写一个简单的操作系统 - 来自Scratch(谢谢@Tyler C)
Ada*_*vis 95
在简要概述了为X86平台编写操作系统所涉及的内容之后,有很多链接.
似乎最有希望的链接(www.nondot.org/sabre/os/articles)已不再可用,因此您需要浏览Archive.org版本才能阅读它.
在一天结束时,引导加载程序获取内核的机器代码,将其放入内存并跳转到它.你可以在你想要的内核中放置任何机器代码,但是大多数C程序都需要一个操作系统,因此你需要告诉编译器它不会拥有所有这些,或者引导程序必须创建一些.
然后内核完成所有繁重的工作,我怀疑它是你想要的示例内核.但是,让内核说"Hello world"到拥有加载命令解释器的内核,提供磁盘服务以及加载和管理程序之间还有很长的路要走.
您可能需要考虑订阅ACM以访问他们的旧文献 - 在80年代末期和90年代早期的早期计算杂志中有很多关于如何创建替代操作系统的文章.也有可能从这个时代绝版的书籍.您可以通过查找那些杂志的索引(可以在该网站上找到 - 点击杂志名称附近的"索引")然后四处询问有副本的人来免费获得相同的信息.
最后,我知道usenet已经死了(因为对于互联网厄运的先知来说),但你会发现那个时代的许多笨拙的老专家仍然住在那里.你应该搜索google群组(他们有dejanews的旧存储库),我希望你会发现很多人在十年或者十五年之前问过你现在问的相同问题.你可能会在Linus Torvalds的许多查询中遇到帮助,因为他最初正在开发linux.如果搜索没有提起任何内容,请在相应的新闻组中询问(可能以comp.arch开头,但搜索名称中包含OS的那些).
Ric*_*d T 32
作为从头开始编写实时多任务操作系统的人......
键盘去抖动程序,键盘驱动程序,磁盘驱动程序,视频驱动程序,文件系统,最后是一个启动加载程序 - 而这只是第一次无需启动它!
......我无法强调熟悉硬件的重要性!如果您真的想要自己完成所有操作而不是仅仅选择其他人已经为您准备的原始系统,那么尤其如此.例如,联系英特尔并要求他们为您的CPU类型提供CPU卡!这将为您奠定 - "引脚",中断,操作码,您的名字!
请记住硬件使一切成为可能.研究硬件.你不会后悔的.
.
Ste*_*nby 16
我希望有一个地方可以获得有关开发自己的操作系统的所有信息.最接近的是OS Dev Wiki和论坛.它们提供了大量有关设置,开发和设备硬件信息的良好信息.
还有一些很棒的教程在BoneFide,我已经使用了Bran的入门教程,现在我正在看一个基于他的名为Roll你自己的玩具UNIX克隆操作系统的更新版本.
我再次检查:"操作系统:设计和实现"
如果你想在Windows上开发,请查看jolson的博客文章.
编辑:要使用Visual Studio在Windows上进行开发,请查看BrokenThorn的指南或OSDev的wiki.
Jen*_*och 15
麻省理工学院课程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的书更喜欢它!这是一个真正的宝石!
书籍中的操作系统基础知识有很好的资源.由于没有太多要求从头开始创建新操作系统,因此您不会在互联网上找到大量的业余爱好者类型信息.
我推荐Tanenbaum的标准教科书"现代操作系统".您也可以通过Calingaert找到有用的"操作系统元素" - 它是一本书的简要概述,从设计者的角度给出了操作系统的粗略草图.
如果您对实时系统感兴趣(并且至少应该了解实时操作系统的差异和原因),那么我还建议使用Labrosse的"MicroC/OS-II".
编辑:
你能用"更多技术"来说明你的意思吗?这些书给出了伪代码实现的详细信息,但您是在寻找示例操作系统,还是特定机器/语言的代码片段?
-亚当
已经回答了,但是当我在大学学习操作系统时,我们开始使用早期的Linux内核并添加了简单的现代功能(基本文件系统,虚拟内存,多任务处理,互斥体).好开心.你可以跳过一些非常疯狂的低级程序集,只能用于保护模式和页面表格,同时还要学习一些内容.
http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2