Hvilke sprog er Windows, Mac OS X og Linux skrevet i?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg spekulerede bare på, hvem ved hvilke programmeringssprog, Windows, Mac OS X og Linux består af, og hvilke sprog der bruges til hver del af operativsystemet (dvs. Kernel, plug-in-arkitektur, GUI-komponenter osv.).


Jeg antager, at der er flere sprog til hver og selvfølgelig ved jeg, at Linux-kernen er skrevet i C.


Jeg gætter her helt, at Mac OS X indeholder en masse Objective-C-kode, da det er Apples sprog hentet fra NeXT.


Windows, jeg har hørt indeholder C, C ++ og Intel Assembly. Har Linux eller Mac OS nogen forsamlingskode?


Er der også scripting sprog som Ruby, Python, osv., Der bruges af OS udviklere til scripting dele af OS? Hvilke dele af operativsystemet ville blive skrevet på hvert sprog?

Bedste reference



  • Windows: C ++, kernen er i C

  • Mac: Mål C, kernen er i C (IO PnP-delsystem er Embedded C ++)

  • Linux: De fleste ting er i C, mange brugerland apps er i Python, KDE er alle C ++



Alle kerner vil også bruge en samlingskode.

Andre referencer 1


Linux: C. Nogle dele i samling.



  [[...]] Det er mest i C, men de fleste mennesker vil ikke ringe til, hvad jeg skriver C.
  Det bruger alle tænkelige træk ved de 386, jeg kunne finde, som det var
  også et projekt til at lære mig om 386. Som allerede nævnt, det
  bruger en MMU til både personsøgning (ikke til disk endnu) og segmentering. It 's
  segmenteringen, der gør det REALLY 386 afhængig (hver opgave har a
  64Mb segment for kode & data - max 64 opgaver i 4Gb. Enhver, der har brug for
  mere end 64MB/opgave - hårde cookies). [[...]] Nogle af mine 'C' -filer
  (specifikt mm.c) er næsten lige så meget assembler som C. [[...]] I modsætning til
  minix, jeg sker også som at afbryde, så afbrydelser håndteres
  uden at forsøge at skjule årsagen bag dem. (Kilde) [2]



Mac OS X: Kakao for det meste i Objective-C. Kernel skrevet i C, nogle dele i samlingen.



  Mac OS X på kernelaget er for det meste et ældre, gratis operativsystem kaldet BSD (specifikt er det Darwin, en slags hybrid af BSD, Mach og et par andre ting) ... næsten helt C, med en smule af assembler kastet i. (Kilde) [3]

  
  Meget af kakao er implementeret i Objective-C, et objektorienteret sprog, der er sammensat til at køre med utrolig hastighed, men bruger en virkelig dynamisk runtime, der gør det unikt fleksibelt. Fordi Objective-C er et supersæt af C, er det nemt at blande C og endda C ++ i dine Cocoa applikationer.
  (Kilde) [4]



Windows: C, C ++, C #. Nogle dele i assembler.



  Vi bruger næsten udelukkende C, C ++ og C # til Windows. Nogle områder af kode er håndindstillet/håndskrevet samling. (Kilde) [5]



Unix: C. Nogle dele i samlingen. (Kilde) [6]

Andre referencer 2


Mac OS X bruger store mængder C ++ inden for nogle biblioteker, men det er ikke udsat som de 'er bange for ABI-brydningen.

Andre referencer 3


Windows: For det meste C og C ++, nogle C #

Andre referencer 4


Jeg forstår, at dette er et gammelt indlæg, men Windows er bestemt ikke skrevet i C ++. Der er masser af C ++ i det, men hvad vi teknisk definerer som et operativsystem er ikke i C ++. Windows API, Windows-kernen (begge er i det væsentlige hvad et operativsystem er) er skrevet i C. År siden fik jeg noget lækket kode til både Windows 2000 og Windows XP. Koden var ikke næsten fuldstændig nok til at kompilere kernen eller API'en, men vi kunne kompilere individuelle programmer og tjenester. Vi kunne f.eks. Med succes kompilere Notepad.exe, mspaint.exe og spoolsv.exe-tjenesten (print spooler). Alle skrevet i C. Jeg har ikke set igen, men jeg er sikker på, at lækket kode stadig overlever som torrentfiler derude, der muligvis stadig er tilgængelige.

Andre referencer 5



  • Windows: C ++

  • linux: C

  • mac: Mål C

  • android: JAVA, C, C ++

  • Solaris: C, C ++

  • iOS 7: Objective-C, Swift, C, C ++


Andre referencer 6


Du har ret MacOSX har Objective-C i kernen.


Windows C ++


Linux C


Om scriptningssprogene, nej, de er temmelig meget høje.

Andre referencer 7


Jeg har læst eller hørt, at Mac OS X er skrevet mest i Objective-C med nogle af de lavere niveauer, som kerne- og hardware-enhedsdriverne skrevet i C. Jeg mener, at Apple 'spiser sin egen hundemat ', hvilket betyder, at de skriver Mac OS X ved hjælp af deres egne Xcode Developer Tools. GCC (GNU Compiler Collection) compiler-linker er unix kommandolinjeværktøjet, som xCode bruges til det meste af dets kompilering og/eller sammenkobling af eksekverbare filer. Blandt andre mulige sprog ved jeg, at GCC compilerer kildekoden fra C, Objective-C, C ++ og Objective-C ++-sprogene. [7] [8]

Andre referencer 8


Linuxkernen er for det meste skrevet i C (og en smule monteringssprog, jeg kan forestille mig), men nogle af de vigtige brugerrumsværktøjer (programmer) er skalskripter skrevet i Bashs skriptsprog. Ud over det er det slags svært at definere 'Linux', da du grundlæggende bygger et Linux-system ved at vælge bits og stykker, du vil have og sætte dem sammen, og afhængigt af hvad en enkelt Linux-bruger ønsker, kan du få stort set alle involverede sprog. (Som Paul sagde, spiller Python og C ++ vigtige roller)

Andre referencer 9


Som en tilføjelse til kernen i Mac OS X var Finder ikke blevet skrevet i Objective-C før Snow Leopard. I Snow Leopard blev det skrevet i Cocoa, Objective-C

Andre referencer 10


Se under overskriften One Operating System, der kører på flere platforme, hvor det hedder: [9]


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

Andre referencer 11


Windows er naturligvis ikke skrevet i C # (!)


Du skal blot se kildekoden til Windows, og du vil se ...

Andre referencer 12


Wow !!! 9 års spørgsmål, men jeg har lige stødt på en række interne artikler om Windows Command Line-historie, og jeg tror, ​​at en del af det kan være relevant Windows side af spørgsmålet: [10]



  For dem der er interesseret i sådanne ting: Mange har spurgt, om Windows er skrevet i C eller C ++. Svaret er, at - på trods af NTs objektbaserede design - ligesom de fleste OS'er, er Windows næsten helt skrevet i 'C'. Hvorfor? C ++ introducerer en omkostning i form af hukommelsesfodaftryk og kodeudførelse overhead. Selv i dag kan de skjulte omkostninger ved kode skrevet i C ++ være overraskende, men tilbage i slutningen af ​​1990'erne, når hukommelsen koster $ 60/MB (ja ... $ 60 pr. MEGABYTE! ), den skjulte hukommelse omkostningerne til vtables osv. var væsentlige. Desuden kan omkostningerne ved indirektion og objekt-dereferencing med virtuelt metode føre til meget betydelige effektivitets- og skala-bøder for C ++-kode på det tidspunkt. Mens man stadig skal være forsigtig, skal præstationen overhead af moderne C ++ på moderne computere er meget mindre bekymring, og er ofte en acceptabel afvejning i betragtning af dets sikkerhed, læsbarhed og vedligeholdelsesfordele. Derfor opdaterer vi stadig konsolens kode til moderne C ++.