PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unterschied von Prozessen im User- bzw Kernel-Mode


Gast
2004-02-10, 12:19:21
Hi!

Kann mir jemand erklären, was der Unterschied zwischen Prozessen ist, die im User-Mode oder im Kernel-Mode laufen?

Ist der obige Unterschied derselbe wie der Unterschied zwischen Kernel-Level-Threads und User-Level-Threads?
Falls nein, wo ist hier der Unterschied (KL-Thread <> UL-Thread)?

Crushinator
2004-02-10, 19:19:56
Ganz komprimiert ausgedrückt könnte man sagen, daß nur Kernel-Mode (Ring 0) Prozeße direkt auf Hardware-Adressen zugreifen dürfen - darunter fällt auch direktes adressieren auf physiklaischen Speicher - und daß User-Mode Prozeße nur Betriebssystemschnittstellen in Anspruch nehmen dürfen. Geräte-Treiber laufen z.B. sinnigerweise im Kernel-Mode und normale Anwendungen im User-Mode. Unter manchen Betriebssystemen z.B. OS/2 gibt es sogar mehr Level/Ringe/Modes. Ring 0 ist dann der Kernelmode, Ring 2 ist Ring 3 mit zus. I/O-Control Privilegien (Teile des GUI und 16-Bit Apps laufen z.B. darunter) und Ring 3 eben der User-Mode. (Ring 1 wird nicht benutzt)

Kernel-Threads sind wiederum zumindest mir nur von denen, die bisher unter Linux < 2.6 eigentlich "Kernel Service Threads" heißen sollten bekannt, welche Unterprozeße des Kernels selbst darstellen, und so richtige Kernel-Mode Threads als Unterprozeße eines Kernel-Mode Prozeßes, die auch noch preemptiv scheduled werden sind nach meinem Kenntnisstand nicht unter jedem ansonsten preemptiven Betriebssystem möglich.

Um bei dem vorigen Beispiel zu bleiben, können Threads unter dem (offiziell vertriebenen) OS/2 sogar zur Laufzeit vom User- in den Kernel-Mode wechseln, würden aber bei Letzterem andere Prozeße behindern und müssen deshalb durch eigenständige Rechenzeitfreigabe Rücksicht darauf nehemn. Unter Windows NT und Nachfolgern werden (sofern in der Executive laufend) auch Kernel-Mode Prozeße oder Threads scheduled ebenso unter dem jetzigen Linux-Kernel 2.6