it-swarm.com.de

Was ist der Unterschied zwischen procfs und sysfs?

Was ist der Unterschied zwischen procfs und sysfs? Warum werden sie als Dateisysteme erstellt? Nach meinem Verständnis ist proc nur etwas, um die unmittelbaren Informationen zu den im System ausgeführten Prozessen zu speichern.

74
Sen

Was ist der Unterschied zwischen procfs und sysfs?

proc ist das alte, es ist mehr oder weniger ohne Regeln und Struktur. Und irgendwann wurde entschieden, dass proc etwas zu chaotisch war und ein neuer Weg benötigt wurde.

Dann wurde sysfs erstellt und das neue Material, das hinzugefügt wurde, wurde wie Geräteinformationen in sysfs eingefügt.

In gewissem Sinne machen sie dasselbe, aber sysfs ist etwas strukturierter.

Warum werden sie als Dateisysteme erstellt?

Die UNIX-Philosophie besagt, dass alles eine "Datei" ist, daher wurde sie so erstellt, dass sie sich wie Dateien verhält.

Nach meinem Verständnis ist proc nur etwas, um die unmittelbaren Informationen zu den im System ausgeführten Prozessen zu speichern.

Diese Teile waren schon immer da und werden wahrscheinlich nie in sysfs verschoben.

Aber es gibt mehr altes Zeug, das Sie in proc finden können, das nicht verschoben wurde.

63
Johan

Am Anfang (vor langer Zeit in Unix) erfuhren Programme über die laufenden Prozesse auf dem System, indem sie Prozessstrukturen direkt aus dem Kernelspeicher lasen (Öffnen/dev/mem und direktes Interpretieren der Rohdaten). So funktionierten die allerersten 'ps'-Befehle. Im Laufe der Zeit wurden einige Informationen über Systemaufrufe verfügbar gemacht.

Es ist jedoch eine schlechte Form, Systemdaten über/dev/mem direkt dem Benutzerbereich zugänglich zu machen, und es ist unangenehm, jedes Mal, wenn Sie neue Prozessdaten exportieren möchten, ständig neue Systemaufrufe zu erstellen. Daher wurde eine neuere Methode erstellt Zugriff auf strukturierte Daten für User-Space-Anwendungen, um Informationen zu Prozessattributen zu erhalten. Dies war das/proc-Dateisystem. Mit/proc können die Schnittstellen und Strukturen (Verzeichnisse und Dateien) beibehalten werden, selbst wenn sich die zugrunde liegenden Datenstrukturen im Kernel ändern. Dies war viel weniger fragil als das frühere System und es skalierte besser.

Das/proc-Dateisystem wurde ursprünglich entwickelt, um Prozessinformationen und einige wichtige Systemattribute zu veröffentlichen, die von 'ps', 'top', 'free' und einigen anderen Systemdienstprogrammen benötigt werden. Da es jedoch einfach zu bedienen war (sowohl von der Kernel-Seite als auch von der User-Space-Seite), wurde es zu einer Müllhalde für eine ganze Reihe von Systeminformationen. Außerdem wurden Lese-/Schreibdateien abgerufen, um Einstellungen anzupassen und den Betrieb des Kernels oder seiner verschiedenen Subsysteme zu steuern. Die Methode zur Implementierung von Steuerungsschnittstellen war jedoch ad-hoc, und/proc entwickelte sich bald zu einem Wirrwarr.

Das sysfs (oder/sys-Dateisystem) wurde entwickelt, um diesem Durcheinander Struktur zu verleihen und eine einheitliche Möglichkeit zu bieten, Systeminformationen und Kontrollpunkte (einstellbare System- und Treiberattribute) dem Benutzerraum aus dem Kernel zugänglich zu machen. Jetzt erstellt das Treiber-Framework im Kernel automatisch Verzeichnisse unter/sys, wenn Treiber registriert werden, basierend auf dem Treibertyp und den Werten in ihren Datenstrukturen. Dies bedeutet, dass Treiber eines bestimmten Typs alle dieselben Elemente über sysfs verfügbar machen.

Viele der älteren Systeminformationen und Kontrollpunkte sind weiterhin in/proc verfügbar, aber alle neuen Busse und Treiber sollten ihre Informationen und Kontrollpunkte über sysfs verfügbar machen.

77
Tim Bird

procfs erlaubt willkürlich file_operations, sysfs ist eingeschränkter

sysfs ist das virtuelle Dateisystem, das während des 2.6-Kernel-Release-Zyklus erstellt wurde, um Geräteinformationen anzuzeigen, da procfs diese Art von Informationen nicht so gut verarbeitet hat.

Speicher usw. wurde nicht auf sysfs portiert, da diese Art von Informationen nie angezeigt werden sollte, sodass es unwahrscheinlich ist, dass sie überhaupt portiert werden.

3
kemra102

Wie ich auch hier hinzufügen möchte ... Da/proc die ältere Version ist, enthält sie die Informationen des Kernelgeräts aus dieser Zeit. Da sysfs mit der Kernelversion 2.6 geliefert wurde, erstellen die Gerätetreiberinformationen ein eigenes Verzeichnis, in dem sie sich befinden ein bisschen strukturiert und leicht zugänglich ..

1
gagan bajaj