Kann Software in Bare-Metal-Maschinen ausgeführt werden? [Duplikat]

7

Ich frage mich nur, können wir ein Programm auf einer Maschine ohne Betriebssystem ausführen?

Außerdem habe ich gehört, dass der Linux-Kernel in C geschrieben ist und ein Kernel während des Bootens läuft, also frage ich mich einfach, wie ein Computer die Sprache versteht, ohne sie vorher zu kompilieren?

    
caramel1995 20.01.2010, 08:14
quelle

8 Antworten

8

Aus Wikipedia:

Wenn ein Computer zum ersten Mal eingeschaltet wird, hat er kein Betriebssystem im ROM oder RAM. Der Computer muss zunächst ein kleines Programm ausführen, das im ROM gespeichert ist, zusammen mit dem Minimum an Daten, die benötigt werden, um auf die nichtflüchtigen Geräte zuzugreifen, von denen die Betriebssystemprogramme und Daten in den RAM geladen werden. Das kleine Programm, das diese Sequenz des Ladens in den RAM startet, wird als Bootstrap Loader, Bootstrap oder Boot Loader bezeichnet. Die einzige Aufgabe dieses kleinen Bootloader-Programms besteht darin, andere Daten und Programme zu laden, die dann aus dem RAM ausgeführt werden.

Der Computer kann den Linux-Kernel verstehen, da er bereits kompiliert und (normalerweise) auf der Festplatte gespeichert wurde. Der Bootloader gibt dem Computer genügend Funktionalität, um den vorkompilierten Kernel in den Speicher zu laden.

Sie müssten nicht ein ganzes Betriebssystem laden, um ein Programm auf einem Computer auszuführen, Sie könnten einen Bootloader schreiben, um ein Programm zu starten, das Sie kompiliert haben. Sie hätten keinen Zugriff auf Betriebssystemaufrufe, die den Programmierern das Leben erleichtern.

    
mattjames 20.01.2010, 08:29
quelle
9

Kurz gesagt, ja.

Linux ist immer noch ein Software-Programm in Maschinencode, das auf einer Bare-Metal-Maschine läuft. Während Sie ein Softwareprogramm ohne Betriebssystem ausführen können, muss Ihr Programm ALLEN Code implementieren, der verwendet wird, um mit verschiedenen Hardwareteilen in einem Computer in verschiedenen Graden zu kommunizieren - z. Ausgabe von Daten an ein Display, Interpretieren der Eingabe von einer Tastatur / Maus / Netzwerkkarte usw. (Einige der sehr niedrigen Level Zeug sind durch die Firmware in Computer-Komponenten implementiert, aber der Rest muss Ihr Programm implementieren). Dies macht es sehr zeitaufwändig und schwierig für Sie, etwas zu schreiben, das ganz ohne Betriebssystem auskommt.

    
futureelite7 20.01.2010 08:23
quelle
7

Ja, und das ist heute für kleine Mikrocontroller mit ein paar KB Speicher erledigt.

Das Programm wird normalerweise in C geschrieben und auf einem anderen Computer kompiliert ( cross-compiling ) und dann als Binärdaten in den Flash-Speicher des Controllers geladen.

    
starblue 20.01.2010 08:32
quelle
7

Der Linux-Kernel könnte in C geschrieben sein. Er wird immer noch nach Maschinencode kompiliert. Und es ist dieser Maschinencode, der beim Booten ausgeführt wird

Sie können auch Software schreiben, die während eines Bootvorgangs ausgeführt wird. Auf diese Weise können Sie Ihr eigenes benutzerdefiniertes Betriebssystem erstellen oder Ihre eigene benutzerdefinierte Software erstellen, die ohne ein Betriebssystem direkt ausgeführt werden kann. Beachten Sie jedoch, dass ein Betriebssystem Ihnen viele Funktionen bietet, die Sie selbst erstellen müssen. Dinge wie Treiberunterstützung, Festplatten-IO-Routinen, Netzwerkstacks, Multitasking und Speicherverwaltung müssen Sie selbst tun.

Schließlich: Ich glaube nicht, dass die Leute es nicht so mögen, wenn sie ihre Maschine neu starten müssen, um Ihre Software zu starten. Also würde ich mit dem Schreiben für ein OS gehen ... es macht das Leben für Sie und den Benutzer einfacher.

    
Toad 20.01.2010 08:15
quelle
3

Was ist ein Betriebssystem, wenn nicht Software auf einer "nackten" Maschine läuft? Voodoo? XD

    
fortran 20.01.2010 09:40
quelle
1

Sieh dir nur eine Spielekonsole vor den 32-Bit-Konsolen an. Fast alle hatten überhaupt keinen Boot-Code und booten einfach direkt von der eingelegten Cartridge.

    
yosser 20.01.2010 09:58
quelle
1

1. Sicher. Sie brauchen nicht wirklich ein Betriebssystem, nur um einige Zyklen zu brennen.

Sie benötigen möglicherweise eine Betriebssystemunterstützung, wenn Sie Dateien oder Daten laden oder speichern möchten. Verwalten Sie die Eingabe oder Ausgabe, aber dies kann auch getan werden, BIOS-Funktionen direkt aufrufen: Lies die Taste von der Tastatur, schreibe auf einen Bildschirm oder eine LED oder serielle Schnittstelle. Nur wenn Sie mehrere Programme ausführen oder Interrupts von außen behandeln möchten, widersprüchliche Ressourcen oder so, dann werden Sie dringend ein Betriebssystem benötigen.

2.: Der Kernel wird zu Maschinencode kompiliert, der während des Bootens ausgeführt wird. Da ist kein C beteiligt, wenn ein Kernel ausgeführt wird. C hilft nur beim Schreiben eines Kernels oder eines Programms was sollte laufen, wenn im Kernel oder "Bare Metal".

    
rurban 29.08.2010 20:48
quelle
0

theoretisch können Sie build Bootloader mit dem Hex-Editor auf einem anderen Rechner erstellen.

    
plan9assembler 09.10.2011 13:08
quelle

Tags und Links