Zugriff_Hardware

Hallo,
ich hab mal ne Frage:
Mit welcher Programmiersprache kann ich am meisten hardware-nahe programmieren?
Das Programm soll selbständig zugreifen können und nicht das Betriebssysstem für das Programm!

Viele Grüße
Manny

Auch hallo.

Mit welcher Programmiersprache kann ich am meisten
hardware-nahe programmieren?
Das Programm soll selbständig zugreifen können und nicht das
Betriebssysstem für das Programm!

Da gibt es wohl nur zwei Programmiersprachen: C sowie C++
Von Assembler mal abgesehen.

HTH
mfg M.L.

Hallo Manny,

ich hab mal ne Frage:
Mit welcher Programmiersprache kann ich am meisten
hardware-nahe programmieren?
Das Programm soll selbständig zugreifen können und nicht das
Betriebssysstem für das Programm!

Du machst da aber noch einen kleinen Denkfehler.

Je nachdem lässt dich aber das Betriebssysten gar nicht an die Hardware ran.
z.B. unter DOS und Win9x konntest du direkt auf die Hardware zugreiffen, bis alles stand. Unter den Windows-Versionen welche auf NT aufbauen geht das nicht mehr.

Bei einer Multitask-Umgebung hat ein einzelnes Programm keine Übersicht, ob nicht noch ein anderer Task eine bestimmte Hardware verwenden will. Greift das Programm direkt auf die Hardware zu, kommt es spätestens dann zum Absturz, wenn das Programm zweimal gestartet wird.
Also muss das Betriebssysten den Zugriff auf die Hardware regeln.

Aus diesem Grund ist der Zugriff auf die Hardware nur bestimmten Programmen erlaubt, den Treibern. Diese arbeiten in einem anderen Kontext und werden auch anders aufgerufen als normale Applikationen.
Der ganze Mechanismus, wird zudem direkt durch Hardware in der CPU unterstützt. Je nach Kontext stehen dir auch gar nicht alle Assembler-Befehle zu verfügung, bzw. führen zu einem Programmlauf-Laufzeifehler.

MfG Peter(TOO)

Hallo Peter!
Vielen Dank für deine Antwort.
Tut mir leid, dass ich noch nicht alles verstanden habe: was meintest du mit dem Satz „Bis alles stand?“.
Kann ich denn aus deiner Antwort herauslesen, dass ich, wenn ich auf meinem Rechner DOS installiere, also richtig als Betriebsystem und nicht nur in der DOS-Box, dann uneingeschränkten Zugriff auf alle Ressourcen habe, aber aufpassen muss, dass nicht zwei Programme auf einmal z.B. auf ein Laufwerk zugreifen wollen?

Viele Grüße
Manny

Hallo Manny,

tja, genau… unter DOS konnte man so ziehmlich alles mit der Hardware treiben, von Systemabsturz bis zur Zerstoerung derselbigen.
Allerdings, das Poblem mit 2 Programmen gleichzeitig stellt sich nicht, da DOS ein Single-Task System ist und immer nur ein Programm laufen kann.

Tschau Peter

Hallo Auchfalls,

tja, genau… unter DOS konnte man so ziehmlich alles mit der
Hardware treiben, von Systemabsturz bis zur Zerstoerung
derselbigen.
Allerdings, das Poblem mit 2 Programmen gleichzeitig stellt
sich nicht, da DOS ein Single-Task System ist und immer nur
ein Programm laufen kann.

Naja, es gab da schon ein paar Möglichkeiten. TSR-Programme, welche dann auf irgendeinen Tastendruck aktiviert wurden und Interruptprogramme.
Bei DOS gab es das InDOSflag, welches man abfragen musste. War es gesetzt, hatte man gerade ein kritische Sequenz vom DOS unterbrochen. Es blieb dann nichts weiteres übrig als einen Timer-Interrupt zu setzen und es etwas später nochmals zu versuchen…

MfG Peter(TOO)

Hallo Manny,

Vielen Dank für deine Antwort.
Tut mir leid, dass ich noch nicht alles verstanden habe: was
meintest du mit dem Satz „Bis alles stand?“.
Kann ich denn aus deiner Antwort herauslesen, dass ich, wenn
ich auf meinem Rechner DOS installiere, also richtig als
Betriebsystem und nicht nur in der DOS-Box, dann
uneingeschränkten Zugriff auf alle Ressourcen habe, aber
aufpassen muss, dass nicht zwei Programme auf einmal z.B. auf
ein Laufwerk zugreifen wollen?

Du musst schon aufpassen, dass du z.B. nicht vesehentlich den Diskkontroller ansprichst, anstelle des z.B. Seriellen Ports.
Manche Seriellen Schnittstellen belegten die I/O-Adressen ab 0x**3F0 der Diskkontroller belegt Adressen ab 0x1F0. Also ein kleiner Tippfehler und du hast deine Festplatte zerschossen und musst sie neu formattieren …

MfG Peter(TOO)**

Hallo Peter,
danke für die Antwort.
Du hattest von einem Problem mit dem Diskkontroller gesprochen.
Meinst du damit, dass wenn ich mich vertippe und die einzelnen Bits überschreibe, würde ich damit den Diskkontroller zerstören?
Wenn ich aber nur zum Lesen draufzugreife dürfte doch nichts passieren, oder?
Noch eine Frage: Kann ich mir diesen Diskkontroller als eine Art Inhaltsvezeichnis der Festplatte vorstellen?

Viele Grüße
Manny

Moien

Meinst du damit, dass wenn ich mich vertippe und die einzelnen
Bits überschreibe, würde ich damit den Diskkontroller
zerstören?

Nein (zumindest nicht durch einen einfachen Vertipper). Allerdings kannst du so ziemlich alles löschen, also den Inhalt der Festplatte, deren Firmware, dein BIOS,… halt alles was so auf dem Rechner an Daten vorhanden ist.

Wenn ich aber nur zum Lesen draufzugreife dürfte doch nichts
passieren, oder?

Zwischen Lesen und Schreiben liegt oft nur ein Tippfehler.

Noch eine Frage: Kann ich mir diesen Diskkontroller als eine
Art Inhaltsvezeichnis der Festplatte vorstellen?

Nein. Das Ding gibt dir Datenblöcke. Also z.B. 512 Byte von der Stelle 2840049 an. Mit Partitionstabellen oder gar Dateisystemen hat der Kontroller nix am Hut. Das muss man alles selbst machen.

cu

Hallo!
Kann dieses Problem mit dem Diskkontroller zerstören, denn im allgemeinen Fall (fast) nur auf der Festplatte passieren, weil man da überall hinschreiben kann, oder ist zum Beispiel auch ein CD-Laufwerk mit einer normalen CD-R auch davon betroffen?

Viele Grüße
Manny

Moien

Kann dieses Problem mit dem Diskkontroller zerstören, denn im
allgemeinen Fall (fast) nur auf der Festplatte passieren, weil
man da überall hinschreiben kann, oder ist zum Beispiel auch
ein CD-Laufwerk mit einer normalen CD-R auch davon betroffen?

Bei CD-Laufwerken kann man die Firmware updaten. Also kann man sie auch töten.

cu