next up previous
Nächste Seite: Programmphilosphie Aufwärts: Mehrbenutzer- und Multitaskingkonzept Vorherige Seite: Benutzerverwaltung

Schutzkonzept

Um zu vermeiden, daß verschiedene gleichzeitig laufende Programme oder verschiedene Benutzer einander beeinträchtigen können, implementieren Un*x-Systeme ein Schutzkonzept.

Ein wichtiger Aspekt dieses Schutzkonzeptes ist, daß jedes Programm einen eigenen Speicherbereich besitzt und nur auf diesen zugreifen kann und daher andere Programme auch nicht in unkontrollierter Weise beeinflussen kann.

Moderne Prozessoren (bei ix86 ab 286) besitzen Mechanismen, um diesen Schutz zu implementieren. Dafür gibt es privilegierte Befehle, die nur in einem privilegierten Prozessormodus ausgeführt werden können und z.B. zur Überwachung von Speicherbereichen dienen. Diese Befehle werden von normalen Programmen nicht benötigt und können im normalen Modus auch nicht benutzt werden.

Entsprechend ist das Betriebssystem zweigegliedert: Es gibt den Kernel (Betriebssystemkern), das Betriebssystem im engeren Sinne, Linux, welches den privilegierten Prozessormodus nutzt, und Programme, welche im nichtprivilegierten Prozessormodus ausgeführt werden. Da nur der Kernel die privilegierten Befehle nutzen kann, kontrolliert er alle Programme, den sog. Userspace.

Laufende Programme werden unter Un*x Prozesse genannt. Außer der Datei mit dem ausführbaren Code (executable, binary), besitzt ein Prozeß Daten und Statusinformationen, z.B. welche Dateien geöffnet sind, ob der Prozeß läuft ( R), d.h. Prozessorzeit verbraucht, oder auf externe Ereignisse, z.B. Tastatureingaben wartet = schläft ( S), usw. Prozesse können u.a. aufgelistet, angehalten, fortgesetzt, abgebrochen, beendet, getötet und debuggt werden.4

Der Kernel kann unter zwei Aspekten betrachtet werden. Einerseits ist er für die Verwaltung der Ressourcen (Hardware) zuständig, d.h. er verwaltet und verteilt Arbeitsspeicher, Prozessorzeit, Festplattenzugriffe, Zugriffe auf Soundkarten usw. auf die verschiedenen Aufgaben. Diese Aufgaben sind einerseits die Prozesse, andererseits auch Dinge, die der Kernel selbst erledigt, z.B. das Cachen (Zwischenspeichern) von Festplattenzugriffen im Arbeitsspeicher. Andererseits stellt er den Programmen Dienste zur Verfügung, die diese per Systemaufruf nutzen können.

Vom Kernel her kommt auch die Unterscheidung zwischen normalen Benutzern und root. Bestimmte Operationen erlaubt der Kernel nur dem Benutzer mit der Benutznummer 0. Bei Dateizugriffen ist es der Kernel, der die Zugriffsrechte überprüft.

Genau genommen bezeichnet Linux nur den Kernel, während die meisten anderen Programme und Bibliotheken für viele Un*x-Varianten existieren und zu einem großen Teil aus dem GNU-Projekt der Free Software Foundation (FSF)5 stammen. Erst die Kombination aus Kernel und einer Sammlung von Programmen, Bibliotheken und dem Compiler macht aber ein nützliches System aus. Eine zentrale Rolle spielen dabei die C-Bibliothek, die libc bzw. glibc von der FSF, die von praktisch jedem Programm benutzt wird und der GNU C-Compiler, gcc. Daher nennen einige das Ganze GNU/Linux, viele aber meinen mit der Bezeichnung Linux das gesamte System - so wie es durch eine der Distributionen, z.B. SuSE, zusammengestellt wird - nicht nur den Kernel.


next up previous
Nächste Seite: Programmphilosphie Aufwärts: Mehrbenutzer- und Multitaskingkonzept Vorherige Seite: Benutzerverwaltung
Kurt Garloff
2000-10-25