Procfs ve sysfs arasındaki fark nedir?


71

Procfs ve sysfs arasındaki fark nedir? Neden dosya sistemi olarak üretiliyorlar? Anladığım kadarıyla, proc sadece sistemde çalışan süreçlerle ilgili acil bilgileri depolamak için bir şeydir.

Yanıtlar:


61

Procfs ve sysfs arasındaki fark nedir?

proceskisi, kuralları ve yapısı olmadan az çok. Ve bir noktada, procbiraz fazla karmakarışık olduğuna ve yeni bir yola ihtiyaç duyulduğuna karar verildi .

Sonra sysfsyaratıldı ve eklenen yeni şeyler, sysfscihaz bilgisi gibi eklendi .

Yani bir anlamda onlar da aynı şeyi yapar, ancak sysfsbiraz daha yapılandırılmıştır.

Neden dosya sistemi olarak üretiliyorlar?

UNIX felsefesi bize her şeyin bir "dosya" olduğunu söyler, bu yüzden yaratılmış ve böylece dosya gibi davranır.

Anladığım kadarıyla, proc sadece sistemde çalışan süreçlerle ilgili acil bilgileri depolamak için bir şeydir.

Bu parçalar her zaman oradaydı ve muhtemelen hiç hareket etmeyeceklerdir sysfs.

Ancak bulabileceğiniz proc, taşınmamış daha eski şeyler var .


2
Cevabınız için teşekkürler .. Ama neden cpuinfo ve meminfo hala procfs'te tutulan şeyler gibi? Neden sysfs'e taşınamıyorlar?
Sen

5
Sanırım sysfs'e yeni şeyler koydular ve bir miktar geriye dönük uyumluluk sağlamak için eskisi gibi bırakın. Proc içindeki bu şeylere bağlı bir sürü şey var ...
Johan

74

Başlangıçta (Unix'te geri dönüş), programların sistemdeki çalışan işlemler hakkında öğrendiği yol, işlem yapılarını doğrudan çekirdek bellekten okumaktı (açma / dev / mem açma ve ham verileri doğrudan yorumlama). İlk 'ps' komutları böyle çalıştı. Zamanla, sistem çağrıları yoluyla bazı bilgiler sağlandı.

Bununla birlikte, sistem verilerini / dev / mem üzerinden doğrudan kullanıcı alanına göstermek kötüdür ve bazı yeni işlem verilerini vermek istediğiniz her seferde sürekli olarak yeni sistem çağrıları oluşturmak için iğrençtir ve bu nedenle daha yeni bir yöntem oluşturulmuştur Süreç özellikleri hakkında bilgi edinmek için kullanıcı alanı uygulamaları için yapılandırılmış verilere erişmek. Bu / proc dosya sistemiydi. / Proc ile arayüzler ve yapılar (dizinler ve dosyalar), çekirdekteki temel veri yapıları değişse bile aynı tutulabilir. Bu önceki sistemden daha az kırılgandı ve daha iyi ölçeklendi.

/ Proc dosya sistemi başlangıçta 'ps', 'top', 'free' ve diğer birkaç sistem yardımcı programının gerektirdiği süreç bilgilerini ve birkaç temel sistem özelliğini yayınlamak için tasarlandı. Ancak, kullanımı kolay olduğu için (hem çekirdek hem de kullanıcı alanı tarafından), bir dizi sistem bilgisi için boşaltma alanı haline geldi. Ayrıca, ayarları ayarlamak ve çekirdeğin veya çeşitli alt sistemlerin çalışmasını kontrol etmek için kullanılacak okuma / yazma dosyaları almaya başladı. Bununla birlikte, kontrol arayüzlerinin uygulanmasının metodolojisi geçici idi ve / proc yakında karışık bir karmaşaya dönüştü.

Sysfs (veya / sys dosya sistemi), bu karışıklığa yapı eklemek ve sistem bilgilerini ve kontrol noktalarını (ayarlanabilir sistem ve sürücü öznitelikleri) çekirdeğin kullanıcı alanına göstermek için tek biçimli bir yol sağlamak üzere tasarlanmıştır. Artık çekirdekteki sürücü çerçevesi, sürücü türüne ve veri yapılarındaki değerlere bağlı olarak, sürücüler kaydedildiğinde otomatik olarak / sys altında dizinler oluşturur. Bu, belirli bir türden sürücülerin hepsinin sysfs tarafından gösterilen aynı öğelere sahip olacağı anlamına gelir.

Eski sistem bilgileri ve kontrol noktalarının çoğuna hala / proc içinde erişilebilir, ancak tüm yeni otobüsler ve sürücüler bilgi ve kontrol noktalarını sysfs aracılığıyla göstermelidir.


8
Bunun "kötü form" kullanmasının bir nedeni /dev/memve /dev/kmemroot erişimi gerektirmeleridir, bu yüzden onları kullanan uygulamaların ayarlanması gerekir.
Barmar

2
Birçok Unix sisteminde ve Linux'ta bu cihaz dosyaları gruba aittir ve bunun kmemgibi psaraçlar SGID'dir kmem.
countermode

2
Aslında, çekirdeğe doğrudan erişen /dev/memveya /dev/kmemdaha hızlı kullanılan eski yöntem, çünkü kullanıcı modu işlemi yalnızca mmapdosyayı okuyabilir ve tüm bilgileri yalnızca RAM okuyarak alabilir. Herhangi bir bilgiyi /procdosya sisteminden almak, bir sistem çağrısı gerektirir openve bir diğeri için readçok daha yavaştır. Ancak, /procbelleği okumak için çekirdeğe özgü bilgisayar korsanları gerektirmez ve kullanıcı modu işlemlerine daha az hassas veriler verir.
Mikko Rantalainen,

10

procfs keyfi sağlar file_operations, sysfs daha kısıtlıdır


3

sysfs, procfs bu tür bir bilgiyi iyi yapmadığı için cihaz bilgilerini göstermek üzere 2.6 Çekirdek sürüm döngüsü sırasında oluşturulan Sanal Dosya Sistemidir.

Bellek vb. Hiçbir zaman bu tür bilgileri göstermeyi amaçlamadığı için sysfs'e taşınmamıştır, bu nedenle herhangi bir şekilde taşınması muhtemel değildir.


Hafıza vb sysfs'e taşınmamıştır. Ne demek istiyorsun? Ve neden bu tür bilgileri göstermesi amaçlanmadı? Lütfen bunu bana açıklar mısın?
Sen

Demek istediğim, bellek vb. Sysfs'e taşınıp taşınmayacağına dair sorunuzun cevabı olan taşınan anlamına geliyordu. Ve sadece, cihaz bilgisini, procfs'in iyi yapmadığı bir şey olarak göstermesi amaçlanmıştır, procfs, diğer bilgi türleri için hala mükemmeldir.
kemra102

1

Ayrıca buraya eklemek istediğim gibi ... / proc eski sürüm olduğundan, o zamanın çekirdek aygıtının bilgisini içerir. biraz yapılandırılmış ve erişimi kolay ..

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.