Was sind verschiebbare Programme und was macht ein Programm verschiebbar? Aus dem Kontext der OS-Speicherverwaltung, warum Programme (Prozesse) umsetzbar sein müssen?Was ist ein verschiebbares Programm?
Antwort
Es gibt positionsunabhängigen Code und positionsabhängigen Code. Positionsunabhängiger Code hängt nicht davon ab, wo er sich im Speicher befindet. Positionsunabhängiger Code ist im Allgemeinen wünschenswert. Es gibt viele Techniken, die Prozessor/Compiler-Assembler/Linker/Loader-Kombinationen verwenden, um positionsunabhängigen Code zu erzeugen.
Wenn Sie etwas tun:
extern int b ;
int a = &b;
der Code von Natur aus nicht unabhängig positionieren, da die Zuordnung hängt davon ab, wo b ist (jedoch geladen worden ist, tritt diese Situation so häufig, dass Linker und Lader haben Weisen damit umgehen).
Wenn ein Programm oder eine gemeinsam genutzte Bibliothek nur positionsunabhängigen Code enthält, kann sie überall im Speicher geladen und verschoben werden.
Angenommen, Sie haben ein Programm P, das mit den gemeinsam genutzten Bibliotheken L1 und L2 verknüpft ist. Wenn L1 und L2 denselben Speicherplatz im Speicher benötigen, können sie nicht zusammen geladen werden und P kann nicht ausgeführt werden.
Die meisten Programme können verschoben werden. Wenn das Programm relative Adressen seiner Daten enthält, kann es irgendwo im Speicher abgelegt werden. Enthält es absolute Adressen, passt der Lader diese Adressen im Code an, wenn das Programm in den Speicher geladen wird. http://linker.iecc.com/
- 1. Einstellung Grenze Grenzwerte für ein verschiebbares Objekt
- 2. Was ist das ultimative Programm, um ein Datenbankmodell zu zeichnen?
- 3. Was ist die beste Datenbank für ein Java-Programm?
- 4. Changed Programm ein bisschen, nicht sicher, was falsch gelaufen ist
- 5. Was ist ein gutes Mehrkern-64-Bit-Programm "Hello World"?
- 6. Was ist die schnellste IPC-Methode für ein .NET-Programm?
- 7. Was ist ein Ereignishandle?
- 8. Ein Programm, das schwierig ist
- 9. Was ist ein Rakefile?
- 10. Was ist mit diesem C-Programm
- 11. Was ist falsch in diesem Array-Programm?
- 12. Was ist falsch an meinem Shuffling-Programm?
- 13. Was mit dem Programm falsch ist, ich
- 14. Was ist los mit meinem Programm - Kurzprogramm
- 15. Was passiert, wenn Sie ein Programm ausführen?
- 16. Was ist die Logik hinter diesem Programm?
- 17. Was ist falsch an einem Programm?
- 18. Was ist in einem C# -Programm ThePreStub?
- 19. Was ist falsch in meinem Login-Programm?
- 20. Was ist falsch mit folgenden C++ - Programm?
- 21. Was ist der Laufzeitfehler in diesem Programm?
- 22. Ist das folgende Programm ein striktes C99-Programm?
- 23. Was ist ein "Memory Stomp"?
- 24. Was ist los das ist dieses JS-Programm
- 25. Was ist ein PHP-Framework und was ist ein guter?
- 26. Google AMP: Was ist ein Layout? Was ist ein Behälter?
- 27. Ein Programm, das ein anderes Programm erstellt
- 28. Was ist ein Protokoll?
- 29. Was ist ein Objekt?
- 30. Was ist ein "Pinsel"?
Ihre Erklärung ist gut :). Sie erklären jedoch, wie alle Programme verschoben werden können? Was meinst du mit – Mikeez
Ja. Alle normalen Programme können verschoben werden. In vielen Fällen wird das Programm jedoch nicht verlagert, aber das Betriebssystem verwendet die virtuelle Adressübersetzung, um das Programm an die virtuelle Adresse zu platzieren, die es wünscht, selbst wenn die physikalische Adresse irgendwo anders ist. Die Verlagerung ist erforderlich, wenn derselbe Prozess mehrere Programme, DLLs oder gemeinsam genutzte Objekte aufweist, da sie auch unterschiedliche virtuelle Adressen aufweisen müssen. –
Vielen Dank Ein Nebel :) – Mikeez