[C/C++] Funktionsweise Software-Speicherschutz durch Betriebssystem

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von myth2806, 29. April 2009 .

  1. 29. April 2009
    Funktionsweise Software-Speicherschutz durch Betriebssystem

    Hey,

    will mich grade mal schlau machen wie so ein Speicherschutz funktioniert. Auf der einen Seite habe ich gelesen dass die Speicherzugriffe durch die MMU als Hardwareschaltung kontrolliert werden, was auch gut nachvollziehbar ist, auf der anderen Seite soll aber auch ein ein vollständiger Software-Speicherschutz möglich sein.
    Jetzt ist meine Frage wie soll das funktionieren?
    Wenn ich zB folgenden C-Code habe:
    Code:
    unsigned int i = 1;
    void *ptr = 0x00000001;
    
    while(i++) ptr[i] = 0xff;
    
    und den Ausführe sollte ich ja theoretisch den gesamten Speicher mit 0xff überschreiben können.
    Wie soll eine reine Software-Lösung soetwas abfangen?

    Grüße
     
  2. 30. April 2009
    AW: Funktionsweise Software-Speicherschutz durch Betriebssystem

    Hey!

    Der Speicher wird durch den Kernel beschrieben. Ich denke, im Kernel wird dann, wie fuer eine Datei, Speicher nur fuer ein bestimmtes Programm schreibbar gemacht (reserviert, z.B. durch malloc ()). Folglich kannst du in deinem Programm dann nicht im Speicher, das von einem anderen Programm benutzt wird, herumpfuschen.

    Als Vergleich koenntest du dir einen Linux-Treiber fuer ein Filesystem (z.B. ext2) anschauen. Anstelle von einer Festplatte ist in diesem Fall der temporaere Speicher (RAM) das FS. Auf einem FS kannst du ja auch nicht in eine Datei, die bereits von einer anderen geoeffnet und bearbeitet wird, schreiben, ohne dass diese vorher geschlossen und freigegeben wird.

    Die Software-Loesung ist dann einfach der Kernel, der als Vermittler zwischen Hardware und Programmen agiert.

    Dies ist nur eine Theorie. Ob das ganze stimmt sei mal dahingestellt, aber so koennte ich mir das erklaeren.

    Mfg,

    Kolazomai
     
  3. 30. April 2009
    AW: Funktionsweise Software-Speicherschutz durch Betriebssystem

    Danke schonmal für die Meinung

    Aber so kann ich mir das noch nicht so ganz vorstellen weil dann ja jeder Zugriff auf den Arbeitsspeicher abgefangen und autorisiert werden. Auf dieser unteren Ebene gibt es ja sowas wie Berechtigungen in dieser Form gar nicht (so weit ich weiß) sondern der Maschinencode der grade am laufen ist läuft halt und kann nur mit einem Interrupt und damit dem Schedueler unterbrochen werden (was hindert das laufende Programm eigendlich daran den Interrupt zu deaktivieren?)
    Komme da nicht wirklich dahinter ?(
     
  4. 30. April 2009
    AW: Funktionsweise Software-Speicherschutz durch Betriebssystem

    Hey!

    Ich hab mal bissl das Internet durchforstet (und bin dann am Ende doch auf Wikipedia gelandet ):

    Quelle: Memory protection - Wikipedia, the free encyclopedia

    Den Artikel solltest dir mal durchlesen.

    Mfg,

    Kolazomai
     
  5. 7. Mai 2009
    AW: Funktionsweise Software-Speicherschutz durch Betriebssystem

    Das Stichwort heißt "virtueller Speicher". Jeder Prozess bekommt einen eigenen Adressraum und eine Tabelle zur Umrechnung in die reale (physikalische) Adresse. Die virtuelle/logische Adresse wird dann von der MMU anhand der Tabelle in die reale Adresse umgerechnet...

    mfg
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.