Punto informatico Network
Canali
20080829222917

Alla scoperta del Master Boot Record (MBR)

21/01/2010
- A cura di
Tecniche Avanzate - MBR - Master Boot Record, il settore LBA 0 di un disco rigido o di un qualsiasi dispositivo di memorizzazione di massa riscrivibile non ottico. Un solo settore che trattiene in sé poche ma importantissime informazioni sulla struttura primaria del dispositivo fisico.

Tag

Passa qui con il mouse e visualizza le istruzioni per utilizzare i tag!

mbr (1) , master boot record (1) .

Valutazione

  •  
Voto complessivo 5 calcolato su 97 voti

Endianness

Ovvero: possibili disposizioni dei dati, atomo (ovvero, struttura minima di memorizzazione, in questo caso byte) per atomo su un supporto di memorizzazione di massa come un disco rigido.

Nello schema precedente abbiamo visto che nella tabella di partizione reale gli ultimi due campi di una voce di partizione sono disposti in un modo, ma tra parentesi ho messo i campi invertiti, casella per casella. Questa strana "inversione" di memorizzazione prende il nome di little-endian.

Normalmente ci si aspetterebbe che su un disco i dati vengano memorizzati con lo stesso verso con cui vengono letti da un essere umano, almeno qui in Occidente, ovvero da sinistra verso destra. Questo succede con il big-endian. Con il little-endian, invece, succede il contrario.

Questi termini prendono il nome dal tipo di bit (o byte) che viene depositato a sinistra nel campo. Se l'atomo che contiene il most significant bit (MSB, bit più significativo) viene depositato più a sinistra si parla di big-endian. Viceversa, avendo un atomo con il least significant bit (LSB, bit meno significativo) posto a sinistra avremo una notazione little-endian. Si può anche pensare al fatto che con il little-endian, all'aumentare della posizione di memoria, aumenti il "valore" dei bit che veniamo a trovare.

Dal grafico della pagina precedente possiamo vedere che gli ultimi due campi, siccome invertiti nella voce di partizione, hanno il byte (in questo caso) meno significativo a sinistra, e quindi questa memorizzazione è di tipo little-endian. La tipologia little-endian è utilizzata dalle più conosciute architetture attualmente in commercio, tra cui la diffusissima x86 (nelle sue varianti, comprese x86_64 o EM64T/IA64, ovvero rispettivamente CPU AMD o Intel, single o multi-core).

Di seguito illustro un semplice schema sull'interpretazione dell'endianness.

Mbr_str_01b.png

Il "Registro" identifica uno o più registri di una CPU che riversano il contenuto della memoria su disco. La "Memoria" è invece una porzione della memoria di massa (che può essere anche una memoria RAM) in cui i dati vengono riversati. Il verso di lettura dei dati è indicato dalle frecce che puntano verso il basso nel registro e, rispettivamente, verso destra e verso sinistra nelle notazioni big-endian e little-endian.

La notazione little-endian viene usata per la rappresentazione dei numero dei settori nella tabella di partizione.

Trasformazione HSC -> CHS

Un discorso a parte va fatto per la rappresentazione di cilindri, testine e settori nella tabella di partizione. Non è facile come sembra, e bisogna procedere per gradi per spiegare accuratamente la conversione che va fatta per tradurre le informazioni in un formato comprensibile.

Partiamo dal semplice dato HSC iniziale della voce di partizione della pagina precedente: 01 01 00.

Scomponiamo il campo nei suoi elementi fondamentali: il primo byte a sinistra identifica le testine, ed è un valore che può andare da 1 a FE in notazione esadecimale (la testina 0 è una testina generalmente riservata a metadati o dati di servizio), ovvero da 1 a 254 in notazione decimale.

I due campi rimanenti, invece, vanno letti in modo particolare. Innanzitutto dobbiamo sempre tenere presente che i numeri sono in notazione esadecimale. In secondo luogo, dobbiamo convertire i due numeri esadecimali in notazione binaria, e infine dobbiamo separare i primi 6 bit di sinistra dai 10 bit di destra.

Vi mostro uno schema per semplificare le cose.

Chs_notation.png

Dallo schema convertiamo i due byte di destra da esadecimale in binario. Dunque i due campi, affiancati, assumono il valore 00000001 00000000. Ma non è finita qui: i settori sono rappresentati da un numero a 6 bit (2^6 = 64, il numero massimo di settori per cilindro più 1) e i cilindri da un numero a 10 bit (2^10 = 1024, il numero massimo di cilindri indirizzabili, da 0 a 1023), e dobbiamo traslare tutti i bit dall'ottavo da sinistra verso sinistra; quindi prendiamo i due bit più a sinistra e li trasportiamo subito a sinistra degli 8 bit che compongono il terzo byte.

Il risultato è come vedete in schema: i sei bit più a sinistra definiscono il settore (1); i dieci bit a destra definiscono il cilindro (0). Per una più chiara visualizzazione rivedremo la conversione HSC -> CHS quando convertiremo il valore di HSC finale nell'analisi dettagliata della voce di partizione.

Pagina successiva
Analisi di una voce di partizione
Pagina precedente
Indirizzamento logico dei blocchi

 

Segnala ad un amico

Tuo nome Tuo indirizzo e-mail (opzionale)
Invia a:
    Aggiungi indirizzo email
    Testo

    © Copyright 2025 BlazeMedia srl - P. IVA 14742231005

    • Gen. pagina: 0.32 sec.
    •  | Utenti conn.: 65
    •  | Revisione 2.0.1
    •  | Numero query: 45
    •  | Tempo totale query: 0.1