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
Presenters
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