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

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

问题描述

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

我很难找到使您摆脱编写简单的"Hello World" OS的资源/指南.

我知道很多人可能会建议我使用Linux或BSD;但是这类系统的代码库很大(大概)很大,我不知道从哪里开始.

有什么建议吗?

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

其他资源:

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

更新11/14/08

我在 Freebyte的...免费和非免费操作系统指南中找到了一些资源链接到套件,例如OSKit和ExOS库.这些似乎对于开始OS开发非常有用.

更新2/23/09

Ric东京推荐问题中一个>. Nanoos是用C ++编写的操作系统.

更新3/9/09

Dinah对有抱负的OS开发人员提供了一些有用的Stack Overflow讨论:定制操作系统讨论开发操作系统时可能遇到的陷阱 和 OS开发是一个较为笼统的讨论.

更新7/9/09

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

更新时间为2009年7月27日(仍然很强大!)

我偶然发现了Berkley的在线OS课程,其中有23讲

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

更新8/4/09

我发现幻灯片和其他材料都可以使用上面列出的在线伯克利讲座.

更新8/23/09

在stackoverflow上所有标记为osdev的问题

OS/161 是一种用c语言编写的学术操作系统,可在模拟环境下运行硬件.此操作系统在Nachos中类似.谢谢Novelocrat!

tangurena建议 http://en.wikipedia.org/wiki/MicroC/OS- II ,这是专为嵌入式系统设计的操作系统.还有一本同伴书.

> 建议使用Robert Love的

Linux内核开发由Anders.这是广受业内人士好评的Linux内核."

更新9/18/2009

感谢Tim S. Van Haren向我们介绍了完全编写的 Cosmos 在C#中.

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

更新9/24/2009

Steve找到了一些使用Visual Studio在Windows上进行开发的资源,请查看 BrokenThorn的VS指南设置2005 OSDev的VS部分.

2012年9月5日更新

kerneltrap.org不再可用.可以从 kernel.org

2012年12月21日更新 基本的OS开发教程旨在作为一个学期的项目.它指导您构建具有基本组件的操作系统.对于初学者来说是一个很好的开始.相关纸张.谢谢Srujan!

2013年11月15日更新

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

2013年12月8日更新

如何制作计算机操作系统谢谢ddtoni!

更新3/18/2014

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

2016年9月12日更新

编写自己的玩具操作系统

2016年12月10日更新

编写简单的操作系统—从头开始(感谢@Tyler C)

解决方案

简要概述有关为X86平台编写操作系统的内容.

看起来最有前途的链接(www.nondot.org/sabre/os/articles)不再可用,因此您需要拨通

您可能要考虑订阅ACM以获取其较早的文献-在80年代末和90年代初,早期的计算机杂志上有很多关于如何

最后,我知道Usenet已经死了(互联网厄运的先知可以这么说),但是您会发现许多来自那个时代的崎old老专家仍然生活在那里.您应该搜索Google网上论坛(他们拥有dejanews的旧存储库),并且我希望您会发现十年前或1.5年前有很多人在问同样的问题.您甚至可能在Linus Torvalds最初开发Linux时遇到了许多查询以寻求帮助.如果搜索没有显示任何内容,请在适当的新闻组中进行询问(可能以comp.arch开头,但是搜索名称为OS的新闻组.)

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).

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

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.

Any suggestions?

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

Other resources:

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"

Updated 11/14/08

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.

Updated 2/23/09

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

Updated 3/9/09

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.

Updated 7/9/09

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

Updated 7/27/09 (Still going strong!)

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

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.

Updated 8/4/09

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

Updated 8/23/09

All questions tagged osdev on stackoverflow

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

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

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

Updated 9/18/2009

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

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."

Update 9/24/2009

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.

Updated 9/5/2012

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

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!

Updated 11/15/2013

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

Updated 12/8/2013

How to make a computer operating system Thanks ddtoni!

Updated 3/18/2014

ToAruOS an OS built mostly from scratch, including GUI

Updated Sept 12 2016

Writing your own Toy Operating System

Updated Dec 10 2016

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

解决方案

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

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.

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.

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.

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.

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天全站免登陆