我需要学习什么样的C ++才能制作自己的操作系统内核?

时间:2009-02-24 03:02:10

标签: c++ assembly operating-system

我需要学习什么样的C ++(重新编程)才能制作自己的操作系统内核? (我知道我也必须学习装配。) 编辑***像中断,键盘驱动程序,输入。***

好的每个人我都制作了一个真正的* 3基本操作系统并想分享它。

你走了。 http://bcsy.hostzi.com/BytOS.zip

在linux上编译

15 个答案:

答案 0 :(得分:8)

答案 1 :(得分:7)

我有一个用C ++编写OS内核的朋友:

http://sourceforge.net/projects/ekp/

所以这绝对有可能。 (上面的一些评论说这是不可能的。错了。)

你可能甚至想偷他的 引导和构建代码,以便您可以直接进入和 开始实施“有趣的东西”。

答案 2 :(得分:6)

鉴于您今天的选择,绝对没有理由“制造”操作系统。学习一门语言非常好,并且对Windows或Linux的变体非常熟悉。 C或C ++非常适合学习。

编辑以澄清 - 我的观点是,尝试通过制作操作系统来首次学习语言既不现实又极端疯狂。至少在C中需要一个非常好的背景,否则在尝试自己动手之前就开始制作应用程序并利用现有操作系统的强大功能。

答案 3 :(得分:6)

我建议您查看OSDev wiki。它是有关使用多种语言(包括c ++)编程OS的极好信息来源。

具体来说,see this部分告诉您几乎所有使用gcc使用c ++内核所需的内容。

最后,看看OSDev forums,那里有很多用户,从新手到经验丰富。他们通常非常乐意帮助别人(只要他们在询问之前显示他们尝试 :-P)

答案 4 :(得分:5)

只有一种,应该有助于缩小范围。首先研究CPU架构手册,可以使用英特尔for free。获取BIOS的文档将是困难的部分。

答案 5 :(得分:5)

查看nanoos,这是一个用C ++编写的操作系统项目!

回答你的问题:

  

操作系统(通常   缩写为OS或O / S)是一个   硬件和硬件之间的接口   应用;它负责   管理和协调   活动和分享   有限的计算机资源。该   操作系统充当主机   在...上运行的应用程序   机。因此,您需要学习C ++中的一些位,使您的程序(OS)能够与将要运行的硬件进行交互。

然后,它需要超越与硬件的交互并为用户提供使用。

为此,请再次返回并查看nanoos中的尝试作为起点(对于C ++学习操作系统需要的C ++学习需求)

  

nanoos中的功能:

     
      
  • C ++运行时

  •   
  • 32位保护模式内存管理器

  •   
  • CPU检测,内存检测和IDE   硬盘检测

  •   
  • IDE硬盘读取

  •   

基本上,要编写Operating System,只需查看操作系统需要做什么(或者它是什么)

如果我要编写操作系统,在考虑使用该语言之前,我会尝试了解操作系统是什么,this is a great book:操作系统设计和实现。

alt text

读一读。祝你好运

答案 6 :(得分:2)

我建议直接使用C进行内核开发。通过操作系统开发,您真的想知道“幕后发生了什么”。我觉得C ++对于低级开发隐藏得太多了。

良好的资源:

答案 7 :(得分:1)

由于许多技术原因,除了C之外,Linux没有使用任何语言进行编程。出于各种政治原因,很少有其他语言被编程为C ++。

如果您想学习关于编程内核,Minix操作系统/微内核专为学习操作系统设计而设计。它很小很小。它也用C编程。

答案 8 :(得分:1)

我建议看看nachos(不是另一个完全启发式操作系统)。这是我们在大学操作系统课程中使用的教学操作系统。

答案 9 :(得分:1)

Newos是一个很好的C ++内核。 eCosL4也是如此。 Newos是前BeOS开发人员的微内核。 L4也是一个微内核,以其令人难以置信的快速消息传递而闻名。而eCos是一个单一的内核。

答案 10 :(得分:0)

全部。这不是一项微不足道的任务,你需要学习该语言的大多数方面,我建议查找内核编程。从它的外观来看,我会在将自己嵌入语法之前查找编程语言的逻辑理论和范例。有硬件层,你需要学习更多东西,而不是从你将要在这个网站上得到的答案或谷歌搜索。

祝你好运!

答案 11 :(得分:0)

我不建议在制作单片内核时使用C ++。但是,如果您正在考虑使用微内核设计,您可以使用C ++编写服务器(网络,控制台,fs,vfs等),同时使用C / inline asm保持内核本身的紧密性。

然后再说一遍,如果你只是为了x86,那就无所谓了。

您的操作系统的设计目标是什么?

答案 12 :(得分:0)

查看linux内核邮件列表FAQ以获取常见问题(适用于任何内核开发),不要被this点气馁。

答案 13 :(得分:0)

我所知道的唯一大小的操作系统是用AS + 400操作系统OS / 400(在v3r6之后)。

没有什么可以阻止你在C ++中使用任何操作系统 - 尤其是当你回想起vanilla C无论如何都是“几乎”有效的C ++时。有趣的是在最低级别执行new / delete,因为您需要保证不泄漏等。这导致需要重新实现new函数。

我帮助做了v3r6,但它已经有13年了,我不记得毛茸茸的细节了。我不知道有关于它的任何出版物,但如果你真的感兴趣,可以尝试在http://www.parashift.com写作Marshall Cline。

(Augh。“删除”副“免费”。)

答案 14 :(得分:0)

看看L4Ka :: Pistachio,Haiku内核或Symbian的EKA2可能是一个好主意,如果你对基于C ++的“真实”内核的例子感兴趣,这些内核已经被用作复杂功能的基础 - 负载丰富的操作系统。

我发现后者结构合理,包含非常简洁易读的代码,但其他人可能不同意。但是,目前很难获得和构建(因为Symbian基金会网站目前处于离线状态),尽管Google代码上的副本为mirrored

除此之外,我发现L4Ka :: Pistachio是最容易构建的内核之一,但更高级别组件的定制和实现是另一种方式 - 尽管Genode看起来很有希望很久以前我在测试时快速构建更高级别组件的途径。