Yanıtlar:
Procfs ve sysfs arasındaki fark nedir?
proc
eskisi, kuralları ve yapısı olmadan az çok. Ve bir noktada, proc
biraz fazla karmakarışık olduğuna ve yeni bir yola ihtiyaç duyulduğuna karar verildi .
Sonra sysfs
yaratıldı ve eklenen yeni şeyler, sysfs
cihaz bilgisi gibi eklendi .
Yani bir anlamda onlar da aynı şeyi yapar, ancak sysfs
biraz 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 .
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.
/dev/mem
ve /dev/kmem
root erişimi gerektirmeleridir, bu yüzden onları kullanan uygulamaların ayarlanması gerekir.
kmem
gibi ps
araçlar SGID'dir kmem
.
/dev/mem
veya /dev/kmem
daha hızlı kullanılan eski yöntem, çünkü kullanıcı modu işlemi yalnızca mmap
dosyayı okuyabilir ve tüm bilgileri yalnızca RAM okuyarak alabilir. Herhangi bir bilgiyi /proc
dosya sisteminden almak, bir sistem çağrısı gerektirir open
ve bir diğeri için read
çok daha yavaştır. Ancak, /proc
belleği okumak için çekirdeğe özgü bilgisayar korsanları gerektirmez ve kullanıcı modu işlemlerine daha az hassas veriler verir.
procfs keyfi sağlar file_operations
, sysfs daha kısıtlıdır
procfs girişleri bir alacak file_operations
mesela her dosya tabanlı sistem çağrısı, ne olacağını belirlemek işlev işaretçileri içeren yapı, open
, read
, mmap
vb ve olanlardan keyfi eylemleri alabilir.
Minimal örnekler:
sysfs aşağıdaki anlamda daha kısıtlıdır:
show
ve store
Linux uygulamak için kullandığı, open
, close
, read
, write
ve lseek
senin için. Ayrıca bkz: Dosya işlemleri platform sürücüsünde sysfs özniteliğine nasıl eklenir? | Yığın Taşmasıkobject
Minimal örnek: Linux çekirdeğinde vys.2 basit bir sysfs sınıfı özelliği nasıl oluşturulur? | Yığın Taşması
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.
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 ..