wo sind die "Dateien" von ipcs und warum werden Named Pipes (mkfifo) nicht in ipcs aufgelistet

wo sind die "Dateien" von ipcs und warum werden Named Pipes (mkfifo) nicht in ipcs aufgelistet

Ich habe zum Thema Shared Memory unter Linux recherchiert und bin über diesen ipcsBefehl gestolpert.

Aus der Manpage:

ipcs - provide information on ipc facilities

ipcwird in der Manpage nicht erklärt, steht aber höchstwahrscheinlich für Interprozesskommunikation. Das ergibt auch Sinn im Kontext der aufgelisteten Informationen: gemeinsam genutzte Speichersegmente, Nachrichtenwarteschlangen und Semaphor-Arrays.

Da in Linux/Unix alles eine „Datei“ oder zumindest ein dateiähnliches Objekt ist, habe ich mich gefragt, wo die „Dateien“ der in aufgelisteten Elemente sind ipcs?

Warum werden von erstellte benannte Pipes mkfifonicht in aufgeführt ipcs? Soweit ich weiß, sind FIFOs Warteschlangen. Wie mkfifounterscheiden sich die von erstellten benannten Pipes von den von erstellten Nachrichtenwarteschlangen ipcmk?

Antwort1

Hier gibt es mehrere Fragen:

  • Wo sind die Dateien der in ipcs aufgelisteten Elemente?

Es kommt darauf an. Warteschlangen sind in einem virtuellen Dateisystem sichtbar. Aus mq_overview(7) :

   Mounting the message queue file system
       On  Linux,  message queues are created in a virtual file system.  (Other implementations may also provide such a feature, but
       the details are likely to differ.)  This file system can be mounted (by the superuser) using the following commands:

           # mkdir /dev/mqueue
           # mount -t mqueue none /dev/mqueue

Gemeinsam genutzter Speicher (shm_overview(7))

   Accessing shared memory objects via the file system
       On Linux, shared memory objects are created in a (tmpfs) virtual file system, normally mounted under /dev/shm.  Since  kernel
       2.6.19,  Linux supports the use of access control lists (ACLs) to control the permissions of objects in the virtual file sys-
       tem.

Semaphoren (sem_overview(7))

   Accessing named semaphores via the file system
       On Linux, named semaphores are created in a virtual file system, normally mounted under /dev/shm,  with  names  of  the  form
       sem.somename.  (This is the reason that semaphore names are limited to NAME_MAX-4 rather than NAME_MAX characters.)

       Since  Linux  2.6.19,  ACLs can be placed on files under this directory, to control object permissions on a per-user and per-
       group basis.
  • Warum werden die von erstellten benannten Pipes mkfifonicht in aufgeführt ipcs?

Da bin ich mir nicht sicher, daher werde ich Ihnen nur meine Meinung sagen und keine Antwort geben. Meine Hypothese ist, dass sie, da sie im eigentlichen Dateisystem vorhanden sind, wie die Sockets, nicht auf die gleiche Weise verwaltet werden, wie der Kernel gemeinsam genutzte Speichersegmente und Nachrichtenwarteschlangen verwaltet.

  • Wie unterscheiden sich die von mkfifo erstellten benannten Pipes von den von ipcmk erstellten Nachrichtenwarteschlangen?

Der Hauptunterschied zwischen einer Pipe und einer Nachrichtenwarteschlange besteht darin, dass eine Pipe nur ein Kommunikationskanal zwischen zwei Prozessen ist. Sie funktioniert auf Byte-Ebene. Sie können lesen und schreiben, wie Sie wollen, und Sie müssen das Kommunikationsprotokoll entwerfen. Es handelt sich um strikte FIFOs: Ein Byte, das vor einem anderen geschrieben wird, wird am anderen Ende immer vorher gelesen. Eine Nachrichtenwarteschlange verarbeitet Nachrichten, nicht Bytes. Und normalerweise sind sie weniger strikt FIFOs. Es hängt von der Implementierung ab, aber sie können einen Prioritätsmechanismus zwischen Nachrichten unterstützen.

In gewisser Weise bieten Nachrichtenwarteschlangen mehr Funktionen, Sie können jedoch, wenn Sie möchten, FIFOs mit Nachrichtenwarteschlangen implementieren und umgekehrt.

Antwort2

ipcszeigt Ihnen Interprozess-Kommunikationsmethoden, die als "System V IPC" bezeichnet werden. System V IPC wird derzeit weitgehend ignoriert, aberin der Vergangenheit war ausgesprochen unbeliebt. Offenbar haben in der Anfangszeit verschiedene Gruppen umgesetzt, was sie brauchten, undjemand brauchte Nachrichtenwarteschlangen, gemeinsamen Speicher und Semaphoren..

Diese IPC-Methoden wurden weithin dafür kritisiert, dass sie nicht sehr Unix-artig seien, keine „Datei“ seien – also genau das, was Sie in Frage stellen.

Ich habe keine Erklärung dafür, warum Named Pipes und Message Queues nicht integriert sind, aber ich würde wetten, dass es ursprünglich genauso war: Eine Gruppe wollte Named Pipes und hat sie einfach gemacht.

verwandte Informationen