www.wikidata.de-de.nina.az
Der Ring auch Domain genannt bezeichnet im Umfeld der Betriebssystem Programmierung und des Multitaskings eine Privilegierungs bzw Sicherheitsstufe des gerade laufenden Programmcodes Es handelt sich um eine Funktion der Hardware durch die der auf der CPU nutzbare Befehlssatz und der verwendbare Speicherbereich dynamisch eingeschrankt werden kann Die Nutzung von Privilegierungsebenen ist sinnvoll um die Hardware zu abstrahieren und um Prozesse voneinander und vom Betriebssystem und Treibern abzuschotten Schema der Ringe beim x86 System mit Gates zur Kommunikation Inhaltsverzeichnis 1 Ringe 1 1 x86 1 1 1 Ring 0 Kernel Mode 1 1 2 Ring 1 und 2 1 1 3 Ring 3 User Mode 1 2 Ring 1 Hypervisor Mode 2 Umsetzung 2 1 Ablauf eines Betriebssystemaufrufs 3 Voraussetzung 4 x86 Prozessor Systeme 4 1 Wechsel zwischen den Ringen 4 2 Betriebssysteme auf x86 5 Nicht x86 Systeme 6 Einzelnachweise 7 WeblinksRinge BearbeitenEs gibt verschiedene Ringmodelle Fur Hypervisoren fuhrten Intel und AMD auf neueren CPUs einen zusatzlichen Ring 1 ein und es gibt Ringmodelle mit mehr als vier Ringen wie bei x86 Systemen x86 Bearbeiten Auf x86 Systemen sind die Sicherheitsstufen in vier Ringe aufgeteilt wobei Ring 0 der privilegierteste Ring ist Die beiden Ringe 1 und 2 werden auf dieser Systemfamilie nicht verwendet Alle Anwendungen laufen im Ring 3 und mussen uber den Kernel mit z B der Hardware kommunizieren Systemaufrufe Ring 0 Kernel Mode Bearbeiten Im innersten Ring hochste Berechtigungsstufe privilegierte Ebene System Ebene Kern Ebene lauft meist das Betriebssystem evtl sogar nur dessen Kernel und damit dessen Bestandteile wie Prozessverwaltung Speicherverwaltung Gerateverwaltung Dateisysteme und Schnittstellen zur Hardware Das Betriebssystem darf alles insbesondere direkte Hardwarezugriffe und das Eingreifen in die RAM Bereiche anderer Prozesse Auch sich im Kernel befindliche Treiber werden in Ring 0 ausgefuhrt Code auf dieser Ebene darf alle CPU Anweisungen ausfuhren auf jeden Speicherbereich zugreifen auf E A Gerate zugreifen uber Treiber Ring 1 und 2 Bearbeiten Von den verbreitetsten Rechnerarchitekturen besitzt nur die x86 Familie diese Zwischenstufen zwischen Kernel Mode und User Mode In den Betriebssystemen Windows und Linux werden diese Zwischenstufen nicht verwendet Ring 3 User Mode Bearbeiten Anwendungsprogramme sind ublicherweise auf den aussersten Ring beschrankt niedrigste Berechtigungsstufe Fur Operationen welche einen Hardwarezugriff erfordern mussen Anwendungsprogramme Betriebssystem Dienste beauftragen Ring 1 Hypervisor Mode Bearbeiten Von den meisten aktuellen Rechnerarchitekturen wird gefordert dass ubliche Betriebssysteme die fur einen Betrieb in Ring 0 ausgelegt sind Hardware unterstutzt virtualisiert ausgefuhrt werden konnen Dazu muss es eine Berechtigungsstufe oberhalb von Ring 0 geben die oft Ring 1 oder Hypervisor Mode genannt wird Umsetzung BearbeitenDer Befehlssatz wird fur unprivilegierte Prozesse Userland derart eingeschrankt dass sie nicht direkt auf die Hardware zugreifen konnen und sich auch nicht aus ihrer Privilegierungsebene befreien konnen Der Zugriff auf den Speicherbereich anderer Prozesse wird meist durch Speichervirtualisierung verhindert Somit wird gewahrleistet dass Programmcode in ausseren Ringen nicht eigenmachtig auf Programmcode oder Daten des Kernels und anderer Systemdienste in inneren Ringen zugreifen kann Die gleiche Speichervirtualisierung wird ublicherweise auch eingesetzt um unterschiedliche Prozesse voneinander zu isolieren Da die unprivilegierten Prozesse auf Hardware nicht direkt zugreifen konnen existieren sogenannte Gates mit denen Programmcode aus ausseren Ringen Programmcode aus inneren Ringen aufrufen kann insbesondere ist so die Programmierschnittstelle des Kernels erreichbar um die notwendigen Aktionen anzufordern Die meisten Prozessor Architekturen bieten nur zwei Ringe Programmcode im Ring 0 befindet sich im Kernelmodus engl kernel mode Kernelraum engl kernel space oder ist Superuser Code engl super user code alle anderen im Benutzermodus engl user mode oder Benutzerraum engl user space Ablauf eines Betriebssystemaufrufs Bearbeiten Ein mit niedriger Berechtigung laufender Prozess wahlt durch geeignetes Setzen von CPU Registern und Speicherbereichen die auszufuhrende Funktion des Betriebssystems und setzt die benotigten Parameter Anschliessend lost er per CPU Befehl einen Softwareinterrupt aus Der Prozess wird dadurch unterbrochen die CPU wechselt in den innersten Ring Kernel mode und setzt die Ausfuhrung mit einer speziellen Betriebssystem Routine fort Diese sichert zunachst weitere CPU Zustande die nicht von der CPU selbst im Rahmen des Softwareinterrupts bereits gesichert wurden um beispielsweise freie Register fur das eigene Ablaufen zu haben Anschliessend agiert sie gemass dem angeforderten Auftrag Sie ubergibt ihn an den zustandigen Treiber reiht ihn in eine Warteschlange zur Abarbeitung durch einen Kernel Thread ein oder kann evtl den Auftrag selbst ausfuhren In den ersten beiden Fallen wird anschliessend meist ein vollstandiger Kontextwechsel zu einem anderen Prozess durchgefuhrt da der aufrufende Prozess erst weiter laufen kann wenn das Betriebssystem den Auftrag vollstandig abgearbeitet hat Sobald der Auftrag vollstandig abgearbeitet wurde legt die Betriebssystem Routine die Ruckgabewerte in die Speicherbereiche des Prozesses ab und vermerkt ggf weitere Ruckgabewerte fur bestimmte CPU Register in dessen Prozesskontext Der anfordernde Prozess wird als bereit markiert und spater im Rahmen des regularen Schedulings wieder mittels Kontextwechsel fortgesetzt Eine spezielle CPU Instruktion schliesst den Kontextwechsel ab die CPU kehrt aus dem Softwareinterrupt zuruck wodurch die CPU wieder in den User Mode ausserster Ring zuruck wechselt und die Ausfuhrung des niedrig berechtigten Prozesses direkt nach der Unterbrechungsstelle fortsetzt Voraussetzung BearbeitenIn der CPU und ggf MMU mussen Schaltungen bestehen die bei jedem Befehl bzw Speicherzugriff prufen ob dieser im aktuellen Ring erlaubt ist Falls ein Prozess etwas nicht Erlaubtes durchfuhren mochte wird er unterbrochen und eine Betriebssystem Routine aufgerufen deren Aufgabe es ist entsprechend zu reagieren x86 Prozessor Systeme BearbeitenIntel 80286 kompatible Prozessoren unterscheiden vier Privilegierungsstufen Ring 0 1 2 und 3 Dabei stellt Ring 0 genannt supervisor mode die hochste Privilegierungsstufe dar die bis zur Stufe 3 Ring 3 immer weiter eingeschrankt wird Beispiele fur Assembler Anweisungen die im Ring 0 jedoch nicht im Ring 3 ausgefuhrt werden durfen sind z B cli und sti Mit diesen Anweisungen wird die Behandlung von maskierbaren Hardwareinterrupts ab bzw eingeschaltet Ursprunglich waren die Ringe fur den Kernel Ring 0 Treiber Ring 1 Systemdienste Ring 2 und Anwendungsprogramme Ring 3 vorgesehen Um Prozesse in einem geschutzten Bereich Ring gt 0 ablaufen zu lassen wird der physikalische Arbeitsspeicher in virtuelle Speicherseiten aufgeteilt Zu jeder Speicherseite existiert eine Tabelle in der unter anderem gespeichert ist in welchem Level Ring der Programmcode der innerhalb dieser Speicherseite gespeichert ist ausgefuhrt wird Diese Auswertung nimmt die MMU meist extern vor Mit der Einfuhrung des AMD64 Opcodes den auch Intel fur einige seiner Prozessoren als Intel 64 ubernommen hat existiert im Speicherseitendeskriptor zusatzlich das NX Flag engl No eXecution das eine Unterscheidung zwischen Daten und Programmcode ermoglicht um so Sicherheitslucken durch Pufferuberlaufe vorzubeugen Der Pufferuberlauf wird zwar nicht direkt verhindert Programmcode in Datenseiten kann dabei aber nicht ausgefuhrt werden Wechsel zwischen den Ringen Bearbeiten Fur einen Wechsel des Rings stehen drei Gate Typen zur Verfugung die bei ihrer Verwendung unterschiedlich viel Rechenzeit in Anspruch nehmen da jeder Wechsel von einem Ring zum anderen auch einen Kontextwechsel zumindest einiger Zustande in der CPU darstellt Call Gates fur den direkten Aufruf von Programmcode aus hoheren Privilegierungsebenen Das Call Gate bestimmt dabei an welcher Stelle und mit welchen Privilegien der aufgerufene Programmcode laufen wird Aus Sicherheitsgrunden wird hierbei dem Programmcode aus der hoheren Privilegierungsebene ein eigener Stapel zugewiesen die Aufrufparameter vom Stapel des aufrufenden Codes werden in den neuen Stapel kopiert Im ubrigen lauft der privilegierte Code im Kontext des aufrufenden Codes Interrupt Gates werden zum einen beim Auslosen eines so genannten Software Interrupts verwendet aber auch Hardware Interrupts erfordern ein Interrupt Gate Zusatzlich zu allen Schritten die beim Benutzen eines Call Gates durchgefuhrt werden wird zusatzlich das Flags Register auf dem Stapel gespeichert und weitere Interrupts bis zur Ruckkehr der Interrupt Routine gesperrt Task Gates erlauben die Kontrolle an einen anderen Prozess abzugeben Dies stellt die aufwandigste Form eines Kontextwechsels dar da hier der vollstandige Prozessorzustand des aufrufenden Prozesses gespeichert und des aufgerufenen Prozesses geladen werden muss Betriebssysteme auf x86 Bearbeiten Die verbreiteten Betriebssysteme fur x86 Linux und Windows sowie macOS fur x64 und DOS mit EMM386 EXE Speichermanager nutzen lediglich zwei der vier moglichen CPU Ringe Im Ring 0 werden der Kernel und alle Hardwaretreiber ausgefuhrt wahrend die Anwendungssoftware im unprivilegierten Ring 3 arbeitet Damit bleibt die Portabilitat des Betriebssystems auch auf Prozessorarchitekturen gewahrleistet die nur zwei Ringe unterscheiden konnen OS 2 benutzt allerdings Ring 2 fur Grafiktreiber 1 Eine speziell angepasste Version des Speichermanagers EMM386 aus dem Entwicklungskit fur DOS Protected Mode Services fur Novell DOS 7 OpenDOS 7 01 und DR DOS 7 02 und hoher lasst DPMS auf Ring 1 statt auf Ring 0 laufen und erleichtert so die Fehlersuche bei Software die DPMS nutzt Die verstarkt verwendeten Virtualisierungslosungen verwenden auch Ring 1 Hierbei wird der Betriebssystemkern aus Ring 0 in Ring 1 verschoben der Hypervisor residiert dann als daruberliegende Schicht in Ring 0 und verwaltet einen oder mehrere in Ring 1 laufende Betriebssystemkerne Dies kann allerdings auch durch Rootkits ausgenutzt werden um Schadcode unbemerkt vom Anwender auf dem Ring 0 ausfuhren zu lassen siehe auch Virtual Machine Based Rootkit Um die Verwendung von Hypervisoren zu vereinfachen fuhren neuere CPUs von Intel und AMD einen neuen Ring 1 ein so dass der Betriebssystemkern in Ring 0 verbleibt wahrend der Hypervisor als daruberliegende Schicht in Ring 1 residiert Dabei verwaltet er einen oder mehrere Betriebssystemkerne in Ring 0 Nicht x86 Systeme BearbeitenDie bei x86 Prozessoren vorgenommene Einteilung in vier Ringe wurde schon fruher eingesetzt z B bei der VAX Der Alpha Prozessor unterstutzt einen zusatzlichen geschutzten Bereich fur dessen PAL Code welcher als Ring 1 aufgefasst werden konnte Die Honeywell 6180 das erste System mit Hardware Unterstutzung fur dieses Konzept kannte acht Ringe Bei vielen aktuellen Prozessoren wird oft nur zwischen Supervisor alles ist erlaubt und User Modus eingeschrankte Zugriffe auf Speicherbereiche Systemressourcen CPU Register unterschieden Der Schutz des Arbeitsspeichers erfolgt uber die Seitenverwaltungseinheit MMU der CPU Dieses Prinzip lasst sich auch auf x86 Systemen anwenden indem der Speicher uber die Segmentierung als Flat Memory angelegt wird Dabei lauft die CPU nur in den Privilegierungsstufen 0 und 3 Einzelnachweise Bearbeiten Presentation Device Driver Reference for OS 2 Memento des Originals vom 16 Juni 2013 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www warpspeed com au auf warpspeed com englisch Weblinks Bearbeitenhttps stackoverflow com questions 18717016 what are ring 0 and ring 3 in the context of operating systems Abgerufen von https de wikipedia org w index php title Ring CPU amp oldid 229979074