Harddisk(HDD)
Disklerin üzerindeki dairesel izlere Track veya cylinder denir. Birden fazla disk kullanılırsa bunlar üzerindeki okuyucu kafalara ise head okudukları yüze Side denmektedir. Bir dairesel iz açısal olarak eş bölümlere ayrılmıştır. Bu bölümlere ise Sector denmektedir. Bütün bunlar göz önüne alındığında bir bilginin adresini vermek için kafa veya yüz numarası, izin numarası ve sektor numarası verilmelidir. Genel olarak bir track üzerinde bir sektörün belirlediği alan 512 byte'tır. Ancak bazı SCSI disklerde bu boyut değişebilmektedir.
Sektör_Sayısı = (Kafa_Sayısı x Silindir_Sayısı x Sektor_Sayısı)
Bu rakamla bir sektörün boyutu çarpıldığında diskin kapasitesi bulunur. Diske erişimi kolaylaştırmak için sektörler gruplanarak CLUSTER'lara bölünür. Cluster sektörden farklıdır. Ve formatlama esnasında bir cluster'ın kaç sektör olacağı belirlenir. Mesala bir cluster 8 sektörden oluşuyorsa cluster boyutu 4 KB olarak belirlenir.Diskin üzerinde belli bloklar vardır.
Partition: Partition disk üzerindeki bölümlendirme için kullanılır. Diskin 0. Sektör, 1. Cylinder, 0. Head'de bulunur. Burada bir kod bulunur. Bu kod üzerindeki bilgileri inceleyerek diskin üzerindeki boot sector bulunur. Boot sector belleğe yüklenir. Daha sonra buradaki kod sistemi yükler.
Boot: Her partition'ın başlangıç adresi olarak verilen adreste bulunur. Buradaki bilgi Partition'daki kod tarafından belleğe alınır. Buradaki program önce root dizine bakar. Burada IO.SYS, IO.COM isimli dosyalar aranır. Burada eğer bulunursa FAT'teki başlangıç noktasına gidilir. Buradan bir sonraki devam edeceği yer tespit edilir. Ve okunan Fat başlangıç adresinden data bloğu üzerindeki bilgi okunarak belleğe alınır. Sonrasını ise IO.SYS halleder.
FAT: (File Allocation Table) Burası tüm diskin yerleşim planını içerir. Bir kodla başlar bu FAT'in özelliğini belirtir. Genelde 0F8h değerini taşır. Buna Media Id Byte denir. Herhangi bir sakatlık durumuna karşı FAT 2 kopyadır. Silinen dosyanın adının ilk harfi alt-229 (sigma) yapılır. Dos baktığında eğer ilk harfi sigma ise dosyanın silindiğini kabul ederek bunu listelemez. Silinen bir dosyanın geri getirilmesi işlemi ise şu şekildedir. Dosyanın kaydındaki Fat'teki başlangıç noktası bilgisi alınır. Bu noktadan itibaren dosya boyunu kapsayacak sayıdaki Fat hücresi eğer boş ise dosya geri getirilebilir. Değilse getirilemez. Eğer dosya bölük pörçük yani dosyanın bölümleri diskin bir kaç bölgesinde yer alıyorsa dosya bozuk olarak undelete yapılabilir. Aşağıda örnek bir Root yapısı ve dosyaların yerlerini gösteren bir FAT görülmektedir.
ROOT ENTRY: Dosya Adı Dosyanın Fatteki Başlangıç Noktası Fat Hücre Sayısı
IO.SYS 1 4
MSDOS.SYS 5 1
COMMAND.COM 6 3
CONFIG.SYS 8 1
FAT: Fat Hücre No 1 2 3 4 5 6 7 8 9 İçeriği 2 3 4 0FFFFh (Eof) 0FFFFh (Eof) 0 0 0 0FFFFEh (Bad Sector)
IO.SYS isimli dosya disk üzerinden okunmaya çalışıldığında öncelikle 1. Fat hücresinin işaret ettiği cluster okunur. Daha sonra 1. nolu fat hücresinin işaret ettiği 2 nolu Fat hücresinin işaret ettiği Cluster okunur. Arkasından 3. Hücre işlem görür. 4. Hücredeki EOF ifadesine istinaden okuma işlemi durur. MSDOS.SYS isimli dosya ise doğrudan 5. nolu fat hücresinin işaret ettiği cluster üzerinden okunur ve işlem sonlanır. COMMAND.COM ve CONFIG.SYS isimli dosyalar silinmiştir. Eğer en son config.sys dosyası kopyalanmışsa ve ilkin command.com dosyası undelete yapılırsa command.com dosyasının son bölümünde CONFIG.SYS olacak şekilde dosya bozuk olarak undelete yapılır. Eğer geri getirilmezde CONFIG.SYS dosyası istenirse bu durumda CONFIG.SYS dosyası başarıyla geri getirilecektir. Ama eğer COMMAND.COM tekrar undelete yapılmaya kalkılırsa undelete işlemin gerçekleştirilemeyeceğini söyleyerek çıkacaktır. 9 nolu fat hücresi ise o cluster'ın bozuk olduğuna işaret eder.WIN 95 ve NT 4.0 dosyalar silindiğinde Recycle.bin isimli görünmez bir dizine taşır. ve nereden attığını bir yere kaydeder. eğer dosya geri getirilirse aynen yerine yerleşir. Eğer Recycle.bin boşaltılmışsa dosyalar o zaman silinmiş demektir.
Dosyaların güvenliği için ve daha hızlı erişmek için dosyaları bir bütün halinde tutmak tavsiye edilir. Bu işlem içinde en azından haftada bir defa DEFRAG programının çalıştırılması yeterli olacaktır.
Elbette ki bu yapıda bir dosyayı okumak için diskin kafası bir ileri bir geri gidip gelecektir. Bunu hızlandırmak amacıyla smartdrv gibi programlar diskin çok okunup yazılan bölümlerini belleğe alır. Diske yazıyorum deyip kandırıp belleğinde bir süre saklar. Disk serbest kaldığı anda bunları yazar. Bu şekilde işlemler yaklaşık 2-50 misli hızlanmaktadır. Ancak bunların sakatlığıda eğer yazmadan makine kapatılırsa yazmak üzere olduğu bilgiler silinir. ve eski durumlarında kalır. Bundan korunmak için makineyi doğrudan kapatmak yerine CTRL-ALT-DEL tuşlarına basarak makinenin en tekrar açılma işlemini başlatmak daha sonra kapatmaktır. Smartdrv türü programlar bu tuşu kontrol ederek eğer belleğinde bir şey kalmışsa bunu diske yazıp ondan sonra makinenin kapanmasını sağlarlar.
Root: Ana dizin veya kök dizine Root adı verilir. Burada dosyaların isimleri ve bazı bilgileri tutulmaktadır. Yapısı şu şekildedir.
İsmi Boyu Açıklama
Dosya adı 8 byte Dosyanın ismi burada tutulur.
Uzantısı 3 byte Dosyanın uzantısı burada tutulur.
Özellikleri 1 byte Dosyanın Read only hidden ve bunun gibi bilgileri burada tutulur.
Ayrılmış alan 8 byte Bu alan DOS tarafından boş bırakılır. Burası NT ve WIN95 türü programlar tarafından uzun dosya isimlerinin kontrolü için kullanılır. Tarih ve Saat 4 byte Dosyanın son değiştiği tarih ve saat Başladığı Yer 2 byte Dosyanın FAT üzerinde başlangıç noktası Uzunluğu 4 byte Dosyanın kaç byte olduğu Toplam 32 byte Burada aynı zamanda diskin etiketide saklanır. dosya boyu 0, uzunluğu 0, saat ve tarih bos ve ozelliginde sadece Etiket bilgisi olduğu yazılıdır. Aslında dizinlerde dosyalar gibi disk üzerinde saklanır. ilk açıldıklarında bir cluster boyundadır. Daha sonra yetmediği zaman sanki dosyaya ek yapılıyor gibi eklentiler yapılır. Ancak özelliği Dizin olan bu dosyalar DOS tarafından farklı değerlendirilerek içinin gösterilmesi gibi fonksiyonlar yerine getirilir. Bunun dışında Root dizinin farklı bir özelliği boyu sabittir değişmez. Bu sebeble bazı virüsler kendilerini Root'un en alt kısmına yerleştirirler. Böylece kendilerini gizlemiş olurlar. Win 95 ve NT uzun dosya isimleri için silinmiş dosya kayıtları yaratırlar. ilk byte 0E5h değeridir. Dosya adı, uzantısı ve diğer bilgilerinin yerine dosyanın uzun adının bir kısmı tutulur.
Data: Burada diske kayıtlı dosyaların ve dizinlerin içerikleri kaydedilir. Dos'ta diske erişim için int 25h ve int 26h kullanılır. Sector No verilerek herhangi bir adrese ulaşılır. Bunun dışında diske erişmek için Int 13h kullanılır. Bu servis BIOS tarafından hazırlandığından Dos'tan bağımsız olarak kullanılabilir. Bunun dışında CD'ye erişmek için MSCDEX (Microsoft Compact Disk Extention)'in hazırladığı Int 2Fh kullanılır. Bu arada Int 2F çok amaçlı bir servistir. Bu servis içerisinde microsoft'un undocumented (Saklı) servisleride mevcuttur.DOS'ta iken bir dosya açılması için gereken aşamalar aşağıdaki gibidir. x Int 21h Servisi üzerinden dosya aç komutu çalıştırılır. x Int 25h Servisi üzerinden diskten directory entry okunur. Buraya bir dosya kaydı açılır. Bu kayıt 32 byte boyundadır. Öncelikle directory'deki bilgiler okunur. Sonra en alta dosya ile alakalı bilgi eklenir. x Int 25h kullanılarak FAT okunur buradan boş olan bir Fat hücresi seçilerek bu seçilen hücreye ilkin (EOF) bilgisi kaydedilir. Sonra int 26h ile yazılır. x Directory entry'e eklenen satıra başlangıç fat hücreno kaydedilerek Int 26h ile yazılır. x Seçilen başlangıç Fat hücresinin işaret ettiği Data bölgesine dosyanın içeriği yazılır. x Eğer bu hücrenin belirttiği yer yeterli gelmezse Fat üzerinden tekrar boş bir hücre aranır. Bu hücreye (Eof) ifadesi yazılır. Başladığı fat hücresine de buranın adresi yazılır. Bu hücrenin işaret ettiği yerde kullanılır. x Dosyayı kapat komutu gelir. Bu komutla dizindeki dosya kaydındaki dosyanın boyu güncellenir.x Bütün bu işlemler esnasında INT 25h ve INT 26h BPB (Bios Parameter Block)'taki bilgilere uygun olarak adres hesaplamasına gider. Hesapladığı adrese göre INT 13h'ı çağırarak buraya yazma işini gerçekleştirir. INT 13h diske erişmek için gerekli programa sahiptir. Diskin I/O adresine gerekli bilgileri vererek diskin bu adresteki bilgileri okumasını ve aktarmasını sağlar. x WIN 95 ve NT 4.0 diske erişimi kısıtlamak amacıyla INT 13h'ı kendi üstüne alır ve çağrıları kendisi değerlendirir. Eğer sakatlık yapacak bir çağrı alırsa bunu engeller. Bunun dışında 95 DOS modunda açıldığından uzun dosya isimlerini korumak için diske doğrudan erişimi engellemiştir. Bu engeli kaldırmak için LOCK komutu kullanılır. Engeli tekrar koymak için UNLOCK komutu vardır.