Kann man einen Kernel in C++ schreiben?

L

Linthorul

Arch Luxer
Ist es mit C++ möglich einen (evtl. unix-kombatiblen) Kernel zu schreiben? Oder geht das nur mit z.B. C?

Und wenn ja, ist das sinnvoll oder weniger sinnvoll?
 
Es gibt ein unixoides Betriebssystem namens "go", das in c++ geschrieben ist. Soweit ich weiss, stammt es von einer Forschungsgruppe am Imperial College London. Ich finde nur zur Zeit keinen Link - ist auch kein so markanter Name zum Suchen...
 
Ist es mit C++ möglich einen (evtl. unix-kombatiblen) Kernel zu schreiben? Oder geht das nur mit z.B. C?

Und wenn ja, ist das sinnvoll oder weniger sinnvoll?

Du kannst theoretisch mit jeder Sprache einen Kernel/Betriebssystem schreiben. Viel wichtiger als welche Sprache du verwendest ist dein Compiler. Probleme wirst du aber spätestens bei den Protected sowie den Long Mode vom Kernel bekommen, hier sind Sprachen die keinen zugang zur Hardware bieten unbrauchbar. Windows Vista ist so weit ich weiß auch in C++ geschrieben.

Also merke: Wichtiger als deine Sprache ist der Compiler, nicht mit jedem Compiler lassen sich Betriebssysteme erstellen :)

Zu deiner Frage eine klare Antwort :) :
Ja Mann aber auch Frau :) kann mit C++ einen Kernel schreiben.

In diesem Sinne schönes Wochenende :)
 
Danke an euch beide.

Wisst ihr auch, ob das sinnvoll ist, einen Kernel in C++ zu schreiben oder ist das mit C sinnvoller?
 
Zuletzt bearbeitet von einem Moderator:
Da der Kernel Harwarenah sein muss, ist natürlich Assembler am besten geeignet.
Verschiedene Plattformen brauchen verschiedenen Maschinencode.
Natürlich ist der Programmieraufwand zu optimieren.
Und c oder c++ ( nicht gerade mit C# Dings Da Bumsda Gerassel ;) ) sind natürlich auch eine Option.
c++ und c unterscheiden sich nach der Kompilierung nicht mehr wirklich.

Wurde ja im Prinzip schon gesagt

Gruß Wolfgang
 
Danke an euch für die vielen Informationen. Jetzt bin ich wieder informierter :-)

Noch eine Frage:
Wieso sind denn die meisten Kernel in C und nicht in C++ geschrieben? z.B. Linux, BSD...
 
Die BSDs sind es in meinen Augen in erster Linie, weil C damals, als BSD geboren wurde, state of the art war und darüber hinaus als Hochsprache über die Einbindung von Assembler die Low Level Programmierung ermöglichte. Open-, Net- und FreeBSD sind direkte Fortführungen dieses Quellcodes. Viele weitere unixoide OS wurden nicht viel später geschrieben (80er Jahre) und haben die ja gut funktionierende Sprache übernommen. C++ ist neueren Datums und war erst Ende der 80er einigermaßen "fest" (Sprachdefinition). Es sind in den 90ern einfach nicht mehr so viele OS geschrieben worden. Linux hat mMn ebenfalls einfach weil es erstmal naheliegend war und "keine großen Planungen erforderte" (sondern "einfach nur die Übernahme der bestehenden Unix-Standards") C genommen (bitte nicht falsch verstehen - es ist immer noch verdammt viel Arbeit - aber wenn man's in C++ gemacht hätte wäre es noch viel mehr geworden - und immerhin startete das Projekt ja als ein Hobby). Großer Pluspunkt für C ist auch, dass es dafür Compiler für so ziemlich jede Hardwareplattform gibt.

Neuere OS sind durchaus nicht (nur) in C geschrieben: NextStep, aus dem sich später Darwin (Unterbau von MacOS X, basierend auf FreeBSD) entwickelte ist z.B. zum Teil in C++ geschrieben.
 
Ich schreibe mir gerade einen Kernel in HTML. Frohes Fest ;)
 
Man koennte ja versuchen, einen in PHP zu schreiben. :-P
 
Nu ja ... wenn ihr einen neuen Compiler entwerft, der die ganzen Interpretersprachen kompiliert ... nicht erst zur Laufzeit ... möglich wärs.
 
Nu ja ... wenn ihr einen neuen Compiler entwerft, der die ganzen Interpretersprachen kompiliert ... nicht erst zur Laufzeit ... möglich wärs.

Und genau sowas gibt es schon lange für die meisten ernstzunehmenden Scriptsprachen.

By the way, auch scriptsprachen werden kompiliert, aber halt nicht in eine Sprache die die CPU versteht, sondern in eine Sprache die eine andere Maschine - nämlich der eigentliche Interpreter - versteht.

Perl bspw. kompiliert den Code erst in einen sogenannten Parsing Tree, der daraufhin dem Interpreter übergeben wird, davon kriegt der user nur nichts mit.
 

Ähnliche Themen

Kernel Kaltstart / reboot?

Linux System Admin (w/m/g)/innovatives SW-Unternehmen/Vollzeit/ HomeOffice/asap

openSSH: SFTP / FTPS

Erweiterbarer Wrapper für GNU find

Linux "vergisst" Dateisystem?

Zurück
Oben