Gegenfrage: Was sind "Addressraumtypen"? Ein Von-Neumann-Rechner hat nur genau einen Adressraum. Es gibt verschiedene Adressierungsmodi: Byteadressierung, Wortadressierung. Möglicherweise ist hier auch Programmadressraum (Programmspeicher) und Datenadressraum (Datenspeicher) gemeint. Weiterhin kann es noch einen High- oder Low-Adressbereiche oder I/O-Adressbereiche geben, aber das ist seeeehr architekturspezifisch und daher wahrscheinlich nicht das was gemeint ist. Vielleicht sowas?Aufgabe 1: Welche Adressraumtypen können Sie benennen?
Hab ich noch nie von gehört. Wie soll der erweitert sein?Stichwort: Erweiterter von-Neumann-Rechner.
Was soll getrennt werden? Ist aus der Frage allein nicht ersichtlich. Falls Daten und Instruktionen getrennt werden soll: ja, das ist möglich -- heißt dann Harvard-Architektur.Sind auch getrennte Adressräume denkbar?
Sagt mir nicht viel... das Einzige was mir dazu einfällt ist die Fragmentierung die beim dynamischen Erzeugen und Zerstören von vielen Datenstrukturen im Speicher entsteht. Das ist aber ein Implementierungsproblem und hat nichts mit Architekturen oder Adressräumen zu tun.Aufgabe 2: Was ist ein fragmentierter Adressraum?
Was soll nicht getrennt werden? Die Daten? Wovon? Ergibt das Sinn? Siehe oben, getrennte Adressbereiche für Daten und Instruktionen sind möglich.Das bedeutet, dass die Daten aus dem Speicher nicht getrennt werden dürfen.
Sagt mir nicht viel... das Einzige was mir dazu einfällt ist die Fragmentierung die beim dynamischen Erzeugen und Zerstören von vielen Datenstrukturen im Speicher entsteht. Das ist aber ein Implementierungsproblem und hat nichts mit Architekturen oder Adressräumen zu tun.Aufgabe 2: Was ist ein fragmentierter Adressraum?
Das was du beschreibst ist nicht das was ich meinte. Bei dem Phänomen, dass man lauter Datenstrukturen über den Speicher verstreut hat, mit freiem Speicherplatz dazwischen, ist jede Datenstruktur für sich gesehen immer noch zusammehängend. Eben nicht wie bei einer Datei auf einer Festplatte... das ginge zwar, wäre aber ziemlich ineffizient weil man entweder für jede Speicheradresse auch speichern müsste wo sie eigentlich liegt, oder ein großes Dictionary bräuchte das Informationen zu allen Fragmenten jeder Datenstruktur hält. Das tut meines wissens nach keine einzige Implementierung -- ein Compacting Garbage Collector behebt das Problem zwar, aber durch einen komplett anderen Ansatz, so dass der Speicher hinterher eben nicht mehr fragmentiert ist.Wenn wirklich nur nach der Definition eines fragmentierten Adressraums gefragt ist, muss man ja eigentlich noch keine bestimmte Implementierung betrachten (auch wenn es dadurch erst zu diesem Problem kommt).
Also wenn man annimmt, dass ein Adressraum eine Menge (beliebiger) Speicheradressen sein kann, dann würde ich sagen, ein nicht-fragmentierter Adressraum ist zusammenhängend (das heißt der Adressraum deckt ein bestimmtes Intervall von Adressen vollständig ab) und ein fragmentierter ist entsprechend nicht zusammenhängend (eben wie eine fragmentierte Datei auf der Festplatte).
Das was du beschreibst ist nicht das was ich meinte. Bei dem Phänomen, dass man lauter Datenstrukturen über den Speicher verstreut hat, mit freiem Speicherplatz dazwischen, ist jede Datenstruktur für sich gesehen immer noch zusammehängend. Eben nicht wie bei einer Datei auf einer Festplatte... das ginge zwar, wäre aber ziemlich ineffizient weil man entweder für jede Speicheradresse auch speichern müsste wo sie eigentlich liegt, oder ein großes Dictionary bräuchte das Informationen zu allen Fragmenten jeder Datenstruktur hält. Das tut meines wissens nach keine einzige Implementierung -- ein Compacting Garbage Collector behebt das Problem zwar, aber durch einen komplett anderen Ansatz, so dass der Speicher hinterher eben nicht mehr fragmentiert ist.Wenn wirklich nur nach der Definition eines fragmentierten Adressraums gefragt ist, muss man ja eigentlich noch keine bestimmte Implementierung betrachten (auch wenn es dadurch erst zu diesem Problem kommt).
Also wenn man annimmt, dass ein Adressraum eine Menge (beliebiger) Speicheradressen sein kann, dann würde ich sagen, ein nicht-fragmentierter Adressraum ist zusammenhängend (das heißt der Adressraum deckt ein bestimmtes Intervall von Adressen vollständig ab) und ein fragmentierter ist entsprechend nicht zusammenhängend (eben wie eine fragmentierte Datei auf der Festplatte).
Aber das Ganze hat dann immer noch absolut nichts mit Adressräumen auf Hardwareebene oder von-Neumann-Rechnern zu tun. Da liegen mindestens vier Abstraktionebenen dazwischen: die MMU, der Betriebssystemkern, der Compiler und die Laufzeitumgebung...
This post has been edited 1 times, last edit by "sasa" (Oct 19th 2010, 11:18am)
Das sind eher (sehr grobe) Oberbegriffe für verschiedene Arten von Datenspeichern. Mit der Art der Adressierung hat das nichts zu tun.Andere Frage. Kann mit der Frage "Welche Adressraumtypen können Sie benennen" auch der RAM und ROM gemeint sein?? Oder fallen diese beiden Begriffe nicht unter Adressraumtypen?
This post has been edited 2 times, last edit by "Schokoholic" (Oct 20th 2010, 5:58pm)