Wie schreibt man ein Betriebssystem

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
compuboy1010
Beiträge: 289
Registriert: 18.11.2004 00:33:53
Kontaktdaten:

Wie schreibt man ein Betriebssystem

Beitrag von compuboy1010 » 05.12.2004 01:02:29

Hallo Board,

also ich habe mal eine Frage die nicht Debian an sich betrifft sondern ein Betriebsystem an sich. Ich hoffe mir kann jemand in einfachen Sätzen erklären wie man ein Betriebssystem schreibt. Ich studiere Bachelor of computer science, bin aber ganz neu und habe ein Verständnisproblem.

Habe mich in den letzen Stunden iin http://www.gnu.orh reingelesen.

Muss man um ein Betriebsystem zu schreiben nicht schon ein Betriebssystem haben?
Ich habe gelesen, dass Linux in C oder C++ geschrieben wurde. Aber wie ist diieses möglich?
Angenommen ich kaufe mir einen neuen Rechner mit einer leeren Festplatte. Wie kann ich damit ein Betriebssystementwickeln. Oder wie wurde Windows geschrieben, Diese Frage stelle ich mir schon seit Jahren. Um ein Programm zu schreiben, benötige ich doch einen Compiler. Aber das übersetzte Programm muss ja unter einen Betriebssystem laufen. Also was kommt zuerst das Ei oder das Huhn.

Hätte jemand dazu mal ein paar gute Links. ich möchte wirklich verstehen und lernen wie ein Computer arbeitet indem in mir mein eigenes OS ertstelle. Allso alles was nach dem Bootvorgang passiert.

Dazu suche ich gute Quellen im Internet die für Anfänger geeignet sind.

Könnte mir da jemand ein paar Antworten geben?

Benutzeravatar
Dookie
Beiträge: 1104
Registriert: 17.02.2002 20:38:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag von Dookie » 05.12.2004 01:49:28

Hi compuboy1010,

na zuerst war das Ei da, das wurde schon lange bevor es Hühner gab erfunden und jedes Huhn ist aus einem Ei geschlüpft, aber nicht jedes Ei muss von einem Huhn stammen. ;)

Betriebssysteme wie auch alle anderen compilerten Programme liegen als 0er und 1er im Speicher, ob diese 0er und 1er nun von einem Compiler stammen der Menschenlesbaren Code, egal ob C/C++, Pascal, Lisp oder Assembler, in diese Maschinensprache übersetzt hat, oder die 0er und 1er von einem Menschen in eine Lochkarte gestanzt wurde ist egal, um letzteres zu erzeugen brauchst du jedoch keinen Computer.

Hier noch ein paar Links:
http://boris.jakubaschk.name/computerge ... /index.htm
http://homepage.mac.com/ulrich.behning/
http://www.adp-gmbh.ch/personal/histoire/histoire.html
http://www.hp-gramatke.de/history/german/page0100.htm


Gruß

Dookie

Benutzeravatar
Deblix
Beiträge: 585
Registriert: 23.05.2003 17:33:48
Wohnort: Bremen

Re: Wie schreibt man ein Betriebssystem

Beitrag von Deblix » 05.12.2004 09:40:16

compuboy1010 hat geschrieben:Muss man um ein Betriebsystem zu schreiben nicht schon ein Betriebssystem haben?
Ich habe gelesen, dass Linux in C oder C++ geschrieben wurde. Aber wie ist diieses möglich?
Ich habe mir die Biographie von Linux Torvalds durchgelesen (schönes Buch), in dem er die Entwicklung von Linux schreibt.

Erst nutze er an der Uni Minix (von Andrew Tanenbaum), doch wollte er von zuhause auf die Daten der Schule zugreifen (z.B. Lesen von eMails, oder auch Newsgroups lesen), weshalb er sich einen Terminal-Emulator schrieb, den er direkt gebootet hat. Dies war bereits möglich, da für Minix schließlich schon eniges an Entwicklungswerkzeugen vorhanden war. Als später das Verlangen aufkam, Daten runter- und raufzuladen (also auf Festplatte zu speichern), musste ein Festplattentreiber (eher gesagt Controller-Treiber) und ein Dateisystemtreiber her. Die Aufgabe war aber so umfangreich, dass er daraus direkt ein Betriebssystem entwickelte. Schließlich muss man sich da wie Linux in die tiefen des POSIX-Standards einarbeiten, um die Systemaufrufe zu programmieren. Als erstmal ein bootbares Grundsystem mit Festplattenzugriff vorhanden war, der POSIX-Standard grob implementiert ist und sogar GCC portiert ist, soll es wohl leichter werden. :wink:
So entstand also Linux. (Mal ganz grob umschrieben)

Für einen Terminal-Emulator musste Linus übrigens Wissen:
- Wie arbeitet die CPU?
- Wie mache ich Tastatureingaben?
- Wie gebe ich es auf dem Bildschirm aus?
(habe ich alles mit einer alten 6502 gemacht und es ist nicht sehr schön zu programmieren :wink: )

Das gesamte Programm wurde unter Minix entwickelt und verbessert (Assembler) und dann auf Diskette gespeichert und von dort gebootet.

Ich hoffe etwas weitergeholfen zu haben, ohne zuviel Stuss zu erzählen :wink:

Benutzeravatar
Deblix
Beiträge: 585
Registriert: 23.05.2003 17:33:48
Wohnort: Bremen

Re: Wie schreibt man ein Betriebssystem

Beitrag von Deblix » 05.12.2004 10:10:51

compuboy1010 hat geschrieben:Angenommen ich kaufe mir einen neuen Rechner mit einer leeren Festplatte. Wie kann ich damit ein Betriebssystementwickeln. Oder wie wurde Windows geschrieben, Diese Frage stelle ich mir schon seit Jahren
Bei Windows dürfte wohl alles etwas einfacher sein, da es schließlich schon DOS gab. Dann eine graphische Oberfläche zu schreiben ist schon etwas einfacher, als ein Betriebssystem von Grund auf neu zu schreiben.

Wenn man sich mal die Struktur von DOS ansieht (haben wir gerade in der Schule besprochen), wird man merken, dass das System verschiedenste Möglichkeiten der Hardwarezugriffe erlaubt, was nun ganz und gar nicht schön ist.
Wenn man DOS-Zeiten noch erlebt habt, merkt man, dass es ziemlich unschön implementiert ist. Gerade deshalb gebe auch ich ihm gerne den Namen "Dirty Operating System"

Als später auch 95 und 98 auf den Markt kamen und 32-bit auf der höhe der Zeit waren, entstand ein schöner Mix aus 16-bit und 32-bit Welten.
Erst mit Windows-NT (New Technology) hat sich der Zustand geändert, da Microsoft nochmal neu angefangen hat ein BS zu schreiben. Ab da ging es etwas bergauf. :lol:

Benutzeravatar
Deblix
Beiträge: 585
Registriert: 23.05.2003 17:33:48
Wohnort: Bremen

Beitrag von Deblix » 05.12.2004 10:28:50

Einen hab ich noch :wink:
Habe ein schönes Buch von Andrew Tanenbaum "Moderne Betriebssystem" (ISBN 3-8273-7019-1)
Darin findest Du sicherlich alles was Du brauchst. Es stehen viele Beispiele in Pseudo-Code bereit und es werde alle grundlegenden Aufgaben wie Prozesse/Threads, Deadlocks, Speicherverwaltung, ... beschrieben.

Zwei Nachteile hat das Buch allerdings:
1. Der Preis liegt bei 49,95 Euro
2. Das Buch hat mehr als 1000 Seiten

Ich weiß ja nicht wie tief Du in die Betriebssysteme vordringen willst und was da genau für Unklarheiten vorliegen. Das Buch ist kein leichter Stoff und man kann es auch nicht nebenbei durchlesen und verstehen. Wenn das dem Einarbeiten aber keinen Abbruch tut, hast Du damit eines der besten Werke über die Betriebssystemgrundlagen.

tholog
Beiträge: 6
Registriert: 06.12.2004 01:23:55
Wohnort: 13353 Berlin

Betriebssysteme bauen...

Beitrag von tholog » 06.12.2004 03:03:55

...das Lochkartenbeispiel in einem der Beiträge ist gar nicht so verkehrt - der erste echte "Computer" hat mit Lochkarten funktioniert. Das war der "Z1" erbaut um 1940 von Konrad Zuse. Das Ding konnte die 4 Grundrechenarten ausführen und füllte komplett einen ca 10qm grossen Keller aus.... Soweit ich weiss gibts im technischen Museum in München einen Nachbau davon.
-tholog-
-TL-

Benutzeravatar
Ano
Beiträge: 494
Registriert: 07.10.2002 17:39:08

Re: Wie schreibt man ein Betriebssystem

Beitrag von Ano » 06.12.2004 07:30:45

Deblix hat geschrieben:Erst mit Windows-NT (New Technology) hat sich der Zustand geändert, da Microsoft nochmal neu angefangen hat ein BS zu schreiben. Ab da ging es etwas bergauf. :lol:
Siehe dazu bitte auch:

http://de.wikipedia.org/wiki/Os2
http://de.wikipedia.org/wiki/Windows_NT

Eigentlich basiert Windows NT auf einem Gemeinschaftsprojekt von IBM und Microsoft. Damit ist dann wohl auch geklaert, woher die "guten" Codeteile von NT kommen... ;-)

Ano

Benutzeravatar
Deblix
Beiträge: 585
Registriert: 23.05.2003 17:33:48
Wohnort: Bremen

Re: Wie schreibt man ein Betriebssystem

Beitrag von Deblix » 06.12.2004 08:37:30

Ano hat geschrieben:Eigentlich basiert Windows NT auf einem Gemeinschaftsprojekt von IBM und Microsoft. Damit ist dann wohl auch geklaert, woher die "guten" Codeteile von NT kommen...
Um es dann ganz genau zu nehmen, hat Microsoft Entwickler von VMS eingestellt. Wodurch einige gute Ideen und Codeteile da sind, aber ich traue dem ganzen Haufen nicht :wink:

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 06.12.2004 12:41:01

ähnlich wie jetzt bei .NET, da haben sie den Chefentwickler von Borland eingestellt :D
Hat drum auch ein paar gute Teile drin...

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
Mossi
Beiträge: 124
Registriert: 10.10.2004 15:24:49
Kontaktdaten:

Beitrag von Mossi » 06.12.2004 14:52:54

Aber das ist eigentlich eine Interessant Frage.
Welches System war denn nun als erstes da? Irgendwo habe ich mal gelesen, dass Dos Teile eines alten Unix-Kernels verwendet. Ob das glaubwürdig ist, kann ich nicht beurteilen. Tatsache ist jedenfalls, dass Microsoft lange Zeit und angeblich auch immer noch AS400-Maschinen intern einsetzt und viele Systementwicklungen auch noch darauf laufen sollen.

Irgendwo muss es jedenfalls einen Grundstock geben. Wir haben jetzt schon gehört, dass Linux mehr oder weniger aus Minix entstanden ist. Minix hatte sicherlich auch wieder eine Wurzel aus der es entstanden ist. Windows kommt von DOS. Wenn man DOS mit anderen fensterlosen System vergleicht erkennt man auch wieder parallelen. Man muss sich dazu nur mal die Kommandozeile von Linux und die von DOS anschauen. Grundbefehle sind definitiv gleich, wenn auch die von Linux viel weiter entwickelt sind. Eine alte Solaris-Workstation erinnert mich von der Bedienung her irgendwie an die alte AS400 während meiner Ausbildung. Auch eine Parallele?

Ein interessantes Thema irgendwie. vielleicht hab ich mal Zeit um mich damit ein wenig zu befassen.

Aber was die Programmierung eines solchen Systems angeht: Ich hab mal versucht mit C einen hardware-unabhängigen direkten Gerätezugriff zu realisieren. Das heißt, wenn das angesprochene Gerät ein Drucker ist wird eben gedruckt, wenn es eine Platte ist, wird geschrieben, wenn es eine Diskette ist, wird anders geschrieben usw. Das ganze auf low-level-basis und dennoch sämtliche Sicherheit implementiert. Das ist im Grunde nur ein kleiner Teil dessen, was ein Betriebssystem machen muss und ich bin daran fast verzweifelt. Wenn du also wirlich ein eigenes Betriebssystem programmieren willst, hast du dir was Großes vorgenommen. Auch wenn du sagst, es soll nur was Kleines werden.

Antworten