Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Betriebssystem-Programmierung

Hurts / 6 Antworten / Baumansicht Nickles

Hallo


Kann mir jemand sagen, wie man ein OS programmieren kann? Gibt es dort auch Bücher oder wie weiß man, wie man auf die HD oder sonst was zugreift? Wie man eine grafische Oberfläche macht, ......?


Danke 

bei Antwort benachrichtigen
Mrs. Software Hurts „Betriebssystem-Programmierung“
Optionen

Der Zugriff auf Hardware-Ressourcen wie Laufwerke oder Grafikkarte ist in der Dokumentation der jeweiligen Programmiersprache zu finden. Allerdings ist längst nicht jede Programmiersprache geeignet, ein Betriebssystem zu programmieren. Assembler oder C sollte aber dafür in Ordnung gehen.

bei Antwort benachrichtigen
Hurts Mrs. Software „Der Zugriff auf Hardware-Ressourcen wie Laufwerke oder Grafikkarte ist in der...“
Optionen

Dann würde auch C++ gehen? Aber woher weiß ich jetzt, was ich schreiben muss, was für Dokumentationen ich dafür brauche? Wie ich die Grafische Oberfläche programmieren muss/kann/soll? Und das alles miteinander verbinde.

bei Antwort benachrichtigen
Andreas42 Hurts „Dann würde auch C gehen? Aber woher weiß ich jetzt, was ich schreiben muss,...“
Optionen

Hi!

Ich habe zwar noch nie ein Betriebssystem programmiert, aber die vorgehensweise dürfte in etwa so aussehen:

1. Man legt fest für welche Hardware (sprich welchen PC) man das BS erzeugen will.

2. Man besorgt sich die technische Dokumentation der Hardware.
Darunter fallen sachen, wie steuere ich eine Festplatte über den IFDE-Kontroller an?
Du darfst nicht vergessen, dass falls du ein neues Betriebssystemmschreibst es KEINEN einzigen Treiber für dein BS gibt - also kannst du auch zuerst nichtmal auf eine Platte zugreifen, sondern musst all das neu programmieren.

3. Paralleldazu muss man eine Speicherverwaltung spezifizieren.
Die legt letzendlich fest, wie und wo Prohgramme, Datencode und Verwaltungsspeicher des BS verwaltet werden.

4. Man muss ein anderes Betriebssystem verwenden und konfigurieren, um das neue BS zu laden und zu aktivieren.

5. Man muss sich einen Compiler so anpassen, dass er Code erzeugen kann, den man für das neue BS verwenden kann.

6. Dann beginnt man auf einem anderen Rechner mit vorhandenem Betriebssystem, die Grundfunktionen des neuen BS zu schreiben. In welcher Sprache das erfolgt ist letzendlich egal, es muss halt Code rauskommen, den man in seiner Testumgebung laden und aktivieren kann.

Ich denke man wird mit den grundlegen bereichen anfangen müssen:

Speicherverwaltung und IO-Funktionen

IO-Funktionen sollten hier Textein- und Ausgabe sein und auch das Speichern und Lesen von Diskette und/oder Festplatte.

Wenn man dann ein lauffähiges Grundgerüst hat, gibt es immer noch keine Lauffähigen Programme oder externen Befehle für das neue BS. Also wird man damit weitermachen:

7. Man erzeugt erste externe Befehle/Programme für das neue BS noch auf dem vorhandenen Entwicklungssystem.

8. Irgndwann wird man einen Compiler auf das neue BS umsetzen. Damit man direkt unter dem neuen BS entwickeln kann.

Das ich bisher das Wort "Grafik" noch nicht erwähnt habe ist Absicht. Wir sind immer noch im Textmode... ;-)

Ich denke, eine GUI ist dass, was erst zuletzt kommt.

OK, kommen wir zu deinen gezielten Fragen:

"Aber woher weiß ich jetzt, was ich schreiben muss, was für Dokumentationen ich dafür brauche?"

Offen gesagt: ich habe keine Ahnung! Ich denke, wenn man ein neues BS schreiben will, dann weiss man auch warum und auch was man dafür braucht.

Linux wurde angefangen, weil ein Student etwas über Unix-Betriebssysteme lernen wollte und ihm die vorhandenen Anfänge wohl nicht gepasst haben.
Also hat sich Unix angesehen und sich dessen Kernfunktionen (Speichervarwaltung und IO-Funktionen) zum Vorbildgenommen und dass dan umgesetzt.
Er hat seine "Experimente" veröffentlicht und damit anderen Entwicklern die Möglichkeit gegeben mit einzisteigen. Ich weiss nicht, wieviel Monate und es gedauert hat und wieviele Entwickler benötigt wurden, bis die erste grafische Oberfläche lauffähig war.

MSDOS wurde nicht von Microsoft entwickelt, es wurde gekauft. ;-)

Der Entwickler hatte sich von CPM "inspirieren" lassen und dessen Funktionen nachprogrammiert. Nach einigen Jahren(!) wurde dann Windows entwickelt und dann als Win95 zum ertsen Mal mit eingebautem MSDOS verkauft.

Die Entwicklung von Windows NT zu XP lief über Jahre. IBM OS/2 ist auch aus der ersten NT-Entwicklungsjahren entanden. MS hat wohl kein Tallent für echte Betriebssystemneuentwicklung und hat am Anfang mit IBM zusammengearbeitet. IBM hatte wohl Erfahrungen durch eigene Unix-Varianten... ;-)

Es ist also als BS-Entwickler keine Schande, wenn man sich am Anfang von anderen leuten helfen lässt oder sich an vorhandenen Betreibssystemen orientiert.

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
frolic Andreas42 „Hi! Ich habe zwar noch nie ein Betriebssystem programmiert, aber die...“
Optionen

man merkt, dass du nicht viel Ahnung hast. Wenn man zum Installieren & Programmieren von einem OS ein anderes braucht, hätte es schon von Anfang eins gegeben und das kann nicht sein!!! man muss bloß einiges in den Bootsektor von dem jeweiligen Datenträger (Diskette usw.) schreiben!! Außerdem war es nicht "irgendein" Student, sondern Linus Torwald. MSDOS wurde auch nicht von Microsoft aufgekauft, sondern von Bill Gates entwickelt, welcher mit IBM einen Vertrag geschlossen hat, welcher bestimmt hat, dass sie es vertreiben dürfen!! Microsoft wurde später von Bill Gares & Co gegründet.

bei Antwort benachrichtigen
HADU Hurts „Betriebssystem-Programmierung“
Optionen

Kleiner Link für den Einstieg: [Link]
War der erste Treffer bei Google mit dem Thema "Betriebssystemprogrammierung"....
Ich weiss, schon wieder nur ein blöder Hinweis auf google, aber das Thema Betriebssystemprogrammierung ist doch etwas komplexer. Da wirst Du nicht um eine intensive Einarbeitung in das Thema herumkommen. Mit ein "paar Tipps" aus einem Forum kommst Du nicht weit.
Gruß HADU

bei Antwort benachrichtigen
T-Rex Hurts „Betriebssystem-Programmierung“
Optionen

Hi,

bei www.planet-source-code.com gibt es bereits ein paar Tips/Tools, durch die Du Dich mal durcharbeiten kannst.

Hier ein paar davon:
Bootloader
DOS Kernel
Simple Text or Graphical OS

Aber schau selbst:
Suche bei Planet-Source-Code in der C/C++ Sektion nach "Operating"


Gruß
T-Rex


 GrüßeT-Rex 
bei Antwort benachrichtigen