home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / compress / misc / compressdisk / compressdisk.doc.ita < prev    next >
Text File  |  1995-02-27  |  11KB  |  240 lines

  1.            Compressdisk.device 37.14 (release 1.0)
  2.  
  3.                 di Antonio Schifano
  4.  
  5.  
  6.  
  7.  1 - Introduzione.
  8.  
  9. La compressione dei dati non è di certo una novità su Amiga: da diversi
  10. anni a questa parte esistono diversi programmi, sia commerciali, sia di
  11. pubblico dominio, in grado di soddisfare le esigenze di tutti gli utenti
  12. desiderosi di risparmiare spazio sui propri dischi. Si possono grosso modo
  13. distinguere due classi fondamentali di compressori: quella degli
  14. archiviatori (ZOO, LHARC, ecc.) e  quella dei compressori "file oriented"
  15. (COMPRESS, POWERPACKER, IMPLODER, ecc.). Il principale vantaggio degli
  16. archiviatori è la loro capacità di preservare la gerarchia dei file;
  17. ciononostante questi, una volta compressi, risultano praticamente
  18. inutilizzabili finché non vengono riestratti dagli archivi. I compressori
  19. "file oriented", invece, sacrificano un po' di efficienza in cambio di una
  20. maggiore usabilità: il PowerPacker, ad esempio, è in grado di lasciare
  21. eseguibili i programmi, e fornisce validi tools (come il PPMORE) che in
  22. qualche modo compensano la versatilità perduta con la compressione (i file
  23. di testo, ad esempio, potranno essere letti ma non più modificati, a meno
  24. di non decomprimerli prima). Il compressdisk.device cerca in qualche modo
  25. di ovviare ai difetti di entrambi i tipi di compressori tramite un diverso
  26. approccio al problema.
  27.  
  28.  
  29.  
  30.  
  31.  2 - Cos'è il compressdisk.device?
  32.  
  33. Come può risultare ovvio per il suo nome, si tratta fondamentalmente di un
  34. device di Exec, simile nel modo di operare al fmsdisk.device di Matt
  35. Dillon. Come questo, infatti, permette di creare dischi virtuali le cui
  36. tracce vengono salvate su un file. Se ne  differenzia però per il fatto
  37. di usare un file per ogni traccia, e di comprimere le tracce. Così facendo
  38. permette di creare partizioni virtuali sul proprio hard-disk,
  39. indistinguibili da un punto di vista operativo dalle altre partizioni,
  40. aventi il considerevole vantaggio che tutti i file che vi vengono scritti
  41. vengono automaticamente compressi (e ovviamente, vengono decompressi in
  42. fase di lettura).
  43.  
  44.  
  45.  
  46.  
  47.  3 - Installazione.
  48.  
  49. Il device può essere installato solo su Amiga con kickstart V37+.
  50. L'installazione è quasi completamente automatica; i programmi "CDInstall"
  51. e "CDPartition" si preoccupano di copiare tutti i file necessari al
  52. funzionamento del device nelle opportune directory. In particolare:
  53.  
  54.  - Il file "compressdisk.device" viene copiato nella directory DEVS:
  55.  - Viene creata una entry nel file DEVS:mountlist per ogni partizione
  56.    virtuale desiderata. Se si sta usando il Workbench V38+ l'entry viene
  57.    creata nella directory DEVS:DOSDrivers.
  58.  - Il preference editor "CDPrefs" viene copiato nella directory SYS:Prefs.
  59.  
  60. Per il corretto funzionamento del device è però necessario modificare
  61. manualmente la propria startup-sequence, aggiungendo la seguente linea
  62. subito dopo il comando SetPatch:
  63.  
  64.    assign CDISK: <directory>
  65.  
  66. ove <directory> è il percorso completo della directory nella quale si
  67. vuole che il device salvi le tracce compattate.
  68. In caso contrario, le tracce verranno salvate nella directory principale
  69. del  disco dal quale si è fatto il boot.
  70. Una volta "montate" le partizioni virtuali bisognerà inizializzarle; a
  71. questo scopo basta usare il comando di sistema "format". Si noti che il
  72. device salva su disco solo le tracce che sono state scritte almeno una
  73. volta; è quindi consigliable formattare le partizioni virtuali usando il
  74. modo QUICK: si eviterà così di occupare spazio inutile sul proprio
  75. hard-disk, risparmiando contemporaneamente un significativo (!) lasso di
  76. tempo (formattare una partizione di 40M richiederebbe più di mezz'ora su un
  77. Amiga 500 standard).
  78. Allo scopo di velocizzare le operazioni di lettura/scrittura il device
  79. mantiene una cache con le tracce di più recente accesso; la dimensione
  80. della cache, configurabile dall'utente mediante il preference editor
  81. CDPrefs, va da un minimo di una traccia ad un massimo di trentadue. La
  82. configurazione di default prevede l'uso di otto buffer di traccia per ogni
  83. unit; da prove sperimentali il device è risultato usabile anche con quattro
  84. o, volendo proprio risparmiare memoria, con due tracce, mentre con una
  85. traccia si nota un decadimento delle prestazioni, soprattutto in fase di
  86. scrittura.
  87.  
  88.  
  89.  
  90.  
  91.  4 - Come utilizzare compressdisk.device.
  92.  
  93. Le partizioni virtuali create con il compressdisk.device vanno usate in
  94. maniera perfettamente standard; tuttavia, è preferibile seguire qualche
  95. accorgimento per evitare spiacevoli sorprese.
  96. Per prima cosa, è consigliabile non scrivere su nessuna partizione virtuale
  97. se il disco di lavoro del device è quasi pieno: potrebbe accadere che il
  98. device non riesca a scrivere qualcuna delle tracce compattate, con
  99. conseguente perdita di dati. Inoltre, è opportuno evitare di usare le
  100. partizioni virtuali per il transito temporaneo di file: si tenga presente
  101. che cancellando un file (sul file system standard) ci si limita a
  102. "sganciarlo" dalla directory a cui appartiene; il file continua a risiedere
  103. sul disco (tanto che può essere recuperato con apposite utility), almeno
  104. finché il file system non sovrascrive i settori che lo contenevano. Sulle
  105. partizioni virtuali questo si traduce nel fatto che cancellando un file NON
  106. si libera spazio sul disco di lavoro del device.
  107. Le partizioni virtuali create con il programma di partizionamento usano il
  108. Fast File System; questa scelta non è obbligata: volendo, è possibile
  109. usare qualsiasi altro file system. Si tenga però presente che lo Standard
  110. File System e la corrispondente versione internazionalizzata, per la loro
  111. caratteristica di riservare parte dei blocchi dati per informazioni
  112. interne, possono avere un impatto notevole sulla percentuale di
  113. compressione delle tracce; il loro uso è pertanto sconsigliato.
  114.  
  115.  
  116.  
  117.  
  118.  5 - L'algoritmo di compressione.
  119.  
  120. La scelta più determinante nella realizzazione del device è stata quella
  121. dell'algoritmo di compressione delle tracce: risulta infatti abbastanza
  122. chiaro come le prestazioni siano intrinsecamente dipendenti da quelle del
  123. compressore e del decompressore. Fondamentalmente, era necessario che
  124. l'algoritmo fosse veloce, che non occupasse molta memoria e che la
  125. percentuale di compressione fosse ragionevole. La scelta è alla fine
  126. ricaduta su un algoritmo ideato da Ross Williams e da questi battezzato
  127. LZRW3-A, che richiede solo 16K di memoria di lavoro, e comprime mediamente
  128. del 54%. La versione da me riscritta ed ottimizzata in assembler ha una
  129. velocità di 16K/sec in fase di compressione, e di 64K/sec in fase di
  130. decompressione (su un 68000 a 7.16MHz). La seguente tabella mostra a titolo
  131. di esempio i risultati ottenuti comprimendo due file di testo, un
  132. eseguibile, una link library e un modulo soundtracker:
  133.  
  134.  -------------------+------------+-----------+--------+----------+----------
  135.   file            | dim. ante  | dim. post | % comp | K/sec c. | K/sec d.
  136.  -------------------+------------+-----------+--------+----------+----------
  137.   intuition.doc     |      237916 |     98950 |    58.4  |  19.07     |  84.80
  138.   dkbffp        |      144648 |     81606 |    44.6  |  13.17     |  60.36
  139.   dkb212.doc        |      157458 |     74523 |    52.7  |  17.43     |  76.12
  140.   amiga.lib        |      157880 |     43866 |    72.2  |  26.40     | 118.60
  141.   mod.trial        |      108946 |     86847 |    20.3  |   8.35     |  39.99
  142.  
  143.  
  144. Per ulteriori dettagli sull'algoritmo LZRW3-A si rimanda alla
  145. documentazione originale fornita da Ross Williams (directory
  146. "pub/compression" del nodo FTP sirius.itd.adelaide.edu.au
  147. [IP=129.127.40.3]).
  148.  
  149.  
  150.  
  151.  6 - Implementazione.
  152.  
  153. Da un punto di vista tecnico, il compressdisk.device può apparire  un po'
  154. anomalo, nel senso che sembra violare la struttura a livelli dell'Amiga OS.
  155. E' infatti insolito che un device usi il DOS, poichè questo si trova ad un
  156. livello logicamente superiore. La gerarchia fra handler e device è solo
  157. funzionale: i device sono usati per la gestione delle risorse fisiche
  158. (eventualmente virtuali) e gli handler per le risorse logiche del S.O.
  159. Pertanto è lecito che un device implementi i propri meccanismi di accesso
  160. alle risorse usando una risorsa logica del S.O., purché i processi che lo
  161. usano non siano a conoscenza dell'implementazione dei meccanismi del
  162. device.
  163.  
  164. Il nucleo operativo è rappresentato da un processo che si occupa
  165. di soddisfare tutte le richieste di I/O che giungono al device: quando
  166. viene ricevuto un comando CMD_READ, il processo carica e decomprime tutte
  167. le tracce necessarie a soddisfare la richiesta; in maniera del tutto
  168. analoga, quando viene ricevuto un comando CMD_WRITE o CMD_FORMAT il
  169. processo compatta e scrive le tracce. Quando possibile, viene fatto ampio
  170. uso della cache sia in fase di lettura, sia in quella di scrittura: in
  171. lettura si evita di rileggere una traccia se questa si trova già in uno dei
  172. buffer, mentre in scrittura si modificano i buffer evitando, finché
  173. possibile, di compattarli e riscriverli. L'aggiornamento delle tracce sul
  174. disco viene comunque effettuato quando viene ricevuto un comando
  175. CMD_UPDATE, garantendo in questo modo la consistenza dei dati.
  176. Il numero di buffer, come già detto, è configurabile e può variare da un
  177. minimo di 1 ad un massimo di 32. Ogni traccia è composta da 64 settori di
  178. 512 byte ognuno, per un totale di 32K. La quantità di memoria richiesta dal
  179. device per il funzionamento è di circa 60K, più 32K per ogni buffer di
  180. traccia.
  181. Il device pone a 65000 il limite superiore per il numero di traccia. La
  182. dimensione massima di una partizione virtuale è pertanto 2031.25M.
  183.  
  184.  
  185.  
  186.  7 - Ringraziamenti.
  187.  
  188.  
  189. Per la realizzazione del device desidero ringraziare le seguenti persone,
  190. in ordine sparso:
  191.  
  192.  - Raffaele Dell'Aversana, per le discussioni accademiche preliminari alla
  193.    realizzazione del device, nonché per il programma di installazione;
  194.  
  195.  - Ross N. Williams, per l'algoritmo di compressione/decompressione dati;
  196.  
  197.  - Jan van den Baard, per l'utility GadToolsBox;
  198.  
  199.  - Giuseppe Sacco, per l'utility ZeroUno (!);
  200.  
  201.  - Gli organizzatori di I.P.I.S.A. '92;
  202.  
  203.  - Letizia Schifano, per nessun motivo in particolare.
  204.  
  205.  
  206.  
  207.  8 - Copyright/distribuzione.
  208.  
  209. Compressdisk.device,  Copyright © 1992 Antonio Schifano.
  210. Tutti i diritti sono riservati. Questo programma è SHAREWARE; la quota da
  211. corrispondere per l'uso è di Lit. 15000 per gli utenti italiani, ovvero 20
  212. DM per gli utenti della Comunità Europea, ovvero 20USD per tutti gli altri.
  213. L'archivio con il programma può essere liberamente distribuito, purchè
  214. inalterato nel contenuto; può essere incluso nei dischi di software di
  215. pubblico dominio, a patto che non si ricavi alcun profitto dalla loro
  216. vendita; può essere distribuito elettronicamente via BBS, FTP e simili. E'
  217. espressamente proibito l'uso del programma per motivi commerciali senza il
  218. permesso scritto dell'autore.
  219. L'autore non può in nessun caso essere ritenuto responsabile per qualsiasi
  220. danno causato direttamente o indirettamente dal programma; al contrario,
  221. l'utente si assume tutte le responsabilità nel momento in cui decide di
  222. usarlo.
  223. Suggerimenti, bug report e commenti sono bene accetti.
  224.  
  225. Per registrarsi inviare l'apposito modulo (stampato o ricopiato) a:
  226.  
  227.                     Antonio Schifano
  228.                     via Don Bosco, 3/28
  229.                     56100 Pisa, Italy
  230. (valido fino al 31 Gennaio 1993);
  231.  
  232.                     Antonio Schifano
  233.                     via dell'Oca, 11
  234.                     91100 Trapani, Italy
  235. (valido sempre);
  236.  
  237. L'indirizzo FidoNet è: 2:332/607.666
  238.  
  239.  
  240.