(Cevabı biraz geç kaldı ...)
Bir dosyanın boyutu nasıl sıfır olabilir, yukarıdaki cevapların sağladığından biraz daha karmaşıktır. Soru Win7 olarak etiketlendi, ancak FAT veya NTFS gibi diğer "basit" dosya sistemlerine bakmak , kavramlar benzer olduğu için faydalı olabilir.
Disk bir dosyanın ne olduğunu ve dizinin ne olduğunu "bilmez"; tüm veriler küçük bloklar halindedir. İşletim sistemi veri bloklarının anlamlarını birbirinden ayırıyor. İlk birkaç özel, ancak blokların geri kalanı veriler hakkında bilgi tutar (örneğin: dosya adı, dosya uzunluğu, verileri tutan ilk veri bloğu) veya verilerin kendisi.
Bir dizin, işletim sisteminin anladığı "veri" nin, dosyaların içeriği değil, dosyalar hakkında bilgi içeren bir bilgi bloğu olduğu özel bir "dosya" dır. İyi bir benzetme fiziksel bir kütüphane ve kart kataloğudur. Bilgi bloklarını kart kataloğu ve rafları veri blokları olarak düşünün (kart kataloğu aynı zamanda rafa benzer bir yapıya oturur).
Bir dosyayı "UNIX touch
komutuyla söyler" ), işletim sistemi ilk önce bir bilgi bloğunda (dizin) bir giriş oluşturur:
- Ad = My_File.txt
- Uzunluk = 0
- Veri Bloğu Başlat = N / A
- Ek bilgi (sahip, izinler, oluşturulma / güncelleme / değiştirme tarihi) vb.
Yalnızca "yazmak" için bazı veriler varsa, verileri depolamak için boş bir veri bloğu bulmaya çalışır. Ancak veri blokları, diskin ulaşması ve işletim sisteminin okuması için uygun sabit boyutlarda (32K) gelir. Yalnızca "Merhaba" yazarsanız, bloğun çoğu "boştur" (aslında sıfır olmayabilir, ancak daha önce olanlardan kaynaklanan çöp) Dosya) böylece kötü şeyler alamazsınız.
"Dosya" yı bir uzunluk> blok boyutuna güncellediğinizde, işletim sistemi verileri yeni bloğa yazar ve bir birinci bloğu (ve benzeri) SONRASI SONRA yeni uzunluk (detaylar farklı).
Sonunda, veri bloklarının zincirleri (dosya içerikleri) hakkında bilgi içeren bir bilgi veri blokları (dizinler veya listeler) topluluğudur.
Mantıksal olarak, bu aynı zamanda, bir dosya neden uzun süre yanıp sönerken aynı dosya sistemindeki bir dosyanın taşınmasının neden hızlı yanıp söndüğünü de açıklar. İşletim sistemi, girişi bir dizinden (bilgi veri bloğu) kaldırmak ve diğerine eklemek için yalnızca 2 dizin bloğunu düzenlemelidir. Bir dosyayı silin: yeniden ayrılacak dosya veri bloklarını serbest bırakarak, dizin bloğundaki girişi kaldırın.
ps: Kart kataloğunun bir kitap için girişi olması, rafta olduğu anlamına gelmez (belki de teslim alınmış veya kaybolmuş olabilir); dosya boyutu 0.
pps: Kitaplığın içindeki yanlış yerleştirilmiş bir kitap arama kitaplığını ya da bilgisayar terimlerini ifade eder: chkdsk ya da disk tamir!
UNIX inode'larını okuyarak veya sürüm kontrol sistemlerinin (ClearCase, TFS, Git vb.) Yalnızca dosyaları ve dizinleri değil aynı zamanda dosyaların sürümlerini ve hatta dizin sürümlerini nasıl yönettiğini takdir ederek daha iyi bir anlayış elde edilebilir. Çoğu durumda, her şey bir veritabanında saklanır ve klasik dizin yapısı ve dosyalar olarak görünmesi için kullanıcıya sunulur!