 | |
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum |
esercizio scritto giugno 09 Clicca QUI per vedere il messaggio nel forum |
zigio |
Ciao a tutti! Qualcuno sa come va fatto questo esercizio (prova di giugno):
calcolare il numero di blocchi necessari per un file di 10 MB , con ogni blocco di dimensioni 4096 B e indirizzi di 64 bit.
risposte possibili: 2561, 2562, 2563, 2565, 2564 |
alby858585 |
Allora ho provato a svolgere questo esercizio ma il risultato non torna (sicuro che i possibili risultati che hai messo sono corretti??)
L'ho pensato così:
- File: 10MB
- Blocco: 4KB -> che corrisponde a 4096B = 32768 bit
- Indirizzi:64 bit
Dato che un inode punta direttamente ad un massimo di 7 blocchi di memoria (7*4096B = 28KB) quei blocchi sono inutili perchè non riescono a contenere l'intero file.
A queso punto provo ad usarlo con 1 grado di indirettezza:
- l'inode punta ad un blocco composto da 32768bit/64bit = 512 linee (blocchi indirizzabili). 512 * 4096B = 2MB e quindi anche con un grado di indirettezza non riesco a salvare l'intero file.
Ora provo con una doppia indirettezza:
- abbiamo l'inode che punta ad un blocco di 512 indirizzi (stesso calcolo fatto prima); questi indirizzi puntano ad altri 512 blocchi che, a loro volta puntano a 512 blocchi di memoria fisica ma, di questi ultimi, ne utilizzo solo 5:
ogni blocco punta quindi a 2MB del file (512*4096), quindi 2MB * 5 = 10MB
quindi in totale uso: 512x5 + 5 blocchi + 1 (il blocco cui punta l'inode) = 2566 che, come puoi vedere, non corrisponde a nessuna delle possibili risposte.
Il procedimento mi sembra corretto...c'è da capire solo il numero di blocchi esalti da contare.... non so...se qualcuno ha qualche idea la esponga plz, l'esame è tra meno di una settimana e mi piacerebbe arrivarci un minimo preparato :D |
zigio |
Riporto la risposta di un mio collega
Esercizio:
calcolare il numero di blocchi necessari per un file di 10 MB , con ogni blocco di dimensioni 4096 B e indirizzi di 64 bit dove ogni i-node aveva 7 locazioni per l'indirizzamento diretto
Comunque, procediamo:
Con indirizzi a 64bit, ogni indirizzo sono 8B, quindi in ogni blocco ci stanno 512 indirizzi
Il file è di 10MB = 10240KB = 10485760B, quindi per l'archiviazione dei soli dati sono necessari 10485760B / 4096B/blocco = 2560 blocchi
1 blocco è usato dall'i-node, che punta a 7 blocchi, ne restano da puntare 2553
1 blocco è usato dall'indirizzamento ad una indirezione, che punta altri 512 blocchi, ne restano 2041
1 blocco è usato dal primo stadio dell'indirizzamento a doppia indirezione, cui fanno capo
4 blocchi per puntare altri 2048 blocchi, di cui 7 indirizzi resteranno liberi
Facendo i conti, 2560 + 1 + 1 + 1 + 4 = 2567, non è tra le risposte, mi sa che avevano fatto una cappella... infatti, se immaginiamo indirizzi a 32 bit, ogni indirizzo sono 4B, quindi in ogni blocco ci stanno 1024 indirizzi.
Sempre 2560 blocchi per i dati, restano i metadati
1 blocco è usato dall'i-node, che punta a 7 blocchi, ne restano da puntare 2553
1 blocco è usato dall'indirizzamento ad una indirezione, che punta altri 1024 blocchi, ne restano 1529
1 blocco è usato dal primo stadio dell'indirizzamento a doppia indirezione, cui fanno capo
2 blocchi per puntare altri 2048 blocchi, di cui 505 indirizzi resteranno liberi
Totale, 2560 + 1 + 1 + 1 + 2 = 2565 |
|
|
|
|