Woher weiß ein Betriebssystem (vorzugsweise Linux), dass Sie auf einen Speicherort zugegriffen haben, auf den Sie nicht zugreifen dürfen?
Diese Frage wurde von diesen verdammten Zeigern inspiriert! Ich sehe das so: Bei allem in Computern geht es um einen Kompromiss zwischen Geschwindigkeit, Sicherheit, Integrität und dergleichen.
Ich kenne Speicherkarten in Linux, aber es klingt ein bisschen lächerlich, wenn der Kernel prüft, ob sich der Speicherort, auf den Sie zugreifen möchten, jedes Mal in einem gültigen Bereich befindet, wenn Sie einen Zugriff vornehmen. Es hört sich so an, als würde es so viel Zeit verschwenden, die für produktivere Arbeiten aufgewendet werden könnte (aber möglicherweise weniger sicher, ohne dass dies überprüft wird!). Oder merkt es sich vielleicht alle letzten Zugriffe und überprüft sie bei jedem Hardwaretimer-Tick? (Aber das klingt unsicher und langsam.)
Ich war überrascht, dass diese Frage nirgendwo unbeantwortet zu sein scheint. Das habe ich mich immer gefragt. Ich glaube, es gibt einen Hardwareabschnitt, der dies im Auftrag des Betriebssystems in einer schönen, praktischen Abstraktionsebene erledigt. Dennoch würde es möglicherweise erforderlich sein, die Speicherzuordnungen des nächsten Prozesses bei jedem Kontextwechsel zu laden, was wiederum langsam klingt.
Ja, trotzdem, ich gehe ein bisschen weiter: Wie erkennt ein Betriebssystem eine Speicherverletzung?
Vielen Dank