Dosya tablosu dosya sisteminde mi yoksa bellekte mi?


9

İşletim sistemi kontrol tabloları bağlamında, "dosya tabloları" terimi, dosya sisteminin bir parçası olan veya ana bellekte olan (ve bu durumda yalnızca açık dosyalara referanslar olacağını varsayalım) bir veri yapısına atıfta bulunuyor mu? ? Ders kitabım 1 diyor ki,

Tablolar, dosyaların varlığı, ikincil bellekteki konumları, geçerli durumları ve diğer öznitelikler hakkında bilgi sağlar. Hepsi olmasa da, bu bilgilerin çoğu bir dosya yönetim sistemi tarafından korunabilir ve kullanılabilir, bu durumda işletim sisteminin dosyalar hakkında çok az bilgisi vardır veya hiç bilgisi yoktur.

Ayrıca, dosya yönetim sistemi nedir? Bu dosya sistemi anlamına mı geliyor?

1 Stallings, İşletim Sistemleri , 7 inci baskı., S. 127

Yanıtlar:


23

Stalling'in bellek içi inode tablosu veya dosya sistemindeki tablolar hakkında konuşup konuşmadığını belirlemek başka bir bağlam olmadan belirsizdir. Kitabın daha erken bir basımını birine ödünç verdim, ama asla geri alamadım; bu yüzden bağlamı kendim arayamıyorum.

Üç "dosya tablosu" vardır, ancak burada tartışılana daha çok " bellek içi inode tablosu " denir ; ikincisi genel olarak " açık dosya tablosu " olarak adlandırılır ve işlem başına mevcuttur. Her iki tablo da çekirdek belleğindedir ve bir program tarafından erişilemez. Üçüncü "tablo" gerçekten dosya sistemi (disk üzerinde) içinde iki tablo kümesidir, birincisi disk üzerinde inode tablosu ve ikincisi veri bloklarıdır (not: bu tartışma geleneksel UNIX dosya sistemi yönetimi ile ilgilidir, daha yeni sistemler farklı organizasyonlara sahip). İnode tablosundaki girişler, dolaylı referans blokları veya gerçek veriler içeren veri bloklarına referans dizilerine sahiptir. Bir dosyanın anahtarıdosya sisteminde inode var, veriler kendilerini engellemiyor. Stalling bir disk üzerindeki "dosya tablosu" hakkında konuşurken, genellikle diskteki inode tablosu veya FAT sistemlerindeki blok tanımı tablosu gibi dosyaları gösteren "küçük" tablo olacaktır.

Bellek içi inode tablosu açısından, inode dosya sisteminden yüklenir, st_nlink değeri artırılır ve daha sonra inode verileri diske yazıldığında, st_ctime güncellenir. Eğer bellekte artık inode gerekmiyorsa, st_nlink değeri azaltılır ve tablodaki giriş boş olarak işaretlenir. Her işlem bellek içi inode tablosu içinde üç hakkında ya da beş girişlere referanslarla başlayacak: ait inode'lar stdin, stdout, stderr- geçerli dizinde ve kök dizinine referanslar - ve daha sonra bunlar genellikle bir aygıt dosyası (tty) bulunmaktadır. Bir inode tabloda yalnızca bir kez bulunur, bu nedenle tablodaki tek bir inode için birden fazla başvuru olabilir.

Açık dosya tablosu işlem başına tutulur ve bellek içi inode tablosuna, arabelleklere ve durum bilgilerine ( fseek(2)değer ve bayraklar gibi) ilişkin referanslar içerir open(2). Dosya tanıtıcısı tam anlamıyla açık dosya tablosuna bir dizin; "dosya tanımlayıcı" hakkında konuşurken insanlar açık dosya tablosundaki girişe başvururlar.

Bir dosya kullanılarak açıldığında open(2), açık dosya tablosunda kullanılabilir bir giriş bulunur, yol başvurusu ile dosya referansının inode'u belirlenir, inode, önceden yüklenmemişse, bellek içi inode tablosuna yüklenir, st_nlink sayısı dosya tanımlayıcısında artırılır ve inode girişine başvurulur, bayraklar ayarlanır ve arabellekler ayrılır. Kapatıldığında, bunun tersi gerçekleşir.

Çekirdek içindeki rutinleri "denir dosya yönetim sistemi " ve " dosya sistemi " diskte organizasyondur. Bu günlerde modprobe(8), diskteki farklı kuruluşlar için dosya yönetim sistemine yüklenebilen ( ) bir dizi 'takılabilir' modül var . Örneğin, ext2 / ext3 / ext4 dosya sistemi türleri vardır ve her birinin çekirdeğin dosya yönetim sisteminde farklı bir modülü vardır; ntfs, sbfs, nfs, vfat, jfs, vb. ile aynı.

Bu, ilk başta istediğimden biraz daha uzun soluklu, bu yüzden burada duracağım.


Bu inanılmaz derecede iyi bir cevap.
Kazark

Evet, böyle iyi ve kapsamlı bir cevap verirken lütfen kendinizi durdurmayın.
Lizardx
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.