2017-08-26 5 views
1

J'utilise NUMA API et j'ai besoin de faire ce qui peut être fait par le mmap() en utilisant le drapeau MAP_SHARED, à savoir: un processus alloue de la mémoire et après cela, il forke. J'ai besoin que cette mémoire allouée soit partagée par les deux processus. Si P1 modifie cette région de mémoire. cette modification est vue par P2 et vice-versa. Comment puis-je faire avec la fonction numa_alloc_onnode()?mémoire allouée numa est partagée à partir de deux processus fourchus?

Merci

+0

Vous devriez probablement pointer vers la page de manuel en ligne de la fonction, car la fonction n'est pas standard. La lecture de la page de manuel vous donnera probablement la réponse. S'il ne dit pas comment cela peut être fait, cela ne peut probablement pas être fait. –

+0

Voulez-vous dire '' numa_alloc_onnode''? –

+0

oui désolé, je veux dire numa_alloc_onnode – munky

Répondre

0

C'est un processus en deux étapes pour la configuration:

  1. numa_alloc_onnode() - alloue la mémoire sur le nœud NUMA spécifié.
  2. mmap() - mappe la mémoire spécifiée dans un fichier, y compris la possibilité de partager la mémoire entre les processus.

En d'autres termes, mmap() fonctionnera de la même chose avec la mémoire qui a été allouée par malloc en mémoire qui a été allouée par numa_alloc_onnode.