Moin,
schon mal vielen Dank soweit.
Socke hat geschrieben:Bist du dir sicher, dass Ubuntu dir da den Speicherzugriff genau so wie DOS vor 20 Jahren erlaubt?
das hört sich recht rhethorisch an.
Nein, dann hätte ich den Thread nicht eröffnet.
Christian hat geschrieben:Also Speicherzugriffe ausserhalb des eigenen Addressraums erzeugen ne Access Violation das ist schon seit weit mehr als 20 Jahren so.
Wenn man das machen will muss man nen Treiber schreiben.
Das war in dem Sinne ein Vorteil von DOS, dass es faktisch nur einen Adressraum gab - da war man dann immer im eigenen.
Bevor ein Treiber geschrieben wird, denke ich erst mal über andere Wege nach.
Unter Linux gibt es doch bestimmt so eine Art Int 21h wie unter DOS?
Nach welchen Schlagworten muss ich suchen und gibt es eventuell eine gute deutsche Dokumentation mit Beispiel?
Ein anderer Weg wäre der Einsatz des Assemblerbefehls RDTSC.
Allerdings rät Intel auf Seite Vol. 2B 4-461 im Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2 (2A, 2B & 2C) dazu, dass Betriebssysteme diese Freiheit einschränken.
Code: Alles auswählen
Normally, the RDTSC instruction can be executed by programs and procedures
running at any privilege level and in virtual-8086 mode. The TSD flag allows use of
this instruction to be restricted to programs and procedures running at privilege level
0. A secure operating system would set the TSD flag during system initialization to
disable user access to the time-stamp counter.
Auf den 1. Blick scheint Linux den Zugriff darauf zuzulassen. Das läuft ohne Fehlermeldung durch.
Code: Alles auswählen
program readrdtsc;
begin
asm
rdtsc //Aufruf zulässig?
end;
readln;
end.
Wie wahrscheinlich ist es denn, dass mir jemand das TSD-Flag sperrt?