LBA kullanılmadan önce, CHS neden başlıyor 0,0,1
ve başlamıyor 0,0,0
?
LBA kullanılmadan önce, CHS neden başlıyor 0,0,1
ve başlamıyor 0,0,0
?
Yanıtlar:
Ne yazık ki, o zamanlar popüler olan CHS adresleme şeması böyle uygulandı ve kullanıma alındı. Bu, disk erişimi için kullanılan BIOS kesintilerinde IBM uyumlu bilgisayarlar için resmi kural olarak kabul edildi ve bu kuralın günümüzde neden kullanıldığını açıkladı. Gönderen ECMA-107 Standardı , Cilt ve Bilgi Değişimi İçin Disk Kartuşları Dosya Yapısı (bu da orijinal belirtilen ATA-1 şartname ):
6.1.3 Mantıksal Sektör Numarası
Bir birimdeki her sektör Mantıksal Sektör Numarası ile tanımlanacaktır. [...] Mantıksal Sektör Numaraları, 0 ile başlayan, sektör 1'den başlayarak, parça 00, taraf 0 , parça 00, taraf 1'e devam ederek (FDC her iki tarafta kaydedilebiliyorsa) artan bir sıraya göre atanacaktır. 01, taraf 0 vb. izlemek için
Bu sorun, belirli bir mantıksal CHS adresinin fiziksel CHS adres konumundan farklı olduğu belirtildiği bazı sabit disklerin özelliklerinde ele alınmıştır . Bu, bu ilginç anlatıyı içeren Seagate ATA Arayüz Referans Kılavuzu'nda daha ayrıntılı olarak ele alınmaktadır :
5.1 Mantıksal blok adresleme
[...] sürücüdeki sektörlerin, silindir 0 / kafa 0 / sektör 1'in bir LBA 0'ı ile doğrusal olarak eşleştirildiği varsayılmaktadır.
[...] Tüm çeviri modları için C = 0, H = 0, S = 1, LBA = 0'a eşdeğerdir. Tüm çeviri modlarındaki tüm mantıksal blok adresleri için eşdeğer bir CHS hesaplamak mümkün değildir, çünkü bu formül yalnızca bir yönde çalışır. Bunun nedeni, CHS adreslemenin mantıksal blok adreslemenin erişebileceği tüm olası sektörlerin 1 / 256'sına erişememesidir, çünkü CHS'de sektör 0 yoktur.
Dolayısıyla, mantıksal CHS adresleme için, ilk silindir / kafa endeksleri 0 tabanlı bir ofsetten başlasa da ve ilk sektör endeksi 1'den başlar (örneğin, mümkün olan minimum CHS adresi 0/0/ 1'dir), bu, fiziksel bu sektörün konumu. Bunu , diskteki "sektör 1" olarak adlandırılan ve CHS 0/0/1'i işgal eden ilk fiziksel sektör olarak düşünün . Gerçekten de, çoğu programlama dilinde "ilk" eleman 0 tabanlıdır, bu nedenle 0/0/1 CHS adresinde sektörün mantıksal adresi sıfırdır ( 0x00
).
Bu , disk aygıtını başka bir bellek aygıtı olarak ele alabileceğimizden (her sektörün bir fiziksel ile eşleştirmek için benzersiz bir doğrusal adrese sahip olması nedeniyle) mantıksal olarak çok daha mantıklıdır (yani, "sıfırıncı" mantıksal adres ilk fiziksel sektördür). bu nedenle LBA'nın sıfırdan başlaması mantıklıdır. Gerçekten de, 0/0/1 CHS adresini bir LBA'ya çevirirsek , ortaya çıkan LBA olacaktır 0x00000000
(bu yüzden çoğu CHS'de 1 sektör dizininden LBA hesaplamalarına çıkarılır ve neden LBA dizinine 1 eklenir CHS hesaplamalarına).
zero sector
hata kodlarını ve bozuk blokları vb. Kullandığınızı görüyorsunuz. sürücüye bir denetleyici (bellenim) eklemenin geçişi ve "mantıksal" disk ilişkilendirmelerinin başlaması ... denetleyici şimdi görünmez ancak aynı şekilde kullandığını varsayabilirsiniz ... terim artık "Ana Bilgisayar Korumalı Alan " en.wikipedia.org/wiki/Fixed-block_architecture ve en.wikipedia.org/wiki/Host_protected_area
1
, hala neden olduğuna dair herhangi bir bilgi bulamadım (sektörün 0
hata bayrağı olarak ayrılmasıyla ilgili bir şey olabileceğinden şüphelenmeme rağmen ). Bir şeyle karşılaşırsam sizi güncelleyeceğim.
Ben tarihini izlemek çalıştık CHS ve disk sürücüleri yazarlar için birçok komplikasyonlara yol ve hızlı yol açtı etmiştir sektör numaralandırma fiyasko, "1 ile başlayan" LBA'nın .
CHS, kişisel bilgisayarların disketlerle çalıştığı günlere ve BIOS'un icat edildiği günlere kadar uzanır. Bu nedir Vikipedi diyor ki:
BIOS (Temel Giriş / Çıkış Sistemi) terimi Gary Kildall tarafından icat edildi ve ilk olarak 1975'te CP / M işletim sisteminde ortaya çıktı ve önyükleme süresi boyunca doğrudan donanıma arabirim yüklenen CP / M'nin makineye özgü kısmını açıkladı.
CP / M BIOS ile ilgili bir araştırma, CP / M bilgi arşivini bulmuştur: sektör numaralarının sıfırla başladığı BDOS sistem çağrıları . Sonuç şudur: en erken CHS şeması aslında sıfır tabanlı sektör adreslerini kullanmıştır .
Tek tabanlı sektör adresleri ilk olarak ilk IBP / PC ile tanıtıldı. INT 13 - Disket BIOS Services belgesi özellikle şunları söylüyor:
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
Bu yüzden, BIOS'un fiili uygulamasıyla sektör numaralandırmayı sıfır tabanlıdan tek tabanlıya dönüştüren IBM / PC idi.
IBM Kişisel Bilgisayarı (model 5150) oluşturmak için görevlendirilen on iki IBM mühendisinden David J. Bradley , BIOS'u için kod geliştirdi. Bu yüzden, tüm diğer ayrıntılarının yanı sıra, disk kesintilerinin parametrelerine karar veren kişi odur. Bu adama ünlü CTRL+ ALT+ Mel Hallerman ile birlikte borçluyuz DEL.
Dolayısıyla , sektör sayımı CHS'de neden 0 değil 1'de başlıyor sorusunun
cevabı :
Çünkü David J. Bradley BIOS'u bu şekilde programladı .
Neden bu şekilde yaptığına gelince, bu en iyi cevaptır. Tahmin etsem, sürücünün kafanın doğru yolda olduğunu doğrulayabileceği bir adresleme sektörü olarak sektör sıfırını bıraktığını söyleyebilirim.
Diskler aslında böyle bir mekanizmaya ihtiyaç duymayacak şekilde tasarlandığından ve mühendisler BIOS nedeniyle bir sektörü boşa harcamaya hazır olmadığından, sektör sıfır hiç ortaya çıkmadı. Daha sonra, sürücü yazarları, tüm BIOS disk çağrıları için sektör adreslerine bir tane ve bir tane ekleme ihtiyacı ile bırakıldı.
Disketlerle ilgili ilk şartname IBM tarafından IBM 3740 görünümünde yapılmıştır ve sistem için ayrılmış sektörler olduğundan bahsetmez. Sistem için tek rezervasyon, yalnızca 01 ila 76 numaralı parçalarda depolanan bilgi türünü tanımlayan "Veri Kümesi Etiketlerini" depolayan 00 numaralı pisttir. İlk sektörün SEKTÖR 1 olduğunu açıkça tanımlar. Bu bir tesadüf değil, bilgisayarın numaralandırılmasına karşı doğal numaralandırma meselesi.
Bir insan bir şey saymaya başladığında sıfırla değil birle başladığını gözlemleyebiliriz. Örneğin, bir sınıfta 135 öğrencinin olduğunu düşünün. Sayıyı saymak şu şekilde olur: Bir, iki, üç ... yüz otuz dört, yüz otuz beş.
Sayısal temsili şu şekilde olur: 1, 2, 3, ... 134, 135 Şimdiye kadar hemfikiriz, değil mi?
Şimdi 0 olarak temsil edilmeyen rakamları koyalım: 001, 002, 003, ..., 015, 016, ..., 099, 100, ..., 133, 134, 135
Bu ile olanlardır CHS : 0,0,1 - 0,0,2 - 0,0,3 ...
Excel sayfalarındaki satırların veya veritabanındaki otomatik sayısal alanların 0 ile değil, 1 ile başlaması ve kimsenin bu konuda bir şey söylememesi önemlidir.
David J. Bradley BIOS'u bu şekilde programladı mı?
Evet, ama dışarıda değildi.
Kesinlikle SECTOR 0'ın başka nedenlerle ayrılmış ve kullanıcılardan gizlenmedikçe kullanılamamasının teknik bir nedeni yoktur. Prensipte her şey buna işaret eder doğal bir numaralandırma meselesidir.
GA21-9152-2 Dosya No. 3740-00,15
IBM 3740 Veri Giriş Sistemi
sayfa 12
DİSK BAŞLATMA
... Her diskte, düzensiz izlerin yerini alacak iki yedek parça bulunur. Ayrıca, başlatma özelliği disket üzerindeki sektör adresi sırasını değiştirmek için bir araç sağlar. Normal olarak, sektörlerin sırası sayısal sıradadır (1, 2, 3, ... 25,26) .
sayfa 24
DİSKTE ETİKET ETİKETLEME
Başlatma sırasında, bir veri seti için veri seti etiketi manyetik olarak diskin indeks yoluna (parça 00) kaydedilir. Bu etiketin birincil amacı, disketteki veri kümesinin konumunu göstermektir
Bu, 1973'teydi. 8 inçlik bir diskete veri kaydetti. IBM PC 5150, 12 Ağustos 1981'de doğdu ... ve önceki cihazlarla uyumluluklarını korumak zorunda olduklarını unutamayız.
Kesinlikle teknik bir neden yoktu.