it-swarm.com.de

In welchen Sprachen sind Windows, Mac OS X und Linux geschrieben?

Ich habe mich nur gefragt, wer weiß, aus welchen Programmiersprachen Windows, Mac OS X und Linux besteht und welche Sprachen für jeden Teil des Betriebssystems verwendet werden (dh Kernel, Plug-in-Architektur, GUI-Komponenten usw.).

Ich gehe davon aus, dass es für jede Sprache mehrere Sprachen gibt und natürlich weiß ich, dass der Linux-Kernel in C geschrieben ist.

Ich vermute, dass Mac OS X eine Menge Objective-C-Code enthält, da es sich um Apples von NeXT abgeleitete Sprache handelt.

Windows, wie ich gehört habe, enthält C, C++ und Intel Assembly. Enthält Linux oder Mac OS Assembly-Code?

Gibt es auch Skriptsprachen wie Ruby, Python usw., die von den Betriebssystementwicklern zum Erstellen von Skripts für Teile des Betriebssystems verwendet werden? Welche Teile des Betriebssystems würden in jeder Sprache geschrieben?

252
Brock Woolf
  • Windows: C++, Kernel ist in C
  • Mac: Ziel C, Kernel ist in C (IO PnP-Subsystem ist Embedded C++)
  • Linux: Die meisten Dinge sind in C, viele Userland-Apps sind in Python, KDE ist alles in C++

Alle Kernel verwenden auch Assembler-Code.

246
Paul Betts

Linux: C. Einige Teile in Assembly.

[...] Es ist meistens in C, aber die meisten Leute würden nicht nennen, was ich schreibe C. Es nutzt alle erdenklichen Funktionen des 386, die ich finden konnte, da es auch ein Projekt war, um mich über den 386 zu unterrichten. Wie bereits erwähnt verwendet es eine MMU für Paging (noch nicht auf Festplatte) und Segmentierung. Es ist die Segmentierung, die es WIRKLICH 386 abhängig macht (jede Aufgabe hat ein 64-MB-Segment für Code und Daten - maximal 64 Aufgaben in 4 GB. Jeder, der mehr als 64 MB/aufgabenfeste Cookies benötigt). [...] Einige meiner "C" -Dateien (speziell mm.c) sind fast so viel Assembler wie C. [...] Im Gegensatz zu Minix passieren bei mir auch LIKE-Interrupts, sodass Interrupts behandelt werden, ohne zu versuchen, sich zu verstecken der Grund dahinter. (Quelle)

Mac OS X: Cocoa hauptsächlich in Objective-C. Kernel in C geschrieben, einige Teile in Assembly.

Auf der Kernel-Ebene ist Mac OS X größtenteils ein älteres, freies Betriebssystem namens BSD (insbesondere Darwin, eine Art Hybrid aus BSD, Mach und ein paar anderen Dingen) von Assembler geworfen. (Quelle)

Ein Großteil von Cocoa ist in Objective-C implementiert, einer objektorientierten Sprache, die so kompiliert ist, dass sie mit unglaublicher Geschwindigkeit ausgeführt wird, jedoch eine wirklich dynamische Laufzeit verwendet, die sie einzigartig flexibel macht. Da Objective-C eine Obermenge von C ist, ist es einfach, C und sogar C++ in Ihre Cocoa-Anwendungen zu mischen. (Quelle)

Windows: C, C++, C #. Einige Teile in Assembler.

Wir verwenden fast ausschließlich C, C++ und C # für Windows. Einige Codebereiche sind handgestimmt/handgeschriebene Assembler. (Quelle)

Unix: C. Einige Teile in Assembly. (Quelle)

89
Pacerier

Mac OS X verwendet große Mengen von C++ in einigen Bibliotheken, wird jedoch nicht angezeigt, da sie Angst haben, dass das ABI zusammenbricht.

13
alex strange

Ich verstehe, dass dies ein alter Beitrag ist, aber Windows ist definitiv nicht in C++ geschrieben. Es steckt viel C++ darin, aber was wir technisch als Betriebssystem definieren, ist nicht in C++. Die Windows-API, der Windows-Kernel (beides ist im Wesentlichen das, was ein Betriebssystem ist), wurde in C geschrieben. Vor einigen Jahren erhielt ich einen durchgesickerten Code für Windows 2000 und Windows XP. Der Code war bei weitem nicht vollständig genug, um den Kernel oder die API zu kompilieren, aber wir konnten einzelne Programme und Dienste kompilieren. Beispielsweise konnten wir Notepad.exe, mspaint.exe und den Dienst spoolsv.exe (Druckspooler) erfolgreich kompilieren. Alles in C geschrieben. Ich habe nicht noch einmal nachgesehen, aber ich bin sicher, dass durchgesickerter Code immer noch als Torrent-Dateien existiert, die möglicherweise noch verfügbar sind.

9
Duke Bishop
  • windows: C++
  • linux: C
  • mac: Ziel C
  • Android: Java, C, C++
  • Solaris: C, C++
  • iOS 7: Objective-C, Swift, C, C++
8
sonsha

Windows: Meist C und C++, einige C #

8
Larry Osterman

Sie haben Recht, MacOSX hat Objective-C im Kern.

Windows C++

Linux C

Über die Skriptsprachen, nein, sie haben ein ziemlich hohes Niveau.

6
OscarRyz

Ich habe gelesen oder gehört, dass Mac OS X größtenteils in Objective-C geschrieben ist, mit einigen der untergeordneten Komponenten, wie dem Kernel, und Hardware-Gerätetreibern, die in C geschrieben sind. Ich glaube, dass Apple "iss (n) sein eigenes Hundefutter", was bedeutet, dass sie Mac OS X mit ihren eigenen Xcode Developer Tools schreiben. Der GCC (GNU Compiler Collection) Compiler-Linker ist Das Unix-Kommandozeilen-Tool, das xCode für die meisten seiner Kompilierungen und/oder Verknüpfungen von ausführbaren Dateien verwendet hat.

5
Patrick Cassell

Beeindruckend!!! 9 Jahre der Frage, aber ich bin gerade auf eine Reihe von internen Artikel zum Windows-Befehlszeilenverlauf gestoßen, und ich denke, ein Teil davon könnte für die Windows-Seite der Frage relevant sein:

Für diejenigen, die sich für solche Dinge interessieren: Viele haben gefragt, ob Windows in C oder C++ geschrieben ist. Die Antwort ist, dass Windows - trotz des objektbasierten Designs von NT - wie die meisten Betriebssysteme fast vollständig in C geschrieben ist. Warum? C++ verursacht Kosten in Bezug auf den Speicherbedarf und den Aufwand für die Codeausführung. Sogar heute können die versteckten Kosten von Code, der in C++ geschrieben wurde, überraschend sein, aber in den späten 1990er Jahren, als der Speicher ~ $ 60/MB kostete (ja… $ 60 pro MEGABYTE !), der versteckte Speicher die kosten für vtables etc. waren erheblich. Darüber hinaus könnten die Kosten für die Indirektion von Aufrufen mit virtuellen Methoden und die Dereferenzierung von Objekten zu dieser Zeit erhebliche Performance- und Skalierungsnachteile für C++ - Code nach sich ziehen. Auch wenn man noch vorsichtig sein muss, ist der Leistungsaufwand für modernes C++ auf modernen Computern viel weniger von Belang und stellt in Anbetracht der Vorteile für Sicherheit, Lesbarkeit und Wartbarkeit oft einen akzeptablen Kompromiss dar. Deshalb sind wir hier Ständige Aktualisierung des Konsolencodes auf modernes C++.

4
adem

Der Linux-Kernel ist größtenteils in C (und ein bisschen Assembler, wie ich mir vorstellen kann) geschrieben, aber einige der wichtigen Userpace-Dienstprogramme (Programme) sind Shell-Skripte, die in der Skriptsprache Bash geschrieben sind. Darüber hinaus ist es schwierig, "Linux" zu definieren, da Sie im Grunde ein Linux-System erstellen, indem Sie die gewünschten Teile auswählen und zusammenfügen. Je nachdem, was ein einzelner Linux-Benutzer wünscht, können Sie so ziemlich jede Sprache einbinden. (Wie Paul sagte, spielen Python und C++ wichtige Rollen)

4
David Z

Siehe unter der Überschrift Ein Betriebssystem auf mehreren Plattformen wo es heißt:

Most of the source code for Windows NT is written in C or C++.
3
pcunite

Als Ergänzung zum Kern von Mac OS X war Finder vor Snow Leopard nicht in Objective-C geschrieben worden. In Snow Leopard wurde es in Cocoa, Objective-C, geschrieben

3

Windows ist offensichtlich nicht in C # (!) Geschrieben

Sehen Sie einfach den Quellcode von Windows und Sie werden sehen ...

1
sef45