Pages: 1 2 [3]   Go Down
Print
Author Topic: Esercizio Bitmap  (Read 8147 times)
0 Members e 2 Utenti non registrati stanno visualizzando questa discussione.
Luxandro
Apprendista Forumista
**
Offline Offline

Posts: 307



« Reply #30 on: 18-07-2012, 12:20:53 »

Ma indipendentemente dal testo il concetto credo sia lo stesso. Se lo spazio libero è frammentato ci sono due soluzioni: deframmentare o utilizzare liste collegate
« Last Edit: 18-07-2012, 12:55:14 by Luxandro » Logged

"Quando non stai guardando è come un'onda. Quando guardi è come una particella!"
milos224
Forumista
***
Offline Offline

Posts: 830


« Reply #31 on: 18-07-2012, 12:31:37 »

Ma indipendentemente dal fatto che ci sia o meno nel libro il concetto credo sia lo stesso. Se lo spazio libero è frammentato ci sono due soluzioni: deframmentare o utilizzare liste collegate
Ho trovato un esercizio sul web che è uguale praticamente a quello del compito.

Si consideri all'inizio la bitmap 1000 0000 0000 0000 dove 0 indicano i blocchi liberi, 1 quelli occupati.
Effettuare le operazioni di aggiunta di un file A di 6 blocchi, B di 5 blocchi, eliminare A, aggiungere C di 8 blocchi, rimuovere B.
Si supponga che il file system allochi sempre i blocchi di INDICE MINORE.
Logged
Jo
Matricola
*
Offline Offline

Posts: 22


« Reply #32 on: 22-07-2012, 17:44:08 »

Ma riguardo allo pseudo esercizio del compito, dopo la cancellazione di A,lo spazio libero teoricamente risulta frammentato e non c'è spazio per un blocco da 8,ovvero non ci sono blocchi contigui. In questo caso quindi si procede con la memory compaction??
Logged
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #33 on: 22-07-2012, 18:18:11 »

Si credo anche io che ci sia un errore quando si cancella B, è stato dimenticato un bit, comunque sembra corretto come ragionamento.
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #34 on: 05-09-2012, 16:28:23 »

Non so se è errore mio o se ne ho trovato un altro ma mi sembra che verso la fine si cancelli il bit root al posto di B.

start:  1000 0000 0000 0000
A=6:   1111 1110 0000 0000
B=5:   1111 1111 1111 0000
Del(a) 1000 0001 1111 0000
C=8:

Memory Compaction poichè non ho spazio per C=8

1111 1100 0000 0000

C=8: 1111 1111 1111 1100

Del(B): 1000 0011 1111 1100     //L' uno iniziale si dovrebbe mantenere in quanto radice.

Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Andrea2990
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 235



WWW
« Reply #35 on: 06-09-2012, 12:41:16 »

Sono stato a ricevimento dal prof ieri e mi ha spiegato l'esercizio.
Innanzi tutto, ha sottolineato che non vi è alcun riferimento all'allocazione contigua, quindi non ha senso utilizzare memory compaction e cose simili.

L'esercizio chiede solo di memorizzare e cancellare sui blocchi a partire da quelli di indice minore (in poche parole, a partire da sinistra).

Evidenzio le operazioni passo passo con l'ausilio del grassetto.

Start:
1000 0000 0000 0000

Inserisco A (6 blocchi)
1111 1110 0000 0000

Inserisco B (5 blocchi)
1111 1111 1111 0000

Cancello A
1000 0001 1111 0000

Inserisco C (8 blocchi, non è richiesta allocazione contigua, basta trovare 8 blocchi liberi e memorizzare da sinistra a destra)
1111 1111 1111 1100

Cancello B
1111 1110 0000 1100

Fine.
Da notare come nell'ultima operazione stiamo realmente cancellando i blocchi di memoria dove risiede B, a differenza della soluzione proposta da Daréios89 (ovviamente non lo dico in tono accusatorio, è solo per rendere il concetto), nella quale venivano cancellati i blocchi immediatamente successivi alla root, nei quali invece risiede parte di C.
Logged
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #36 on: 06-09-2012, 13:59:47 »

Perfetto....quindi l' errore di fondo stava nell' eseguire la memory compaction...
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Andrea2990
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 235



WWW
« Reply #37 on: 06-09-2012, 14:19:24 »

L'errore sta nel pensare che si debba fare con l'allocazione contigua. La memory compaction è una tecnica per evitare il blocco, in quel caso. Ma svolgendo l'esercizio come detto prima non si verificano blocchi.
Logged
jos90
Apprendista Forumista
**
Offline Offline

Posts: 171



« Reply #38 on: 24-09-2012, 10:47:10 »

Scusate ragazzi volevo sapere: cosa accade nel momento in cui è necessaria l'allocazione contigua? Il memory compaction, citando il libro, è una tecnica che combina molteplici spazi vuoti in un unico spazio vuoto spostando tutti i processi il più in basso possibile. Quindi supponiamo che stiamo spostando nella creazione di C, per necessità di allocazione contigua, tutti i bit del blocco B in modo tale da avere un unico blocco di spazio vuoto: verso il basso si intende verso la root? O ad allontanarsi?
Logged

Perchè non pensi di non capire, quando capisci di non pensare?
Pages: 1 2 [3]   Go Up
Print
Jump to: