Du vermischt da mehrere Sachen,
Bios != Operating System
Was willst du denn genau wissen?
Hallo Leute,
heute ist mir einmal die Frage gekommen wie eigentlich ein OS funktioniert.
Wenn man das jetzt so ließt hört sich dies komisch und vielleicht lustig an, aber mich würde einmal Interessieren was dabei alles auf einem µC geschehen muss bis der Kernel des OS geladen werden kann.....
Dabei bin ich darauf gekommen, daß die "Schnittstellen" schon einmal im "BIOS" (welches beim µC der interne speicher wäre) voreingestellt werden sollten und somit auch in der Interrupt-Routine vorhanden sein sollten.
Somit sollte ich einmal wissen wie ein "BIOS" aufgebaut ist.
Weil ich habe mir einmal überlegt wenn ich das Prinzip verstanden und dann noch lust habe ein sehr einfaches OS (ne Shell art) für µC zu entwickeln.
Greez Marc
Du vermischt da mehrere Sachen,
Bios != Operating System
Was willst du denn genau wissen?
Hallo
Was soll den ein Kommandointerpreter (Shell) auf einem uC? Ein Real-Time OS, würde da viel mehr nützen, ein uC macht ja normalerweise keine Benutzerinteraktion.
Zum Thema OS gibt's ziemlich umfangreiche Vorlesungen und noch umfangreichere Bücher.
Was mir da gleich einfällt:
- Silberschatz et. al. : Applied Operating System Concepts
- von A. Tanenbaum gibts auch ein paar Bücher zu diesem Thema
Sonst zigtausend Artikel zu Linux
Für den AVR hab ich mal das gefunden: http://www.barello.net/avrx/index.htm
Aber ev. war das jetzt auch zu weit gegriffen (?)
Gruess
Fritzli
P.S: Eine "Shell" ist KEIN Betriebssystem, sondern nur ein Teil davon. Bei DOS kommt allerdings alles in einem "Programm".
Stimmt BIOS nicht gleich OS
aber ich finde die Trennung was beim BIOS Software und was Hardware ist ist ned so einfach.
Und/Oder/Aber wie au immer ... ich meine mit diesem Thread den kompletten weg vom Einschalten bis zum beginn des Ladens des Kernels der OS...
das ist mir alles noch nicht so ganz klar wie das verwirklicht wird.
hmm... stimmt habe da n bissle was durcheinander geworfen.....
Sagen wir es einmal so ich würde sowas in der Art machen wollen wie ein 386er mit DOS um des jetzt einmal ganz grob zu beschreiben... über den genaueren verwendungszweck habe ich mir noch keine gedanken gemacht...
Irgendwie fühle ich mich zurückversetzt ins Forum von Chip.de
Dort tauchte auch ab und zu mal die Frage auf wie man ein OS programmiert.
Und das von totalen Anfängern.
Das ist nicht böse gemeint, aber wäre das gleiche wie wenn ich bei DSDS auftreten würde. Entweder man kann/versteht es oder nicht.
Wie schon geschrieben wurde, ist ein µC nicht geboren wurden um einen PC zu ersetzen.
Er arbeitet vorgegebene Schritte ab. Ein Highlight ist es, wenn er selbst erkennt, das er grade eine Pause macht und in der Zeit schonmal schaut, was er sonst noch so erledigen könnte bis er wieder gefordert wird.
Aber ein BIOS auch nicht im Ansatz gibt es für µC nicht. Es gibt da auch keine Teile die ähnliche Funktionen übernehmen. Alles muss programmiert werden.
Ich habe auch noch nicht so ganz verstanden, was du eigentlich bezwecken willst. Das du noch keine genaue Anwendung dafür hast, habe ich verstanden. Aber was soll das ganze bringen?
Das du eine Tastatur anschliessen kann und eingibst "Kaffee kochen" und dann wird welcher gekocht?
JA danke! Du bist echt mein Held.
Dann einmal eine andere Frage was ist an einem µC im vergleich zu einem µP noch alles anders, außer das z.B. Speicher, Peripherie und noch n paar dinge beim µC schon alles Integriert ist? Wenn man genauer schaut findet man den µP darin auch wieder.
Ich nehme jetzt einfach einmal an das das BIOS eines µP vom Hardware Teil einmal gesehen ist nichts anderes ist wie ein externer Speicher auf dem ein "Grundprogramm" abgelegt ist. Weil wie würde sonst ein MEMORY Check oder Eine Initialisierung der HDDs von statten gehen?
Ein sinn und zweck für diesen sehr leistungsschwachen "PC" ist mir auch einfallen. Man könnte daraus ja eine sehr sehr billige form eines "embedded pcs" machen. Ist zwar nich mächtig, aber würde immer noch reichen um kleinere Maschinen zu steuern.
einmal eine andere Frage warum ist es Möglich auf einem ARM9 (in meinen augen nichts anderes als ein 32Bit µC) Linux laufen zu lassen?
Und schoneinmal etwas von den µ embedded PCs gehört die wie ein 186er als WEBSERVER funktionieren?
http://www.beck-ipc.com/ipc/products...sp?cat=1&sp=de
das anwende specktrum wäre groß.
Ich denke mal bei einem µC ist der Bootloader sowas wie das BIOS (Basic Input Output System)...
Ein BIOS charakterisiert sich ja dadurch, dass:
- Enthält Software zum Auslesen von Hardware (z.B. Datenträger, Speicher, etc. auf/in dem sich ausführbare Software befindet)
- Bleibt ohne Stromzufuhr erhalten
- Enthält Treiber für Hardware
Als OS (Operating System) würde ich jetzt eher die Software bezeichnen, die man auf den µC läd. Zumindest den Teil, der sich in den (z.B. AVR-) Bibliotheken befindet, also sozusagen die "Grundfunktionen" des µCs.
Aber egal ob du ein OS oder ein BIOS selbst schreiben willst, du brauchst auf jeden Fall (vor allem bei einem BIOS) sehr konkrete Informationen und Kenntnisse über die Hardware, auf die deine Software laufen soll. Du musst die verfügbaren Maschinenbefehle kennen, und diese Stück für Stück erweitern und zu größeren Konstrukten zusammenfassen. Das ist ein sehr langwieriger Prozess und ist eigentlich nur von Wizards zu schaffen...
Oder was glaubst du, warum es so wenige gute / brauchbare Betriebssysteme gibt? Wenn es so einfach wäre, würde sich jeder halbwegs erfahrene Programmierer sein eigenes Betriebssystem schreiben...
Die wirklich brauchbaren Betriebssysteme, die auch überlebt haben, kannst du an ein, höchstens zwei Händen abzählen.
Klar, für einen µC ist das ganze etwas einfacher, da diese sehr viel beschränkter sind als eine CPU... Aber ich denke, es ist trotzdem mit einem erheblichen Aufwand verbunden.
Aber wenn du es schaffst: Respekt
Unwissenheit ist ein Segen
Joa das stimmt...
Zu dem Thema mit den Brauchbaren OS habe ich mir folgende erklärung gemacht. Alle Betreibssysteme sind eher aus einem Zeitalter (zumindest die Grundzüge) als der PC als solcher noch nicht exestierte und daher nur von hobby bastlern verwendet wurde oder ein bisschen später als die HARDWARE noch nicht so fürchterlich kompliziert war.
Das ist Glaube ich auch ein Grund warum heutzutage nicht wirklich neue OS entwickelt werden, dazu müsste man nähmlich zunächst ein "einfaches System" haben und sich darüber hinaus mit diesem elektronisch voll auskennen. Damit man in der Lage ist ein OS für dieses zu Programmieren.
Dies ist heutzutage nicht mehr so der Fall, da ich kaum glaube jeder sich so im klaren ist was innerhalb der heutigen Hardware abgeht und dazu noch die nötigen Programmierkentnisse hat.
Die Programmierkenntnisse habe ich zwar auch nicht aber ich denke die kann man sich im Laufe der Zeit aneignen wenn man seine Hardware vom elektronischen Teil her erklären kann und über ihre funktionen sich auch im Klaren ist.
Außerdem will ich ja kein OS für µP entwickeln sondern für µC.
Aber nun einmal die Frage hat sich eigentlich von euch wirklich schon einmal einer die Gedanken gemacht was wirklich in einem PC im BIOS Bootvorgang abspielt?
OK jetzt denk warscheinlich jeder ja klar... Überprüfung der Hardware, erkennung der Laufwerke, usw.
Und gerade bemerke ich das es ziemlich schwer ist das was ich sagen will auszudrücken......*mist*
@maze2k: Ja ich glaube der Bootloader ist etwas vergleichbares wie das BIOS, aber ich denke das BIOS ist noch ein wenig mächtiger.
Klar ist es mächtiger, es war ja nur als ungefährer Vergleich gedacht.
Ok, was passiert jetzt, wenn ein PC gestartet wird?
- Zuallererst der "Power On Self-Test" (POST)... da überprüft das BIOS die CPU, den Speicher, Arbeitsspeicher, Grafikhardware, Tastatur + Peripherie
- Hardware initialisieren
- Bootloader bzw. in den Win-Dosen: Betriebssystem-Software starten
Ich denke mal, das wichtigste am BIOS ist Schritt 1. Wenn erst einmal sichergestellt ist, dass alle Komponenten funktionieren, kann man die Hardware initialisieren (also Register setzen, etc.) und dann die Betriebssystem-Software in den Arbeitsspeicher laden.
Dieser erste Schritt ist natürlich wieder hardwareabhängig...
Unwissenheit ist ein Segen
Ich denke man kann BIOS und Bootloader nicht besonders gut vergleichen.
Ein Bootloader legt ja nur empfangene Daten in einen bestimmten Speicherbereich, und hat mit dem eigentlichen Bootvorgang herzlich wenig zu tun.
Die Frage ist doch wozu ein BIOS auf einem µC überhaupt gut sein soll...
- Hardwareerkennung
auf einem µC gibt es nichts zu erkennen, da sich die Hardware nicht ändern kann
(und externe Bauteile zu erkennen ist kaum möglich)
- Selbsttest
sicherlich möglich, und manchmal auch sehr sinnvoll.
Allerdings würde das kaum Jemand als BIOS bezeichnen
- Hardwareinitialisierung
möglich, nötig, in jedem Programm vorhanden...
aber BIOS ist wohl nicht die passende Bezeichnung dafür
Es sollte klar sein, daß ein PC und ein µC zwei grundlegend verschiedene Dinge sind.
Daher macht es auch nicht viel Sinn wenn man zwanghaft versucht, alles was es auf einem PC gibt auf einem µC nachzubilden.
Und genau das ist der wichtigste Punkt in dem sich die beiden Systeme unterscheiden.Wenn erst einmal sichergestellt ist, dass alle Komponenten funktionieren, kann man die Hardware initialisieren (also Register setzen, etc.) und dann die Betriebssystem-Software in den Arbeitsspeicher laden.
Ein "normaler" Prozessor z.B. von Intel ist reprogrammierbar, ein µC jedoch nicht.
Bei einem µC liegt das Programm in einem nichtflüchtigen Speicher, und wird von dort direkt ausgeführt.
Es ist zunächst mal nicht möglich während dem Betrieb irgendein anderes Programm zu starten.
Bei einem PC hingegen werden die Programme erst in den Arbeitsspeicher geladen und von dort ausgeführt.
Wenn du einen µC mit Spannung versorgst beginnt er sofort mit der Ausführung des im Flash gespeicherten Programms.
Es gibt nur dieses eine Programm, und man kann zur Laufzeit auch kein anderes starten.
d.h. man kann hier BIOS, OS und Anwendung nicht klar voneinander trennen, da letztendlich ein Programm alle Aufgaben übernimmt.
Du hattest einen Webserver als mögliches Anwendungsgebiet genannt...
aber was ist ein Webserver?
eigentlich ist es nur irgendein Programm das über ein bestimmtes Protokoll mit anderen Programmen kommuniziert.
Auf welcher Hardware dieses Programm läuft völlig egal, und ein Betriebssystem braucht man dafür auch nicht unbedingt.
So viele Treppen und so wenig Zeit!
Lesezeichen