以下是一些值得纳入此讨论的Stack Overflow页面:
创建自定义操作系统的障碍 为x86架构开发操作系统
写一个单片机OS。我推荐一个基于x86的微控制器。现代操作系统就是 巨大 。首先学习基础知识。
已经回答了,但是当我在大学学习操作系统时,我们开始使用早期的Linux内核并添加了简单的现代功能(基本文件系统,虚拟内存,多任务处理,互斥体)。好开心。你可以跳过一些非常疯狂的低级程序集,只能用于保护模式和页面表格,同时还要学习一些内容。
http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2
在此之后有很多链接 简要概述 为X86平台编写操作系统所涉及的内容。
似乎最有希望的链接(www.nondot.org/sabre/os/articles)已不再可用,因此您需要通过 Archive.org版本 阅读它。
在一天结束时,引导加载程序获取内核的机器代码,将其放入内存并跳转到它。你可以在你想要的内核中放置任何机器代码,但是大多数C程序都需要一个操作系统,因此你需要告诉编译器它不会拥有所有这些,或者引导程序必须创建一些。
然后内核完成所有繁重的工作,我怀疑它是你想要的示例内核。但是,让内核说“Hello world”到拥有加载命令解释器的内核,提供磁盘服务以及加载和管理程序之间还有很长的路要走。
你可能想考虑订阅ACM以获取他们的旧文献 - 在80年代末期和90年代早期的早期计算杂志中有很多文章关于如何 创建替代操作系统 。也有可能从这个时代绝版的书籍。您可以通过查找那些杂志的索引(可以在该网站上找到 - 点击杂志名称附近的“索引”)然后四处询问有副本的人来免费获得相同的信息。
最后,我知道usenet已经死了(因为对于互联网厄运的先知来说),但你会发现那个时代的许多笨拙的老专家仍然住在那里。你应该搜索google群组(他们有dejanews的旧存储库),我希望你会发现很多人在十年或者十五年之前问过你现在问的相同问题。你可能会在Linus Torvalds的许多查询中遇到帮助,因为他最初正在开发linux。如果搜索没有提起任何内容,请在相应的新闻组中询问(可能以comp.arch开头,但搜索名称中包含OS的那些)。
MINIX 是一个小得多,专为学习目的而设计的 这本书随身携带 也是一个很好的。
更新:我猜Minix 3有点不同的目标,但是 Minix 2 (当然还有第一个版本)用于教学目的。
你也想看一看 SharpOS 这是他们用c#编写的操作系统。
当我开始使用我的基本操作系统时,我需要一个基本指南 用于基本操作系统的垫脚石 。它帮助我摆脱了我的头脑。
如果你想从绝对没有(纯汇编代码)
你可能想看一下 查看LinuxFromScratch 。
Linux From Scratch(LFS)是一个项目 它为您提供了一步一步的帮助 建立自己的说明 自定义Linux系统,完全来自 源代码。
作为从头开始编写实时多任务操作系统的人......
键盘去抖动程序,键盘驱动程序,磁盘驱动程序,视频驱动程序,文件系统,最后是一个启动加载程序 - 而这只是第一次无需启动它!
......我无法强调熟悉硬件的重要性!如果您真的想要自己完成所有操作而不是仅仅选择其他人已经为您准备的原始系统,那么尤其如此。例如,联系英特尔并要求他们为您的CPU类型提供CPU卡!这将为您奠定 - “引脚”,中断,操作码,您的名字!
请记住硬件使一切成为可能。研究硬件。你不会后悔的。
。