2017-04-11 3 views
0

Quels sont les programmes déplaçables et qu'est-ce qui rend un programme transférable? À partir du contexte de la gestion de la mémoire du système d'exploitation, pourquoi les programmes (processus) doivent-ils être déplacés?Qu'est-ce qu'un programme relogeable?

Répondre

0

Il existe code de position indépendant et code dépendant de la position. Le code indépendant de la position ne dépend pas de l'emplacement de la mémoire. Un code indépendant de la position est généralement souhaitable. Il y a beaucoup de techniques utilisées par les combinaisons processeur/compilateur-assembleur/éditeur de liens/chargeur pour générer un code indépendant de la position.

Si vous faites quelque chose comme:

extern int b ; 
int a = &b; 

le code est intrinsèquement non encore indépendante, car l'affectation dépend où b a été chargé (toutefois, cette situation se produit si souvent, que linkers et les chargeurs ont les moyens de traiter avec ceci).

Si un programme ou une bibliothèque partagée contient uniquement du code indépendant de la position, il peut être chargé n'importe où dans la mémoire et peut être déplacé. Supposons que vous ayez un programme P lié aux bibliothèques partagées L1 et L2. Si L1 et L2 nécessitent d'utiliser le même emplacement en mémoire, ils ne peuvent pas être chargés ensemble et P ne peut pas s'exécuter.

0

La plupart des programmes peuvent être déplacés. Si le programme contient des adresses relatives de ses données, il peut être placé n'importe où dans la mémoire. S'il contient des adresses absolues, le chargeur ajustera ces adresses dans le code lors du chargement du programme en mémoire. http://linker.iecc.com/

+0

Votre explication est bonne :). Cependant, votre explication est une façon dont tous les programmes peuvent être déplacés? Que voulez-vous dire – Mikeez

+0

Oui. Tous les programmes normaux peuvent être déplacés. Dans de nombreux cas, cependant, le programme n'est pas déplacé mais le système d'exploitation utilise la traduction d'adresse virtuelle pour placer le programme à l'adresse virtuelle qu'il souhaite, même si l'adresse physique est ailleurs. La relocalisation est nécessaire si le même processus a plusieurs programmes, DLL ou objets partagés, car ils doivent également avoir des adresses virtuelles différentes. –

+0

Merci Un brouillard :) – Mikeez