操作系统开发入门有哪些资源? [英] What are some resources for getting started in operating system development?

查看:23
本文介绍了操作系统开发入门有哪些资源?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

One thing I've always wanted to do is develop my very own operating system (not necessarily fancy like Linux or Windows, but better than a simple boot loader which I've already done).

我很难找到资源/指南来帮助您完成编写简单的Hello World".操作系统.

I'm having a hard time finding resources/guides that take you past writing a simple "Hello World" OS.

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

I know lots of people will probably recommend I look at Linux or BSD; but the code base for systems like that is (presumably) so big that I wouldn't know where to start.

有什么建议吗?

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

Update: To make it easier for people who land on this post through Google here are some OS development resources:

Linux From Scratch(感谢 John)

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

SharpOS (C# Operating System) (Thanks lomaxx)

Minix3Minix2(感谢 Mike)

Minix3 and Minix2 (Thanks Mike)

OS Dev Wiki论坛(感谢史蒂夫)

BonaFide(感谢史蒂夫)

布兰(感谢史蒂夫)

推出自己的玩具 UNIX 克隆操作系统(感谢 Steve)

Broken Thorn OS 开发系列

其他资源:

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

I found a nice resource named 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"

2008 年 11 月 14 日更新

我在 Freebyte's Guide to...Free and non-free Operating Systems 链接到 OSKit 和 ExOS 库等工具包.这些似乎对于开始操作系统开发非常有用.

I found some resources at Freebyte's Guide to...Free and non-free Operating Systems that links to kits such as OSKit and ExOS library. These seem super useful in getting started in OS development.

2009 年 2 月 23 日更新

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

Ric Tokyo recommended nanoos in this question. Nanoos is an OS written in C++.

2009 年 3 月 9 日更新

Dinah 为有抱负的操作系统开发人员提供了一些有用的 Stack Overflow 讨论:创建中的障碍自定义操作系统 讨论您在开发操作系统时可能遇到的陷阱OS Development 是一个更笼统的讨论.

Dinah provided some useful Stack Overflow discussion of aspiring OS developers: Roadblocks in creating a custom operating system discusses what pitfalls you might encounter while developing an OS and OS Development is a more general discussion.

2009 年 7 月 9 日更新

LB 提供了一个链接到 Pintos 项目,一个为学习操作系统开发的学生设计的教育操作系统.

LB provided a link to the Pintos Project, an education OS designed for students learning OS development.

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

我偶然发现了一个来自伯克利的 在线操作系统课程,其中有 23 个讲座.

I stumbled upon an online OS course from Berkley featuring 23 lectures.

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

TomOS is a fork of MikeOS that includes a little memory manager and mouse support. As MikeOS, it is designed to be an educational project. It is written in NASM assembler.

2009 年 8 月 4 日更新

我找到了 幻灯片和其他材料与上面列出的在线伯克利讲座.

I found the slides and other materials to go along with the online Berkeley lectures listed above.

2009 年 8 月 23 日更新

stackoverflow 上的所有问题标记为 osdev

All questions tagged osdev on stackoverflow

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

OS/161 is an academic OS written in c that runs on a simulated hardware. This OS is similar in Nachos. Thanks Novelocrat!

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

tangurena recommends http://en.wikipedia.org/wiki/MicroC/OS-II, an OS designed for embedded systems. There is a companion book as well.

Linux 内核开发 推荐 Robert Love通过安德斯.这是广受好评的内部人士对 Linux 内核的看法".

Linux Kernel Development by Robert Love is suggested by Anders. It is a "widely acclaimed insider's look at the Linux kernel."

2009 年 9 月 18 日更新

感谢 Tim S. Van Haren 告诉我们关于 Cosmos,一个完全编写的操作系统在 C# 中.

Thanks Tim S. Van Haren for telling us about Cosmos, an OS written entirely in c#.

tgiphil 向我们介绍了托管操作系统联盟 (MOSA) 框架,一组工具、规范和源代码,以促进基于通用中间语言的托管操作系统的开发."

tgiphil tells us about 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 的 VS 设置指南2005OSDev 的 VS 部分.

Steve found a couple resources for development on windows using Visual Studio, check out BrokenThorn's guide setup with VS 2005 or OSDev's VS Section.

2012 年 9 月 5 日更新

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

kerneltrap.org is no longer available. The linux kernel v0.01 is available from kernel.org

2012 年 12 月 21 日更新一个基本的操作系统开发教程,设计为一个学期的项目.它指导您构建具有基本组件的操作系统.对初学者来说非常好的开始.相关论文.谢谢斯鲁扬!

Updated 12/21/2012 A basic OS development tutorial designed to be a semester's project. It guides you through to build an OS with basic components. Very good start for beginners. Related paper. Thanks Srujan!

2013 年 11 月 15 日更新

编写一个简单的操作系统从零开始.谢谢詹姆斯摩尔!

2013 年 12 月 8 日更新

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

2014 年 3 月 18 日更新

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

2016 年 9 月 12 日更新

编写自己的玩具操作系统

2016 年 12 月 10 日更新

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

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

推荐答案

这个后面有很多链接 简要概述为 X86 平台编写操作系统所涉及的内容.

There are a lot of links after this brief overview of what is involved in writing an OS for the X86 platform.

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

The link that appears to be most promising (www.nondot.org/sabre/os/articles) is no longer available, so you'll need to poke through the Archive.org version to read it.

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

At the end of the day the bootloader takes the machine code of the kernel, puts it in memory, and jumps to it. You can put any machine code in the kernel that you want, but most C programs expect an OS so you'll need to tell your compiler that it won't have all that, or the bootloader has to create some of it.

然后内核会完成所有繁重的工作,我怀疑它就是您想要的示例内核.但是,在拥有一个Hello world"内核与拥有一个加载命令解释器、提供磁盘服务以及加载和管理程序的内核之间,还有很长的路要走.

The kernel then does all the heavy lifting, and I suspect it's the example kernel you want. But there's a long way to go between having a kernel that says, "Hello world" to having a kernel that loads a command interpretor, provides disk services, and loads and manages programs.

您可能需要考虑订阅 ACM 以访问他们较早的文献 - 在 80 年代末和 90 年代初早期的计算杂志中有很多关于如何创建替代操作系统.这个时代也有可能已经绝版的书籍.您可以通过查找这些杂志的索引(可在该网站上找到 - 单击杂志名称旁边的索引")然后四处寻找有副本的人,从而免费获得相同的信息.

You might want to consider subscribing to ACM to get access to their older literature - there are lots of articles in the late 80's and early 90's in early computing magazines about how to create alternative OSs. There are likely books that are out of print from this era as well. You might be able to get the same information for free by looking up the indexes of those magazines (which are available on that site - click "index" near the magazine name) and then asking around for people with a copy.

最后,我知道 usenet 已经死了(因为互联网末日的预言家这么说),但你会发现那个时代的许多崎岖不平的老专家仍然生活在那里.您应该搜索 google 群组(他们有 dejanews 的旧存储库),我希望您会发现很多人在十年或 1.5 年前提出与您现在所问的相同的问题.当 Linus Torvalds 最初开发 linux 时,您甚至可能会遇到许多寻求帮助的问题.如果搜索没有找到任何内容,请在相应的新闻组中询问(可能以 comp.arch 开头,但搜索名称中包含 OS 的新闻组).

Lastly, I know that usenet is dead (for so sayeth the prophets of internet doom) but you'll find that many of the craggy old experts from that era still live there. You should search google groups (they have dejanews's old repository) and I expect you'll find many people asking the same questions a decade or 1.5 ago that you're asking now. You may even run across Linus Torvalds' many queries for help as he was developing linux originally. If searches don't bring anything up, ask in the appropriate newsgroup (probably starts with comp.arch, but search for ones with OS in the name).

这篇关于操作系统开发入门有哪些资源?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆