Windows、Mac OS X和Linux是用什么语言编写的?

我只是想知道谁知道Windows、Mac OS X和Linux是由哪些编程语言组成的,以及操作系统的每个部分都使用了哪些语言(例如:内核、插件架构、GUI组件等)。

我假设每种都有多种语言,显然我知道Linux内核是用C编写的。

我完全猜测Mac OS X包含大量Objective-C代码,因为它是苹果从NeXT派生的语言。

Windows,我听说包含C, c++和英特尔汇编。Linux或Mac OS是否包含任何汇编代码?

还有,是否有像Ruby, Python之类的脚本语言被操作系统开发者用来编写部分操作系统的脚本?操作系统的哪些部分是用每种语言编写的?

463459 次浏览

Windows:主要是C和c++,还有一些c#

你说得对,MacOSX的核心是Objective-C。

Windows c++

Linux C

关于脚本语言,不,它们相当高级。

  • Windows: c++,内核是C语言
  • Mac: Objective C,内核是C (IO PnP子系统是嵌入式c++)
  • Linux:大多数东西都是C语言,许多用户应用程序是Python语言,KDE都是c++语言

所有内核都将使用一些汇编代码。

Linux内核主要是用C语言编写的(我想也有一点汇编语言),但一些重要的用户空间实用程序(程序)是用Bash脚本语言编写的shell脚本。除此之外,很难定义“Linux”,因为您基本上是通过挑选您想要的部分并将它们组合在一起来构建Linux系统的,并且根据单个Linux用户的需要,您可以获得几乎任何涉及到的语言。(正如Paul所说,Python和c++扮演着重要的角色)

我读过或听说Mac OS X主要是用Objective-C编写的,其中一些较低级的部分,如内核和硬件设备驱动程序是用c编写的。我相信苹果“吃自己的狗粮”,这意味着他们用自己的Xcode开发工具编写Mac OS X。GCC(GNU编译器集合)编译链接器是unix命令行工具,xCode使用它来编译和/或链接可执行文件。在其他可能的语言中,我知道GCC编译来自C、Objective-C、c++和objective - c++语言的源代码。

Mac OS X在一些库中使用了大量的c++,但由于担心ABI被破坏,所以没有公开。

Linux: C.组装中的部分部件。

< p >[…大部分是用C语言写的,但大多数人不会把我写的东西叫做C语言。 它使用了我所能找到的386的所有功能 还有一个教我386的项目。如前所述,它 使用MMU,用于分页(还没有到磁盘)和分段。这是 分割使得它真的386依赖(每个任务都有一个 64Mb代码段&data -最多64个任务在4Gb。有人需要吗 超过64Mb/任务-棘手的cookie)。[…我的一些“c”文件 (特别是mm.c)几乎和c一样多的汇编器[…])与 minix,我也恰好喜欢中断,所以中断被处理 不要试图隐藏背后的原因。(源) < / p >

Mac OS X: Cocoa主要在Objective-C中。内核用C语言编写,部分部件用汇编。

Mac OS X,在内核层,基本上是一个更老的、叫做BSD的自由操作系统(具体来说,它是Darwin,一种BSD、Mach和其他一些东西的混合体)……几乎全是C语言,加上一点汇编程序。(源)

大部分Cocoa是在Objective-C中实现的,这是一种面向对象的语言,它被编译成以令人难以置信的速度运行,但使用了真正的动态运行时,使其独特的灵活性。因为Objective-C是C的超集,所以很容易将C甚至c++混合到Cocoa应用程序中。 (源) < / p >

Windows: C, c++, c#。汇编程序中的部分部件。

对于Windows,我们几乎全部使用C、c++和c#。一些代码区域是手工调优/手工编写的汇编。(源)

Unix: C.汇编中的部分部件。(源)

作为Mac OS X核心的一个补充,Finder在Snow Leopard之前还没有用Objective-C编写。在Snow Leopard中,它是用Cocoa Objective-C编写的

我知道这是一篇老文章,但Windows绝对不是用c++写的。其中有很多c++,但我们技术上定义的操作系统并不在c++中。Windows API、Windows内核(这两者本质上都是操作系统)都是用c语言编写的。几年前,有人给了我一些Windows 2000和Windows XP的泄露代码。代码还不够完整,不足以编译内核或API,但我们能够编译单个程序和服务。例如,我们能够成功地编译Notepad.exe、mspaint.exe和spoolsv.exe服务(打印后台处理程序)。都是用c写的,我没有再看一遍,但我确信泄露的代码仍然以种子文件的形式存在,可能仍然可用。

请看标题一个操作系统在多个平台上运行下面的声明:

Most of the source code for Windows NT is written in C or C++.
  • windows: c++
  • linux: C
  • mac: Objective C
  • android: JAVA, C, c++
  • Solaris: C, c++
  • iOS 7: Objective-C,Swift,C, c++

哇! !9年的问题,但我刚刚在Windows命令行历史上遇到了一系列内部文章,我认为其中一些可能与问题的Windows方面有关:

对于那些关心这些事情的人:许多人问过Windows是用C还是c++编写的。答案是——尽管NT是基于对象的设计——像大多数操作系统一样,Windows几乎完全是用“C”编写的。为什么?c++引入了内存占用和代码执行开销方面的成本。即使在今天,用c++编写代码的隐藏成本可能会令人惊讶,但在20世纪90年代末,当内存成本约为60美元/MB(是的……每个兆字节! $60)时,虚表等的隐藏内存成本是显著的。此外,虚拟方法调用间接和对象解引用的成本可能会导致非常显著的性能。那时c++代码的规模惩罚。尽管人们仍然需要小心,但现代c++在现代计算机上的性能开销已经不是什么大问题了,考虑到它的安全性、可读性和可维护性优势,这通常是一个可以接受的权衡……这就是为什么我们不断地将控制台的代码升级到现代c++。