Perché i dischi scrivono i dati in blocchi di dimensioni della pagina?

1

A mio avviso, anche se voglio sovrascrivere un byte nel mezzo di un file, il sistema operativo e / o il disco leggeranno il contenuto della dimensione della pagina, modificheranno un byte e poi lo riscriveranno.

Qual è la ragione fondamentale per cui i dischi sono progettati in questo modo per avere un ciclo read-modify-write?

L'hardware o le proprietà fisiche del disco sono la ragione?

L'ottimizzazione per la località dei dati per le prossime letture è la ragione?

Questa domanda è più sulla granularità di ogni operazione del disco che sull'inserimento nel mezzo del file.

    
posta Ashish Negi 07.09.2018 - 08:52
fonte

3 risposte

5

Questo è dovuto alla meccanica.

Un disco è una superficie che ruota attorno al proprio asse ad alta velocità (in realtà diverse superfici). La superficie è divisa in tracce concentriche e un motore controlla la testa elettromagnetica per spostarsi sulla traccia destra. La testa quindi aspetta solo che le informazioni che vuole leggere / scrivere passino sotto di essa. Quindi il problema è quindi di localizzare i byte sulla traccia per sapere quando raggiungeranno la testa.

Se ci fosse un indirizzamento di byte, la testina leggere / scrivere un singolo byte, ma a causa della velocità della rotazione, dovrebbe attendere una rotazione completa per eseguire la successiva istruzione di lettura / scrittura. Un'alternativa potrebbe essere quella di memorizzare nella cache le istruzioni di accesso per ottimizzare l'accesso ai byte continui al fine di evitare l'attesa di rotazioni non necessarie. Ma questo avrebbe richiesto più memoria e più throughput per il controller del disco, che erano entrambi molto limitati in passato.

Quindi, invece di accedere a singoli byte, e considerando che la maggior parte degli accessi sono per un'intera sequenza di byte, le tracce sono state divise in settori della stessa capacità. Questo è il motivo per cui hai questa logica di blocco.

    
risposta data 07.09.2018 - 09:14
fonte
3

Il tuo disco rigido meccanico legge e scrive dati a 100 MB al secondo, usando un magnete potente. Per cambiare un singolo byte, dovresti attivare quel magnete per dieci nanosecondi. Per non distruggere alcun bit dei byte precedenti, dovresti trasformare quel magnete super strong dentro e fuori entro mezzo nanosecondo.

Dovresti anche riconoscere la posizione in cui scrivi con precisione sub-nanosecondo prima di arrivare lì. Quindi hai tempo di elaborazione zero disponibile. Semplicemente impossibile

E poiché un disco rigido ruota 90 volte al secondo, se scrivi byte uno dopo l'altro, hai un'enorme velocità di scrittura di 90 byte al secondo.

    
risposta data 07.09.2018 - 10:48
fonte
1

Tutti i dispositivi di memoria a tutti i livelli della gerarchia di memoria (dalla cache L1, dalla memoria principale, dal disco ...) offrono accesso sequenziale come modalità più veloce rispetto all'accesso casuale. L'accesso casuale richiede la trasmissione costante di indirizzi (il che significa che i dispositivi devono riconfigurare il loro accesso per cambiare gli indirizzi) mentre l'accesso sequenziale significa trasferimenti di massa: ammortizzare un indirizzo attraverso il trasferimento dell'intero blocco, mentre i dispositivi avanzano internamente indirizzandosi al successivo, in parallelo con accesso all'indirizzo precedente.

Il disco lo porta ad estremi come @ gnasher729 sta indicando. A causa del supporto fisico, l'indirizzamento dei byte non è nemmeno pratico. Sul disco, vi è un sovraccarico di dimensioni fisse che circonda qualsiasi quantità di contenuto che è possibile archiviare. Durante la formattazione di basso livello da parte del produttore, viene scelta la dimensione del contenuto trasformato in un blocco. La scelta è un compromesso tra i vantaggi dei trasferimenti in serie sequenziali quando si desiderano più dati e gli svantaggi quando non lo si fa, oltre ad ammortizzare il sovraccarico sul contenuto.

In pratica, se il sistema operativo funziona con un determinato file, eseguirà solo read-modify-write quando la pagina è fredda, mentre successivamente per un certo periodo memorizzerà nella cache il contenuto più recente di quella pagina. Se la pagina si trova nella cache, la lettura iniziale può essere dimenticata.

    
risposta data 07.09.2018 - 16:05
fonte

Leggi altre domande sui tag