001
29.08.2003, 10:31 Uhr
e-DJ
|
Das geht nicht.
Der Prozessor teilt den Speicher in sogenannte Pages auf. Eine Applikation bekommt einen eigenen Adressraum zugeteilt und der Prozessor bildet die Adressen dieses Adressraums auf die tatsächlichen Adressen im Speicher ab. Dabei kann man eben nur auf die Pages zugreifen, die zu dem eigenen Adressraum gehören. Das nennt man dann bei Intel Protected Mode.
Unter Windows 9x ging das wohl noch, weil da ein DOS mitgelaufen ist. DOS arbeitet im REAL-Mode. Hier sind die Adressen, die man angibt tatsächliche Hardware-Speicheradressen.
Im Protected Mode bekommt jeder Prozess seinen eigenen Adressraum und kann nur innerhalb dieses Adressraums Daten lesen und speichern. Ein Zugriff auf den Adressraum anderer Prozesse ist hardwaretechnisch nicht möglich. Dadurch kann ein Programm nicht (absochtlich oder zufällig) in den Daten oder im Code eines anderen Programmes rumschreiben und dieses Programm dadurch zum Absturz bringen, was bei DOS und bei Windows 9x durchaus noch vorgekommen ist.
Damit Daten aber dennoch zwischen Prozessen ausgetauscht werden können, gibt es das Betriebssystem, das im sogenannten Kernel-Modus läuft. Das BS stellt einen Speicherbereich zur Verfügung, auf den alle Prozesse zugreifen können, z.B. um API-Funktionen aufrufen zu können. Das BS ist in diesem Falle dafür zuständig, den Zugriff auf diesen Speicher zu regeln.
Daher kommt es eben auch im Protected Mode hin und wieder zu bösen Abstürzen :-)
e-DJ |