Warum wird der Linux-Kernel als "Image" bezeichnet?

62

Ich höre oft Leute, die den Linux-Kernel als das Linux-Kernel-Image bezeichnen, und ich kann scheinbar keine Antwort auf die Frage finden, warum er als Image bezeichnet wird.

Wenn ich an ein Bild denke, kann ich mir nur zwei Dinge vorstellen, entweder eine Kopie einer Diskette oder ein Foto. Es ist verdammt noch mal kein Foto, warum wird es dann als Bild bezeichnet?

Tony
quelle
10
Es kann auch eine Kopie der RAM-Region sein (was meiner Meinung nach beim Kernel der Fall ist)
Romeo Ninov

Antworten:

60

Der Unix-Boot-Prozess hat (hatte) nur begrenzte Möglichkeiten, ein Programm intelligent zu laden (es zu verschieben, Bibliotheken zu laden usw.). Daher war das ursprüngliche Programm ein genaues Abbild von dem, was in den Speicher geladen und "aufgerufen" werden musste, um den Kernel zum Laufen zu bringen.

Erst viel später kamen Dinge wie (De-) Komprimierung hinzu, und obwohl es jetzt leistungsfähigere Bootloader gibt, ist der Image-Name geblieben.

Anthon
quelle
1
Komprimierung und Dekomprimierung haben nichts mit dem Begriff "Bild" zu tun. Es wird immer noch an einer bestimmten Stelle im Speicher abgelegt und direkt aufgerufen, genau wie früher. Der dazwischenliegende Bootloader hat es auch immer gegeben. Der Kernel selbst ist immer noch ein Image, das an einer bestimmten Stelle im Speicher geladen und direkt aufgerufen wird.
Phyrfox
Genau deshalb war das OP IMO verwirrt. Eine komprimierte Version seines Bildes würde nicht mehr wie ein Bild aussehen (wenn man es unkomprimiert betrachtet) und nicht mehr als Bild bezeichnet werden. Aber der Kernel wird immer noch als Image bezeichnet.
Anthon
TBH ist sich nicht sicher, ob Sie Recht haben, aber Ihre Erklärung macht so viel Sinn, dass ich sie unterstützen muss. IMHO komprimiertes Bild ist immer noch ein Bild. Der Weg zum Abrufen des Bildes ist irrelevant. Es ist ein Bild. Es wird klar, wovon Sie sprechen, und vielleicht ist das das Wichtigste.
Akostadinov
Interessant. Wenn ich also eine Javascript-Datei habe, die den Text eines Objekts enthält, das eine Reihe von kernelähnlichen Funktionen enthält, und diese über XMLHttpRequest lade und auswerte, kann ich sie auf NodeJS-Seite verwenden und NodeJS-Server verwenden, um über Anforderungen mit ihr zu interagieren Javascript Datei ein Kernel Bild: O
Dmitry
31

Das Wort image hat auch die Definition "Eine Datei, die alle Informationen enthält, die zum Erstellen einer Live-Arbeitskopie erforderlich sind."

Simon Richter
quelle
3
Es ist ein schöner, eindeutiger Begriff, der die Notwendigkeit vermeidet, mit Begriffen wie "binär", "ausführbar", "programm", ... herumzuspielen, um sich auf das tatsächliche Image auf der Festplatte zu beziehen.
Thomas
3
Ein Bild ist eine Momentaufnahme der Erinnerung.
Ikegami,
2
Nicht ganz - ich benötige genügend Informationen, um den vollständigen Systemstatus (neu) zu erstellen. Wenn ein Speicherauszug dafür ausreicht, dann habe ich implizite Kenntnisse (Startadresse, anfänglicher Systemzustand); Wenn es nicht ausreicht, würde ich den Speicherauszug nicht als Bild bezeichnen .
Simon Richter
20

Dies bedeutet nicht, dass ein "Image" nur eine 1: 1-Kopie einer Festplatte ist. So wie ein Foto die Realität genau wie beim Aufnehmen darstellt, stellt ein Abbild eines ausführbaren Programms (oder Kernels) das Programm in einem Zustand dar, in dem es genau wie es ist in den Systemspeicher geladen (oder entpackt) werden kann Kontrolle darüber gegeben. Dieses Programm kann dann auf konsistente Weise von diesem Zustand aus gestartet werden. Das Linux-Kernel-Image ist also ein Image (ein Bild des Status) des Linux-Kernels, das in der Lage ist, von selbst ausgeführt zu werden, nachdem die Steuerung an ihn übergeben wurde.

Heutzutage lädt der Bootloader ein solches Image aus dem Dateisystem der Festplatte (Treiber wird benötigt), ersetzt sich selbst und gibt ihm so die Kontrolle. Der Bootvorgang eines Computers führt dies mehrere Male durch, bis das Betriebssystem schließlich ausgeführt wird. Dies wird Kettenladen genannt . Oder wenn ein kleineres Programm (Chain-) ein komplexeres lädt, spricht man von Bootstrapping .

Das BIOS lädt den Bootloader, der auch ein Image ist, das zum Beispiel boot.imgim Fall von aufgerufen wird grub. Das boot.imgist keine Datei (wenn grub installiert ist); Dies ist der Name für den Teil, der im Master Boot Record (MBR) enthalten ist. Wenn Sie das in eine Datei kopieren, handelt es sich um ein Bild in Form einer Datei, die nicht direkt auf die Festplatte, sondern direkt in eine Datei geschrieben wurde. Dies ist auch eine Darstellung (Bild) des frühesten Zustands, in grubdem der Rest von sich selbst geladen werden kann. grubhat dann einen eigenen mechanismus wie man sich durch laden anderer bilder voll lädt. Dies wird durch die verschiedenen Phasen in dargestellt grub. Danach lädt der Bootloader das Kernel-Image, indem er sich durch den extrahierten Inhalt dieser Datei ersetzt.

Chaos
quelle
7

Alte Geschichte. Der Begriff Bild stammt von einem alten Begriff der Digital Equipment Corporation für die Ausgabe vom Compiler-> Linker. Die Datei ist ein Bild, das durch Interpretation des Codes usw. über den Linker erstellt wurde, um ein ausführbares "Bild" Ihres Entwurfs zu erstellen.

SkipBerne
quelle
1
Ich würde mich verbessern, wenn Sie einen Referenzlink hinzufügen
RobAu
Siehe
5

In der Mathematik ist der Kernel das umgekehrte Bild einer Teilmenge des Bildes einer Karte, wobei die Teilmenge gleich dem Identitätselement in der Codomäne ist. Ich bin mir sicher, dass diese Namen von mathematischen Konzepten abgeleitet sind, da sie in verschiedenen Bereichen der Mathematik einen signifikanten Zusammenhang aufweisen. In Anbetracht der Tatsache, dass Unix in einer akademischen Umgebung entwickelt wurde, ist es möglich, dass die Verwendung des Kernels und des Images dieses Wortes identisch ist.

Wenn Sie einen Satz haben, der eine gewisse Informationsebene über das "vollständige" Betriebssystem darstellt, und diese Information auch eine Gruppe bildet, können Sie Gruppenhomomorphismen für diesen Satz definieren oder ihn im Grunde anderen Sätzen zuordnen, die eine andere Größe haben als der ursprüngliche Satz, solange Sie "respektieren" die Struktur des Orginal-Sets, die es zu einer Gruppe gemacht hat. Sie können sehen, dass es zu Ihren Gunsten sein kann, die Menge einer kleineren Menge oder einer Teilmenge einer Menge zuzuordnen, bei der die Teilmenge kleiner ist.

Bild - Das Bild eines Gruppenhomomorphismus und allgemeiner Funktionen und Karten ist nur eine Teilmenge einer Menge, auf die die Elemente tatsächlich abgebildet werden. Die Funktion wird möglicherweise nicht auf jedes einzelne Element abgebildet, und diese Elemente werden nicht in das Bild aufgenommen.

Kernel - Grundsätzlich werden nur die Elemente aus dem Originalsatz dem Bild zugeordnet, jedoch nur dem Identitätselement im Bild. Grundsätzlich mögen die Elemente, die auf 0 abgebildet sind, das Bild.

Wenn das Bild kleiner ist als das Originalset, können wir sehen, dass mehrere Elemente einem einzelnen Element zugeordnet werden müssen. So kann es beispielsweise mehrere Elemente aus dem Kernel geben, die dem Image zugeordnet sind, und wir wissen bereits, dass sie alle 0 zugeordnet werden müssen.

Wir können sehen, dass wir, wenn wir die ursprüngliche Menge als endliche Folgen von Binären oder Einsen und Nullen und die (zugeordnete) Codomäne als Folgen von Binären wählen, solche Dinge genau dann konstruieren können, wenn wir eine geeignete Gruppenstruktur haben kann definiert werden (dieses kleine bisschen in der Tiefe und unabhängig von der gestellten Frage).

Wir sehen also mit absoluter Sicherheit, dass "Kernel" und "Image" eines Betriebssystems vollständig definiert sind und eine mathematische Bedeutung haben. Unabhängig von möglicherweise anderen Verwendungen der Begriffe.

Marschall Handwerk
quelle
Grundsätzlich kann der Kernel eine "ausgedünnte" Version des Betriebssystems sein oder ein Teil des Betriebssystems, der wichtig ist und "abstrahiert" werden kann, vorausgesetzt, die Karte war injektiv homorph und ist bekannt, kann das gesamte Image herausarbeiten, ohne herumtragen zu müssen das gesamte Bild. Es sieht so aus, als wäre eine Methode zur Datenkomprimierung, von der der Begriff "Kernel" und "Image" abstammen. Aber in Wirklichkeit stammen sie aus bekannten mathematischen Konzepten.
Marschall Handwerk
3
Hallo Marschall. Es ist besser, Ihren Beitrag zu verbessern, indem Sie ihn bearbeiten, als Kommentare hinzuzufügen.
Anthony G - Gerechtigkeit für Monica
4
Ich glaube, der Computereinsatz von Kernel kommt vom " zentralen (normalerweise essbaren) Teil einer Nuss, besonders wenn die harte Schale entfernt wurde " (siehe wiktionary ) - es ist der kleine innere Teil des Betriebssystems; Nach dem Entfernen aller "äußeren Schichten" (GUIs, Kommandoshells, ladbare Treiber) ist dies der (grob) minimale Teil, der benötigt wird, um die Hardware auf eine nützliche Weise arbeiten zu lassen.
TripeHound
Wow einfach wow. Spekulation ohne Basis. TripeHound hat es richtig gemacht. Marschallschiff nur erraten.
Joshua
Überarbeiten Sie Ihre "ziemlich sichere" Art :)
Hobbs