· 

Hardwareschutz vor bösartigen und fehlerhaften Anwendungsprogrammen

1. Einführung

Moderne Betriebssysteme müssen vor fehlerhaften oder gar bösartigen Anwendungsprogrammen geschützt werden. Hierzu kann auf die Unterstützung durch geeignete Hardware nicht verzichtet werden. Wir werden uns nun drei verschiedene Hardware-Mechanismen anschauen, durch die ein Betriebssystem geschützt werden kann.


2. Das Grenzregister

Das Grenzregister enthält die Adresse, an der der Benutzerbereich im Hauptspeicher beginnt. Greift ein Benutzerprogramm auf eine Adresse zu, die kleiner als der Wert im Grenzregister ist, dann wird eine Unterbrechung ausgelöst und das Betriebssystem übernimmt die Kontrolle. Hierdurch werden nicht erlaubte Speicherzugriffe verhindert.


3. Modus-Bit der CPU

Durch ein Modus-Bit im Status-Register der CPU wird der aktuelle Ausführungsmodus angezeigt. Als Modi stehen der User Mode und der (privilegierte) Kernel Mode zur Verfügung. Im User Mode sind nur normale, nicht sicherheitskritische Befehle erlaubt, während im Kernel Mode alle Maschinenbefehle ausgeführt werden können. Wenn versucht wird, im User Mode einen privilegierten Befehl auszuführen, dann erzeugt die CPU eine Unterbrechung, wodurch eine Umschaltung in den Kernel Mode erfolgt. Näheres hierzu kannst du in meinem Artikel zum User Mode und Kernel Mode nachlesen.


4. Der Zeitgeber (Timer)

Um zu verhindern, dass ein Prozess, der potentiell in einer Endlosschleife festhängt, die CPU für sich alleine beansprucht und so andere Prozesse verhungern, muss man dem auf der CPU laufenden Prozess die CPU entziehen. In einem präemptiven System gibt es das Konzept der Zeitscheiben (Zeitintervall, für dessen Länge ein Prozess die CPU beanspruchen darf). Zur Realisierung solcher Zeitscheiben wird ein Zeitgeber benötigt, der mit einem Zeitwert geladen wird und der rückwärts läuft. Wenn die 0 erreicht wird, löst dieser eine Unterbrechung aus, die in letzter Konsequenz dafür sorgt, dass das Betriebssystem wieder die Kontrolle über die CPU erhält und den Dispatcher aufrufen kann. Der Dispatcher kann die CPU dann einem anderen Prozess zuteilen.