Was gibt es in einem anderen Betriebssystem als dem Kernel

43

Soweit ich weiß, übernimmt der Kernel die gesamte Interaktion mit der Hardware und verwaltet den Speicher, die E / A-Geräte usw. Der Kernel erledigt also alles, ist jedoch nur ein Teil des Betriebssystems. Was gibt es sonst noch in einem Betriebssystem? Nur die Anwendungen, die im Lieferumfang enthalten sind? Was hat Ubuntu zum Beispiel außer einem Kernel? Der Gnome Desktop und einige andere Anwendungen?

AnkurVj
quelle

Antworten:

54

Die Muschel natürlich.

Die ursprüngliche Metapher, die uns das Wort "Kernel" brachte, wird zu oft vergessen. Die Metapher ist, dass ein Betriebssystem ein Same oder eine Nuss ist. Der "Kernel" des Seeds ist der Kern des Betriebssystems. Er stellt Anwendungsprogrammen Betriebssystemdienste zur Verfügung, die von der "Shell" des Seeds umgeben sind, die die Benutzer von außen sehen.

Einige Leute wollen "Kernel" (und in der Tat "Shell") binden, um genauer zu sein. Aber in Wahrheit gibt es viele Unterschiede zwischen den Betriebssystemen. Nicht zuletzt diese Variationen machen eine "Shell" aus (die von Solaris shüber Netwares Console Command Interpreter bis hin zu OS / 2 Workplace Shell und Windows NT Explorer reichen kann ), aber es gibt auch große Unterschiede zwischen den verschiedenen Betriebssystemen Was ist und ist kein Teil eines "Kernels" (der beispielsweise Festplatten-E / A enthalten kann oder nicht). Es ist am besten, sich daran zu erinnern, dass diese Begriffe Metaphern sind .

Es gibt andere Terminologien. In der IBM Mainframe-Terminologie wird der "Kernel" in der Seed / Nut-Metapher als Steuerprogramm bezeichnet . Andere Namen sind der Supervisor , der Monitor , der Kern und die Exekutive . Kern ist eine andere ziemlich offensichtliche biologische Metapher. Es ist interessant, dass dies auch ein anderer Name ist. Harvey M. Deitel nennt in seinen Betriebssystemen das Steuerungsprogramm den Nukleus und sagt

Der Nucleus repräsentiert normalerweise einen kleinen Teil des Codes des gesamten Betriebssystems [...]

Das Wort "Kern" stammt aus dem lateinischen Kern und bedeutet den Kern einer Nuss (vgl. Den lateinischen Nux , der "Nuss" bedeutet). Selbst wenn man das Steuerprogramm "the Nucleus" nennt, ergibt sich tatsächlich die gleiche Analogie zum Betriebssystem. Es ist eine Analogie, die nicht nur für Betriebssysteme verwendet wird. Wenn Sie mit der Chemie, zum Beispiel vertraut sind, wissen Sie , dass ein Atomkern von Elektronen in umgebene Schalen .

Was die pseudonyme Person new123456unten schreibt, veranschaulicht die Fehler, die sich aus dem Vergessen der Ursprünge dieser Metaphern ergeben, insofern, als man den Teil für das Ganze und den Kern für das gesamte Betriebssystem verwechselt. Ein "Userland" -Programm zu sein, macht die Shell nicht weniger zur Außenseite des Betriebssystems und auch nicht weniger zu der, die den Kernel einschließt. Darüber hinaus ist diese Idee nicht nur eine DOS-Idee, die für Unix nach Version 7 nicht mehr gilt, sondern in der Unix-Welt weit verbreitet und aktuell.

(Es ist ironisch, dass new123456dies für einen DOSismus gehalten wird. Die Kernel / Shell-Metapher war DOS in den Anfangsjahren ziemlich fremd, was Befehlsprozessor und ähnliches von CP / M bevorzugte . Wie CP / M zuvor wurde MS-DOS geteilt in das Basis-Disk-Betriebssystem (BDOS), das Basis-Eingabe-Ausgabe-System (BIOS - nicht die System-Firmware, Anmerkung), den Befehlsprozessor und die Haushaltsdienstprogramme . Der Code wurde tatsächlich auf diese Weise in Dateien aufgeteilt. Dies ist ein anderer Beispiel dafür, wie die Kernel / Shell- Metapher die tatsächlichen Abteilungen in vielen Betriebssystemen nicht wirklich abdeckt oder nicht vollständig mit ihnen übereinstimmt .)

new123456vergisst, was Deitel über den Kern geschrieben hat, der Teil des gesamten Betriebssystems ist. Ein Betriebssystem ist sowohl Kernel als auch Shell. Das ist schließlich die Metapher. Auch Deitel ist nicht allein. Es gibt Unmengen von Unix-Büchern, die die Unix-as-a-Nut-Metapher ab den 1980er Jahren erklären. Ich empfehle Urban und Tiemann, sich FreeBSD in 24 Stunden selbst beizubringen (SAMS, ISBN 9780672324246), und zwar aus dem einfachen Grund, weil es auf Seite 54 ein Diagramm enthält, das die Metapher des Betriebssystems als Ausgangswert darstellt, und - überraschenderweise - eine davon ist wenige Bücher dazu.

Der Name "Kern" ist wahrscheinlich der ältere Name; mit Sicherheit älter als Unix, was die Kernel / Shell-Terminologie bevorzugt, die heute - wahrscheinlich nicht zuletzt dank Unix - am weitesten verbreitet ist. Im Buch von Alan C. Shaw aus dem Jahr 1974 finden Sie Folgendes: Das logische Design von Betriebssystemen (Prentice-Hall, ISBN 9780135401125):

Der Teil des Systems, der sich permanent im Hauptspeicher befindet, wurde historisch als Kern bezeichnet . Der Kern besteht normalerweise aus einer minimalen Menge von Grundelementen und Prozessen für die Verwaltung von Prozessen, Ressourcen und Eingabe-Ausgabe.
Shaw hat auch ein Diagramm. ☺

JdeBP
quelle
7
Ich denke, dies ist eine brillante Antwort, einfach weil es mir die Beziehung zwischen den Metaphern "Shell" und "Kernel" in den Sinn gebracht hat. Ich kannte beide, ich habe sie nie verbunden. Ich kannte die Antwort auf die Frage, konnte aber trotzdem etwas aus dieser Antwort lernen. Daher die Gegenstimme. Vielen Dank!
Andrew J. Brehm
Ich würde zögern, dies zu sagen, da die UNIX-Shell seit Version 7 vom Kernel selbst abstrahiert wurde und seitdem ein Userland-Programm im wahrsten Sinne des Wortes hat. Was Sie sagen, trifft jedoch auf ein DOS zu (was eine besonders schreckliche Wahl für das Design ist).
new123456
Gut gemacht, Sir. Bitte hinterlassen Sie jedoch einen, @wenn Sie meinen Benutzernamen erwähnen, damit er in meine Antwortwarteschlange gestellt wird.
new123456
Gelobt als so umfassende Antwort mit einer Menge interessanter Geschichte (mir war der Kern als Computerbegriff - oder seine lateinische Etymologie - nicht bekannt). Ich denke jedoch, dass dies als eigenständige Antwort viel besser wäre, wenn nicht ausdrücklich auf die (jetzt gelöschte) Antwort eines anderen Benutzers verwiesen würde.
Anthony G - Gerechtigkeit für Monica
45

Andere Teile des Betriebssystems umfassen die Treiber, die mit dem Kernel interagieren. Es gibt mehrere Ebenen von Hilfsprogrammen, die sich mit der Benutzeroberfläche, dem Netzwerk und anderen Kernteilen des Betriebssystems befassen, die sich zwischen dem Kernel und der eigentlichen Anwendung befinden.

Als Beispiel habe ich die Struktur von OS X gezeigt , wie Sie oben auf dem Kernel (hellblau) sehen können, dass mehrere Schichten von "Kern" -Funktionalität, Systemtools, Diensten und APIs (Application Programming Interface) vor Ihnen liegen Sie können sogar die GUI aufrufen, mit der Sie normalerweise in den eigentlichen Anwendungen arbeiten.

Bildbeschreibung hier eingeben

Die meisten Betriebssysteme haben eine ähnliche Struktur, aber es gibt große Unterschiede hinsichtlich des tatsächlichen Anteils des Kernels. Im Wikipedia-Artikel zu Mikrokernen finden Sie einen Vergleich.

BEARBEITEN - Um Ihren Kommentar zu beantworten (mein Kommentar wurde etwas lang)

Sie könnten nur einen Linux-Kernel booten, aber Sie wären nicht in der Lage, wirklich viel zu erreichen. Es sind all diese Hilfsanwendungen, die die gesamte Schnittstelle bieten, die Sie sehen und verwenden.

Sobald der Kernel gebootet (und die Hardware initialisiert) ist, wird versucht, ihn an andere Teile des GNU / Linux-Betriebssystems weiterzuleiten, die die Funktionen zum Starten von Diensten bereitstellen (wie z. B. UDEV, das /devmit unformatierten Geräteschnittstellen für Programme gefüllt ist , um Dinge wie zu verwenden) Festplatten und serielle Schnittstellen usw.) und Programme zum Einrichten des Netzwerks ( dhcpcd ) und APIs wie X.org, damit Anwendungen Fenster und Symbole über einen Fenstermanager wie GNOME oder KDE anzeigen können .

Aber ja, Sie könnten einfach den Kernel selbst booten, er würde einfach mit einem "Ich habe gebootet, was nun?" Prompt.

Mokubai
quelle
Kann ich also nur einen Kernel booten und keines der zusätzlichen Dinge, die das Betriebssystem normalerweise hat?
AnkurVj
In der Theorie denke ich, aber es würde nichts ohne andere Programme tun . Es gibt winzige Betriebssysteme, die die Leute zum Spaß erstellt haben und die nichts anderes als ein Kernel, eine Shell und vielleicht ein Compiler oder Assembler sind (ich denke, Linux hat eigentlich so angefangen).
user55325
@AnkurVj Ich habe zu meiner Antwort hinzugefügt.
Mokubai
3
Ich glaube nicht, dass man nur den Linux-Kernel booten kann. Der Kernel erreicht einen Punkt, an dem er init aufruft. Zu diesem Zeitpunkt wechselt das System vom Kernelmodus in den Benutzermodus. Wenn init nicht verfügbar ist (oder ein gefälschter init wie bash), gerät der Kernel in Panik und stürzt ab. Es muss also ein Init-Prozess laufen, um die Panik zu vermeiden. Zu diesem Zeitpunkt läuft nicht nur der Kernel.
Joe Internet
1
Sie könnten einen nackten Kernel booten, aber ohne den Rest des Betriebssystems hätte der Benutzer keine Interaktion damit.
Keltari