PDA

View Full Version : dimensione settori hard disk


x110
26-11-2002, 10:35
come posso sapere la dimensione dei settori degli hard disk?
esiste un'api?
mi sembra che la getvolumeinformation non funzioni a questo scopo.

grazie.:D

misterx
27-11-2002, 21:00
GetDiskFreeSpace(........);

ma se non ricordo male ha qualche limite

cionci
28-11-2002, 10:04
Ma dei settori o dei cluster ?

x110
28-11-2002, 10:51
spiego meglio il mio problema:

linguaggio VB6.
non permette di scrivere in asm

devo accedere a una funzione dos che scrive e legge
direttamente dall'hard disk a basso livello

ho trovato un vxd che mette a disposizione tutte le funzioni dos
e bios passandogli una struttura con la quale verranno riempiti i
registri del processore prima di chiamare l'int.

la struttura richiesta contiene tra altri dati quello della
dimensione del settore.(come me lo ricavo)?

mi spieghereste una volta per tutte la differenza tra traccie,
cluster, settori,ecc....? grazie

cionci
28-11-2002, 16:13
Il cluster è la dimensione minima indirizzabile dal sistema operativo...

La suddivisone in cluster logica in cluster viene effettuata durante la formattazione...

I cilindri dovrebbero essere le varie circonferenze concentriche su cui vengono memorizzati fisicamente i dati...

I settori sono siddivisioni (che passano dal centro) a spicchi della superficie del disco...

Le testine sono invece le testine di lettura che si occupano di leggere solo una determinata superficie del disco (o una porzione della superficie)...

Quindi invidiuando sia un cilindro testina e traccia si possono individuare una serie di dati su una determinata superficie del disco...

Il sistema operativo mantiene una tabella all'inizio del disco in cui scrive le varie catene di cluster che un file occupa...

Ci dovrà essere una routine del sistema operativo che si occupa di tradurre l'indice del cluster nelle coordinate CHS (Cylinder Head Sector)...

x110
28-11-2002, 17:11
non voglio essere puntiglioso ma
cilindro e traccia non sono la stessa cosa?

quindi per indirizzare un punto io necessitero' di cordinate

x=cilindro o traccia
y=settore
z=testina

e'giusto?

so che la dimensione dei settori di un floppy e' sempre di 512 byte ed esistono 2880 settori

in questo caso quanto e' grande il cluster?

cionci
28-11-2002, 17:51
Originariamente inviato da x110
[B]non voglio essere puntiglioso ma
cilindro e traccia non sono la stessa cosa?

Non lo so...
Originariamente inviato da x110
[B]x=cilindro o traccia
y=settore
z=testina

e'giusto?

Dipende come la vedi... Il cilindro è la distanza dal centro (in realtà il primo cilindro dovrebbe essere quello più esterno)...
Il settore è la posizione sulla circonferenza del cilindro (quindi non è un asse)...
La testina la puoi vedere anche come Z...

Lo puoi associare ad un sistema di coordinate cilindrico...
Originariamente inviato da x110
[B]so che la dimensione dei settori di un floppy e' sempre di 512 byte ed esistono 2880 settori

Guarda cosa rende il chkdsk del floppy :

512 byte in ogni unità di allocazione.
2.847 unità totali di allocazione su disco.

Le unità di allocazione sono i cluster...ed in questo caso dovrebbero corrispondere con la dimensione della parte di dati individuata dal CHS...

In tal caso nei floppy i cilindri sono 80 e le testine 2 (facce)...

C = Clindri = 80
H = Testine = 2
S = Settori

S = 2880/(80*2) = 18 Settori

Il tipo di indirizzamente CHS reale comunque non viene più utilizzato... E' stato sostituito con un tipo di indrizzamento fittizio chiamato LBA (Logical Block Addressing, se guardi nel BIOS ci sono le modalità LBA, CHS, LARGE)...
Questo perchè il numero di cilindri era diventato troppo grande per utilizzare un indrizzamento reale (superiore a 1024)...
Con il metodo LBA c'è un ulteriore livello di traduzione effettuato dal BIOS o dal controller EIDE (mi sa di più il BIOS)...
Quindi le coordinate CHS che il sistema operativo passa alla routine dell'interrupt software che va a leggere sul disco non corrispondono più alla posizione reale in cui il disco andrà a scrivere... Come avvenga la traduzione non lo so... Probabilmente viene aumentato il numero delle testine e viene messo il numero di cilindri al massimo utilizzabile...

Secondo me quella che cerchi è la dimensione dei cluster e non dei settori... Anche perchè parlando solo di settori non si individua la più piccola parte indirizzabile del disco...ma il settore è l'intero spicchio del disco (dal centro all'esterno)...

cionci
28-11-2002, 18:19
Comunque come dice misterx...con la GetDiskFreeSpace puoi ottenere la dimensione del cluster e il numero di settori su cui sta il cluster...

x110
30-11-2002, 11:36
GRAZIE PER LE RISPOSTE.

ORA PROVO A VEDERE SE LA DIMENSIONE DEL CLUSTER DEL FLOPPY E' 512 BYTE POICHE'
IO HO UN PROGRAMMA DI ESEMPIO CHE UTILIZZA QUEL VXD CHE DICEVO PRIMA
E QUESTO DICHIARA UNA COSTANTE SECTORZIZE=512 QUANDO VUOLE LEGGERE DA FLOPPY.

cionci
30-11-2002, 11:38
Sul floppy sono sicuro... Ogni cluster occupa un solo settore...
Me lo ricordo dai vecchi CarbonCopy e DiskDupe ;)

MetalMassacre
30-11-2002, 14:39
Originariamente inviato da x110
[B]non voglio essere puntiglioso ma
cilindro e traccia non sono la stessa cosa?



le testine degli hd si muovono sui piu piatti in contemporanea determinando cosi un'area definita cilindro (in senso verticale..lo spazio occupato dalle testine allineate sui diversi piatti).

le tracce invece sono scritte concentricamente su ogni piatto
:)

cionci
30-11-2002, 19:01
Quindi un cilindro è l'insieme di tutte le tracce leggibili da quella posizione delle testine... Va bene ?

Torna...torna...

x110
30-11-2002, 23:48
X CIONCI

COSA SONO CARBONCOPY E ELTRO???

SONO MICA DEI COPIATORI?

SE COSI' FOSSE MI MANDI UN LINK DAL QUALE LI POSSO SCARICARE O SE LI HAI TU ME LI PUOI MANDARE?

GRAZIE.;)

x110
30-11-2002, 23:55
MA SCUSATE, I CILINDRI E LE TRACCE QUINDI SONO SEMPRE IN NUMERO UGUALE,
ANCHE SE UNO INDICA UNA TRACCIA SU UN DISCO MENTRE
L'ALTRO INDICA L'INSIEME DELLE TRACCE SUI VARI DISCHI.

ANCHE NEL CASO DEL FLOPPY TORNA POICHE QUESTO
HA 80 TRACCIE E 80 CILINDRI.

CHIEDO CONFERMA:
SE ESISTESSE UN HD CON 2 DISCHI CHE HA 1000 TRACCIE
I CILINDRI SAREBBERO SEMPRE 1000?

cionci
01-12-2002, 08:10
In pratica il cilindro indica quale traccia vuoi leggere utilizzando una determinata testina...
Quindi con 2 dischi uguali con 1000 tracce il numero di cilindri è 1000...

MetalMassacre
01-12-2002, 10:35
Originariamente inviato da cionci
[B]Quindi un cilindro è l'insieme di tutte le tracce leggibili da quella posizione delle testine... Va bene ?

Torna...torna...

Giustissimissimo :)

misterx
01-12-2002, 14:13

misterx
01-12-2002, 14:19
Originariamente inviato da misterx
[B]leggete qua: http://www.tutorialpc.it/hardisk.asp

e qua:
http://www.ghostcomputerclub.it/archivi/speciali/hard-disk.htm







http://ildp.pluto.linux.it/guide/GuidaSysadm/hd-schematic.png

x110
01-12-2002, 17:12
2 DOMANDE:

COME POSSO QUINDI RICAVARE LA DIMENSIONE DEL SETTORE?
(CHE PUO' ESSERE INTESO COME UN ARCO DI TRACCIA?)

COME FUNZIONA IL MODO DI INDIRIZZAMENTO DELL'LBA?
;)

cionci
01-12-2002, 18:35
GetDiskFreeSpace(........); ti rende il numero di settori occupati da ogni cluster...e anche la dimensione del cluster...quindi hai anche la dimensione del settore...

La modalità LBA opera solamente variando il numero di testine e cilindri logici... Quindi la dimensione del settore ricavata nel modo sopra dovrebbe rimanere costante...