Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Jak vlastně vypadá disk?

23.3.2000, Emil Pavelka, zpráva
Jak vlastně vypadá disk?
POZOR následující záběry budou poněkud drastické…

POZOR následující záběry mohou být poněkud drastické !
Zavřete raději svého miláčka (počítač) do vedlejšího pokoje.

.... pozn. redakce :-)

Nejmenší jednotka, kterou můžeme na disk uložit se nazývá sektor. Sektor je prostor na disku, který je schopný pojmout 512 bajtů (0,5 KB) . Sektory jsou řazeny ve stopách (jedna stopa mívá nejméně 17 sektorů). Stopy jsou číslovány od 0, přičemž stopa 0 leží na obvodu plotny disku. Na stopě 0 bývají uloženy nejkritičtější informace pro funkci disku. Číslo stopy je také její adresou. Stopy umístěné pod sebou tvoří cylindry. Číslování cylindrů je shodné s číslováním stop (například stopa 10 tedy leží na cylindru 10). Každá plotna disku mívá dva povrchy. Počet povrchů je roven počtu hlav.

diskSSdiskCC


Kapacitu disku lze tedy vypočítat následujícím postupem:
Počet povrchů X počet stop na povrch X počet sektorů na stopu X 512 bajtů
Funguje to? No zkuste si to u svého disku. Já vám tu nabízím jeden příklad.
255 x 1108 x 63 x 512 = 9113610240 to je 9,1 Giga
( přesněji by bylo 8,4877 GB, protože však výrobci pevných disků počítají 1 KB = 1000 B namísto 1 KB = 1024 B budu se snažit dále používat tentýž způsob) .

No, mi to vyšlo. Ale určitě Vás něco zarazilo. 255 povrchů nejenže není dělitelných dvěma, s tím bychom se smířili. Jak by byl ale tlustý takový disk se 128 plotnami a 255 hlavami? Jsou hodnoty uvedené na disku pravdivé?

Ne, ty údaje jsou nastrčené pro oklamání zbytku počítače, z důvodu překročení limitů hodnot, které byly v pravěku PC dány do vínku počítači a operačnímu systému.

Jaké to byly limity?
Lidé potřebovali uložit tři proměnné(počet povrchů, počet stop, počet sektorů). Alokovali tedy pro každou z nich prostor 1bajt. To je pro každou hodnotu osm bitů, proměnná tedy může nabývat 256 stavů.
256 x 256 x 256 x 512 = 8589934592 (tedy 8388608)
Jé, přes osm giga, řekli si. To si ani nedokážeme představit. A tak navrhli řadič, který nepočítal s větším počtem hlav než 16.
16 x 256 x 256 x 512 = 536870912
Brzy zjistili, že 256 stop je málo, zatímco 256 sektorů se nepoužívá. Vzali tedy dva bity z proměnné pro sektory a přidali je proměnné pro stopy. Výsledkem bylo 10bitů, tedy 1024 hodnot pro stopy. A 6 bitů, tedy 63 hodnot pro sektory.
16x1024x63x512=528482304
S tímhle fyzickým omezením na 504MB jste se možná setkali u starších BIOSů.
Dalším omezením s nímž se můžeme setkat, je maximální adresovatelný prostor 2 GB u souborového systému FAT16. Čím je dáno?

To číslo 16 označuje šestnáctibitovou alokační tabulku. Šestnáctibitová proměnná má možnost nabývat 65536 stavů. FAT16 je tedy schopen adresovat 65536 clusterů. Clustery jsou tvořeny sektory a mohou mít velikosti 2/4/8/16/32 KB. Když znásobíme největší hodnotu, tedy 32 KB, počtem adresovatelných clusterů, tedy 65536, dostaneme 2097152 KB. A to jsou ty 2 GB maximálně dosažitelné. Potom nastupuje dělení disku(Windows NT podporují i clustery 64 KB, to by nám dalo 4 GB). A nebo, podporuje-li to operační systém, FAT32. FAT32, ač to na první pohled nevypadá používá k adresaci 28bitů. Zbylé čtyři jsou rezervovány. 28bitů představuje 268435456 hodnot.
268435456 x 32 = 8589934592 KB, tedy 8192 GB, 8 TB
Tabulky ovšem povolují jen 32bitů pro sektory, to je 4294967296 hodnot ,
4294967296 x 512 = 2199023255552 což je 2048 GB, 2 TB
Menší bere, ale nám (nebo alespoň mi) to momentálně nevadí.

A jak se limity postupně obcházely?
Nejdříve bylo využito těch 16 hlav. Jak? Hustota stop se zvyšuje. Měl jsem například maximum, tedy 1024 stop. Zdvojnásobím-li jejich hustotu, nemám výslednou hodnotu 2048 kam uložit. Mám dvě plotny, tak se budu tvářit, že jsou čtyři. Výsledná kapacita bude stejná, jen musím zajistit přeložení adresování disku. Tohle je to LARGE (Extended CHS. Klasický způsob cylindr, hlava, sektor se označuje jako CHS), které můžete spatřit v nastavení u některých BIOSů. Dále bývá k vidění LBA (Logical Block Addressing) které, pokud to disk podporuje je lepší volbou. Zde má každý sektor svou jedinečnou adresu, uloženou v proměnné o velikosti 28 bitů (268435456 hodnot) limitem pro LBA je tedy 128 GB (vzhledem k tomu, že už jsou k vidění 75GB disky nic moc, nicméně už jsem četl o přípravě na adresaci pomocí 48bit).

Dále použiji rozdílný počet sektorů na stopu (na obvodu více a směrem k ose méně, v několika zónách) tohle je ZBR (Zone Bit Recording) a do BIOSu uvedu průměrný počet sektorů na stopu.
Dosud uvedeným se dostaneme k hranici 8,4 GB. Dnes však nejsou výjimkou disky větší.
Také si všimněte, že můj ukázkový disk má 1108 stop což odporuje dřívějšímu tvrzení o maximu 1024. Způsobeno je to úpravou BIOSu, z čehož plyne, že ne všechny základní desky poskytují tyto možnosti. Tady může být výhodou Flash BIOS.