User-Space

User-Space
Schema der Ringe beim x86-System mit Gates zur Kommunikation

Der Ring, auch Domain genannt, bezeichnet im Umfeld der Betriebssystem-Programmierung und des Multitaskings eine Privilegierungs- bzw. Sicherheitsstufe eines Prozesses. Diese schränkt den Prozess in dem auf der CPU nutzbaren Befehlssatz und Speicherbereich ein. Die Nutzung von Privilegierungsebenen ist sinnvoll, um die Hardware zu abstrahieren und um Prozesse voneinander abzuschotten.

Inhaltsverzeichnis

Umsetzung

Der Befehlssatz wird für unprivilegierte Prozesse derart eingeschränkt, dass sie nicht direkt auf die Hardware zugreifen können und sich auch nicht aus ihrer Privilegierungsebene befreien können. Der Zugriff auf den Speicherbereich anderer Prozesse wird durch Speichervirtualisierung verhindert. Somit wird gewährleistet, dass Prozesse z. B. im Ring 3 in keinem Fall Prozesse im Ring 0 oder auch andere Prozesse im Ring 3 beeinflussen können. Da die unprivilegierten Prozesse nicht auf Hardware direkt zugreifen können, existieren sogenannte „Gates“ als Zugangstore im Speicher auf den darunterliegenden Ring, um auf die Programmierschnittstelle des Betriebssystemkerns die notwendigen Aktionen anzufordern.

Prozesse im Ring 0 befinden sich im sogenannten Kernel-Modus (engl. kernel mode) – alle anderen im Benutzer-Modus (engl. user mode). Jeder Wechsel von einem Ring zum anderen erfordert in der CPU einen Kontext-Wechsel, der einige Rechenzeit in Anspruch nimmt.

Voraussetzung

Die CPU muss extern oder intern über eine MMU (Speicher-Verwaltungseinheit, engl. „Memory Management Unit“) verfügen, die sowohl die Umsetzung zwischen virtuellen und physikalischen Speicheradressen vornimmt, als auch die Auswertung der Deskriptoren der virtuellen Speicherseiten. Darüber hinaus muss die CPU über die Möglichkeit verfügen, den zuletzt ausgeführten Befehl zu wiederholen: Bei einer Zugriffsverletzung – ein Prozess greift auf nicht zugelassene Befehle oder Speicherseiten zu, die nicht physikalisch vorhanden sind – wird ein Interrupt ausgelöst, dessen Ursache das Betriebssystem auswerten muss und gegebenenfalls den letzten Befehl wiederholt.

Diese Berechtigungsmodi werden sowohl von x86-Prozessoren (ab 80286) als auch von RISC-Prozessoren und anderen Typen unterstützt.

x86-Prozessor-Systeme

Intel 80286-kompatible Prozessoren unterscheiden vier Privilegierungsstufen: Ring 0, 1, 2 und 3. Dabei stellt Ring 0, genannt „supervisor mode“, die höchste Privilegierungsstufe dar, die bis zur Stufe 3 (Ring 3) immer weiter eingeschränkt wird. Beispiele für Assembler-Anweisungen, die im Ring 0, jedoch nicht im Ring 3 ausgeführt werden dürfen sind z. B. „cli“ und „sti“. Mit diesen Anweisungen wird die Behandlung eines bestimmten Interrupts ab- bzw. eingeschaltet.

Um Prozesse in einem geschützten Bereich (Ring > 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, ausgeführt wird. Diese Auswertung nimmt die MMU meist extern vor.

Mit der Einführung des AMD64-Opcodes, den auch Intel für einige seiner Prozessoren als Intel 64 übernommen hat, existiert im Speicherseitendeskriptor zusätzlich das NX-Flag (engl. „No eXecution“), das eine Unterscheidung zwischen Daten und Programmcode ermöglicht, um so Sicherheitslücken durch Pufferüberläufe vorzubeugen. Der Pufferüberlauf wird zwar nicht direkt verhindert, Programmcode in Datenseiten kann dabei aber nicht ausgeführt werden.

Betriebssysteme auf x86

Die verbreiteten Betriebssysteme für x86 (dazu gehören Linux und Windows) nutzen lediglich 2 der 4 möglichen CPU-Ringe. Im Ring 0 werden der Kernel und alle Hardwaretreiber ausgeführt, während die Anwendungssoftware im unprivilegierten Ring 3 arbeitet. Damit bleibt die Portabilität des Betriebssystems auch auf Prozessorarchitekturen gewährleistet die nur 2 Ringe unterscheiden können. OS/2 benutzt allerdings Ring 2 für Grafiktreiber.[1]

Die verstärkt verwendeten Virtualisierungslösungen verwenden auch Ring 1. Hierbei wird der Betriebssystemkern aus Ring 0 in Ring 1 verschoben, der „Hypervisor“ residiert dann als darüberliegende 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 ausführen zu lassen (siehe auch Virtual Machine Based Rootkit).

Nicht x86-Systeme

Die bei x86-Prozessoren vorgenommene Einteilung in 4 Ringe wurde schon früher eingesetzt, z. B. bei der VAX. Der Alpha-Prozessor unterstützt einen zusätzlichen geschützten Bereich für dessen PAL-Code, welcher als Ring -1 aufgefasst werden könnte. Die Honeywell 6180, das erste System mit Hardware-Unterstützung für dieses Konzept, kannte 8 Ringe.

Bei vielen aktuellen Prozessoren wird oft nur zwischen Supervisor- („alles ist möglich“) und User-Modus (eingeschränkte Zugriffe auf Speicherbereiche/​Systemresourcen/​CPU-Register) unterschieden. Der Schutz des Arbeitsspeichers erfolgt über die Seitenverwaltungseinheit der CPU.

Dieses Prinzip lässt sich auch auf x86-Systemen anwenden, indem der Speicher über die Segmentierung als Flat Memory angelegt wird. Dabei läuft die CPU nur in den Privilegierungsstufen 0 und 3.

Einzelnachweise

  1. Presentation Device Driver Reference for OS/2 auf warpspeed.com (englisch)

Siehe auch


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • User space — kernel space redirects here. For mathematical definition, see null space. A conventional operating system usually segregates virtual memory into kernel space and user space. Kernel space is strictly reserved for running the kernel, kernel… …   Wikipedia

  • user-space — ● ►en adj. ►ARGOT Litt. espace de l utilisateur . Caractérise tout ce qui est accessible par l utilisateur de base, par opposition aux ressources dont l accès est restreint aux administrateurs. Comparable à l userland, mais en moins souvent… …   Dictionnaire d'informatique francophone

  • Plan 9 from User Space — Saltar a navegación, búsqueda Para otros usos de este término, véase Plan 9. Plan 9 from User Space (o plan9port o p9p) es un port de varias bibliotecas y aplicaciones del sistema Plan 9 from Bell Labs a sistemas UNIX y similares. Actualmente ha… …   Wikipedia Español

  • Early user space — is used on newer versions of the Linux kernel to replace as many functions as possible that would have originally been done in the kernel during the start up process. Typical uses of early user space are to detect what device drivers are needed… …   Wikipedia

  • Plan 9 from User Space — (or plan9port or p9p) is a port of many Plan 9 from Bell Labs libraries and applications to Unix like operating systems. Currently it has been tested on a variety of operating systems including: Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD,… …   Wikipedia

  • User-mode Linux — (UML) allows multiple virtual Linux systems (known as guests) to run as an application within a normal Linux system (known as the host). As each guest is just a normal application running as a process in user space, this approach provides the… …   Wikipedia

  • User-mode Linux — (UML, Линукс пользовательского режима)  вариант ядра Linux, который позволяет запустить несколько виртуализованных Линукс систем (т. н. гостевых от англ. guests) в качестве обычных приложений в основной Linux‐системе (т. н.… …   Википедия

  • User Mode Linux — Pour les articles homonymes, voir UML. User Mode Linux ou UML est un noyau Linux compilé qui peut être exécuté dans l espace utilisateur comme un simple programme. Il permet donc d avoir plusieurs systèmes d exploitation virtuels sur une seule… …   Wikipédia en Français

  • Space heating — is the heating of a space, usually enclosed, such as a house or room. A space heater keeps the air and surroundings at a comfortable temperature for people or animals, or even plants in a greenhouse. Space heating generally warms a small space,… …   Wikipedia

  • User Account Control — UAC (User Account Control)  компонент Microsoft Windows, впервые появившийся в Windows Vista. Этот компонент запрашивает подтверждение действий, требующих прав администратора, в целях защиты от несанкционированного использования компьютера.… …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”