016
21.03.2013, 23:08 Uhr
Hans
Library Walker (Operator)
|
Hi,
Zitat von ~Solomon: |
FreeDOS arbeitet 100 prozentig nach 0xB8000! Bei Mac, Linux und Windows ist es anders: Wenn man auf diesen Speicher zugreifen will, dann kommt ein Segmentation fault.
|
ach da steckt das Problem. Klar, das ist bei Windows, Linux und Mac völlig normal, dass ein Segmentation Fault kommt, wenn man auf die Hardware direkt zugreifen will. Das ist von den Systementwicklern so gewollt. Falls Du wissen willst, warum das so ist, dann guckst Du hier.
Zitat von ~Solomon: |
Es muss eine andere Adresse oder einen anderen Weg geben.
|
Ja, gibt es: Da es sich um Multitaskingsysteme handelt, ist der Zugriff nur indirekt, d.h. über das Betriebssystem möglich. Alles andere würde zu chaotischem Verhalten wie unerklärliche Programmabstürze, seltsamen Daten, etc. führen, wie man bei DOS sehen kann wenn man zu viele TSRs am laufen hat, die sich dann nicht miteinander vertragen. Wenn du also unter Win/Mac/Linux auf die Hardware zugreifen willst, dann nur über Systemaufrufe. Oder Du schreibst Dir einen entsprechenden Systemtreiber... - das ist zwar leicht dahin geschrieben, aber trotzdem eine der anspruchsvolleren "Übungen", die einem begegnen können. Und letztlich läuft es für Dein Anwendungsprogramm auch darauf hinaus, dass Du die Funktionen des Treibers aufrufst.
Zitat von ~Solomon: |
Wenn beim Mac ich zugreifen könnte, würde rein theoretisch, so denke ich, oben links der Buchstabe erscheinen. Nicht in der Konsole, sondern am Monitor. Bzw. Ich denke, dass das unmöglich wäre, da die Video-Modi verschieden sind.
|
Das hast Du schon fast richtig erfasst. Da der Mac und Windows mit grafischen Benutzerschnittstellen arbeiten ist alles, was auf dem Bildschirm dargestellt wird, Grafik. Es gibt da keine Textkonsole im klassischen Sinn mehr, die gibt's AFAIK nur noch unter Unix/Linux. (Und da auch nur, wenn du ohne GUI arbeitest.) Das Fenster, das mit einer Konsole erscheinen kann, ist ebenfalls Grafik. Der Kommandointerpreter, der da im Hintergrund werkelt, hat zwar einen Speicherbereich, in den er seine Ausgaben hinein schreibt, aber das ist auch nur ein Pufferspeicher, der bei jedem Programmstart woanders liegen kann. Die eigentliche Ausgabe erfolgt dann wiederum durch das Betriebssystem, weil das die Kontrolle über die Grafikkarte hat und bestimmt, was in deren Speicher liegt. Eine Ausnahme sind Spiele, aber darum geht es ja nicht. Selbst Grafikprogramme wie CAD-Systeme oder auch Bildverarbeitungen greifen nicht direkt auf die Grafikkarte zu, sondern auf Datenstrukturen, die das BS an die Grafikkarte weiter reicht, wodurch dann das Bild auf dem Monitor erscheint. Hoffe, das ist jetzt einigermassen klar geworden.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 21.03.2013 um 23:13 Uhr von Hans editiert. |