Wieso ist ein Pagefault ein Trap??

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Wieso ist ein Pagefault ein Trap??
Immerhin ist doch nicht vorhersehbar, wann er auftritt, da ich ja keinen Einfluss daruaf hab was ausgelagert wird. grübel (IX - 10)


Hmm, meine Begründung wäre, dass ein Pagefault durch das Programm direkt “provoziert” wird, man kann genau die Stelle festlegen wo er stattfinden kann und auch ob, wenn man den genauen Status des Systems kennt.
Er wird nicht durch E/A Geräten aus der Sicht des Systems “zufällig” ausgelöst, findet also nicht wirklich unbestimmt statt.
Würde man das System immer gleich hochfahren(zugegebenermassen sehr schwierig bei komplexen betriebssystemen), das Programm zb als erstes starten, würde der Pagefault immer an der gleichen Stelle auftreten.
Das wäre so meine Erklärung (mir ist bewusst, dass sie etwas schwammig ist :frowning: )


Schau mal auf III-40, da wird genau diese Problematik angeprochen. Aber (in meinen Augen) nicht aufgelöst…
Trotzdem hat für mich ein page fault wesentlich mehr “Charakterzüge” eines Traps als eines Interrupts.


Die Unterbrechung wird synchron ausgeloest, d.h. genau ein Befehl im aktuellen Programm fuehrt direkt, wenn er ausgefuehrt wird, dazu das unterbrochen wird.
Mit der Vorhersehbarkeit ist das so eine Sache, “wenn das System im gleichen Zustand waere, dann wuerds wieder passieren” bedeutet noch keine praktische Vorhersehbarkeit. Bei globaler Ersetzungsstrategie (also wenn nur das BS die Auslagerungen fuer alle kennt und verwaltet) ist das durch das Programm nicht vorhersehbar.

Es ist hier ein Grenzfall, wenn ihr die einzelnen “Charakterzuege” kennt und wisst, welche davon in die Definition von Interrupt und welche von Trap passen, dann reicht das schon.


Fuer mich ist ein page fault ohne jeden Zweifel ein Trap. Grund: er wird synchron durch die Programmausfuehrung verursacht.
Wuerde der Prozess nicht in dem Augenblick auf die Adresse zugreifen, wurde er nicht auftreten.
Dass da eine gewisse Zufaelligkeit reinspielt wenn man eine globale Ersetzungsstrategie faehrt und das BS dem Prozess quasi ohne dessen
Schuld die Page vorher mal geklaut hat, mag ja sein. Aber deshalb
wird’s trotzdem nie und nimmer ein Interrupt.
Wosch hat die Diskussion auf Seite III-40 in’s Spiel gebracht, um einfach mal darauf aufmerksam zu machen, dass so eine klare Definition von
Kriterien für Interrupts und Traps in manchen Faellen einfach doch nicht mehr so klar passt.
Ich unterscheide aber immer ganz einfach danach, ob die Auisnahmesituation „von aussen“ verurscht ist - in der Regel indem
jemand an irgendeiner Signalleitung am Prozessor zieht und dadurch
eben eine Unterbrechung (Interrupt) ausgeloest wird - oder ob durch die
Aktivitaet des Prozesses selbst die Ausnahme ausgeloest wird.
Die Aussagen ueber Traps und Determinsmus - die man immer wieder in der Literatur findet - gefallen mir insofern nicht so sehr.
Wenn was deterministisch ist, dass war’s sicherlich ein Trap - aber bloss weil eine Ausnahmesituation nicht deterministisch ist, muss das noch lange
nicht „kein Trap“ sein.