|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
qualcosa non mi torna...
se qui dice che in un disco i cilindri e le tracce sono la stessa cosa, come mai questa struttura ha un campo che si chiama "TracksPerCylinder"...?
![]() so cos'è un settore, so cos'è una traccia, so cos'è una testina, ma un cilindro che cavolo è??? ![]() |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
aggiungo che secondo quella struttura, il mio hard disk da 120 giga sembra avere 512 bytes per settore, 63 settori per traccia, 255 tracce per cilindro e 14596 cilindri in totale (e le teste non si sa perché non me le dice).
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Nota che il termine "testina" è ormai solo fittizio; a meno che non mi trovi un disco con 255 testine ![]()
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
Il clindro dovrebbe essere l'insieme di tutte le tracce dei diversi piatti in cui la testina è. Ovviamente se il disco è solo uno, clindro = traccia.
__________________
Ciao ~ZeRO sTrEsS~ |
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
oddio, inizia a girarmi la testa; allora, cerchiamo di ricostruire un bello schema generale terminologico per l'organizzazione che Wikipedia chiama "CHS" (Cylinder-Head-Sector) di un disco (e poi magari mettiamo anche in rilievo
![]() BIOS: cylinder = ? sector = gruppo di bytes (in genere 512) head = ? Wikipedia: head = lato di un piatto, quindi un gruppo di tracce/cilindri (vedi sotto) track/cylinder = gruppo di settori (63 sul mio HDD) sector = gruppo di bytes (in genere 512) Microsoft: cylinder = gruppo di tracce (255 sul mio HDD) track = gruppo di settori (63 sul mio HDD) sector = gruppo di bytes (in genere 512) 71104: head = lato di un piatto, quindi un gruppo di tracce/cilindri (vedi sotto) cylinder = ? track = gruppo di settori (63 sul mio HDD) sector = gruppo di bytes (in genere 512) l'unico parametro su cui sono tutti d'accordo è sector ![]() ilsensine, quando hai tempo mi aiuti a completare plz? ![]() |
![]() |
![]() |
![]() |
#8 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
grazie!!!! ![]() |
|
![]() |
![]() |
![]() |
#9 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
EDIT: no, neanche, perché un piatto vuol dire due facce ^^ non si sa cosa volevi dire ![]() comunque ho capito lo stesso ![]() Ultima modifica di 71104 : 21-02-2006 alle 12:45. |
|
![]() |
![]() |
![]() |
#10 | |||
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() grazie beppegrillo!! Quote:
Quote:
![]() (vedi spiegazione di beppegrillo) |
|||
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
CHS (o CTS secondo Microsoft) (o meglio ancora "ECHS") è solo un retaggio del passato, e non rappresenta più nessuna fisicità del disco. Peggio ancora, è una rappresentazione non univoca, in quanto la dimensione del disco (C*H*S*512) può essere approssimata in più modi. Ho un disco a casa che viene riportato con parametri CHS diversi a seconda se lancio un kernel 2.4 o 2.6, ma...funziona perfettamente con entrambi. Oggi tutti i dischi parlano LBA, ed è l'unico standard che andrebbe usato: indica semplicemente il settore che ti interessa, e sarà il disco ad accederci, non importa su quale piatto o faccia del piatto o pianeta dell'universo è presente. Nota che né LBA né (E)CHS sono adatti per accedere dischi superiori a ~137GB, per i quali è necessario il nuovo fiammante LBA48. La saga degli standard continua... ![]()
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#12 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
rifaccio lo schema universale, che a questo punto non presenta nessuna differenza di terminologia tra BIOS, Microsoft, Wikipedia e me.
heads = numero di piatti cylinder = insieme di tracce che hanno lo stesso numero su piatti diversi track = parte di un piatto (un "cerchio") sector = parte di una traccia byte = parte di un settore NB: è uno schema immaginario perché il parametro heads oggi non rispecchia più il reale numero di piatti dell'hard disk. |
![]() |
![]() |
![]() |
#13 |
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Tentando di fare un minimo di chiarezza:
E' necessario definire 3 periodi storici riguardanti la modalita' di indirizzamento di un hard-disk: 1) Prima dell'introduzione di hard-disk in tecnologia ZBR. 2) Dopo 1) e prima delle specifiche ATA/ATAPI-5 3) Dopo le specifiche ATA/ATAPI-5 Nel caso 1) l'indirizzamento si definisce in CHS (Cilindri, Heads (superfici=testine), Settori per traccia). Un cilindro e' un sezione anulare di piu' piatti costituenti una traccia. Un settore occupa 512 Bytes, la dimensione di un disco si ottiene come Cilindri*Heads*Sectors*512. Per esempio un seagate ST157A ha 560 cilindri, 6 Heads, 26 Settori per traccia=560*6*26*512=44728320 Bytes. In tali hard-disk le caratteristiche geometriche del disco espresse in CHS sono anche le "vere" caratteristiche geometriche del disco (il disco ha in effetti 3 piatti). Tali disco potevano essere formattati imponendo l'eventuale tabella dei settori da rimappare, e tutti gli skew e i gap necessari. 2) I dischi in tecnologia ZBR sono a densita' costante, cio' fa si che il numero di settori per traccia varia in funzione del cilindro di riferimento. In questi dischi la geometria espressa dal CHS e' solo logica e modificabale dall'host come e' quanto crede attraverso una "current traslation". Un hard-disk Piranha della WD ha geometria 987/12/35 ma non e' dotato di 6 piatti. 3) La geometria CHS ha perse di significato sostituita dall'indirizzamento LBA (un indirizzamento sequenziale), in base alle specifiche ATA/ATAPI-5 non puo' andare oltre 16383/16/63, ossia 8.4Gb, per esigenze di indirizzamento, i dischi piu' grandi di 1024 cilindri o piu' grandi di 528Mb, hanno necessitato di un indirizzamento CHS che implementasse oltre 16 Heads (anche questo logico), cosi' un disco da 120Gb Maxtor (per esempio) 6Y120L0 ha: Default translation: 16383/16/63 Current translation: 16383/16/63 Indirizzamento LBA: 240121728 settori Extended int13h CHS: 14946/255/63 L'extended int13h ragiona cosi': Dall'Identify sector (EC) verifica se il disco supporta l'LBA: SI - Verifica se supporta l'LBA48 SI - Recupera i settori LBA48 indirizzabili (hard-disk>137Gb) NO - Recupera i settori LBA indirizzabili divide i settori per 16065 (255*63) ed ottiene i cilindri (e' piu' complesso) NO Verifica se il disco ha piu' di 1024 cilindri SI - Utilizza un modello d'indirizzamento LARGE NO - Utilizza un modello di indirizzamento CHS Nel caso del nostro disco maxtor avremo: 1) Supporta l'LBA->settori 240121728 2) Indirizzamento CHS 16384/1663 3) Indirizzamento LBA 240121728 4) Indirizzamento CHS attraverso l'extended int 13h (14946/255/63) 5) Indirizzamento CHS attraverso l'int 13h 1024/16/63. E' una trattazione semplificata, di cui posso approfondire ogni aspetto se t'interessa. |
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Codice:
void lba2chs(unsigned int LinearBlock, unsigned int * Cylinder, unsigned short * Head, unsigned short * Sector) { word_t Temp = LBA % (GetMaxDiskHeads() * GetMaxDiskSectors()); (*Cylinder) = LBA / (GetMaxDiskHeads() * GetMaxDiskSectors()); (*Head) = Temp / GetMaxDiskSectors(); (*Sector) = Temp % GetMaxDiskSectors() + 1; } ![]() Codice:
GetDiskInfo: mov ah, 0x08 mov dl, 0x80 xor di, di xor bx, bx mov es, bx int 0x13 ret GetMaxDiskSectors: call GetDiskInfo xor ch, ch and cl, 0x3F mov ax, cx ret GetMaxDiskCylinders: call GetDiskInfo xchg cl, ch and ch, 0xC0 shr ch, 6 mov ax, cx ret GetMaxDiskHeads: call GetDiskInfo xor ah, ah mov al, dh ret ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:49.