DOS FILE SYSTEM

|

1. Introduction

File system DOS tidak hanya digunakan oleh IBM PC atau sejenisnya, tetapi juga oleh beberapa word processor yang berdiri sendiri yang menggunakan disket dan sejumlah perangkat lain. Bahkan sistem komputer yang biasanya menggunakan file system yang berbeda, seperti UNIX berbasis workstation, juga memiliki kemampuan untuk membaca dan menulis format disket di DOS. Semua itu digunakan bersama-sama sehingga file system DOS menjadi satu-satunya file system yang paling luas penggunaannya di dunia. 

File sistem telah berkembang banyak sekali sejak DOS 1.0. Versi yang dijelaskan di sini pada dasarnya digunakan oleh DOS 3.3. Besarnya partisi yang digunakan oleh DOS 4.0 dan versi-versi DOS selanjutnya tidak disertakan. 

Keterangan ini ditulis berhubungan dengan versi 2.0 dari Reentrant DOS Compatibel File System, sebuah implementasi dari dasar file system DOS yang ditulis dalam portable C dan didistribusikan sebagai perangkat lunak bebas. 

Terdapat beberapa rincian mengenai DOS file sistem yang tidak didokumentasikan. Beberapa di antaranya telah dinyatakan sebagai eksperimen yang lainnya tidak terdefinisi.


2. Block Device

File system DOS pada umumnya disebut Block Device. Biasanya disk terdiri dari beberapa jenis, tetapi juga dapat menjadi bagian dari dasar memori yang telah dikonfigurasi sebagai disk RAM. 
Block device menyimpan informasi dalam bagian yang sama ukurannya. Sektor yang paling umum adalah ukuran 512 byte, yang digunakan oleh semua standar DOS floppy disket, tetapi beberapa RAM disk dan hard disk dapat menggunakan sektor yang berisi 128, 256 atau 1024 bytes. 

Sektor-sektor dinomorkan dengan sangat sederhana. Tiap sektor memiliki nomor sektor logis. Nomor sektor logis yang terkecil adalah nol, dan yang terbesar adalah jumlah dari sector dikurang dengan satu. Setiap nomor sektor logis antara batas ini diberikan untuk satu sektor lainnya. Tidak ada kesenjangan dalam sistem penomoran.

3. Mapping Sides dan Track 

Sistem penomoran logika sektor biasanya menyembunyikan beberapa kompleksitas yang harus ditangani oleh disk controller hardware, disk driver software atau keduanya. Sektor pada disk tersebut diatur ke dalam lingkaran konsentris yang disebut track. Kebanyakan disket memiliki track pada kedua sisinya. Harddisk memiliki lebih dari dua sisi, karena terdiri dari dua atau lebih disk, memutar serentak pada poros yang sama. 
Beberapa kontroler disk, khususnya harddisk pengendali, menerima nomor logika sektor dan membuat semua konversi internal, tetapi hal ini tidak selalu terjadi. 

Untuk membaca atau menulis sektor, disk controller pertama membaca dan menulis sebuah perangkat yang dinamakan kepala, kembali atau keluar sehingga berada di atas trek yang mengandung sektor yang diinginkan. Jika disk telah berputar pada lebih dari satu sisi, ada kepala untuk setiap sisi disk, dan mereka bergerak bersama. Disk controller memilih kepala tepat oleh elektronik switching. Akhirnya, disk controller menunggu sampai disk rotasi membawa sektor yang diinginkan di bawah kepala. Kemudian membaca atau menulis sektor. 

Dikonversi logika sector nomor L ke pihak terkait, dan sektor melacak angka, yang kontrol (atau perangkat lunak driver) biasanya memerlukan tiga nomor berikut: 

N = jumlah sektor per track, 
T = jumlah track per sisi, dan 
S = jumlah sisi. 

Trek biasanya bernomor 0 sampai T-1, dengan melacak 0 pada bagian luar dan melacak T-1 di dalam. Puts ini yang paling sering diakses sektor (yang rendah dengan sektor logis angka) di bagian luar disk, di mana sektor yang terbesar dan disk adalah yang paling dapat diandalkan. 

Biasanya sisi yang bernomor 0 sampai S-1, dalam suatu urutan ditentukan oleh desain hardware. 

Sektor-sektor dalam satu track diberi nomor dari 1 sampai N, dimana mereka melakukan rotasi disk di bawah kepala dalam rangka peningkatan sektor nomor. Penomoran yang dimulai dengan 1, bukan 0. Alasan aneh konvensi ini tidak jelas, tetapi diikuti oleh sejumlah floppy disk drive, termasuk yang biasanya digunakan dengan DOS berbasis komputer. 

Penugasan dari sektor logis ke nomor sektor pada disk, berikut skema sederhana dengan objek - untuk meminimalkan akses saat sektor-sektor yang dibaca atau ditulis dalam urutan nomor logika sektor naik. Hal ini biasanya berarti meminimalkan jumlah kali kepala harus dipindahkan, karena ini adalah jauh lebih lambat dari disk operation. 

Rumus adalah sebagai berikut, di mana A rem B berarti sisanya ketika A dibagi oleh B: 

Nomor sektor = L rem N + 1 
Nomor sisi = (L / N) rem S 
Nomor track = (L / N) / S 

Sektor logical nomor 0 adalah sector 1 di di track 0 pada sisi 0. Sejak sektor ini dapat selalu berada tanpa mengetahui struktur disk, sering digunakan untuk menyimpan informasi tentang struktur disk. Hal ini penting untuk disket, yang portable. Banyak floppy disk drive dengan disk dapat menampung lebih dari satu format. Code file sistem dapat membaca logis sektor 0 untuk mengetahui bagaimana untuk mencari bidang-bidang lainnya. 

Sebagai sektor nomor encreases, maka kepala harus dipindahkan hanya ketika nomor track meningkat. Ini tidak terjadi sampai semua sektor tertentu melacak nomor yang telah diakses. 

Jumlah track yang diperlukan hanya untuk memeriksa track nomor untuk melihat apakah itu dalam jangkauan. Hal ini dianjurkan dalam beberapa kasus karena beberapa disk drive mungkin rusak jika upaya dilakukan untuk memindahkan kepala mereka biasa di luar jangkauan. 

4. Handling Bad Sectors 

Pada hard disk, ada beberapa daerah menjadi tempat yang buruk. Beberapa pengendali harddisk dapat tempat yang buruk dan membuat disk muncul menjadi disk yang sempurna dengan kapasitas yang sedikit lebih kecil. Hal ini biasanya dilakukan selama pemformatan tingkat rendah. 

Namun, pengendali floppy disk dan beberapa pengendali hard disk tidak dapat melakukan hal ini. Untuk menangani banyak kasus semacam ini, maka sistem berkas DOS dapat diatur sehingga beberapa sektor ditandai buruk. Tidak ada informasi file DOS akan ditulis ke dalam Bad sector. Hal ini menurunkan kapasitas disk, tetapi membuat ketidak sempurnaan dari kegunaan disk. Hal ini biasanya dilakukan pada saat disk diformat. 

Jika ada bad sector penting dalam bidang disk, seperti bagian yang menunjukkan bahwa sektor yang buruk, disk tidak dapat digunakan untuk menyimpan file sistem DOS. Untungnya, yang daerah penting disk yang sangat kecil, jadi ini sangat tidak mungkin. 

5. Disk Partisi 

File system DOS asli yang digunakan 16-bit nomor logika sektor, sehingga hanya bisa menangani file dengan sistem di sektor paling besar 65.535, atau 32 megabyte ketika byte 512-sektor yang digunakan. Ini merupakan bernama 32-megabyte hambatan. DOS dapat menggunakan disk dengan lebih dari 65.535 sektor, tetapi hanya dapat digunakan untuk sektor 65535 file system. 

Sebuah solusi untuk masalah ini adalah untuk membagi disk menjadi dua atau lebih partisi, masing-masing yang berisi tidak lebih dari 65.535 sektor, dan untuk setiap partisi memperlakukan seolah-olah ia telah terpisah disk. 

DOS 4,00 dan versi setelah DOS dapat menggunakan 32-bit nomor logika sektor, sehingga mereka dapat menangani partisi yang lebih besar. Hal ini tampaknya menyiratkan sebuah 8-terabyte maksimum, namun keterbatasan lainnya membuat praktis maksimum lebih kecil dari itu. 

Dokumen ini hanya partisi dari 32 megabyte atau kurang yang menggunakan 16-bit nomor logika sektor. 

6. The Layout of a DOS Disk 

Sektor-sektor DOS disk yang dibagi ke dalam kelompok berikut ini, yang terdaftar dalam rangka peningkatan logis sektor nomor: 
1. RESERVED SECTORS 
2. FILE ALLOCATION TABLES 
3. ROOT DIRECTORY 
4. DATA AREA 
5. HIDDEN SECTORS

7. Reserved Sectors


Reserved sector pertama, yang selalu logis sektor 0, disebut juga dengan sektor bootstrap. 
Berikut adalah apa yang ada dalam sebuah 512-byte bootstrap sektor: 
byte(s)   isi 
-------     ------------------------------------------------------- 
0-2          instruksi pertama dari bootstrap rutin 
3-10        nama OEM 
11/12     jumlah byte per sektor 
13           jumlah sektor per cluster 
14-15     jumlah sektor reserved 
16           jumlah salinan file tabel alokasi 
17-18     jumlah entri dalam direktori root 
19-20     total jumlah sektor 
21           media keterangan byte 
22-23     jumlah sektor dalam setiap salinan file tabel alokasi 
24-25     jumlah sektor per trek 
26-27     jumlah sisi 
28-29     jumlah sector tersembunyi 
30-509   partisi bootstrap rutin dan informasi 
510         heksadesimal 55 
511         heksadesimal AA

Dua-byte bidang selalu diatur dalam "Little Endian", dengan kurang signifikan byte pertama. Perhatikan bahwa beberapa byte dua bidang yang tidak berpihak pada addresses. Ini mungkin memerlukan perawatan khusus oleh CPU dari seperti Motorola 68000, yang tidak dapat langsung mengakses kata aneh di addresses. 

Instruksi pertama dari bootstrap rutin yang selalu melompat instruksi yang transfer ke kontrol bootstrap rutin dalam byte 30-509. 
Nama OEM biasanya merupakan versi DOS atau nama utilitas yang digunakan untuk memformat disk, diwakili oleh delapan karakter ASCII. Hal itu dapat menjadi bahkan sepenuhnya kosong. DOS ternyata tidak menggunakan nama OEM. 

Jumlah total reserved sektor, termasuk sektor bootstrap, yang ditentukan oleh isi byte 14 dan 15. Reserved sektor selain sektor bootstrap tidak digunakan oleh DOS. Kebanyakan DOS disk hanya memiliki satu sektor reserved, tetapi angka yang lebih besar dapat digunakan untuk memesan tempat untuk partisi non-DOS atau menyebabkan DOS untuk menghindari satu atau lebih buruk sektor. 

Bagi kebanyakan 5-1/4 inch dan 3-1/2 inch disket, media keterangan byte yang menyampaikan beberapa informasi yang sama: 


Selain itu, media adalah keterangan byte diulang dalam tabel alokasi file, yang dijelaskan di bawah ini. 

Pada disket diformat dengan hanya 8 sektor per trek, informasi yang diberikan dalam byte 3-29 tidak hadir, dan DOS harus memeriksa media keterangan byte dalam file tabel alokasi untuk menentukan format disk yang tepat. 

DOS akan melakukan ini dengan disket yang berisi parameter nonstandard tetapi konsisten dalam bootstrap sektor tidak dibatasi. Dalam beberapa kasus DOS akan membaca dan menulis disket yang benar, dalam kasus lain tidak akan. 

8. File Allocation Tables

DOS menggunakan hanya satu salinan file alokasi tabel, namun salinan pembaruan lainnya, jika ada, agar mereka sama dengan salinan pertama. Kemudian jika pertama salinan mengembangkan sektor yang buruk, khusus program pemulihan file dapat digunakan untuk mengambil informasi dari salinan lain. 

Kebanyakan floppy dan hard disk berisi dua salinan dari file alokasi tabel. Kebanyakan RAM disk hanya satu karena RAM medium yang jauh lebih handal. 

Ditemukan berkas dengan alokasi tabel 12-bit masukan yang cocok untuk floppy disket, tetapi tidak memadai untuk membuktikan partisi hard disk, bahkan dalam batas 32 megabyte. Dengan DOS 3.0, alternatif dengan format 16-bit masukan diluncurkan. A 16-bit masuk menempati dua byte, yang disimpan dalam "Little Endian" pesanan, dengan kurang signifikan byte pertama. 

Untuk keperluan alokasi file, data daerah disk dibagi menjadi beberapa kelompok. Setiap cluster adalah ukuran yang sama, yang terdiri dari jumlah berturut-sektor tertentu dalam byte 13 dari sektor bootstrap. 

Kelompok yang diberi nomor-turut, dimulai dengan cluster nomor 2, yang terletak di awal data daerah. 

Setiap entri dalam tabel alokasi file, kecuali masukan 0 dan 1, berkaitan dengan cluster dengan nomor yang sama sebagai masukan. Ini cukup konsisten, karena tidak ada kelompok dengan angka 0 atau 1. 

9. Root Direktori 

Direktori root berisi 32-byte satu entri untuk setiap file di dalam direktori root dari disk. Jika disk memiliki volume label, direktori root juga berisi 32-byte untuk masuk. 

Jumlah maksimal adalah direktori root masukan ditentukan di byte 17 dan 18 dari bootstrap blok. Nomor ini, bersama-sama dengan sektor ukuran, menentukan jumlah yang dialokasikan ke sektor direktori root. 

10. The Data Area and Hidden Sectors

Jumlah total sektor diberikan dalam 19 dan 20 byte dari bootstrap termasuk semua sector dalam direktori root, data daerah dan semua salinan file alokasi tabel. Tidak termasuk sektor tersembunyi. Ukuran data daerah tersebut tidak diberikan langsung, tetapi dapat dihitung dari informasi ini.

Jumlah total sektor, plus nomor tersembunyi sektor yang diberikan dalam byte 28-29 dari sektor bootstrap, yang benar adalah jumlah sektor dalam partisi. Ini sama dengan produk dengan jumlah sektor per track, jumlah track per sisi, dan jumlah sisi. Jumlah track per sisi tidak diberikan, namun dapat dengan mudah dihitung dari informasi ini. 

Biasanya, tersembunyi sektor tersebut hanya sisa beberapa sektor yang tidak dapat dimasukkan dalam data daerah karena berbagai format kendala, namun sejumlah besar tersembunyi sektor dapat digunakan untuk menyembunyikan kedua partisi. 

11. Struktur direktori 

Setiap direktori entri, apakah di root direktori atau subdirektori, sebagai berikut: 

byte (s) isi 
------- ------------------------------------------- --------- 
0-7       nama file atau 8 karakter pertama dari nama volume 
8-10    ekstensi file atau 3 karakter terakhir dari nama
            volume 
11        atribut byte 
12/21  unused 
22-23  kali 
24-25  anggal 
26-27  jumlah cluster pertama 
28-31  jumlah byte di file, atau nol untuk subdirektori atau
             label volume

Bit dalam byte atribut menentukan jenis entri sebagai berikut (7 bit adalah yang paling signifikan bit): 

  bit berarti jika bit = 1 
  --- --------------------------------------- 
  7    unused 
  6    unused 
  5    file telah berubah sejak backup terakhir
  4    masuk mewakili sebuah subdirektori 
  3    masuk mewakili label volume
  2    sistem file 
  1    file tersembunyi 
  0    read-only 

Jika entry mewakili sebuah subdirektori, bit 4 diatur dan semua bit tidak digunakan. Jika data merupakan volume label, bit 3 diatur dan bit lainnya tidak digunakan. 

Sejak nama file DOS yang tidak sensitive, nama file dan ekstensi tidak mengandung furuf kecil. Mereka selalu diubah ke huruf besar yang sesuai sebelum mereka menulis ke disk. DOS akan melakukan jika menemukan huruf kecil dalam nama file atau ekstensi dalam direktori entri. 

Sejak tidak cukup bit dalam waktu untuk mengekspresikan waktu ke detik terdekat, waktu yang pertama atau dibulatkan yang terdekat bahkan detik. Detik yang dihasilkan dibagi menjadi 2 dan ditulis bit 4-0. 

Tanggal adalah dua nilai-byte, yang disimpan dalam "Little Endian", dengan kurang signifikan byte pertama. Berikut adalah format (15 bit adalah yang paling signifikan bit): 

  bit contens 
  ----- --------------------------------------------- -- 
  15-9  tahun berlalu sejak 1980 (0-127) 
  8-5    bulan (1 = Januari, 2 = Februari, ..., 12 = Desember) 
  4-0    hari (1-31) 

Maka DOS dunia dimulai pada 1 Januari 1980 di 00:00:00 dan akan berakhir pada 31 Desember 2107 di 23:59:58. 

12. Direktori Protokol 

Ketika sebuah disk diformat, setiap entri dalam direktori root adalah menjadi entri. 

Ketika sebuah subdirektori yang dibuat, akan segera diberikan satu cluster. (Jika tidak ada kelompok bebas, subdirektori tidak dapat dibuat dan pengoperasian gagal.) Dua catatan yang penuh dengan informasi yang tepat untuk khusus subdirektori "." dan "..". Semua masukan lainnya harus menjadi entri. 

Tidak boleh ada dua entri dalam direktori yang sama dengan nama dan ekstensi, kecuali mereka akan dihapus atau masukan satu. Jika pembuatan file baru atau subdirektori akan menimbulkan konflik, DOS biasanya gagal operasi. Namun, jika file yang baru dibuat dengan nama yang sama dan ekstensi file seperti yang ada dalam direktori yang sama, dan file diizinkan, entri baru akan menggantikan yang lama. 

Jika direktori tidak perlu dihapus atau masuk, apa yang terjadi berikutnya tergantung pada apakah ia adalah direktori root atau subdirektori. Jika ia adalah root direktori, operasi gagal karena direktori root tidak dapat lengthened. Jika tidak, direktori lengthened dengan menambahkan cluster lainnya alokasi rantai dalam tabel alokasi file. Jika tidak ada free cluster, operasi gagal. Jika tidak, entry baru adalah yang pertama masuk di cluster baru, dan semua entry lain dalam cluster perlu menjadi entry. 




0 komentar:

Posting Komentar