Ceci est une bonne question.
considérant que l'objet constitue fonctions et données comme étant placé au même endroit en théorie, la plupart des mises en œuvre diviser. La façon dont vous le faites, c'est que le code est divisé et stocké dans le segment RO. Un objet dans la zone RW peut alors se référer à ce code dans la zone RO. Le couplage du code et des données n'est utilisé conceptuellement que par le programmeur humain et le vérificateur de type pour s'assurer que vous ne violez pas les règles et les principes.
Un langage de type Java/C# sera généralement créé de sorte que chaque objet ait une étiquette identifiant le type de l'objet. L'objet lui-même est simplement une structure contenant tous les champs présentés dans un ordre prédéfini. Cette balise peut ensuite être utilisée pour rechercher la fonction à appeler dans la zone RO.La fonction dans la zone RO est modifiée pour prendre un paramètre supplémentaire, appelé ce ou auto par lequel le contenu dudit objet peut être atteint. Lorsque la méthode doit se référer à des champs, elle connaît l'ordre pré-spécifié, donc elle peut le faire correctement. Notez qu'il y a quelques astuces nécessaires pour résoudre l'héritage, mais c'est le cœur de l'idée. Un langage de type Python/Ruby fera généralement d'un objet une table de hachage où une méthode est un pointeur vers le code dans la zone RO (à condition que le langage soit compilé et ne soit pas exécuté par un interpréteur de bytecode) . Les appels de fonction sont effectués en recherchant le contenu de la table de hachage et en suivant le pointeur de code. Les champs sont également recherchés dans la même table de hachage.
Avec ces bases vers le bas, la plupart des implémentations font des astuces pour éviter la partie où un pointeur est suivi pour trouver la fonction à appeler. Ils essaient de comprendre et d'affiner l'appel possible à une seule fonction. Ensuite, ils peuvent remplacer la recherche par un appel direct à la bonne fonction, une solution beaucoup plus rapide.
la version tl; dr: Le langage sémantique affiche des champs et des méthodes dans le cadre d'un objet. L'implémentation les divise en segments RO et RW. En tant que tel, aucun support OS n'est nécessaire.
Cela dépend du langage - et plus encore, le temps d'exécution pour ce langage. Le CLR actuel peut créer des objets sur la pile (les types de valeur dans la plupart des cas, à moins qu'ils ne soient levés). Ni la POO, ni la "procédure factuelle" ne disent rien d'inhérent à l'utilisation de la "section de données" - mais la mémoire en lecture seule est en lecture seule dans tous les cas. La fin est tellement confuse que je ne sais même pas comment réagir. Je pense que le problème est d'essayer de répondre à 40 questions en une seule. Concentrez-vous sur une seule chose à la fois. –