Nun kommen wir zum Hauptteil der heutigen Vorlesungsstunde, nämlich der Namensauflösung.
Und hier wollen wir uns einmal um die Speicheradressen kümmern, also wie wir von Normen zu Speicheradressen
kommen und andererseits eben auch um Adressen im Ablagesspeicher.
Und hier geht es um die Pfadnamen, wie man die Pfadnamen zum Beispiel auflöst,
etwa am Beispiel eines UNIX-ähnlichen Betriebssystems. Starten wir mit den
Speicheradressen. Nun, Adresse wird auch durchaus als synonymen betrachtet.
Das sieht man insbesondere, wenn man die alten Arbeiten zum Beispiel durchliest,
die den virtuellen Adressraum halt definiert haben und so was in einer
virtuellen Adresse definiert haben. Und da ist denn die Adresse eben entweder
ein Name oder ein Ort, je nachdem welches Bezugsystem wir hier vor Augen haben.
Wenn wir praktisch auf der programmiersprachlichen Ebene uns
befinden, dann wird so eine Adresse eben auch als Name bezeichnet oder eben auch
als virtuell Adresse. Also man gibt die Adresse einer eher abstrakteren
Bedeutung und würde denn praktisch so einen gesamten Satz von solchen Namen
eben in einem Adressraum, genauer müsste man denn sagen virtuellen Adressraum,
oder in einem Namensraum praktisch zusammenfassen.
Betrachtet man, sagen wir mal, in tiefere Ebene, also etwa konkret die Speicherebene,
die Hauptspeicherebene, dann würde man sagen, okay so eine Adresse bezieht sich
auf einen Ort im Hauptspeicher. Und dann würde das eben eine Speicheradresse
sein. Und der Satz von diesen Orten sozusagen, die Menge dieser Orte, macht
dann zusammen den Speicherraum aus. Also alle Adressen, die sich dann zum Beispiel
auf gültige Speicherzellen im Hauptspeicher zum Beispiel befinden werden.
Also hier sehen wir schon, dass die Abstraktionsebene, die man jeweils
einem durch eine Rolle spielt, um genau zu begreifen, was man denn mit einer
Adresse meint. Ist es einfach nur Name oder ist es wirklich ein Ort, der damit
verbunden ist? Nun, dieser Adressraum, der virtuellen Adressraum, den wir halt haben, ist also
eine Ansammlung von potentiell nutzbaren Namen, die Informationseinheiten in
irgendeiner Form repräsentieren. Das sind dann also Namen von Variablen, ganz
abstrakt. Prozeduradressen im Endeffekt zählen hier eben so darunter. Und wenn man
sich jetzt so Programmabläufe anschaut und etwa so Fallunterscheidungen
betrachtet, Schleifen betrachtet, also wie wir eigentlich gewohnt sind, auch
wirklich komplexere Programme zu formulieren, da hat man selten einen
Einzelpfad, der durch dieses Programm hindurchführt, sondern mehrere Pfade. Und
manche Pfade wären zur Ausführung überhaupt gar nicht gegangen im Endeffekt.
Und das bedeutet dann letztendlich, dass auf der anderen Seite eben gar keine
zwingenden Bewendigkeiten ist, dass hinter jeder einer solchen virtuellen Adresse
hinter jedem Namen, die man da halt hat, denn wirklich konkret nach hier
irgendeine Information sich verbergen muss.
Diese Deutung ist damit also sehr kontextabhängig. Die Deutung von dem, was
eine Adresse denn konkret ist oder eben auch was ein Name halt ist. Wir wissen
das vielleicht schon, dass eben derselbe Name, wenn wir verschiedene Adressräume
halt haben, denn durchaus verschiedene Orte adressieren kann. Also dass er
durchaus der Name doppelt belegt ist, aber er wird einfach eindeutig dadurch,
indem man halt den Kontext, den Namensraum als einen Kontext versteht. Oder
wir haben eine Situation, wo derselbe Ort eben über verschiedene Namen
adressiert werden kann. Auch diese Situation ist durchaus ganz gebräuchlich.
So diese Namen sind wünschenswerterweise, muss man sagen, denn eigentlich
ortstransparent. Das muss nicht zwingend sein, aber typischerweise, wenn wir
sozusagen den Begriff Namen assoziieren, dann meinen wir damit durchaus Orte, die
Adressen, die halt auf unterschiedliche Speicherorte sich beziehen können.
Presenters
Zugänglich über
Offener Zugang
Dauer
00:27:38 Min
Aufnahmedatum
2020-06-24
Hochgeladen am
2020-06-24 16:56:28
Sprache
de-DE