为什么人们不使用c ++来制作操作系统

Ram*_*lol 19 c++ unix macos programming-languages

为什么Linux,MacOS和其他操作系统用C编写而不是用C++编写?C++ C不具备新功能吗?

jal*_*alf 22

C++广泛用于操作系统.Windows的大部分内容都写在其中.

但操作系统不是一个整体的blob.它有不同的层和组件.由于没有可移植的方法来实现它们,所以必须在汇编中编写一些零碎的部分:这是对CPU和其他硬件的低级处理,这是在更高级编程语言中抽象出来的.

然后有一个层可以用更高级别的语言编写,但它不能依赖其他代码.它提供了所需的下一层的几个基本的服务,所以它有刚工作自身.

可以在那里使用C++ ,但是有一些限制.C++要求运行时库来实现相当多的功能(例外处理,例如),它可能无法使用(或可能不希望使可在该水平),所以C可以是一个更好的解决方案有.(虽然另一种选择是使用C++,但只是避免使用依赖于此缺失功能的功能)

但是越远,您就可以获得更多的抽象和OS服务以及运行时库,并且更高级的语言也变得合适.

所以C++就可以了,在操作系统中被广泛使用.只是不是每个级别.

  • +1给出一个答案(一点点)洞察操作系统是如何制作的. (6认同)

Tyl*_*nry 20

非常简短的回答是任何意义不完全新的操作系统已经建立在所有因为C++在90年代后期达到成熟.而使用C++本身并不是完全重写现有成功操作系统的充分理由.

  • iOS起源于Apple操作系统的精简版本,后者又基于Unix.所以不,它不是一个全新的操作系统.其他智能手机操作系统可能是,但大多数都是以某种方式基于Linux - 如果我错了,请纠正我. (2认同)

Eva*_*ran 16

如果你访问osdev.org,你会发现许多确实使用c ++进行OS开发.事实上,维基中有一些页面 专门用于展示这样做的基础知识.许多业余爱好者操作系统(包括我自己的操作系统)都是用c ++编写的,就功能而言,它取得了相当大的成功.

但是,在c ++被认为是成熟之前,主要的操作系统,如windows,linux和osx.改进代码以支持新语言是没有意义的(尽管说实话,在内核中获得大多数c ++并不困难,异常和rtti是唯一真正的烦恼).

有些人可能会说,因为在内核中获得rtti和异常并非易事,所以使用c ++没有很大的优势.我不同意,c ++是一种用于内核开发的优秀语言.模板是一个了不起的工具,用于编写高效的通用代码.甚至诸如类型安全链表之类的东西也很容易使用c ++实现,而不需要除模板之外的任何东西.此外,内核中的许多东西本质上都是面向对象的任务,而你可以用c清楚地模拟这些东西,为什么不使用更容易建模的语言.这些只是其中的一小部分.


dmc*_*kee 11

问题: "您认为c ++的哪些新功能可以开发更快,更安全或更优化或<其他酷炫功能>操作系统?"

第二个问题: " c ++真正成熟以来,开发了哪些主要操作系统?"

(注意,一个可能的答案是Be,我认为它确实使用了c ++ ...啊,维基百科说API是c ++,这不是一回事.)

  • Q2:Symbian .... (6认同)

Joe*_*orn 5

C++曾经是"c +新功能".但那是很久以前的事了.当然,它在某种程度上取决于您的C++编译器,但语言已经发展,现在也包含重要的语法差异."c +新功能"过度简化了这种情况.

但是你的问题前提也是错误的 - 据报道,linux和OS X不仅有大量的C代码,而且还有C++和原始汇编.

  • @Javier os>内核 (8认同)
  • Linux和MacOS都没有内核中的任何C++ (3认同)
  • @Javier:gcc民众最近投票允许在gcc中使用c ++代码.因此,虽然我认为你在历史上是正确的......但它们是一个变化的时代. (2认同)