Wit welcher Programmiersprache werden Betriebssysteme programmiert?
lima-city → Forum → Heim-PC → Betriebssysteme
argument
assembler
befehl
beispiel
betriebssystem
bibliothek
hardware
http
jemand
lehrer
machen
programm
programmieren
programmierer
programmiersprache
software
sprache
teil
treiber
windows
-
Hallo,
Mit welchen Programmiersprachen werden eigentlich Betriebssysteme programmiert?
Und mit welchen Plattformen (Software)?
MFG
,Jan -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Assembler wuerde ich mal so spontan sagen ;)
Kenn mich mit der Sprache aber nicht aus.
MfG,
DiggerDaDon
Beitrag geändert: 11.2.2008 16:37:30 von diggerdadon -
Entweder Assembler oder C.
Assembler-Programme sind zwar oft schneller als ihre C-Varianten, aber dafür ist Assembler um ein vielfaches anspruchsvoller als C.
Und Windows wurde in C geschrieben und dir sollte bekannt sein, wie viele Bugs Windows hat.
Wenn Windows jetzt in Assembler geschrieben wäre, hätten wir wahrscheinlich noch mehr Bugs.
Ich will jetzt nich umbedingt Windows niedermachen, aber ein Betriebssystem zu schreiben, ist eine echt harte Aufgabe. Da ist es schon sinnvoll nicht so schnellen Code zu nehmen, aber dafür weniger Bugs zu haben. -
Der Linux-Kernel ist ebenfalls in C geschrieben.
Aber es kommt drauf an, was du als Betriebssystem bezeichnest?
Den Kernel, der die gesamte Verwaltung der Resourcen macht, die Shell, die grafische Oberfläche, sprich: Desktop- und Windowmanager,...
Da muss man ein wenig differenzieren, denn diese Programme können auch in anderen Programmiersprachen, wie z.B. C++, Java oder C# geschrieben sein.
Beitrag geändert: 11.2.2008 17:50:20 von schrotti12 -
\"Entweder Assembler oder C.\"
Meiner Meinung nach nicht. - Sondern Beides^^
Der richtige Kernel und so eher in Assembler(damit er maschinennah ist etc.) und das richtige OS dann eher in C/C++. Ich glaube kaum, dass man z.B. Windows in Assembler geschrieben noch verstehen könnte.
Aber wie schon gesagt, ein OS ist eine wirklich schwierige aufgabe.
Ich denke mal es gibt 2 Möglichkeiten so was zu machen:
1. Du schreibst ein richtig neues(kannst mal googln nach \"eigenes Betriebsystem programmieren\". Hatte da mal ein Tutorial gesehen, wie du den allerersten anfang machst(die ersten 10 Codezeilen oder, dass es wenigstens bootet; das war in assembler)
2. Du nimmst ein vorhandenes und änderst es erst ein mal ein bischen ab, dass du in die Thematik reinkommst(nimm halt irgendeine mini Linux-Distribution)
Mfg -
Also, großteils richtig, Assembler und C. Hab\' jedoch auch schon mal ein Grundgerüst gefunden, um ein OS in FreePascal zu schreiben (und den Bootcode in Assembler). Um Assembler kommt man nicht \'rum ...
Das hier sollte eine sehr hilfreich Seite sein:
http://www.nondot.org/sabre/os/articles
Eine tolle Auflistung von nützlichen links hat\'s auch immer bei osnews.com gegeben. Aber seit der Neugestaltung der Seite fehlt mir dieser Link. Ich werde ihn posten, wenn ich ihn finde.
So, hier:
http://www.osnews.com/resources
unter Punkt \"How to Write Your Own OS\", da solltest du auch das Beispiel (sollte es dich interessieren) mit Pascal finden ...
Beitrag geändert: 11.2.2008 18:56:51 von burgi -
Naja C ist schnell und ganz gut, aber jetzt würde ich schon C++ nehmen.
Java wäre einfach zu langsam, obwohl es schon zur Zeit schneller als früher ist.
Assembler ist zu schwer xD -
Hallo,
mein Programmieren-Lehrer behauptet schon immer, dass Betriebssysteme nur in C programmiert werden. Kann mir jemand sinnvollle Argumente geben um ihn zu überzeugen, dass es nicht so ist?
Du könntest ihm ja mal den Linux Source Code zeigen. Der großteil ist zwar natürlich in C geschrieben, aber der Code, der sehr Hardware nah ist, ist in Assembler geschrieben. -
Hallo,
mein Programmieren-Lehrer behauptet schon immer, dass Betriebssysteme nur in C programmiert werden. Kann mir jemand sinnvollle Argumente geben um ihn zu überzeugen, dass es nicht so ist?
Singularity von Microsoft ist nur ein Forschungs-Projekt, ist aber ein Betriebssystem, das in C# geschrieben ist!
http://research.microsoft.com/os/singularity/
Ein Milestone eines OS ebenfalls in C# geschrieben ist Cosmos:
http://gocosmos.org/
Und:
http://www.sharpos.org/ -
Aber wie hat man egentlich das erste Betriebssystem erstrellt?
Man hate ja da keine Software etc...!? -
Also wenn mans ganz genau nimmt wuerde ich Lochkarten sagen..
Aber ich glaube soweit zurueck meinst du nicht ^^
Wuerde mich aber auch mal interessieren.
MfG,
DiggerDaDon -
Als erstes muss man kapieren, was überhaupt im Computer abläuft. Im Groben sieht das so aus (auf 8086-CPUS bezogen):
1. Computer wird eingeschaltet
2. BIOS wird gestartet
3. BIOS checkt die Hardware (CPU, RAM, ...)
4. BIOS startet den Bootloader von Speichermedium (Diskette, CD, Festpatte, USB-Stick...)
5. Der Bootloader startet den Bootvorgang des Betriebssystemes
6. Das Betriebssystem kommuniziert über das BIOS mit der Hardware. Zum Beispiel werden dadurch Befehle an den CPU geschickt, berechnet (ausgewertet) und Werte zurück gegeben.
Wenn man nun ein OS programmieren will, muss man bei Punkt 5 ansetzen, bis Punkt 4 wird vom BIOS übernommen. Der Bootloader muss(!) in Assembler geschrieben werden, da nur so Befehle an den CPU gesendet werden können.
Um nun zum Beispiel mit C weiter zu programmieren, muss man sich erst einmal eigene Funktionen schreiben. Zum Beispiel sind die Funktionen zur Textausgab (cout) in Assembler in den Headerdateien (die man im C-Programm einbindet) programmiert. Compiliert man nun ein C-Script mit diesem Befehl, wird nichts anderes gemacht als das C-Script in Assembler umgewandelt und dieser in ausführbaren Maschinencode umgesetzt, C ist also nur eine vereinfachte Darstellung von Assembler.
Und wer das alles selber Programmieren will: viel Spaß ;) -
6. Das Betriebssystem kommuniziert über das BIOS mit der Hardware. Zum Beispiel werden dadurch Befehle an den CPU geschickt, berechnet (ausgewertet) und Werte zurück gegeben.
Fast ;)
Das OS kann durch das BIOS erfahren, welche Hardware an welcher Addresse sitzt, kommunziert dann aber direkt mit den Geräten.
-
6. Das Betriebssystem kommuniziert über das BIOS mit der Hardware. Zum Beispiel werden dadurch Befehle an den CPU geschickt, berechnet (ausgewertet) und Werte zurück gegeben.
Fast ;)
Das OS kann durch das BIOS erfahren, welche Hardware an welcher Addresse sitzt, kommunziert dann aber direkt mit den Geräten.
Mein ich doch
Arg viel mehr kann man dazu leider nicht sagen, da es den Rahmen sprängen würde. Wer sich dafür interessiert, sollte Informatik studieren und seine Schwerpunkte auf Betriebssysteme und Compilerbau setzen. -
Aber is das BIOS nicht auch irgend ne art von Software bzw. Modulen? Ich meine das BIOS muss ja auch irgendwie erstellt werden! Das is ja nich einfach da.
-
Aber wie hat man egentlich das erste Betriebssystem erstrellt?
Man hate ja da keine Software etc...!?
mlax schrieb:
Aber is das BIOS nicht auch irgend ne art von Software bzw. Modulen? Ich meine das BIOS muss ja auch irgendwie erstellt werden! Das is ja nich einfach da.
In Maschinencode natürlich.
Und weil Maschinencode so schwierig ist(Alle Befehle sind Zahlen!), hat man Assembler entworfen, die 1:1 einen Ersatz-Befehl in den entsprechenden Maschinencode umwandeln.
Später hat man dann noch Programmiersprachen entworfen, die mehrere Assembler-Befehle zusammengefasst haben, so dass man häufige Abläufe/Aufgaben (wie z.B. eine for-Schleife) in nur wenigen Zeilen definieren kann.
Und wenn man dann einen Text in einer Programmiersprache compiliert, dann werden aus den Kurzbefehlen, wieder mehrere Assembler-Befehle gemacht, die dann wiederum in Maschinencode umgewandelt werden. -
Noch drei weitere Rückfragen:
1. Mit C und C++ kann man doch auch Windows und Linux Anwendungen schreiben. Wie soll ich mir die beiden Programmiersprachen vorstellen?
Kann man mit diesen Sprachen so viel machen?
2. Wie, glaubt ihr, kriegen die es hin, solche Graphischen Oberflächen einzubauen? Müssen die die auch schreiben? Das muss
doch irre schwer sein, weil man nicht das \"Bild\" was man macht vor sich hat.
3. Der Kernel ist doch der Kern des Systems. Was macht der eigentlich genau? Bei Linux ist doch bei allen Distributionen der Kernel derselbe,
aber trotzdem gibt es doch kleine bis sehr entscheidende Unterschiede zwischen den Distributionen. -
Assembler-Programme sind zwar oft schneller als ihre C-Varianten, aber dafür ist Assembler um ein vielfaches anspruchsvoller als C.
das ist nett formuliert *G*
wie viele menschen gibt es auf der welt, die die bot sprache beherrschen?
5? vil. 6? ^^
lg
Sincer
PS: 0101010010100101010101010110101010101010101000000000000010111110101010010101010101010100101010101010100101 -
Assembler-Programme sind zwar oft schneller als ihre C-Varianten, aber dafür ist Assembler um ein vielfaches anspruchsvoller als C.
das ist nett formuliert *G*
wie viele menschen gibt es auf der welt, die die bot sprache beherrschen?
5? vil. 6? ^^
lg
Sincer
PS: 0101010010100101010101010110101010101010101000000000000010111110101010010101010101010100101010101010100101
So ähnlich. :D
PS: Auf dem C64 von Commodore haben die früher alles mögliche in Assembler geschrieben.
Dieser Assembler ist zu 75% identisch mit dem x86-Assembler.
Und was die aus der Kiste rausgeholt haben, war einfach nur herrlich. Vor allem hat man da die deutliche Geschwindigkeitssteigerung merken können. Heute stellt man sich einfach eine schneller Kiste hin und gut ist. ;) :D
Beitrag geändert: 15.2.2008 15:52:35 von sovietcars -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage