Procfs ve sysfs arasındaki fark nedir? Neden dosya sistemi olarak yapılırlar? Anladığım kadarıyla, proc, sistemde çalışan süreçlerle ilgili hemen bilgi depolamak için bir şeydir.
Procfs ve sysfs arasındaki fark nedir?
proc eskidir, az çok kural ve yapı içermez. Ve bir noktada
proc 'ın biraz fazla kaotik olduğuna ve yeni bir yola ihtiyaç olduğuna karar verildi.
Ardından
sysfs oluşturuldu ve eklenen yeni şeyler, cihaz bilgileri gibi
sysfs içine konuldu.
Yani bir anlamda aynı şeyi yapıyorlar, ancak
sysfs biraz daha yapılandırılmış.
Neden dosya sistemi olarak yapılırlar?
UNIX felsefesi bize her şeyin bir "dosya" olduğunu söyler, bu nedenle dosya gibi davranması için yaratılmıştır.
Anladığım kadarıyla, proc, sistemde çalışan süreçlerle ilgili hemen bilgi depolamak için bir şeydir.
Bu parçalar her zaman oradaydı ve muhtemelen hiçbir zaman
sysfs 'a taşınmayacaklar.
Ancak,
proc içinde bulabileceğiniz, taşınmamış daha eski şeyler var.
Başlangıçta (Unix'te geri dönüş), sistemdeki çalışan süreçler hakkında programların öğrendiği yol, çekirdek bellekten süreç yapılarını doğrudan okumaktı (açılış/dev/mem'i açmak ve ham verileri doğrudan yorumlamak). İlk 'ps' komutları bu şekilde çalıştı. Zamanla, bazı bilgiler sistem çağrıları yoluyla sağlandı.
Bununla birlikte, sistem verilerini/dev/mem üzerinden doğrudan kullanıcı alanına maruz bırakmak kötü bir yöntemdir ve her yeni işlem verisi parçasını dışa aktarmak istediğinizde sürekli olarak yeni sistem çağrıları oluşturmak için iğrençtir ve böylece daha yeni bir yöntem oluşturulmuştur. süreç öznitelikleri 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, çekirdeklerdeki temel veri yapıları değişse bile, arabirimler ve yapılar (dizinler ve dosyalar) aynı tutulabilir. Bu, önceki sistemden çok 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 işlem bilgilerini ve birkaç temel sistem özniteliğini yayınlayacak şekilde tasarlanmıştır. Bununla birlikte, kullanımı kolay olduğu için (hem çekirdek tarafından hem de kullanıcı alanı tarafından), bir dizi sistem bilgisi için bir çöplük haline geldi. Ayrıca, ayarları ayarlamak ve çekirdeğin veya çeşitli alt sistemlerinin çalışmasını kontrol etmek için kullanılmak üzere okuma/yazma dosyaları kazanmaya başladı. Bununla birlikte, kontrol arayüzlerini uygulama metodu ad-hoc 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) çekirdekten kullanıcı alanına göstermek için tek tip bir yol sağlamak üzere tasarlanmıştır. Şimdi, ç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ürdeki sürücülerin hepsinin sysfs aracılığıyla açığa çıkan aynı öğelere sahip olacağı anlamına gelir.
Eski sistem bilgilerinin ve kontrol noktalarının çoğuna/proc içinde hala erişilebilir, ancak tüm yeni veriyolları ve sürücüler bilgi ve kontrol noktalarını sysfs aracılığıyla göstermelidir.
procfs keyfi sağlar
file_operations, sysfs daha kısıtlıdır
procfs girişleri, her dosya tabanlı sistem çağrısına ne olacağını belirleyen işlev işaretçileri içeren bir
file_operations yapısı alır;
open,
read,
mmap vb. ve bunlardan isteğe bağlı işlemler yapabilirsiniz.
Minimal örnekler:
sysfs aşağıdaki anlamda daha kısıtlıdır:
show,
store,
openuygulamak için kullandığı yalnızca iki yöntem
closeve
read,
writeve
lseeksizin için. Ayrıca bkz .: Platform sürücüsünde sysfs özniteliğine dosya işlemleri nasıl eklenir? | Yığın Taşması
kobjectile sıkıca birleşti
sysfs, 2.6 Çekirdek yayın döngüsü sırasında procfs bu tür bilgileri o kadar iyi yapmadığı için aygıt bilgilerini göstermek için oluşturulan Sanal Dosya Sistemidir.
Bu tür bilgileri göstermesi amaçlanmadığı için bellek vb. Sysfs'ye taşınmamıştır, bu yüzden hiç taşınmaması olası değildir.
Ben de buraya eklemek istiyorum gibi .../proc eski sürümü olduğu gibi o zaman dilimi çekirdek aygıt bilgilerini içerir .. sysfs 2.6 çekirdek sürümü ile geldi, böylece aygıt sürücüsü bilgileri olduğu kendi dizini yapar biraz yapılandırılmış ve kolay erişilebilir ..