Question

  1. Quel IPC parmi les files de messages, la mémoire partagée et les sémaphores est le plus facile à convertir en IPC réseau et lequel est le plus difficile.

  2. Serait-il plus facile de convertir la mémoire partagée System V en IPC réseau ou la mémoire partagée Posix en IPC réseau

Était-ce utile?

La solution

Comme Henrik Gustafsson a déclaré:

  1. Les files d'attente de messages sont de loin le mécanisme IPC le plus simple à convertir en réseau. Les sémaphores ne sont pas conçus pour acheminer des données et la mémoire partagée nécessite généralement un accès contrôlé par un sémaphore (ou un mécanisme équivalent) pour permettre un contrôle correct, même sur une seule machine, sans avoir recours à un réseau. Cela dit, les files de messages System V sont probablement le mécanisme IPC le moins largement utilisé.

  2. La conversion de tout mécanisme de mémoire partagée est à peu près aussi dure. Le point clé à noter est qu'en réalité, vous utilisez rarement, voire jamais, la "mémoire partagée"; d’autres outils de synchronisation sont également utilisés.

Autres conseils

  1. Je dirais que les files de messages sont de loin basées sur le fait que les opérations que vous effectuez sur une file de messages ont des mappages presque identiques sur les opérations de socket.
  2. Probablement aussi difficile, je vous conseillerais d'implémenter une abstraction légèrement plus conviviale pour le réseau que shm ... comme une file d'attente de messages. La mémoire partagée n'est pas très adaptée au réseau, même si certaines de ses implémentations sont activées sur le réseau, mais celles que j'ai rencontrées sont des abstractions qui fuient.
  1. Les sémaphores ne sont pas vraiment un mécanisme de communication, ils sont destinés à la synchronisation. La mémoire partagée peut être utilisée sur un réseau ( mémoire partagée distribuée ), mais c'est assez difficile à mettre en place. Les files de messages sont faciles car elles mappent directement sur les sockets réseau.

  2. Ce serait probablement une difficulté assez similaire; les deux API sont similaires, elles ont juste une interface différente.

(1). Le plus simple est la file d'attente des messages et le plus difficile est la mémoire partagée.

Je pense que cela est dû au fait que les files d'attente de messages requièrent simplement un pointeur sur la structure de données de la file de messages, car la mémoire partagée nécessite l'attachement de la mémoire partagée à l'espace adresse de processus des deux processus. Il est difficile d'allouer de la mémoire partagée lorsque les deux processus sont activés. différentes machines.

(2). Il est plus facile de convertir la mémoire partagée Posix que la mémoire partagée System V en réseau IPC.

Je pense que c’est parce que Posix prend en charge les sémaphores basés sur la mémoire et les sémaphores nommés et ne nécessite aucune intervention du noyau, alors que System V nécessite une intervention du système d’exploitation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top