« Fonctionnement d'un ordinateur/Les architectures à capacités » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 13 :
Divers mécanismes dépendants du processeur permettent d'implémenter l'héritage ou d'autres fonctionnalités objet en autorisant des manipulations, accès, copies ou partages temporaires de listes de capacités. Généralement, ce genre de fonctionnalité objet est géré directement au niveau des instructions du processeur : le processeur contient pour ce faire des instructions spéciales. Ces instructions sont souvent des instructions d'appels de fonction particulières. Pour ceux qui ne le savent pas, une instruction d'appel de fonction sert à demander au processeur d’exécuter une fonction bien précise. Sur les processeurs optimisés pour les langages procéduraux, une fonction est identifiée par son adresse, tandis que ces processeurs fournissent sa capacité à l'instruction chargée d’exécuter notre fonction. Sur ces processeurs, de nombreuses instructions d'appel de fonction sont disponibles : par exemple, l'instruction pour appeler une fonction définie dans la classe de l'objet qu'elle va manipuler ne sera pas la même de celle devant appeler une fonction héritée d'une autre classe : il faudra en effet faire quelques accès pour modifier ou accéder à des listes de capacités extérieures, etc.
 
En effet, accéder aux données de l'objet demande de connaitre son adresse mémoire. Pour cela, il faudra fatalement convertir l'identifiant d'objet en une adresse mémoire. Cette conversion s’effectuera dans la MMU, mais la méthode de conversion dépend de la conception du processeur, aussi il sera difficile de faire des généralités sur le sujet. Toujours est-il que le processeur doit contenir une liste de correspondance entre objet et adresse de celui-ci. On peut préciser que ces techniques s'appuient souvent sur la segmentation. Chaque objet est stocké dans un segment, qui commence à une adresse physique bien précise. Les attributs de l'objet sont stockés dans ce segment, à une place prédéfinie. L'identifiant est alors simplement l'adresse logique, virtuelle, du segment qui contient l'objet. MaisIl existe cependant une différence entre l'usage de la segmentation usuelle et la segmentation pour l'implémentation des capacités. Dans le premier cas, chaque programme utilise son propre espace d'autresadressage, techniquesce qui implique que chaque programme a sa propre table des segments. Par contre, un OS à capacité va utiliser une table des segments identique pour tous les programmes en cours d’exécution. Ce faisant, plusieurs programmes différents peuvent êtreavoir accès à un même segment/objet, si leurs droits d'accès le possiblespermettent.
 
==Premier exemple : le processeur Rekursiv==