CHS'de sektör numarası adresleme neden 0 değil sektör 1'de başlıyor?


13

LBA kullanılmadan önce, CHS neden başlıyor 0,0,1ve başlamıyor 0,0,0?


1
"Neden sektör sayısı ... 1 de başlıyor" - Aslında sektör bahsediyorsan sayı değil, sektör sayısı . Bunlar bir disk isteğinde kullanılan iki farklı ve farklı parametredir. Disk sektörlerinde dizin olarak adlandırılan ayrı bir varlık olduğu için, "sektör endeksi" de sektör numarası için zayıf bir adlandırmadır .
talaş

Yanıtlar:


8

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).


Zaten bu sorunun cevabını anlıyorum, ama sanırım cevabımı gösteren yorumlarımı bıraktığım kişi ... her neyse, bu soruyu sormamın nedeni herkesin ve okuduğum her şeyin temelde sizin kesin olarak çoğunlukla kelimeler. "Bu sadece onların yaptıkları ..." cevabı beni gerçekten kızdırdı çünkü insanlar sadece bir şey inşa etmiyorlar ve sadece kullanmak istemedikleri için kullanmıyorlar ... bu mantık o zamandan beri tüm ... en
Ürdün Davis

1
CHR / CHS / LBA tarihine geçerek MBBCCHHR kullanarak değişken uzunluktaki CHR'den önce zero sectorhata 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
Jordan Davis

@JordanDavis çoğu durumda, ana bilgisayar korumalı alan başlamıyor diskin sonunda. Gerçekten de, ilk sektör için isimlendirme değer olarak döndürülürken 1, hala neden olduğuna dair herhangi bir bilgi bulamadım (sektörün 0hata bayrağı olarak ayrılmasıyla ilgili bir şey olabileceğinden şüphelenmeme rağmen ). Bir şeyle karşılaşırsam sizi güncelleyeceğim.
Atılım

FBA bölümünün Wikipedia bağlantısına genel bakış, liste ECC olarak sıfırıncı kayıt olmakla birlikte, kulağa hoş geliyor, eğer karşılaşırsanız da aynısını yapacağım.
Jordan Davis

Bazı giriş diğerlerinden duymak ben istiyorum gerçekten gibi @JordanDavis Ben, bu soru üzerine bir ödül ekledik - özellikle açısından neden yönü .. açık soru tutmak için çekinmeyin / saat bir vermek olduğu için cevapsız diğer cevaplar için şans.
Atılım

8

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ı.


"Ben bir adresleme sektörü olarak sektör sıfır bıraktı söyleyebilirim ..." - Mantıksız tahmin. Her sektörün silindir / kafa / sektör adresini içeren bir Kimlik Kaydı vardır. Disk denetleyicisinin, dizinin doğru silindirde tamamlandığını doğrulamak için Endeksin gelmesini beklemesi gerekmez; başın altında dönen bir sonraki sektör doğrulama için okunur.
talaş

"CH = silindir numarası (0-1023 dec.)" - Orijinal IBM PC BIOS "parça" numarası için CH kullanır. CH 8 bitlik bir kayıttır, bu nedenle maksimum değer sadece 255'tir.
talaş

"Ben CHS tarihini izlemeye çalıştım ... ve LBA hızlı bir artış verdi" - Açıkçası, "LBA" ile ilgili tüm bu tartışmalar sadece PC disk arayüzleri, özellikle ATAPI özellikleri ile ilgilidir. Aksi takdirde CHS ve LBA bir arada bulunabilir. EG Dahili olarak LBA kullanan birkaç dosya sistemi yazdım, ancak denetleyici arabirimi başına gerçek disk G / Ç gerçekleştirmek için adreslemeyi CHS'ye dönüştürdüm. "En erken CHS şeması aslında sıfır tabanlı sektör adresleri kullandı." - Doğru, ama CP / M'den önce oldu.
talaş

@ sawdust: Yaptığım tek şey, PC BIOS arabirimi için kayıtların atanmasından bile önce gelebilecek IBM belgelerine atıf yapmaktı. Bradley'in sektör 0'ı ayrılmış bir adres olarak ayarlayarak yanlış veya yanlış yönlendirildiği açıktır, ancak ne olduğu konusunda emin olamayız, çünkü asla olmadı. Sektörün adres bölümünün de parça numarasını içerdiğinin farkında olmayabilir. Ya da belki bu yedek sektör, Bradley'in genel BIOS arayüzüne taşınan bir disketler özelliğiydi. Yalnızca IBM / PC BIOS'un CHS'deki bu değişiklikten sorumlu olduğunu biliyoruz.
harrymc

Bu konularda her zaman olduğu gibi, Ralph Brown'ın Kesinti Listesi paha biçilmez bilgiler sunar. @Sawdust'un CH'nin sekiz bitlik bir kayıt olduğu hakkında yazdığı doğru olsa da, CX'in kullanımı bu değildi. Bunun yerine, CX silindir sayısı her iki bit-doldurulmuş ve (değil disketler, ancak görünüşe göre sadece sabit diskler uygulanan bu uzantı, disketler, CL sektör numarası tutulur ve CH silindir sayı tutulan) sektör numarası. Örneğin Int 13 / AH = 02h, BIOS - DISK - READ SEKTÖRÜ (leri) BELLEK GİRİŞİ giriş parametreleri için belirtilen arayüzü karşılaştırın .
CVn

1

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.


Onun sürücü için ayrılmış - I / O firmware arayüzü, hatta modern SSD disk veya flash I / O işlemleri okumak / yazmak / kopyalamak / formatı vb için yer ayırdı ..
Jordan Davis

Bir göz atın Bu
yass

Evet, ancak SEKTÖR 0 değil, SİLİNDİR 0. İlk spesifikasyondan (IBM 3740) silindir 0'a "İndeks silindiri" adı verilir ve "INDEX SİLİNDİR DÜZENİ" nde belirtilen birden çok veri saklanır. Modern disklerde bu silindire genellikle "SİLİNDİR NUMARASI -1", evet "-1" atanır ve sadece kontrolör tarafından erişilebilir. Sektör 0'ın neden kullanılmadığını açıklayacak hiçbir şey yoktur ve CP / M gibi bazı işletim sistemlerinde görebilsek de, donanım hala IBM 3740'a göre üretildiğinden sanaldır. Başka bir deyişle, ilk sektör SEKTÖR 1. Neden? "DOĞAL NUMARALAMA"
APO69
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.