Esercitazione n. 10

La macchina di Von Neumann

Oggi proviamo ad usare un emulatore della macchina di Von Neumann per eseguire semplici programmi scritti in linguaggio macchina (anche quelli che avete fatto per esercizio, se non li avete fatti ... c'è tempo adesso ...) in modalità interattiva (o batch).
Trovate l'emulatore e tutte le informazioni per installarlo localmente sulle vostre macchine e usarlo all'indirizzo http://gnu.disi.unige.it

Salvare il lavoro

Unix (Linux) mette a disposizione alcuni programmi utili per fare archivi e copie di riserva (backup) dei propri file.

Essi svolgono le funzioni di:

ARCHIVIAZIONE
Mettere molti file in un unico archivio per manipolarli come un tutto unico.
COMPRESSIONE
Codificare il contenuto di un file in maniera compatta per ridurne l'occupazione di spazio sul filesystem o di banda sulla rete.

NOTA - Esistono anche programmi che svolgono le due funzioni insieme: per esempio, su Windows, WinZIP produce archivi compressi.

Su Unix, i programmi tendono a fare ciascuno una unica funzione, visto che (p.es. con meccanismi di pipeline e redirezione) è molto facile poi combinare le varie funzioni.

ARCHIVIAZIONE con il programma tar

tar - tape archiver

Originariamente creato per fare backup su nastro, si può usare anche per scrivere su file-archivio da mettere dove si vuole.

Come si usa?

Ci sono diverse operazioni da fare su un archivio; quelle che ci interessano sono le principali:

Crea un nuovo file archivio a partire da un elenco di file:
tar -cf <archivio.tar> <lista di file e directory>
Elenca il contenuto di un file archivio:
tar -tf <archivio.tar>
Estrai il contenuto di un file archivio:
tar -xf <archivio.tar>

Nella creazione degli archivi, le directory vengono esplorate ricorsivamente. Nella estrazione, tutta la struttura di directory archiviata viene ricreata nella directory corrente.

ESERCIZIO - Archiviare il contenuto della propria home directory in un file username.tar (usare il proprio username)

COMPRESSIONE con il programma gzip

gzip - gnu zip

Applica un efficiente algoritmo di compressione a un file, elimina la versione originale del file e la sostituisce con la versione compressa (stesso nome con aggiunto il suffisso .gz).

gunzip - gnu unzip

Applica l'algoritmo di decompressione a un file compresso con gzip, elimina la versione compressa del file e la sostituisce con la versione originale ricreata.

Come si usa?

Per comprimere il file miofile:

gzip miofile

Per comprimere al massimo il file miofile

gzip --best miofile

Per decomprimere il file miofile:

gunzip miofile.gz

ESERCIZIO - Comprimere l'archivio username.tar precedentemente creato. Confrontare la dimensione prima e dopo la cura.

COMPRESSIONE con il programma compress

compress - compress

Applica a un file un algoritmo di compressione (meno efficiente di quello di gzip), elimina la versione originale del file e la sostituisce con la versione compressa (stesso nome con aggiunto il suffisso .Z).

uncompress - uncompress

Applica l'algoritmo di decompressione a un file compresso con compress, elimina la versione compressa del file e la sostituisce con la versione originale ricreata.

Come si usa?

Come gzip ma senza l'opzione --best.

Perché si usa, se c'è gzip?

Compress è un comando di sistema che si trova su tutti gli Unix, anche quelli dove non c'è gzip. Si usa quando si vuole essere sicuri della portabilità (p.es. se scrivo uno script di installazione di un mio programma che distribuirò in rete).

Gzip tuttavia è molto diffuso (perfino su DOS; su Windows i file .gz possono essere letti da WinZIP, anche se non scritti, così come i file .tar.gz). Quindi l'uso di compress è sempre meno necessario.