Sebelum LBA diperkenalkan, mengapa CHS mulai 0,0,1
dan tidak 0,0,0
?
Sebelum LBA diperkenalkan, mengapa CHS mulai 0,0,1
dan tidak 0,0,0
?
Jawaban:
Sayangnya, ini adalah bagaimana skema pengalamatan CHS, yang populer saat itu, diimplementasikan dan diadopsi untuk digunakan. Ini diadopsi sebagai konvensi resmi untuk komputer yang kompatibel dengan IBM dalam interupsi BIOS yang digunakan untuk akses disk, menjelaskan mengapa konvensi ini digunakan hingga hari ini. Dari Standar ECMA-107 , Volume dan Struktur File Kartrid Disk untuk Pertukaran Informasi (ini juga disebutkan dalam spesifikasi ATA-1 asli ):
6.1.3 Nomor Sektor Logis
Setiap sektor pada volume harus diidentifikasi dengan Nomor Sektor Logis. [...] Nomor-nomor Sektor Logis harus ditetapkan dalam urutan menaik, dimulai dengan 0, dimulai pada sektor 1, trek 00, sisi 0 , berlanjut ke trek 00, sisi 1 (jika FDC dapat direkam di kedua sisi) dan kemudian untuk melacak 01, sisi 0, dll.
Masalah ini dibahas dalam spesifikasi untuk beberapa hard disk , di mana dicatat bahwa alamat CHS logis yang diberikan berbeda dari lokasi alamat CHS fisik . Ini dibahas lebih lanjut dalam Seagate ATA Interface Reference Manual , yang berisi narasi menarik ini:
5.1 Pengalamatan blok logis
[...] sektor-sektor pada drive diasumsikan dipetakan secara linear, dengan LBA 0 dari silinder 0 / head 0 / sektor 1.
[...] Untuk semua mode terjemahan, C = 0, H = 0, S = 1 setara dengan LBA = 0. Tidak mungkin untuk menghitung CHS yang setara untuk semua alamat blok logis dalam semua mode terjemahan karena rumus ini hanya bekerja dalam satu arah. Ini karena pengalamatan CHS tidak dapat mengakses 1/ 256 dari semua sektor yang mungkin dapat diakses pengalamatan blok logis, karena tidak ada sektor 0 di CHS.
Jadi untuk pengalamatan CHS logis, meskipun indeks silinder / kepala pertama dimulai dari offset berbasis 0, dan indeks sektor pertama dimulai dari 1 (mis. Alamat CHS minimum yang mungkin adalah 0/0/1), ini tidak mengubah apa pun tentang yang fisik lokasi sektor ini. Anggap saja sebagai sektor fisik pertama pada disk yang disebut "sektor 1", menempati CHS 0/0/1. Memang, elemen "pertama" dalam sebagian besar bahasa pemrograman berbasis 0, jadi alamat logis sektor pada alamat CHS 0/0/1 adalah nol ( 0x00
).
Ini jauh lebih masuk akal secara logis (yaitu, alamat logis "nol" menjadi sektor fisik pertama ), karena kita dapat mengatasi perangkat disk seperti perangkat memori lainnya (karena setiap sektor memiliki alamat linier unik untuk memetakannya ke fisik. sektor), jadi mengapa masuk akal bagi LBA untuk memulai dari nol. Memang, jika kita menerjemahkan alamat CHS 0/0/1 ke LBA , LBA yang dihasilkan akan menjadi 0x00000000
(inilah sebabnya 1 dikurangi dari indeks sektor dalam sebagian besar perhitungan CHS ke LBA, dan mengapa 1 ditambahkan ke indeks untuk LBA untuk perhitungan CHS).
zero sector
kode kesalahan, dan blok buruk, dll .... transisi ke CHS dan "fixed-block-architecture" Anda juga memiliki transisi menambahkan pengontrol (firmware) ke drive dan dimulainya asosiasi disk "logis" ... pengontrol sekarang tidak terlihat tetapi Anda dapat menganggapnya menggunakannya dengan cara yang sama ... istilah tersebut sekarang disebut "Host Protected Area " en.wikipedia.org/wiki/Fixed-block_architecture dan en.wikipedia.org/wiki/Host_protected_area
1
, saya masih belum menemukan informasi mengapa (walaupun saya menduga itu mungkin ada hubungannya dengan sektor 0
yang dicadangkan sebagai bendera kesalahan). Saya pasti akan memperbarui Anda jika saya menemukan sesuatu.
Saya telah mencoba untuk melacak sejarah CHS dan kegagalan penomoran sektor "dimulai dengan 1", yang telah menyebabkan banyak komplikasi bagi penulis disk-driver dan memberikan kenaikan yang cepat ke LBA .
Tanggal CHS kembali ke hari-hari ketika komputer pribadi berjalan pada disket dan ketika BIOS ditemukan. Inilah yang dikatakan Wikipedia :
Istilah BIOS (Basic Input / Output System) ditemukan oleh Gary Kildall dan pertama kali muncul di sistem operasi CP / M pada tahun 1975, menggambarkan bagian mesin khusus dari CP / M yang dimuat selama waktu boot yang berinteraksi langsung dengan perangkat keras.
Penelitian terhadap CP / M BIOS telah menemukan arsip informasi CP / M dokumen : Panggilan sistem BDOS , di mana angka-angka sektor dimulai dengan nol. Kesimpulannya adalah: Skema CHS awal sebenarnya menggunakan alamat sektor berbasis nol .
Alamat sektor berbasis satu pertama kali diperkenalkan dengan IBP / PC pertama. Dokumen INT 13 - Layanan Disket BIOS secara khusus mengatakan:
Most disk BIOS calls use the following parameter scheme:
AH = function request number
AL = number of sectors (1-128 dec.)
CH = cylinder number (0-1023 dec.)
CL = sector number (1-17 dec.) <--------!!!
DH = head number (0-15 dec.)
DL = drive number (0=A:, 1=2nd floppy, 80h=drive 0, 81h=drive 1)
DL = drive number (0=A:, 1=2nd floppy, 80h=C:, 81h=D:)
Note that some programming references use (0-3) as the
drive number which represents diskettes only.
ES:BX = address of user buffer
Jadi IBM / PClah yang secara de facto mengimplementasikan BIOS telah mengubah penomoran sektor dari berbasis nol menjadi berbasis satu.
Dari dua belas insinyur IBM yang ditugaskan untuk membuat IBM Personal Computer (model 5150), David J. Bradley mengembangkan kode untuk BIOS-nya. Jadi dialah yang, di antara semua detail lainnya, memutuskan parameter untuk gangguan disk. Kami juga berutang kepada orang ini bersama-sama dengan Mel Hallerman terkenal CTRL+ ALT+ DEL.
Jadi jawaban untuk pertanyaan
Mengapa penghitungan sektor dimulai dari 1 dan bukan 0 di CHS adalah:
Karena David J. Bradley memprogram BIOS dengan cara itu .
Mengenai mengapa dia melakukannya dengan cara ini, ini paling baik dijawab sendiri. Jika saya harus menebak, saya akan mengatakan bahwa ia meninggalkan sektor nol sebagai sektor pengalamatan di mana pengemudi dapat memverifikasi bahwa kepala berada di jalur yang benar.
Karena disk sebenarnya direkayasa sehingga tidak memerlukan mekanisme seperti itu, dan para insinyur tidak siap untuk menyia-nyiakan satu sektor karena BIOS, sektor nol tidak pernah muncul. Setelah itu, driver-penulis ditinggalkan dengan kebutuhan untuk mengurangi-satu dan menambahkan-satu ke alamat sektor untuk semua panggilan disk BIOS.
Spesifikasi pertama pada floppy disk dibuat oleh IBM dengan penampilan IBM 3740 dan tidak menyebutkan bahwa ada sektor yang dicadangkan untuk sistem. Satu-satunya reservasi untuk sistem adalah trek 00, yang hanya menyimpan "Label Set Data" yang mengidentifikasi jenis informasi yang disimpan dalam trek 01 hingga 76. Ini jelas mendefinisikan bahwa sektor pertama adalah SEKTOR 1. Ini bukan kebetulan tetapi soal penomoran alami terhadap penomoran komputer.
Kita dapat mengamati bahwa ketika manusia mulai menghitung sesuatu, itu tidak dimulai dengan nol tetapi satu. Misalnya, bayangkan ada 135 siswa di kelas. Menghitung angkanya akan seperti itu: Satu, dua, tiga ... seratus tiga puluh empat, seratus tiga puluh lima.
Representasi numeriknya adalah sebagai berikut: 1, 2, 3, ... 134, 135 Sejauh ini kita sepakat, bukan?
Sekarang mari kita letakkan digit yang tidak terwakili dengan menjadi 0. Akan terlihat seperti ini: 001, 002, 003, ..., 015, 016, ..., 099, 100, ..., 133, 134, 135
Inilah yang terjadi dengan CHS : 0,0,1 - 0,0,2 - 0,0,3 ...
Penting bahwa baris dalam lembar Excel atau bidang angka-otomatis dalam database dimulai dengan 1 dan bukan 0 dan tidak ada yang mengatakan apa pun tentang ini.
Apakah David J. Bradley menjadwalkan BIOS seperti itu?
Ya, tapi dia tidak di luar.
Jelas tidak ada alasan teknis mengapa SEKTOR 0 tidak dapat digunakan kecuali itu dicadangkan dan disembunyikan dari pengguna karena alasan lain. Pada prinsipnya segala sesuatu yang mengarah padanya adalah masalah penomoran alami.
GA21-9152-2 File No. 3740-00,15
IBM 3740 Sistem Entri Data
halaman 12
INISIIALISASI DISK
... Setiap disk berisi dua trek cadangan untuk mengganti semua trek yang tidak beraturan. Selain itu, fitur inisialisasi menyediakan cara untuk mengubah urutan alamat sektor pada disket. Biasanya, urutan sektor dalam urutan numerik (1, 2, 3, ... 25,26) .
halaman 24
DATA LABELING PADA DISKETTE
Selama inisialisasi, label set data untuk set data secara magnetis direkam pada track indeks (track 00) dari disket. Tujuan utama label ini adalah untuk menunjukkan lokasi set data pada disket
Ini pada tahun 1973. Ini mencatat data pada disket 8 ". IBM PC 5150 lahir pada 12 Agustus 1981 ... dan kita tidak bisa lupa bahwa mereka harus menjaga kompatibilitas dengan perangkat sebelumnya.
Jelas tidak ada alasan teknis.