Pevné disky
Pevný disk (hard disk drive, HDD, harddisk, disk) je zařízení, které slouží k uchování velkého množství dat. Jeho výhodou je především vynikající poměr cena/kapacita a schopnost uchovávat data nezávisle na napájení. Maximální možný počet čtení/zápisů není prakticky omezen.

Princip čtení a zápisu
Disk pracuje na principu elektromagnetické indukce. Data jsou uložena na pevných kotoučích zvaných plotny (platters). Těchto ploten může být v jednom disku i více, přičemž pak jsou umístěny v patrech nad sebou. Plotny jsou neohebné a bývají vyráběny ze slitiny hliníku, keramiky, plastu nebo skla. Plotny jsou z obou stran pokryté tenkou vrstvičkou magneticky měkkého materiálu (např. oxid železa, substrát slitiny kobaltu), která slouží k záznamu informací. Plotny se otáčí rychlostí v řádu jednotek až desítek tisíc otáček za minutu. Tato rychlost má spolu s hustotou záznamu značný vliv na výkon disku.
Čtecí a záznamové hlavy
Data čtou a zapisují tzv. hlavy (read-write heads). Hlav musí být tolik, aby pokryly všechny záznamové vrstvy. Dříve se používaly magnetodynamické hlavy, ale postupně se v nich začaly objevovat krystaly měnící vodivost podle intenzity magnetického pole. Hlava se nikdy nedotýká povrchu kotouče přímo, ale vznáší se na vzduchovém polštáři několik desítek nanometrů nad jeho povrchem. Tento vzduchový polštář je vytvářen a udržován rotací disku. Obecně platí, že čím vyšší je hustota záznamu, tím blíže k plotně musí hlava být. Z toho plyne, že i sebemenší zrnko prachu nebo větší otřes způsobí trvalé poškození záznamové vrstvy.
Magnetický povrch plotny je rozdělen na magnetické regiony. Každý magnetický region tvoří magnetický dipól, který ve svém okolí vytváří magnetické pole. Změna polarity tohoto pole způsobuje ve čtecí hlavě změny směru protékajícího proudu, které elektronika disku převádí na posloupnost bitů. Zapisovací hlava ukládá informace tak, že zmagnetizuje region pomocí silného magnetického pole.
V dnešních discích je každý region tvořen několika sty magnetických zrnek a proto hrozí nebezpečí, že se magnetická informace ztratí vlivem teplotních výkyvů. Aby tomu konstruktéři zabránili, pokrývají plotny dvěma opačně polarizovanými magnetickými vrstami, které jsou odděleny magneticky odolným materiálem (např. rutheniem).
Kódování dat
Data na disku nejsou uložena stejně jako na děrných štítcích. Mohlo by se totiž vlivem různých nepřesností stát, že po dostatečně dlouhé posloupnosti samých nul ztratí hlava synchronizaci a elektronika disku pak není schopná rozlišit, zda těch nul tam bylo 999, 1000 nebo 1001. Proto se používá různých druhů kódování.
Následující kapitoly ukazují tři různá jednoduchá kódování, která se dříve u disků používala. Ukazují průběh zápisového proudu při zápisu bajtu „01101001“. Dnes se však používá ještě lepšího a obecnějšího kódování RLL, které využívá kódovacích tabulek a omezuje počet za sebou jdoucích nul shora i zdola. Tabulky jsou většinou vytvořeny na základě dlouhodobých analýz dat.
Kódování NRZI
Kódování NRZI kóduje každou jedničku jako reverzaci, pro nuly nezapisuje nic. Toto je nejjednodušší a nejméně důmyslné kódování. Počet za sebou jdoucích nul není omezen, takže může hlava časem ztratit synchronizaci.
příklad kódování NRZI
Kódování FM
Kódování FM kóduje každý bit dvěma bity. Výsledná kódová slova zapisuje na disk pomocí NRZI. Tento kód je postavený tak, že pro každý bit zapíše alespoň jednu reverzaci a nevadí mu tedy ani dlouhé sekvence nul. Toto kódování je velice nešetrné co se reverzací týče, ale zato nehrozí ztráta synchronizace.
| Bit | Kódové slovo pro NRZI |
|---|---|
| 0 | 10 |
| 1 | 11 |
příklad kódování FM
Kódování MFM
Modifikované kódování FM funguje shodně jako kódování FM, ale pro první nulu negeneruje žádné reverzace. Kódování je tedy šetrnější co se počtu reverzací týče a ztráta synchronizace také nehrozí.
| Bit | Kódové slovo pro NRZI |
|---|---|
| první 0 | 00 |
| další 0 | 10 |
| 1 | 01 |
příklad kódování MFM
Vystavovací mechanizmus
Velmi důležitou součástí disku je tzv. vystavovací mechanizmus, který se stará o správné umístění hlav. Hlavy jsou jsou uchyceny na pohyblivém rameni, které s nimi pohybuje na požadovaný cylindr. Pohyb ramena byl dříve realizován krokovým motorem, ale koncem osmdesátých let se postupně přešlo na lineární motor, jehož vychýlení je ovládáno magnetickým polem (podobně jako reproduktor). Mezi jeho další výhody patří automatické parkování při výpadku napájení.
Vystavovací mechanizmus musí před každým čtením/zápisem vykonat následující operace:
- Vystavit hlavu na správnou pozici.
- Vyčkat na utlumení rozkmitu, který je způsoben setrvačností hlav.
- Vyčkat, až se plotna pootočí na místo od kterého začne čtení/zápis (tzv. latence).
Prudké pohyby ramene a rotace ploten způsobují vibrace disku a přispívají také k jeho ohřívání. Další součástí disku, která má vliv na jeho teplotu, je samozřejmě elektronika.
Parkování hlav
Aby hlavy po zastavení ploten (vypnutí zařízení, výpadek proudu) „nespadly“ na plotny a neponičily tak záznam, musí disk hlavy bezpečně zaparkovat na určeném místě, které se nachází mimo povrch. K zaparkování hlav je naštěstí potřebná jen minimální energie, kterou si disk stačí vyrobit sám setrvačností ploten. Existují však i technologie, které jdou dál. Hlavy například mohou být vybaveny polštářky, které přímo zabraňují pádu na záznamovou plochu.
Fyzická geometrie disku
Data jsou na disku organizována v soustředných kružnicích zvaných stopy. Každá stopa obsahuje různý počet sektorů, což jsou nejmenší adresovatelné jednotky na disku. Pokud disk obsahuje více ploten, stopy přístupné bez pohybu čtecí hlavičky se nazývají cylindry (cylinder). Plotny mohou být rozděleny do několika zón, ve kterých je obsažen stejný počet sektorů na stopu.
- Sektor – nejmenší adresovatelná jednotka.
- Stopa – množina sektorů na jedné plotně ve stejné vzdálenosti od středu.
- Cylindr – množina stop o daném poloměru (stěna válce).
- Plotna/Povrch – tenký kruh se speciálním povrchem, kde jsou uložena data.
Virtuální geometrie disku
U starých pevných disků platilo, že počet sektorů na stopu byl stejný ve všech cylindrech. Je však zřejmé, že to vedlo k neefektivnímu použití vnějších stop (vešlo by se na ně sektorů víc). Proto se nyní u disků přešlo na tyto metody adresace:
- CHS adresování – řadič disku mapuje požadavek (cylindr, hlavička, sektor) na reálné číslo cylindru, hlavičky a sektoru.
- LBA adresování – diskové sektory jsou číslovány postupně od 0 bez ohledu na fyzickou geometrii.
Přístup na disk
Doba čtení a zápisu je dána součtem: doby vystavení (seek time, čas nastavení hlaviček na správný cylindr), rotačního zpoždění (rotary latency period, za jak dlouho se správný sektor dostane pod hlavičku) a času přenosu dat.
Operační systém a řadič disku se musí postarat o to, aby byly všechny požadavky obslouženy co nejrychleji. Řadič disku rozhoduje, v jakém pořadí požadavky zpracuje, a snaží se zminimalizovat dobu vystavení.
Obsluha požadavků metodou FIFO
Klasická fronta (first in first out), aneb kdo dřív přijde, ten dřív mele. Disk obsluhuje požadavky ve stejném pořadí v jakém přišly. Pořadí požadavků se tedy nemění.
- Příklad:
- Původní pořadí: 5, 2, 40, 32, 22
- Výsledné pořadí: 5, 2, 40, 32, 22
Výhodou je spravedlnost, nenáročnost a jednoduchost implementace. Nevýhodou je mizerný výkon, protože hlavičky musí často měnit svou polohu.
Obsluha požadavků metodou SSTF
Metoda SSTF (shortest service time first) si přeuspořádá požadavky tak, aby se mezi každými dvěma požadavky hýbala hlavička co nejméně.
- Příklad:
- Výchozí pozice hlavičky: 4
- Původní pořadí: 5, 2, 100, 32, 80
- Výsledné pořadí: 5, 2, 32, 80, 100
Tato metoda je o dost lepší než FIFO, ale má jednu velkou nevýhodu: dochází ke „stárnutí“ krajních požadavků, protože má hlavička tendenci setrvávat jen uprostřed disku.
Obsluha požadavků metodou SCAN
Metoda SCAN funguje na podobném principu jako výtah. Takový obyčejný výtah jede dejme tomu nahoru a po cestě sbírá cestující, kteří se chtějí svézt výš. Potom se výtah rozjede zase dolů a nabírá cestující opačným směrem. Podobně funguje metoda SCAN. Hlavičky se pohybují jedním směrem a obslouží všechny požadavky v daném směru. Pokud už v daném směru není další požadavek, směr hlaviček se změní a řadič obslouží postupně všechny zbylé požadavky.
- Příklad:
- Výchozí pozice hlavičky: 34
- Původní pořadí: 5, 2, 100, 32, 80
- Výsledné pořadí: 80, 100, 32, 5, 2
Tento algoritmus odstraňuje problém se stárnutím, který se vyskytoval u algoritmu SSTF. Má však nepatrně menší výkon. Rozdíl ale není příliš významný.
Srovnání algoritmů na příkladu
Na pevný disk přišly následující požadavky: 4, 23, 10, 52, 31, 4. Výchozí pozice hlavičky je 25. Doba posunu hlavičky o 1 cylindr trvá 1 ms.
| Typ algoritmu | Obsluhované pořadí | Výsledný čas |
|---|---|---|
| FIFO | 4, 23, 10, 52, 31, 4 | (25–4) + (23–4) + (23–10) + (52–10) + (52–31) + (31–4) = 143 ms |
| SSTF | 23, 31, 52, 10, 4, 4 | (25–23) + (31–23) + (52–31) + (52–10) + (10–4) = 79 ms |
| SCAN | 31, 52, 23, 10, 4, 4 | (31–25) + (52–31) + (52–23) + (23–10) + (10–4) = 77 ms |