Dizinlerin iç yapısı kullanılan dosya sistemine bağlıdır. Ne olduğunu tam olarak bilmek istiyorsanız, dosya sistemi uygulamalarına göz atın.
Temel olarak, çoğu dosya sisteminde, dizin dosya adları (anahtarlar) ve inode numaraları (değerler) arasında ilişkilendirilebilir bir dizidir . Böyle bir şey¹:
1167010 .
1158721 ..
1167626 subdir
132651 barfile
132650 bazfile
Bu liste (genellikle) 4KB bloklar zincirinin içinde - az ya da çok - verimli bir şekilde kodlanmıştır. Normal dosyaların içeriğinin benzer şekilde depolandığına dikkat edin. Dizinler söz konusu olduğunda, bu bloklar içinde gerçekte hangi boyutun kullanıldığını bilmenin bir anlamı yoktur. Bu nedenle rapor edilen dizinlerin boyutları du
4KB'nin katlarıdır.
Düğümler, blokları birbirine bağlamak için, genel anlamda tek bir varlık, yani bir 'dosya' oluşturmak için vardır. Bir tür adres olan bir numara ile tanımlanırlar ve her biri genellikle tek bir özel blok olarak saklanır.
Tüm bunların yönetimi çekirdek modunda gerçekleşir. Yazılım sadece int mkdir(const char *pathname, mode_t mode);
sistem çağrısına yol açan bir fonksiyona sahip bir dizin oluşturulmasını ister ve geri kalanı perde arkasında gerçekleştirilir.
Bağlantılar yapısı hakkında:
Sabit bağlantı bir dosya değildir, yalnızca önceden var olan bir inode öğesine² işaret eden yeni bir dizin girdisidir (yani bir ad - inode numarası ilişkilendirmesi). Bu, aynı inode'a farklı yol adlarından erişilebileceği anlamına gelir. Özellikle, meta veriler (izinler, sahiplik, zaman damgaları…) inode içinde saklandığından, bunlar benzersizdir ve dosyaya erişmek için seçilen yol adından bağımsızdır.
Bir sembolik bağlantı olduğu bir dosya ve kendisine hedef ayrıdır bu. Bu, kendi inodeuna sahip olduğu anlamına gelir. Eskiden normal bir dosya gibi işlenirdi: hedef yol bir veri bloğunda saklandı. Ancak şimdi, son ext dosya sistemlerinde verimlilik nedenleriyle, 60 bayttan daha kısa yollar inode içinde saklanır (normalde işaretçileri veri bloklarına depolamak için kullanılan alanlar kullanılarak).
-
1. Bu, kullanılarak elde edildi ls -ai1 testdir
.
2. Günümüzde türü 'dizin' den farklı olması gereken.