Ringe und Run Levels

7

Die unten angegebene Frage ist möglicherweise technisch nicht korrekt (Missverständnis), daher wäre es wünschenswert, wenn auch das Missverständnis angesprochen wird.

In welchem Ringpegel arbeiten die verschiedenen * nix- Laufpegel ?

Ring-Tag nicht verfügbar.

Blutende Finger
quelle

Antworten:

9

Unix-Runlevel sind orthogonal (im Sinne "nicht verwandt", "unabhängig von" - siehe Kommentare) zu Schutzringen.

Runlevels sind im Grunde genommen Laufzeitkonfigurationen / -zustände des gesamten Betriebssystems. Sie beschreiben, welche Dienste verfügbar sind ("für den Benutzer") - wie SSH-Zugriff, MTA, Dateiserver, GUI.

Ringe sind ein hardwareunterstütztes Konzept, das eine genauere Kontrolle über die Hardware ermöglicht (wie auf der Wikipedia-Seite erwähnt, auf die Sie verlinken). Beispielsweise kann Code, der in einem höheren Ring ausgeführt wird, einige CPU-Anweisungen möglicherweise nicht ausführen.

Linux auf der x86-Architektur verwendet normalerweise Ring0 für den Kernel (einschließlich Gerätetreiber) und Ring3 für Userspace-Anwendungen (unabhängig davon, ob sie von root oder einem anderen normalen oder privilegierten Benutzer ausgeführt werden).

Daher kann man nicht wirklich sagen, dass ein Runlevel in einem bestimmten Ring ausgeführt wird - in Ring3 und im Kernel (Ring0) werden immer 1 Userspace-Anwendungen (mindestens PID 1 - the init) ausgeführt.


1 Wie immer bedeutet "immer" wirklich "fast immer", da Sie "normale" Programme in Ring0 ausführen können, aber es ist unwahrscheinlich, dass Sie dies im wirklichen Leben sehen (es sei denn, Sie arbeiten an HPC).

Peterph
quelle
Wenn Sie orthogonal sagen, meinen Sie damit kapazitätsbasierte Sicherheit ?
Bleeding Fingers
1
Nein, orthogonal wie unabhängig (Bedeutungen 3-5 auf dieser Wiktionary-Seite). Warum haben Sie an Capability-basierte Sicherheit gedacht?
Peterph
2
Hochleistungsrechnen (HPC)?
Bleeding Fingers
3
Ja, High Performance Computing - die Sache ist, dass normalerweise Anwendungen viele Systemaufrufe ausführen (Anforderungen an den Kernel wie Zugriff auf Dateien, Netzwerk usw.) und diese eine Strafe für das Überqueren der Hexenausführung zwischen den Ringen verursachen. Wenn Sie Ihren Code jetzt in denselben Ring wie den Kernel einfügen, können Sie eine gewisse Leistung erzielen, wenn Sie diese Switches nicht mehr benötigen. Ihr Code muss sorgfältiger geschrieben / getestet werden, da er Zugriff auf Dinge hat, die er normalerweise nicht hat, und daher möglicherweise eine größere Katastrophe verursachen kann. :)
Peterph
2
@ Peterph Ich denke, orthogonal ist ein fantastisches Wort, aber leider denke ich, dass viele das Wort nicht kennen. Es könnte sich lohnen, einen einfacheren Begriff einzufügen, zumindest in Klammern nach orthogonal.
Kurtm
0

Die beiden Konzepte sind völlig unabhängig voneinander. Die Systemausführungsebene bezieht sich auf die Gruppe von Diensten, die auf dem System ausgeführt werden, z. B. ob die GUI-Desktop-Umgebung ausgeführt wird oder nicht. Ringebenen sind ein Hardwareschutzmechanismus auf Intel x86-Prozessoren, der Code in verschiedene Berechtigungsstufen unterteilt. Linux verwendet nur die Ringe 0 und 3 für den Kernel- bzw. Benutzermoduscode. Somit werden alle Prozesse im Benutzermodus, die ausgeführt werden, wenn sich das System in einer beliebigen Ausführungsebene befindet, in Ring 3 ausgeführt, bis sie einen Aufruf des Kernel-Codes ausführen, der die CPU auf Ring 0 umstellt.

psusi
quelle
-2

Von Ihrem eigenen Link:

In einem monolithischen Kernel wird das Betriebssystem im Supervisor-Modus und die Anwendungen im Benutzermodus ausgeführt. Andere Arten von Betriebssystemen, wie z. B. solche mit einem Exokernel oder Mikrokernel, teilen dieses Verhalten nicht unbedingt.

Einige Beispiele aus der PC-Welt:

Linux und Windows sind zwei Betriebssysteme, die den Supervisor / User-Modus verwenden. Um spezielle Funktionen ausführen zu können, muss der Benutzermoduscode einen Systemaufruf in den Supervisor-Modus oder sogar in den Kernelbereich ausführen, in dem vertrauenswürdiger Code des Betriebssystems die erforderliche Aufgabe ausführt und an den Benutzerbereich zurückgibt.

Ihre Antwort wäre also 2. Der Supervisor (0) und der Benutzer (1).

Jeight
quelle
-1 Das ist keine wirkliche Antwort auf die Frage In welchem ​​Ringlevel arbeiten die verschiedenen * nix-Runlevel?
Peterph
@ Peterph Ihre Antwort war die gleiche Wurzel und Benutzer. Ich gebe, dass du es besser erklärt hast, aber seine Antwort war bereits in dem Link, den er gegeben hat.
Jeight
1
Ja, die Antwort ist im Grunde genommen da - meine Beschwerde bezog sich auf Ihre Interpretation. Ringe haben nichts mit privilegierten (root) und nicht privilegierten Benutzern zu tun, sondern mit dem Unterschied zwischen Kernelraum und Benutzerraum. Und dafür war mein -1 (es tut mir leid, dass ich das nicht explizit angegeben habe).
Peterph
@peterph Die meisten Leute verstehen den Unterschied zwischen privilegierten / nicht privilegierten Benutzern und Kernel-Space / User-Space nicht. Ja, ich hätte Kernel anstelle von Supervisor einsetzen sollen, aber ich habe nur das Zitat aus dem Artikel kopiert, um einen Punkt zu verdeutlichen. Es tut mir leid, dass dich das gestört hat. Ich weiß, dass Sie denken, dass viele neue Nutzer nur von Google kopieren und einfügen, ohne zu verstehen, was sie sagen (ich habe Ihren Beitrag gelesen), aber vielleicht sollten Sie den Frage- / Antwortverlauf eines anderen überprüfen, bevor Sie zu Schlussfolgerungen gelangen.
Jeight
1
Keine Notwendigkeit, die Geschichte von irgendjemandem zu überprüfen - ich streite nicht ad personam . Es ist die Antwort in ihrer jetzigen Form, die meiner Meinung nach falsch ist.
Peterph