Boyut – Diskteki Boyut

boyut-diskteki-boyut boyut-diskteki-boyut  

Bir dosyanın/klasörün özelliklerini karıştırırken belki dikkatinizi çekmiştir: Boyut ve Diskteki Boyut olmak üzere iki farklı boyut değeri var. (Size, size on disk) Neden böyle bir şey olduğunu hiç merak ettiniz mi?

Dosya Sistemleri

Bunun nedeni dosyaların diskte depolanma şekli ile alakalı. Yani dosya sistemi ile. Bildiğiniz üzere bilgisayardaki her şey 1 ve 0’lardan oluşur, diskte de 1 ve 0 şeklinde saklanır. Bir dosya diskte belirli bir konumda yer almaktadır. Örneğin ubenzer.txt dosyası diskteki 2000 ile 5099 arasındaki alanda saklanmaktadır.

Tüm dosyalar diskte bu şekilde saklanınca, hangi dosyanın nerede olduğunun bilinmesi ihtiyacı doğar. İyi hoş ubenzer.txt’yi diske kaydettik ama, nerede bu dosya?!

Hal böyle olunca, tüm dosya sistemlerinin, hangi dosyanın hangi konumda olduğunu tutan bir indisi vardır. Kitapların içindekiler kısmına benzetebiliriz bunu.  İşletim sistemi bir dosyaya erişeceğinde önce bu indisten dosyayı bulur, nerede olduğunu öğrenir ve dosyaya yollanır.

Ancak dosyanı başlangıç ve bitiş adresini bit cinsinden olduğu gibi yazmak etkin bir yaklaşım değildir. Örneğin 1TB’lık bir disk için düşünürsek 8.796.093.022.208 bitlik bir alana denk gelmektedir. Bir bilgisayarda da on binlerce hatta milyonlarca dosya olduğunu düşünürsek her bir dosya için başlangıç ve bitiş adreslerini (üstelik ikili düzende) tutmaya kalkmak hatırı sayılır bir yer işgaline sebep olacaktır. 1TB’lık alanı indeksleyebilmek için belki de bu alanın yarısını kullanmamız gerekecektir. Bir dosyanın üstüne sonradan yazılmasından dolayı birden fazla parçaya ayrılması gibi olaylara girmedik bile henüz!

Bu yüzden dosya sistemleri diskin alanını kendilerince “allocation unit”lere ayırırlar. Bir dosya yaratılmak/dosyaya yazılmak istendiğinde işletim sistemi “allocation size” kadar bir yer açar. Örneğin “allocation size”ımızın 64KB olduğunu düşünelim. Böyle bir durumda dosyanızın boyutu 1 bayt da olsa 63KB  da olsa diskte bu dosya için 64KB’lık bir alan ayrılmış olacaktır. 64KB + 1 baytlık bir dosyanız olması durumunda diskte sizin için 128KB’lık bir alan ayrılacaktır.

Bunun nasıl bir avantajı var diye sorarsanız, birkaç tane saymak mümkün: Öncelikle adresleme bit üzerinden yapılmayacak, “allocation unit” üzerinden yapılacak. Böylece 1512546516 bayt demek yerine, 2200.allocation unit şeklinde tarif edebileceğiz bir dosyanın konumunu. Bu da dosyaların konumlarını tutan indeksin boyutunun düşmesi anlamına gelecek. Örneğin 64K’lık bir allocation size kullanmadan önce 1TB’lık bir alanı adresleyebilmek için 8.796.093.022.208’ten bir adres vermek zorundayken, bu 64*1024 * 8 kat azalarak 16777216 adrese düşecek. Tabiki burada verilen örnek aşırı basit, hatta bazı dosya sistemleri için yanlış. Ama fikir vermesi için gerekli.

Bir başka avantajı, dosyalar daha az bölünecek. Dosyanın sonunda boşluk olması, yeni yazılan verilerin diskte ayrı bir alana yazılması yerine dosyanın sonuna eklenmesine olanak sağlayacak. Fragmantation düşecek.

Dezavantajı da var tabii: Kullanmadığımız halde diskte dosyalar yer tutacak. 1KB için 64KB alan kullanacağız, 63’ü çöpe gidecek mesela.

Elbette ki avantajlar da dezavantajlar da bunlarla sınırlı değil. Daha da kötüsü bu avantaj/dezavantajlar hem kişiye hem de kullanılan dosya sistemine göre değişen şeyler. Buradakiler hep genel bilgi olması amaçlı şeyler.

Sonuç

Diskteki boyut ile dosyanın boyutu tam olarak yukarıda anlatılanlarla alakalı. Dosyanız, “allocation size”lardan ötürü diskte kendi boyutundan çok daha fazlasını kaplıyor olabilir. Bu, özellikle küçük boyutlu bir sürü dosyanız olduğunda veya “allocation size” haddinden fazla olduğunda kendini gösterir.

Bitirirken: Optimizasyon

Dosya sistemlerinde “allocation size” önemli. Eğer bir diskte depolayacağınız dosyaların boyutları konusunda fikir sahibiyseniz format esnasında buna göre ayarlama yapabilirsiniz. Örneğin irili ufaklı dosyaların sıklıkla olacağı işletim sistemi alanında 8K gibi küçük değerler kullanmak (veya en iyisi varsayılan değerleri hiç ellememek) mantıklı iken, video/iso arşivinizin olduğu kocaman kocaman dosyaların bulunduğu dosya sistemlerinde daha büyük değerler seçmek mantıklı olabilir.

Bir sonraki yazıya…

Flash disk üzerinde “boyut” ve “diskteki boyut”  üzerine denemeler…