Come fa un disco rigido a sapere dove iniziano i dati? [duplicare]


14

Mi chiedevo sempre come un disco rigido trova il primo bit di dati.

Quando un disco rigido si gira, tutto ciò che legge deve essere un flusso circolare di dati fino a quando la testina di lettura non si sposta in una posizione diversa.

Ma in un flusso circolare del genere, come fa l'azionamento a sapere dove si trovano il primo bit e l'ultimo bit, in modo che possa trasmettere i dati nell'ordine giusto?


A proposito (raramente menzionato ma saliente) C'è un indice per indicare l'inizio (e la fine) della traccia. Quando il controller del disco incontra l'indice una seconda volta, ciò indica che ha letto tutti i settori della traccia.
segatura

Risposte:


2

Lo legge dal disco.

I dati sul disco non sono solo strutturati (come dice @psusi), ma anche codificati. La codifica garantisce che i dati registrati non possano essere confusi con gli indicatori di posizione nelle intestazioni di settore, quindi il flusso circolare può essere letto fino a quando non viene trovato l'indicatore di posizione target.

A quanto ho capito, i moderni dischi rigidi non lo fanno del tutto; leggono l'intero cerchio in un buffer, tenendo traccia di dove si trova ciascun settore e utilizzano i buffer per inviare i dati richiesti.

AGGIORNARE:

Il supporto magnetico è un materiale che ha un campo magnetico con due proprietà chiave: 1) non cambia mai da solo, e 2) il dispositivo di registrazione può cambiare l'orientamento del campo in qualsiasi punto della superficie. Durante la lettura del supporto, il sensore rileva dove il campo è orientato verso il sensore e dove il campo è orientato lontano dal sensore. Quando il sensore si sposta sulla superficie, rileva i tempi di queste transizioni di polarità; il primo livello di decodifica sta traducendo questi tempi in valori di bit . A causa delle incertezze fisicamente necessarie in questo processo, la codifica non deve richiedere lunghi tratti della stessa polarità; cioè, deve essere una codifica limitata (RLL).

I dettagli dei progetti di dischi rigidi sono generalmente segreti commerciali, ma ci sono essenzialmente due modi per garantire che gli indicatori di settore non compaiano mai nel contenuto del settore:

  1. Progettare un RLL che consenta valori speciali che non deriveranno mai dalla codifica dei dati del contenuto. Questi valori speciali potrebbero essere utilizzati non solo per contrassegnare i confini del settore, ma anche per correggere errori o qualsiasi altro scopo secondario.

  2. Utilizzare un secondo livello di codifica per garantire che i valori dei marker vengano visualizzati solo sui marker. Questo è un po 'come la codifica URL per consentire ai caratteri speciali di essere "nascosti" negli URL, ma con un vincolo aggiuntivo equivalente a limitare il numero di caratteri che possono essere aggiunti, quindi finisce più come la codifica base64 .

Quindi, la testina di lettura si sposta sulla superficie rilevando i cambiamenti di polarità magnetica, i tempi di tali cambiamenti vengono utilizzati per determinare la corrispondente sequenza di valori di bit (possibilmente includendo alcuni valori eccezionali che non rappresentano i dati memorizzati) e tale sequenza viene utilizzata per determinare quali settori vengono letti e il contenuto di tali settori. Quando viene determinato il contenuto dei settori, i dati possono essere memorizzati in un buffer a stato solido e / o archiviati in un buffer RAM e / o rispediti per soddisfare una richiesta.


Questa codifica è come la codifica di Huffman? Se qualcuno potesse fare un chiaro esempio di come funziona a livello hardware in questo modo: "La testa legge un flusso di dati circolare come 010111010010111010 ... dove ogni 111 segna l'inizio di un settore, e poi ..." Potrei quindi accetta la risposta.
Uzumaki,

I dischi rigidi devono codificare i dati astratti come proprietà fisiche del supporto magnetico e il risultato deve essere facilmente indirizzabile; La codifica di Huffman mappa un flusso di dati astratti su un flusso (di solito) più breve di dati astratti (interrompendo l'indirizzamento). Sono per lo più indipendenti.
ShadSterling,

Il mio aggiornamento non ha aggiunto alcun esempio, ma se segui il link RLL ne ha alcuni.
ShadSterling,

18

I dati non sono scritti come un flusso arbitrario di uno e zeri. È scritto in settori. Ogni settore ha il payload dei dati dell'utente e un'intestazione. L'intestazione contiene codici di correzione degli errori, oltre a uno speciale campo di sincronizzazione che identifica l'inizio del settore e il numero di settore in modo che l'unità possa sapere quando ha trovato l'inizio di un settore e di quale settore si tratta.


3
Alcuni riferimenti o collegamenti renderebbero questa buona risposta ottima. : D
cat

1
@cat, suppongo "Come funzionano i computer" o "Inside the PC" di Peter Norton, se uno di questi è ancora in stampa ... probabilmente alcune nuove edizioni rispetto a quelle sulla mia libreria.
psusi,

Questo non risponde alla domanda. La domanda è come l'unità sa dove inizia l'intestazione o il campo di sincronizzazione.
Martin Argerami,

@MartinArgerami - Questo risponde alla domanda perché corregge il malinteso del PO e introduce il concetto saliente di settori. Il drill-down al livello di lettura / scrittura dei domini magnetici sembra troppo intenso per l'OP IMO. Se vuoi maggiori dettagli, vedi superuser.com/questions/427554/…
sawdust

1
@ user134593 - I byte di sincronizzazione sono sempre dopo uno spazio e sono i primi byte del record. Indicano semplicemente l'inizio del record. Quindi il controller del disco non ha mai avuto un conflitto o confusione con il payload o i dati dell'utente. Sembra che pensi che sia un po 'stream (proprio come l'OP), ma è un supporto magnetico, il che significa che non puoi semplicemente leggere o scrivere in qualsiasi punto tu voglia.
segatura

7

Psusi è corretto (i dati sul disco sono strutturati e parti diverse del computer usano parti diverse di quella struttura) ma non rispondono davvero alla tua domanda.

L'unità non "conosce" davvero nulla. Dispone di elettronica di basso livello in grado di leggere marcatori sul disco (generalmente scritti in fabbrica o dalla testina stessa), leggere blocchi di dati dal disco o scrivere blocchi di dati sul disco o dire se un determinato punto sul il disco è danneggiato o danneggiato o deve spostarsi in una posizione specifica sul disco. Questo è tutto ciò che "sa". La testina di lettura non decide di spostarsi da qualche altra parte da sola, qualcosa più in alto nella macchina gli dice di ...


2
Ma qualcosa in alto fa ancora parte del disco rigido. (Che è comandato da qualcosa al di fuori del disco rigido, che è comandato da qualcosa al di fuori del computer, che è comandato da qualcosa di metafisico, ma non stiamo parlando di nessuna di queste cose)
user253751

0

Oltre alle altre risposte, i dischi fissi certamente utilizzati (e possono ancora fare) hanno un piatto ("testa" in termini cilindro / testa / settore) che è riservato per i dati di calibrazione / posizionamento, non utilizzato affatto per l'archiviazione dei dati utente .


3
Questo non è qualcosa di cui ho sentito parlare, hai un riferimento per questo?
ShadSterling,

Sì, no .... non è una cosa.
psusi,

Sembra che ti riferisca alla superficie / al piatto del servo. Ma questa è una tecnologia obsoleta che non vedo da 14 "disk pack, che precede gli HDD ST-506 dell'originale IBM PC-XT. Winchester e le moderne unità disco utilizzano un servo incorporato.
segatura

Ah OK, non ne ho sentito parlare per molto tempo, anche se l'ho messo su dischi moderni che sono scatole nere.
Mark K Cowan,

0

La risposta che stai cercando ha due parti:

1) Un controller hardware

2) Un file system

Come hai detto, in un HDD (al contrario di altre tecnologie come gli SSD) i dati effettivi vengono scritti su piastre di metallo rotonde come anelli circolari concentrici che tengono un campo magnetico modellato. Sopra i piatti che contengono questi dati c'è la testina di scrittura che si sposta per leggere e scrivere i dati, un po 'come un giradischi in vinile. I piatti su cui si sposta sono collegati a un motore elettrico che ne controlla la rotazione.

Un controller hardware funge da interfaccia tra il sistema operativo e il disco rigido. Il controller può leggere la posizione della testina di scrittura e la rotazione dei piatti e usa queste informazioni per decidere come posizionare la testina e i piatti per la lettura e la scrittura. Traduce le richieste di lettura e scrittura dal sistema operativo in segnali di controllo che spostano la testina di scrittura e ruotano i piatti, oltre a convertire i dati paralleli provenienti dal sistema operativo in un'unica linea di dati seriali. Suddivide anche questa linea seriale e decide in quale posizione fisica, o settore, inserire ogni pezzo e registra queste informazioni in un modo specificato dal file system.

Il file system è una specifica di come e dove archiviare i dati. Il sistema operativo del computer sa come interpretare questo file system e usa questa conoscenza per comunicare adeguatamente con il controller hardware, in questo caso suddividendo gli anelli circolari dei dati in segmenti utilizzabili chiamati settori e dicendo al file system dove si trovano fisicamente questi settori. Il file system fornisce a ciascun settore un indirizzo, che è solo un numero univoco, e questo indirizzo viene tradotto dal controller hardware in una rotazione del piatto specifica e nella posizione della testina di lettura per iniziare a leggere o scrivere.

Per ulteriori informazioni, le seguenti sezioni in questi articoli di Wikipedia sono abbastanza utili:

Vedi Introduzione e sezione 3.1 "Gestione dello spazio" qui: https://en.wikipedia.org/wiki/File_system

Vedi la sezione 2.1 "Registrazione magnetica" qui: https://en.wikipedia.org/wiki/Hard_disk_drive#Magnetic_recording

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.