Wie wird /proc/self in Linux implementiert?

Wie wird /proc/self in Linux implementiert?

Ich habe am Dateisystem in Linux herumgebastelt /procund bin auf gestoßen /proc/self, was ein symbolischer Link zum Prozessverzeichnis des aktuellen Prozesses ist. Ich würde gerne wissen, wie es implementiert ist. Eine Lösung wäre, diesen symbolischen Link zu ändern aufjeder Kontextwechsel, aber das ist offensichtlich sehr teuer, da es einen Festplattenzugriff erfordert.

Antwort1

http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482ist die aktuelle Implementierung.

Das procDateisystem ist vollständig virtuell und wird so implementiert, dass das interne VFS readlinkspezielle symbolische Links an die richtige Stelle weiterleitet. Es berechnet also, worauf selfes beim Lesen/Durchlaufen verweist, nicht bei jedem Kontextwechsel.

Antwort2

Dateien in /procwerden nicht auf einer Festplatte gespeichert, sondern werden vom Kernel im laufenden Betrieb generiert. SieheWas passiert, wenn ich /proc öffne und daraus lese?

Wenn Sie programmtechnisch versiert sind, können Sie die Implementierung /procimKernel-QuellcodeDer Inhalt der/proc/selfDer symbolische Link wird erzeugt durchFunktiondas einen Puffer mit der PID des aufrufenden Prozesses füllt.

verwandte Informationen