1

J'ai fait un code avec un commutateur pour activer la fonctionnalité multi-core. j'ai couru deux différentes course 1er - avec un seul noyau 2 - avec deux noyauxpointeur dans différents processus pointaient vers la même adresse

les deux ont été en cours d'exécution avec la même exec et dans la même machine dans différents terminaux. J'ai dû déboguer quelque chose. J'étais en train de déboguer parallèlement aux deux exécutions, pendant le débogage, j'ai trouvé qu '"un même pointeur dans les deux exécutions indiquait la même adresse".

Je connais le concept de mémoire partagée lorsque nous utilisons la fourche, mais ici, je courais deux processus différents.

comment cela est-il possible et quel est le concept derrière.

+0

Soyez plus précis s'il vous plaît, par ex. Quels sont les cœurs que vous voulez dire, quel système d'exploitation, etc. –

+0

Parce que c'est une [adresse de mémoire virtuelle] (https://en.wikipedia.org/wiki/Virtual_memory), pas physique. – m0skit0

Répondre

2

Vous ne spécifiez pas de système d'exploitation, mais les processus ont typiquement des espaces d'adressage indépendants. Ce que vous voyez probablement sont deux pointeurs qui ont la même valeur, mais qui se réfèrent à l'espace mémoire de chaque processus.

Les systèmes d'exploitation en mode protégé remappent souvent la mémoire physique dans de nouveaux espaces d'adressage pour les programmes de niveau utilisateur.