41 - 5.2.3 Rechnerorganisation: Programmhierarchie oberhalb der Befehlsatzebene [ID:15392]
50 von 395 angezeigt

Nun als nächstes wollen wir mal einen Blick in die Programmarchie innerhalb von Maschinenprogrammen

schauen. Wir werden sehen, dass Maschinenprogramme eigentlich aus verschiedenen kleinen Teilebenen

bestehen. In dem Zusammenhang gehen wir auf Hochsprachenkonstrukte ein, die zumeist verwendet

werden, um Maschinenprogramme zu entwickeln. Aber wir müssen auch Assembliersprachenanweisungen

betrachten, weil das, was hier bei uns gerade im Vordergrund steht, eben die Systemaufrufe sind,

die Interaktion mit dem Betriebssystem, das Absetzen von Betriebssystembefehlen und das

geht nur auf der Assemblerebene, zumindest in dem System, das wir zur Grundlage nehmen. Und

dann werde ich dann am Ende noch ein bisschen genauer auf die Betriebssystembefehle eingehen,

und zwar wie die eigentlich zur Ausführung kommen. Nun, Maschinenprogramme sind in einer

Maschinensprache formuliert. Das sind Anweisungen, die letztendlich ohne Übersetzung von einem

Prozessor ausführbar sind. So stellen wir uns Maschinenprogramme vor und so hatten wir das eben

doch in der Vergangenheit kennengelernt. Die sind numerischer Natur, gleichwohl werden die

durch Übersetzung generiert. Also wir schreiben die zum Beispiel NC, wir verwenden Assemblerkonstrukte.

Wir haben also sowas wie Kompilierer und Assemblierer, die die Übersetzung vornehmen,

die Binapprogrammen denn erst erzeugen und wir haben auch den Binder, der nachher dann die

übersetzten Programme mit Bibliotheksfunktionen denn letztendlich zusammen bindet und dann daraus

insgesamt ein ausführbares Programm zu machen. In den seltensten Fällen findet hier auf der Ebene

eben die Programmierung im sogenannten nativen Code, also auf Binaercode-Ebene statt. Das sind

so eine Fälle, wo man zum Beispiel eine Fehlerbeseitigung halt macht. Man spricht

von Patchen, also Flicken, Ausbessern. Das ist ja der positive Begriff, wenn man so will. Man kann

natürlich auch Patchen, indem man einfach nur beliebige Code-Stücke irgendwie einhängt. Das

ist denn das, was man dann hin und wieder auch als Hacken bezeichnen würde, wo man denn Programmenteile

manipuliert möglicherweise oder einfach denn auch zusätzliche Programmschnipsel in ein

Maschinenprogramm einschleust, die man selbst nicht entwickelt hatte. Einfach zu dem Zweck,

dass man dann nachher beim Ablauf des Maschinenprogramms ganz bestimmte, sage

mal, Aktivitäten hervorrufen möchte. Das ist letztendlich Malware, Schadsoftware, die wir haben

und die wir uns nicht wünschen in diesem Maschinenprogramm. Aber die reinzubringen,

macht man auch sehr häufig eben auf dieser Ebene, wo man den nativen Code einfach konkret

präsentiert. Aber da werden wir nicht weiter eingehen. Diese Maschinenprogramme sind technisch

repräsentiert als Lademodule. Das heißt, die werden als Binärprogramme mit Erzeugung repräsentieren

nachher das ausführbare Programm, liegen aber als Lademodul vor, müssen vom Betriebssystem erst

geladen werden, damit sie dann in den Arbeitsspeicher kommen können und dort zur Ausführung gelangen

können und werden dann am Ende vom Betriebssystem letztendlich auch wieder entsorgt. Also sie

verschwinden wieder aus dem Arbeitsspeicher normalerweise dann, wenn eben dieses Programm,

dieses ausführbare Programm seine Funktion erfüllt hat oder vielleicht sogar abgebrochen worden ist.

Die Dienstprogramme hier, die Utilities, die wir haben, verwenden wir auch im Rahmen der

Lehrveranstaltungen, so was wie GCC, der Assembler vielleicht mal und der Binder-LD,

die alle im Zuge von solchen Aktivitäten eines MAKES zum Beispiel gestartet werden.

Die Grundlage für diese Entwicklung von den Programmen, die wir auf dieser Ebene haben,

sind hoch- und Assembliersprachen, sind also symbolisch, um uns das Leben letztendlich zu

erleichtern, solche Maschinenprogramme zu entwickeln. Aber nochmal, das ist eine Ebene,

wo wir eigentlich von numerisch kodierten Programmen sprechen, auf der Ebene 3.

Ein anderer Punkt ist, dass natürlich, denn diese hoch- und Assembliersprachen eben nicht nur

verwendet werden, um dann, sagen wir mal, herkömmliche Maschinenprogramme zu entwickeln,

sondern wir nutzen sie natürlich insbesondere auch im Betriebssystem zu entwickeln. Aber es

gibt da noch so den Begriff der Laufzeitsysteme, das schauen wir uns dann später noch ein bisschen

an, neben diesen Anwendungsprogrammen. Jegliches Art von Software wird auf Basis dieser Spracharten,

wenn man so will, heute entwickelt. Wichtig sind hier drei Hauptebenen, die Maschinenprogramme-Ebene,

die Betriebssystem-Ebene und die CPU-Ebene, die Zentraleinheit-Ebene, die Befehlsatz-Ebene

letztlich. Und wir sehen hier eben auch, dass die Maschinenprogramme-Ebene selbst durch zwei

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

00:40:53 Min

Aufnahmedatum

2020-05-09

Hochgeladen am

2020-05-10 03:26:05

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen