From: Andrea Manni Date: Wed, 6 May 2009 15:19:52 +0000 (+0200) Subject: First commit, previously hosted on bender. X-Git-Url: http://git.piffa.net/web?a=commitdiff_plain;h=f3ef44ad05f1972c8084d24e44efb6a7aeaecd0b;p=doc%2F.git First commit, previously hosted on bender. --- f3ef44ad05f1972c8084d24e44efb6a7aeaecd0b diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0c32c3a --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# List of ignored files for the rep: +# wild card are fine too. +HEADER.html +doc.git diff --git a/backup.html b/backup.html new file mode 100644 index 0000000..7b3a4be --- /dev/null +++ b/backup.html @@ -0,0 +1,1084 @@ + + + + + + + + + + Back up + + + + +
+

Back up

+ +

Appunti + introduttivi alle strategie di bak-up

+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
Author:Andrea Manni
Copyright:GFDL
Version:0.1
+
+ + + +

Generato con: + http://docutils.sourceforge.net/rst.html

+ +
+

Scegliere i supporti + di back-up

+ +

Prima di cominciare le procedure di back-up e' + fondamentale decidere su quale supporto di memorizzazione + fare i back up:

+ +
+
    +
  • +

    su un file system diverso diverso da + quello oggetto di back-up.

    +
  • + +
  • +
    +
    Utilizzare possibilmente un supporto di + storaggio:
    + +
    +
      +
    • Esterno, collegato ad una fonte di + alimentazione indipendente dalla macchina + principale. In caso di danneggiamento del + filesystem originale causato da sbalzo elettrico, + il supporto di back up potrebbe essere + sopravvissuto.
    • + +
    • Possibilmente Write Once Read Many, + che si possa leggere piu' volte ma scrivibile una + sola. Questo per scongiurare la possibilita' di + accidentali modifiche ai dati contenuti sul + supporto di back-up. Nel caso si usi un normale + hard-disk assicurarsi che sia montato in sola + lettura (quando non si e' nella finestra + temporale necessaria per la scrittura del + back-up).
    • + +
    • Possibilmentte dislocato in altra sede, in + caso di incendio, vandalismi, eventi che possano + danneggiare anche le macchine vicine a quella di + nostro interesse. Si consideri la possibilita' di + usare uno spazio di back up remoto in un altro + continente, una cassetta di sicurezza nella banca + di fiducia per i dati particolarmente + sensibili (dati personali, segreti + aziendali, chiavi di sistemi di + criptaziuone).
    • +
    +
    +
    +
  • + +
  • +

    S i tenga sempre presente che l'evento + che puo' compromettere i dati potrebbe compromettere + anche i back-up, e che nessun supporto di storaggio ha + un aspettativa di vita infinita. Gli hard-disk + prima o poi smetteranno di funzionare correttamente, il + back-up va' quindi preparato prima + piuttosto che dopo.

    +
  • +
+
+ +
+

Possibili eventi che + possono compromettere i supporti di sotoraggio:

+ +

Sostanzialmente qualunque evento che possa modificare i + dati, o renderli non piu' leggibili per motivi fisici + (rottura hardware):

+ +
+
    +
  1. virus
  2. + +
  3. errore di distrazione (cancellazione accidentale, + sovrascrittura di vecchie versioni...)
  4. + +
  5. Aggiornamento software non riuscito
  6. + +
  7. problema hardware (hard disk fail)
  8. + +
  9. Incendio! Terremoto! Pestilenze!
  10. +
+
+ +
+
1,2,3) sono tutte cose che possono modificare i files + (da software):
+ +
+
    +
  • Li mettiamo in sola lettura, non scrittura. Cosi' + non si puo' modificarli accidentalmente I + back-up devono essere in sola lettura
  • +
+
+
+ +
    +
  1. I dati vanno tenerli su un supporto fisico diverso + dall'originale, Possibilmente collegato ad un altro + sistema. Il problema principale e' l'alimentazione: + quindi un HD esterno con alimentazione autonoma e' gia' + un miglioramento.
  2. + +
  3. Dislocare i media, tenerli in luoghi separati. Tenere + una copia in una banca, su un server remoto tramite gli + appositi servizi online.
  4. +
+
+
+
+ +
+

Come si fa il + back-up

+ +
    +
  • Si stabilisce dove e come fare i back up
  • + +
  • Si fanno fisicamente i back up
  • + +
  • Si ripristina un back up per vedere se + tutto funziona
  • + +
  • Periodicamente si fa un ripristino per vedere se i back + up sono ancora utilizzabili.
  • +
+
+ +
+

Strategia di + back-up

+ +

Bisogna stabilire una strategia di back-up:

+ +
+
    +
  1. Decidere cosa possa essere back + uppato. Dato che le risorse di storaggio sono + limitate
  2. + +
  3. Quando e quanto spesso fare il back up. Anche questo + inciude sulla quantita' di aspazio necessario. Aiuterebbe + poter creare un back up incrementale.
  4. +
+
+ +
+
Per il punto primo:
+ +
+
    +
  1. Bisogna fare un'alisi dei dati. Dimensioni, natura + dei file (se sono binari o testo) Un file di + testo si puo' comprimere, o si puo' + tenere una versione incrementale. Un file binario (tipo + un mp3, un progetto...) non e' comprimibile o + spezzettabile.
  2. + +
  3. Analisi dell'utilizzo dei dati: quanto spesso vengo + utilizzati, da chi, a quale scopo, quanto spesso + cambiano i dati.
  4. +
+
+
+
+ +
+

Gestione dei back + up:

+ +

Si potrebbe fare una copia semplce con cp. Il + sistema e' semplice e gestibile.

+ +
+
Es:
+ +
`` # cp -ar sorgente destinazione/``
+
+ +
+

Esercizio con le + patch

+ +
+
+ 502 mkdir patch +
+ +
+ 503 cd patch/ +
+ +
+ 504 ifconfig > rete +
+ +
+ 505 cat rete +
+ +
+ 506 cp rete rete_new +
+ +
+ 507 vim rete_new +
+ +
+ 508 tail rete +
+ +
+ 509 tail rete_new +
+ +
+ 510 vimdiff rete rete_new +
+ +
+ 511 diff rete rete_new +
+ +
+ 512 diff rete rete_new > rete_patch +
+ +
+ 513 mkdir paccio +
+ +
+ 514 cp rete rete_patch paccio/ +
+ +
+ 515 cd paccio/ +
+ +
+ 516 ls +
+ +
+ 517 ls -sh +
+ +
+ 518 patch rete < rete_patch +
+ +
+ 519 cat rete +
+ +
+ 520 tail ../rete +
+ +
+ 521 ls +
+ +
+ 522 ls +
+ +
+ 523 gunzip rete +
+ +
+ 524 gunzip -h +
+ +
+ 525 gunzip rete > rete.gz +
+ +
+ 526 man gunzip +
+ +
+ 527 gzip -c rete > rete.gz +
+ +
+ 528 ls -sh +
+ +
+ 529 du -sh ./* +
+ +
+ 530 vim rete.gz +
+ +
+ 531 cd ../../ +
+ +
+ 532 history >patch +
+ +
+ 533 history >patch.txtx +
+
+
+ +
+

Storia del + backup

+ +
+
+ 252 cfdisk /dev/hda +
+ +
+ 253 reboot +
+ +
+ 254 cat /proc/partitions +
+ +
+ 255 cfdisk /dev/hda +
+ +
+ 256 cd /mnt/ +
+ +
+ 257 ls +
+ +
+ 258 mount /dev/hda8 hda8/ +
+ +
+ 259 mount /dev/hda10 hda10/ +
+ +
+ 260 mount +
+ +
+ 261 umount hda10 +
+ +
+ 262 mkfs.ext3 /dev/hda10 +
+ +
+ 263 mount /dev/hda10 hda10/ +
+ +
+ 264 ls hda10/ +
+ +
+ 265 ls hda8/ +
+ +
+ 266 time cp -arv /mnt/hda8/ /mnt/hda10/ +
+
+ +

Controllare da un'altra shell che la copia stia + avanzando correttamente mentre e' in corso.

+
+ +
+

Ripristino sistema + con rsync

+ +
+
+ 281 cd /mnt/ +
+ +
+ 282 ls +
+ +
+ 283 mount +
+ +
+ 284 mount /dev/hda8 /mnt/hda8/ +
+ +
+ 285 mount /dev/hda10 /mnt/hda10/ +
+ +
+ 286 mount +
+ +
+ 287 ls hda8/ +
+ +
+ 288 ls hda10/hda8/ +
+ +
+ 289 rsync -arv --delete /mnt/hda10/hda8/* /mnt/hda8/ +
+
+
+ +
+

Esercizio con + rsync

+ +
+
+ * E' stata creata una cartella originale e un'altra nominata + copie. +
+ +
+ * E' stata fatta una copia di originale in copie: linea + 519 +
+ +
+ * varie prove a seguire, ancghe con l'opzione + --delete (che potete cercare nella + pagina MAN di rsync) +
+ +
+ * Rsync usando una destrinazione remota tramite ssh: + linea 547 +
+ +
+
+
+ +
+
+ 512 mkdir originale +
+ +
+ 513 cd originale/ +
+ +
+ 514 touch primo secondo terzo +
+ +
+ 515 cd ../ +
+ +
+ 516 ls -l originale/ +
+ +
+ 517 mkdir copie +
+ +
+ 518 rsync originale copie/ +
+ +
+ 519 rsync -r originale copie/ +
+ +
+ 520 ls +
+ +
+ 521 tree -l3 +
+ +
+ 522 tree -L3 +
+ +
+ 523 tree -L 3 +
+ +
+ 524 cd originale/ +
+ +
+ 525 ls +
+ +
+ 526 touch quarto +
+ +
+ 527 rm primo +
+ +
+ 528 cd ../ +
+ +
+ 529 tree -L 3 +
+ +
+ 530 rsync -r originale copie/ +
+ +
+ 531 tree -L 3 +
+ +
+ 532 rsync -r --delete originale copie/ +
+ +
+ 533 tree -L 3 +
+ +
+ 534 cd originale/ +
+ +
+ 535 ls +
+ +
+ 536 mkdir nuovi +
+ +
+ 537 touch nuovi/pippo +
+ +
+ 538 rm secondo +
+ +
+ 539 touch altra_cosa +
+ +
+ 540 cd ../ +
+ +
+ 541 rsync -r --delete originale copie/ +
+ +
+ 542 tree -L 3 +
+ +
+ 543 tree -L 4 +
+ +
+ 544 rsync -ar --delete originale copie/ +
+ +
+ 547 rsync -ar --delete originale andrea@bender:/home/andrea/copie +
+ +
+ 548 rsync -var --delete originale andrea@bender:/home/andrea/copie +
+ +
+ 549 touch originale/locale +
+ +
+ 550 rsync -var --delete --progress originale + andrea@bender:/home/andrea/copie +
+ +
+ 551 cd originale/ +
+ +
+ 552 ls +
+ +
+ 553 rm -r nuovi/ +
+ +
+ 554 ifconfig > quarto +
+ +
+ 555 cd ../ +
+ +
+ 556 trere -L 3 +
+ +
+ 557 tree -L 3 +
+ +
+ 558 rsync -var --delete --progress andrea@bender:/home/andrea/copie + ./ +
+ +
+ 559 tree -L 3 +
+ +
+ 560 cat originale/quarto +
+ +
+ 561 ls +
+ +
+ 562 tree -L 3 copie/ +
+ +
+ 563 rm -r copie/ +
+ +
+ 564 rsync -var --delete --progress andrea@bender:/home/andrea/copie/originale + ./ +
+ +
+ 565 ls +
+ +
+ 566 tree -L 3 +
+
+
+
+
+
+ + diff --git a/cli.html b/cli.html new file mode 100644 index 0000000..394600f --- /dev/null +++ b/cli.html @@ -0,0 +1,308 @@ + + + + + + +Common line interface + + + +
+

Common line interface

+

Appunti introduttivi alla riga di comando

+ +
+ +++ + + + + + + + +
Author:Andrea Manni
Copyright:GFDL
Version:1.2
+
+

Generato con: http://docutils.sourceforge.net/rst.html

+
+ + diff --git a/hardware.html b/hardware.html new file mode 100644 index 0000000..b18f4dc --- /dev/null +++ b/hardware.html @@ -0,0 +1,899 @@ + + + + + + +Hardware + + + +
+

Hardware

+ +
+

Integrazione all'hardware

+
+ +++ + + + + + + + +
Author:Andrea Manni
Copyright:GFDL
Version:1.1
+
+ +

Generato con: http://docutils.sourceforge.net/rst.html

+

Nota: si consiglia la lettura di: http://medialab.freaknet.org/sag/node29.html

+
+

Partizioni

+

Ci sono 3 tipi di partizioni:

+
+
    +
  • 4 partizioni primarie
  • +
+
+
    +
  • 1 puo' diventare estesa
  • +
+
+
    +
  • la partizione estesa puo' contenere molte partizioni logiche
  • +
+
+
+
+

Le partizioni vengono sicuramente lette al momento del Boot dal BIOS della scheda madre (all'accensione del sistema, quando si aziona il tasto power per accendere il computer), quindi potrebbe essere necessario riavviare la macchina per poter vedere cambiamenti alla tabella delle partizioni.

+

La tabella delle partizioni risiede nei primi ~400b del disco rigido, quindi nel primo settore che chiamiamo Master Boot Record (MBR, primi 512 byte del supporto) nel quale e' generalmente contenuto anche un boot loader o un boot manager nel caso di sistemi operativi multipli ospitati sullo stesso supporto di storaggio.

+ ++++ + + + + + + + + + + + + + + + + +
BytesContenuto
446 bytescodice boot
64 bytestabella partizioni
2 bytes"magic number 55AA"
+

Per conoscere le partizioni attualmente visibili dal Kernel in esecuzione:

+
+$ cat /proc/partitions
+
+
+

Gestione dell'MBR

+

I dati contenuti nell'MBR sono quindi di fondamentale importanza per il sistema, dato che se questi non sono correttamente disponibili diventa impossibile accedere ai block device (e quindi ai file system e ai dati) ed eventualmente far partire il sistema (boot loader o boot manager).

+

E' quindi importante tenere una copia di questi dati in caso di bisogno. Il metodo piu' semplice e' l'utilizzo del comando dd, per copiare / riprodurre il solo schema di partizionamento (ad esempio per un sistema in RAID) si puo' usare anche sfdisk .

+
+
    +
  • Per modificare le partizioni si usi # cfdisk /dev/nome_del_device
  • +
+
+
    +
  • # cfdisk /dev/hda
  • +
+
+
    +
  • Per fare una copia del contenuto dell'MBR:
  • +
+
+
    +
  • # dd if=/dev/hdX of=/path/MBR-backup bs=512 count=1
  • +
+
+
    +
  • Per ripristinarlo:
  • +
+
+
    +
  • # dd if=/path/MBR-backup of=/dev/hdX bs=512 count=1
  • +
+
+
    +
  • Per salvare solo la tabella delle partizioni:
  • +
+
+
    +
  • # dd if=/dev/hdX of=/path/backup-partition-table bs=1 count=66 skip 466
  • +
+
+
    +
  • Per ripristinare la tabella delle partizioni:
  • +
+
+
    +
  • # dd if=/path/backup-partition-table of=/dev/hdX bs=1 count=66 skip 466
  • +
+
+
    +
  • Per cancellare completamente tutto l'MBR:
  • +
+
+
    +
  • # dd if=/dev/zero of=/dev/hdX bs=512 count=1
  • +
+
+
+
+
+
+

Nomenclatura dei device

+

Nei sistemi GNU/Linux la nomenclatura usata per individuare i device e le relative partizioni e' strutturata, a differenza di sistemi operativi come Windows in cui i block device vengono associati a lettere piu' o meno casuali come C: D: E: in base al momento in cui questi vengono resi disponibili al sistema (cosa che non permette di prevedere facilmente dove trovarli).

+

Tutti i device fisici sono raggiungibili nella cartella /dev.

+

Per i device di tipo EIDE / Parallel ATA su una scheda madre con due connettori si avra' a disposizione:

+
+
Primary controller:
+
    +
  • Primary Master: /dev/hda
  • +
  • Primary Slave: /dev/hdb
  • +
+
+
Secondary controller:
+
    +
  • Secondary Master: /dev/hdc
  • +
  • Secondary Slave: /dev/hdd
  • +
+
+
+

Si noti la progressione alfabetica delle lettere: hda e' il primo device, hdb il secondo e cosi' via.

+

Al nome del device segue il numero della partizione, es:

+
+
    +
  • /dev/hda1 : prima partizione (Primary master EIDE)
  • +
  • /dev/hda2 : seconda partizione (Primary master EIDE)
  • +
  • /dev/hda3 : terza partizione (Primary master EIDE)
  • +
  • ecc.
  • +
+
+

In uno schema tipico di partizionamento, nel quale si prevedono tre partizioni primarie, una estesa e alcune logiche, si avra' uno schema del tipo:

+
+
    +
  • /dev/hda1 : prima partizione primaria (Primary master EIDE)
  • +
  • /dev/hda2 : seconda partizione primaria (Primary master EIDE)
  • +
  • /dev/hda3 : terza partizione primaria (Primary master EIDE)
  • +
  • /dev/hda5 : prima partizione logica (Primary master EIDE)
  • +
  • /dev/hda6 : seconda partizione logica (Primary master EIDE)
  • +
  • /dev/hda7 : terza partizione logica (Primary master EIDE)
  • +
  • Seguono le altre eventuali partizioni logiche
  • +
+
+

Si consiglia caldamente di seguire questo schema, creando la partizione estesa nell'ultima primaria disponibile (la quarta, che per questo non compare nello schema precedente).

+

Si tenga presente che alcuni sistemi operativi come Windows o *BSD possono non gradire di essere collocati su partizioni logiche: si consiglia quindi di preservare le partizioni primarie per questi, eventualmente lasciando dello spazio non allocato prima della creazione delle partizioni logiche nel caso si voglia avere la possibilita' in futuro di poter installare questi sistemi. Gnu/Linux non ha nessun problema a partire da una partizione logica, mettete tranquillamente i vostri sistemi da /dev/device5 in poi.

+
+
+

I filesystem

+

Il file system e' una struttura logica che ci permette di individuare i diversi file. Sostanzialmente e' un'insieme di meta dati che caratterizzano i singoli file piu' quanto necessario per poterli gestire.

+

Alcuni esempi: e' il filesytem a poter caratterizzare i file con propietari, gruppi, permessi (lettura, scrittura, esecuzione), data di creazione e cosi' via. Alcuni filesytem permettono certe funzionalita', altri (sopratutto quelli piu' datati) +sono piu' rudimentali.

+

Tipicamente i filesystem sono strutturati secondo un modello gerarchico basato su files e cartelle: quindi per poter identificare un file ci serve il suo nome proprio piu' il suo percorso nella struttura del filesystem. Il progressivo aumento del numero dei files sta cominciando a far sentire i limiti di questo modello.

+

Con l'aumentare delle informazioni tendono ad essere piu' efficaci modelli relazionali, che permettono di interagire coi file in modo simile a un database. Ad esempio pensiamo alle librerie che contengono centinaia di migliaia di brani musicali MP3, oppure migliaia di fotografie: cercare di gestirli tramite nome del file e cartelle diventa poco pratico. Meglio raggrupparli per autore, data, album o quant'altro si adatti alla loro natura e al loro utilizzo.

+
+

Dopo aver definito un block device (ad esempio avendo fatto una partizione) per poterlo usare occorre creare una struttura logica su di esso: il file system.

+

Per creare un file system di tipo ext3 si puo' usare un comando del tipo:

+
+# mkfs.ext3 /dev/nome_del_device
+

Attenzione: creare un nuovo filesytem su un device che gia' ne contiene uno rende non raggiungibili i file precedentemente esistenti. Sostanzialmente potete vedere la creazione del FS come la formattazione alla windows.

+
+

Partizioni, nomenclatura linux, ridimeensionamente, frammentazione.

+
+ +
+

Alimentatori

+

Voltaggi: da 60W -> ~1000. Tipicamente 400W. +Si sceglie il voltaggio in base ai consumi, in particolare al giorno d'oggi le schede video (che possono consumare ~200w l'una).

+
+
Caratteristiche:
+
    +
  • ha una ventola di raffreddamento: quindi fa rumore e la ventola si puo' rompere col tempo.
  • +
  • Sovraccarichi di tensione possono causare la rottura dell'alimentatore e qualunque altra cosa ad esso connessa. Utile usare un UPS / stabilizzatore di corrente priuma dell'alimentatore. Questo vale anche per la scheda di rete / modem / RJ11.
  • +
+
+
+

link a esemplari in vendita: http://www.eprice.it/default.aspx?cat3=497&des=Alimentatori

+

Un buon alimentatore da PC cosata corca ~80 per 400W. +Non si deve risparmiare su gli alimentatori.

+

Per un server se ne deve sempre avere uno di scorta disponibile, o alimentazione ridondante.

+

Link: http://it.wikipedia.org/wiki/Alimentatore#Alimentatori_Ridondanti

+
+ +
+

http://it.wikipedia.org/wiki/Scheda_madre

+

ATX sono sempre in presa

+
+ +
+
+

Architetture

+

Ci sono tante architetture e non sono compatibili tra di loro. Il codice oggetto e' diverso per CPU diverse.

+

Le vostre macchine sono generalmente della famiglia x86: tipicamnete dei i686. La maggior parte del codice viene comunque compilata per i386, ma sui sistemi piu' recenti si puo' comunque utilizzare le librerie C ottimizzate per i686.

+
+
Controllate se nel vopstro sistema sono presenti:
+
dpkg -l | grep libc6-i686
+
+

Se non sono presenti e siente su un 686 installatele!

+
+
Sulle vostre macchine gira quindi software:
+
    +
  • i386 : normali pc
  • +
  • amd64 : i nuovi processori a 64 bit
  • +
+
+
+

http://it.wikipedia.org/wiki/Microprocessore

+

Link: http://en.wikipedia.org/wiki/X86

+
+
Elenco dei processori AMD:
+
+
+
Elenco dei processori Intel:
+
+
+
Elenco dei processori Intel:
+
+
+
Elenco dei processori ARM:
+
+
+
+

Arm e simili (geode, Xscale, alcuni PPC) sono utilizzati per i sistemi embedded.

+ + + +
+

Velocita' accesso dati supporti di storaggio

+
+
Tenere conto di:
+
    +
  • velocita' teorica dei bus di conssione, es ATA / PCI
  • +
  • velocita' potenziale dell'hd: 7200rpm = ~45MB
  • +
  • caratteristiche del FS (ottimizzazione per dimesioni file)
  • +
  • numero di file e cartelle, e "vecchiaia" del FS
  • +
+
+
+
+
+
+

Bus per HD

+
+ +
+
+

RAID

+
+ +
+
+
Gli hard disk hanno dei limiti fisici: dati dalle loro dimensioni finite.
+
Pianificare le rrisorse di storaggio,
+
+

Gli hard disks hanno la tendenza a rompersi.

+

La velocita' degli hard disks influenza molto le prestazioni del sistema.

+
+
Spare Disk:
+
Uno spare e' un hd che si lascia inattivo, in caso di rottura di uno degli elementi del'array questo viene attivato e ne pronde automaticcamente il posto.
+
+
+
+
+

RAID1: Mirror

+

Piu' hard disk vengono messi in mirror, per creare ridondanza.

+
+
Caratteristiche: Modello ipotetico con hd da s=100GB con velocita' v=40MB/s
+
    +
  1. C'e' ridondanza dei dati: se si rompe un supporto il sistema continua a lavorare.

    +
  2. +
  3. +
    Dimensioni: si perde meta' della capacita' di storaggio.
    +
    +
    Per 2hd si ha:
    +

    raid size= (s+s)/2 = 100

    +
    +
    +
    +
    +
  4. +
  5. Prestazioni:

    +
  6. +
+
+
+
3.1 Lettura: Non ci dovrebbero essere cambiamenti:
+
raid read speed = v * (numero array -1) = 120MB/s (3 hd in stripe + 1 per la parita')
+
3.2 Scrittura: si scrive molto velocemente sulla parte in stripe, ma ad ogni scrittura si deve calcolare la parita' e scriverla sul supporto dedicato, che diventa il collo di bottiglia dell'intero array.
+
    +
  • raid read speed = dipende dell'hd della parita' = 40 MB/s
  • +
+
+
+
+
+
+
+
+

RAID0: Stripe

+

Piu' hard disk vengono messi in sequenza, per aumentare prestazioni e dimensioni massime.

+
+
Caratteristiche: Modello ipotetico con hd da s=100GB con velocita' v=40MB/s
+
    +
  1. Non C'e' ridondanza dei dati: se si rompe un supporto perdo tutto l'array. Non va' quindi usato per dati importanti, ma per dati che si possono facilmente rimpiazzare (es: una chache proxy. un mirror di qualcosa, file temnporanei per la compilazione...).

    +
  2. +
  3. Dimensioni: si sommano le capacita' di storaggio.

    +
    +
      +
    • +
      Per 2hd si ha:
      +
        +
      • raid size= s+s = 200
      • +
      • nota: s sta per la dimesione del membro piu' piccolo dell'ARRAY.
      • +
      • disk1 300GB + disk2 150GB = RAID0 300GB
      • +
      +
      +
      +
    • +
    +
    +
  4. +
  5. Prestazioni:

    +
  6. +
+
+
+
3.1 Lettura: Dovrebbero aumentare
+
    +
  • raid read speed = v * numero membri array = 80MB/s
  • +
+
+
+

3.2 Scrittura: teoricamente bisogna scrivere il doppio dei dati: le prestazioni in scrittura dimezzano.

+
+
    +
  • raid read speed = v * numer dei membri dell'array= 80 MB/s
  • +
+
+
+
+
Note:
+
Si usa per aumentare la velocita' e per ottenere blok device di grosse dimensioni, ma e' pericoloso per quanto riguarda la disponibilita' dei dati.
+
+
+
+

RAID4:

+

http://www.acnc.com/04_01_05.html

+

Piu' hard disk vengono messi in stripe con un elemto dedicato alla parita'.

+

Parita:

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
disk0disk1disk2disk3
stripestripestripeparita'
0011
1010
1111
0000
1100
+

Se si rompe un HD: si puo' riapplicare l'algoritmo usato per calcolare la parita' per ri-ottenere i valori persi.

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
disk0disk1disk2disk3
stripestripestripeparita'
0x11
1x10
1x11
0x00
1x00
+

Nota: e' fondamentale avere uno spare disk diponibile: perche' in caso di rottura di due elementi perdo l'intero array senza avere possibilita' di recupero. I raid 4 0 5 tendono ad essere molto grandi, quindi il danno interesserebbe molti dati.

+
+
Caratteristiche: Modello ipotetico con hd da s=100GB con velocita' v=40MB/s
+
    +
  1. C'e' ridondanza dei dati: se si rompe un supporto il sistema continua a lavorare. E' fondamental;e avere uno spare disk sempre disponibile, meglio se piu' di uno.

    +
  2. +
  3. Dimensioni: si perde la capacita' di storaggio usata per ospitare la parita'.

    +
    +
      +
    • Per 2hd si ha:
    • +
    • raid size= somma (numero mebri array -1) = 450
    • +
    +
    +
  4. +
  5. Prestazioni: tipicamente aumentano, ma varia in base alla modalita' di gestione del RAID: se sia hardware o software.

    +
  6. +
+
+
+
3.1 Lettura: Dovrebbero aumentare drasticamente come per uno stripe
+
raid read speed = v = 40MB/s
+
+

3.2 Scrittura: teoricamente bisogna scrivere il doppio dei dati: le prestazioni in scrittura dimezzano.

+
+
    +
  • raid read speed = v/2 = 20 MB/s
  • +
+
+
+
+
Note:
+

La velocita' di lettura puo' aumentare: migliora notevolmente il seek time dato che il kernel o il controller raid puo' scegliere di leggere i dati dal'HD in cui la testina e' piu' vicina ai dati.

+

Inserendo uno spare disk si puo' aumentare ulteriormente la cap[acita' dell'array di sopravvivere a un guarsto fisico.

+
+
+
+
+

RAID5

+

http://www.acnc.com/04_01_05.html

+

Il RAID5 e' un RAID4 in cui la parita' e distruibuita su tutti i membri dell'array.

+
+

Mnitors

+

http://it.wikipedia.org/wiki/Monitor_(video)

+

http://it.wikipedia.org/wiki/HDCP

+
+

TODO ridimensionamento, frammentazione, raid LVM

+
+
+
+ + diff --git a/img b/img new file mode 120000 index 0000000..8d8c82b --- /dev/null +++ b/img @@ -0,0 +1 @@ +source/img \ No newline at end of file diff --git a/informatica_base.html b/informatica_base.html new file mode 100644 index 0000000..3c6267e --- /dev/null +++ b/informatica_base.html @@ -0,0 +1,2390 @@ + + + + + + + + + + Informatica di Base + + + + +
+

Informatica di Base

+ +

Appunti + introduttivi ai sistemi informativi

+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
Author:Andrea Manni
Copyright:GFDL
Version:1.5
+
+ + + +

Generato con: http://docutils.sourceforge.net/rst.html

+ +
+

Informatica

img/180px-Apple2.jpg + +
+
Informatica:
+ +
L'informatica e' una scienza interdisciplinare che + riguarda tutti gli aspetti del trattamento + dell'informazione mediante procedure automatizzate.
+
+ +

L'oggetto della materia sono quindi i + dati e la manipolazione di + questi, da un lato la capacita' di storare i dati + (cosa non cosi' elementare quando il quantitativo diventa + enorme) per poterli poi manipolare. Buona parte del + lavoro del sistemista consistera' quindi nel garantire + l'integrita' e la disponibilita' (intesa + come continuita' del servizio) dei dati. Stara' poi + all'amministratore di rete preoccuparsi di renderli + disponibili (si pensi a un sito web che rende delle risorse + disponibili) agli utilizzatori.

+ +

Link sull'argomento: http://it.wikipedia.org/wiki/Informatica

+ +
+

Evoluzione nella + societa'

+ +

Per meglio percepire l'importanza dell'informatica si + rifletta sull'influenza che le seguenti invenzioni nel + campo del trattamento delle informazioni hanno avuto sulla + societa' umana:

+ +
+
    +
  • +
    +
    Diffusione della scrittura:
    + +
    +
      +
    • integrita' dell'informazione: dati + come il costo di una merce cessano di essere + arbitrari, con conseguenze negli scambi + commerciali.
    • + +
    • maggiore durata nel tempo delle + informazioni (seppur limitata da supporti + deperibili)
    • +
    +
    +
    +
  • + +
  • +
    +
    Invenzione della stampa: Gutenberg 1448
    + +
    +
      +
    • Maggiore diffusione delle informazioni + grazie all'abbattimento dei costi di + stampa.
    • + +
    • Progressivo ampliamento della base di + utenza: sempre piu' persone possono almeno + imparare a leggere e quindi emanciparsi da una + casta ristretta che mantiene il + controllo sulla fruizione delle informazioni. + Seppure in misura minore aumenta anche la + possibilita' di produrre e diffondere + contenuti.
    • +
    +
    +
    +
  • + +
  • +
    +
    Nascita dell'informatica/elettronica
    + +
    +
      +
    • Superamento di parte dei problemi legati + alla deperibilita' dei supporti sui quali si + conservano le informazioni.
    • + +
    • Enorme aumento del quantitativo di dati + gestibili e abbassamento del costo di gestione. + Supporti magnetici e ottici hanno radicalmento + cambiato il modo di archiviare le informazioni + rispetto ai depositi cartacei.
    • + +
    • Maggiore rapidita' nella trattazione delle + informazioni, per es. la possibilita' di + censire la popolazione rapidamente e gestire un + apparato fiscale piu' efficiente.
    • + +
    • Possibilita' di incrociare i dati, + ottenendo sostanzialmente nuovo valore da + informazioni preesistenti
    • +
    +
    +
    +
  • + +
  • +
    +
    Diffusione della rete Internet
    + +
    +
      +
    • Disponibilita' globale delle informazioni + (in formato elettronico) con costi nettamente + minori rispetto al passato
    • + +
    • Abbattimento del costo della diffusione + delle informazioni
    • +
    +
    +
    +
  • +
+
+ +

L'importanza della gestione digitale delle informazioni + e' tale da accentuare il divario esistente tra chi puo' + accedere ai nuovi mezzi e chi ne e' escluso, problema + indicato generalmente con il termine Digital + Divide.

+
+
+
+ +
+

Analogico e + Digitale

+ +
+
Grandezze analogiche:
+ +
Sono grandezze continue: hanno + infiniti stadi intermedi. Si pensi al movimento + dell'ombra dell'asta di una meridiana in contrapposizione + alle posizioni finite di un orologio digitale, o alle + infinite posizioni che puo' assumere il potenziometro di un + amplificatore (ovviamente un amplificatore + analogico!). Tensione e corrente elettriche sono + grandezze analogiche perche' rappresentabili con funzioni + continue.
+ +
Grandezze digitali:
+ +
Sono discrete: assumono un numero + finito di stadi intermedi. Ad esempio + l'interruttore per accendere una lampada. Quando i valori + sono solo due si parla di valori binari, caso che + riscontriamo in tutte le tecnologie basate sul silicio come + i microprocessori o sui vecchi transistor. Si potrebbe + pensare ai componenti di un computer come ad enorme numero + di lampadine che possono essere solo accese o spente: + l'evoluzione tecnologica passando dai transistor ai + microporocessori ha raggiunto un livello di + miniaturizzazione dell'ordine dei ~30 nanometri.
+ +
La miniaturizzazione presenta i seguenti vantaggi:
+ +
+
    +
  • Minor costo di produzione ( rapporto tra il numero + di transistor e superfice del wafer sul quale + si stampano i microprocessori)
  • + +
  • Minore distanza tra gli elementi = minore + attrito prodotto dal passaggio della corrente + = minore dispersione termica = minore calore. Questo si + traduce in un minore consumo elettrico, ulteriormente + accentuato dal corrispettivo risparmio sulle unita' di + raffreddamento.
  • +
+
+
+ +

In informatica, con digitale ci si riferisce a tutto cio' + che viene rappresentato con numeri o che opera manipolando + numeri. Il termine deriva dall'inglese digit, che significa + cifra, che a sua volta deriva dal latino digitus, che + significa dito.

img/differ16.gif + +
+
Una grandezza, tensione o corrente, si dice analogica + quando al variare del tempo puo' essere rappresentata + mediante una funzione continua,
+ +
senza punti di discontinuita'.
+
+ +

Una grandezza si dice digitale quando viene rappresentata + mediante un sistema binario costituito da valori 0 ed 1.

+ +

Links: http://www.culturadigitale.net/?p=4

+ +

In informatica quindi si pone costantemente il problema + della rappresentazione delle grandezze analogiche (tipiche + del mondo reale) in valori digitali (discreti, e + quindi approsimativi) A/D - D/A

+
+ +
+

Sistema + Binario

+ +

I computer lavorano solo con grandezze finite, e + si basano su sistemi cosidetti binari, dato che i + microprocessori sono transistor miniaturizzati, che a loro + volta possono essere visti come insiemi di lampadine che per + definizione possono essere solo accese o + spente.

+ +

Potremmo considerare quindi i due stati come:

+ +
+
    +
  • Spento = 0
  • + +
  • Acceso = 1
  • +
+
+ +

Entita' discrete come numeri interi o caratteri + possono essere espressi facilmente con la sola combinazione + dei valori 0 e 1, mentre valori complessi + riconducibili a numeri reali (pensiamo alle infinite + sfumature di un colore o ai suoni) tramite un'approssimazione + basata su un numero di bit arbitrario. Ad esempio Il + carattere a in formato ASCII si puo' + esprimere con: 01100001 , un'immagine puo' essere + rappresentata da una griglia di punti (pixel) piu' o meno + estesa (risoluzione) con una certa profondita' di + colore espressa in bit,

+ +

E cercare di comporre valori complessi + (approssimazione di numeri reali tramite un numero di bit + arbitrario), con la sola combinazione dei valori 0 e 1, + mentre entita' discrete Il carattere a in + formato ASCII si puo' esprimere con: 01100001 + .

+ +

Schema sulla trasformazione da binario a decimale:

+
+0 | 0 | 0 | 0 | 0 | 0 | 0 | 0     decimali =  0
+0 | 0 | 0 | 0 | 0 | 0 | 0 | 1     decimali =  1
+0 | 0 | 0 | 0 | 0 | 0 | 1 | 0     decimali =  2
+0 | 0 | 0 | 0 | 0 | 0 | 1 | 1     decimali =  3
+0 | 0 | 0 | 0 | 0 | 1 | 0 | 0     decimali =  4
+0 | 0 | 0 | 0 | 0 | 1 | 0 | 1     decimali =  5
+0 | 0 | 0 | 0 | 0 | 1 | 1 | 0     decimali =  6
+....
+1 | 1 | 1 | 1 | 1 | 1 | 1 | 1     decimali =  255
+
+ +
+
Si lavora in base 2 (cioe' si moltiplica sempre per 2), + quindi si ha a che fare con sequenze numeriche del + tipo:
+ +
+

2 + 4 8 + 16 32 + 64 128 + 256 512 + 1024 ...

+ +

C'e' una ripetizione di questi patterns + numerici dovuti alle parole usate dai + processori. Se l'unita' minima dell'informazione e' il + bit, l'unita' minima funzionale e' il + Byte: con 256 valori possibili possiamo + esprimere efficacemente caratteri, colori ed altre + informazioni percepibili dai nostri sensi.

+ +

In informatica, word_(dall'inglese + parola) e' un termine che identifica la dimensione nativa + dei dati usati da un computer. Una word e' semplicemente + un gruppo di bit di una determinata dimensione che sono + gestiti come unita' da un microprocessore. La dimensione + (o lunghezza) della word e' un'importante caratteristica + dell'architettura di un computer.

+
+
+ +
+
Links aggiuntivi:
+ +
+ +
+
+
+ +
+

Unita' di + misura

+ +

Se diciamo che una singola lampadina sia un + bit, nel nostro lavoro ci troviamo a gestire + miliardi di lampadine. Cerchiamo di definire dei multipli del + bit per rendere la quotidianita' piu' semplice.

+ +
+
bit
+ +
Una singola informazione, l'unita' minima. Si indica + con la b minuscola. E' l'unita' + di misura di riferimento per il trasferimento dei + dati su reti: una scheda di rete 10/100 sposta + circa 12MB (Bytes) al secondo.
+ +
Byte:
+ +
Un Byte e' formato da 8 bit. Si indica con la + B Maiuscola . La si puo' + considerare l'unita' funzionale minima + nell'informatica, dato che un numero minore di bit + difficilmente puo' rappresentare qualcosa di significativo. + E' l'unita' di misura di riferimento per lo storaggio dati: + le dimensioni dei files e dei supporti di storaggio si + esprimono in Bytes.
+
+ +
+

Multipli del Bit + (TABELLE DI CONVERSIONE):

+ +
+
    +
  • Bit
  • + +
  • Byte (B): 8 bit
  • + +
  • Kilobyte (KB): 1024 B
  • + +
  • Megabyte (MB): 1024 KB, 1048576 B
  • + +
  • Gigabyte (GB): 1024 MB, 1048576 KB, 1073741824 + B
  • + +
  • Terabyte (TB): 1024 GB, 1048576 MB, 1073741824 KB, + 1099511627776 B
  • +
+
+ +

Link disponibile: http://it.wikipedia.org/wiki/Byte

+ +
+
Nota:
+ +
Si tenga conto che i produttori di Hard Disk + generalmente indicano la capienza di detti supporti in + migliaia di megabyte e non 1024*: quindi per formattare 1 + hd di 500 MB si considera 500/1000 (e non 500/1024).
+
+
+ +
+

Trasmissione dati + su reti

+ +

Il termine velocita' di trasmissione (o di + trasferimento) viene solitamente utilizzato a proposito di + scambi di informazioni tra computer o comunque dispositivi + elettronici. Siccome su questi dispositivi l'informazione + viene memorizzata e viaggia in forma digitale, ovvero e' + sostanzialmente una sequenza di bit, e' naturale che tale + velocita' venga misurata in bit per secondo (e da qui il + termine equivalente inglese bitrate).

+ +

Ad esempio, se in una linea ADSL abbiamo un + trasferimento dati di 4 Mb/s, cioe' 4.000.000 b/s, avremo + (4.000.000/8) B/s equivalenti a 500 kB/s.

+ +

Quindi per calcolare la velocita' di trasferimento di un + file le cui dimensioni sono espresse in BYTEs su una rete + bisogna dividere per 8

+ +

Ad es:

+ +
+
    +
  • ADSL 20 Mb (venti mega bit) ha una + velocita' equivalente di circa ~1.8MB (mega + Bytes) per secondo
  • + +
  • Rete etherent 10/100 Mb ha una velocita' di + trasferimento di circa ~12MB per secondo.
  • +
+
+ +

C'e' uno scarto tra la velocita' nominale di + trasferimento dati su una rete e l'effettivo trasferimento + dei dati tra i due punti. Tipicamente questo e' dovuto a + forme di interferenza del supporto trasmissivo (pensiamo a + una rete wifi su onde radio), a imprecisioni dell'hardware + di rete, conflitti tra pacchetti, problemi ambientali.

+
+ +
+

Velocita' di + clock

+ +

Usiamo l'Hertz come unita' + di misura per le frequenze quali quelle di clock della CPU + (es 2.0GHz numero di cicle del processore in un secondo) o + di un BUS di per il trasferimento dati (es 33Mhz). Un hertz + corrisponde alla distanza tra due creste di un onda.

+ +

In teoria, la velocita' o frequenza di + clock e' il numero di commutazioni (tra i due + livelli logici "0" e "1") che circuiti logici (interni ad + un'unita' di calcolo o di un microprocessore) sono in grado + di eseguire in un minuto secondo (preso come unita'di + tempo); essa espressa in cicli/secondo (Hertz) ed i suoi + multipli.

+ +
+
Unita' di misura per le frequenze:
+ +
+
    +
  • 1 hekt o hertz (simbolo hHz ) = 102 Hz = 100 + Hz
  • + +
  • 1 kilohertz (simbolo kHz ) = 103 Hz = 1 000 + Hz
  • + +
  • 1 megahertz (simbolo MHz ) = 106 Hz = 1 000 000 + Hz
  • + +
  • 1 gigahertz (simbolo GHz ) = 109 Hz = 1 000 000 + 000 Hz
  • +
+
+
+ +

Ricordiamo che i prefissi 'kilo', 'mega', 'giga', 'tera' + derivano dal sistema numerico decimale (a base 10) e + servono per esprimere le quantita' in 'ordini di + grandezza':

+ +
+
    +
  • 1 KILO = mille = 10^3
  • + +
  • 1 MEGA = 1 milione = 10^6
  • + +
  • 1 GIGA = 1 miliardo = 10^9
  • + +
  • 1 TERA = mille miliardi = 10^12
  • +
+
+ +

La velocita' o frequenza di clock e' il numero di + commutazioni tra i due livelli logici "0" e "1" che + circuiti logici interni ad un'unita' di calcolo o di un + microprocessore sono in grado di eseguire nell'unita' di + tempo di un minuto secondo, ed e' espressa in cicli al + secondo, o hertz, e suoi multipli; normalmente per eseguire + un'istruzione o una semplice somma sono necessari piu' + cicli di clock.

+ +

In queste moderne CPU essendo la velocita' di clock + cosi' elevata, viene generata da un minuscolo oscillatore + al quarzo posto all'interno della stessa CPU, regolabile + tramite il BIOS. Gli informatici esperti sono in grado di + aumentare le prestazioni dei computer aumentando la + velocita' di clock nominale del processore, ma si tratta di + un'operazione rischiosa che puo' portare al + surriscaldamento della CPU. Vi sono comunque alcuni + processori di particolare efficienza e robustezza che sono + in grado di supportare bene velocita' di clock maggiori di + quella nominale, senza subire danni. Nel gergo informatico + questa operazione viene definita _overclocking, ed e' + utilizzata anche dall'industria per testare l'affidabilita' + delle CPU prodotte.

+ +

Tipicamente la velocita' di clock consigliata per una + cpu viene stabilita da un valore medio statistico ottenuto + considerando vari esemplari del wafer da cui proviene la + cpu, quindi e' possibile che la nostra CPU sia + stabile anche a una velocita' di clock + leggermente superiore a quella indicata. + All'opposto, quando un elaboratore non necessita della + velocita' massima della CPU e' possibile fare il + downclock della stessa, in modo da ridurne il + consumo e il riscaldamento, a vantaggio di una maggiore + stabilita' del sistema e minore usura del sistema di + raffreddamento.

+ +

Le CPU piu' moderne, in particolare quelle montate sui + sistemi portatili, possono variare dinamicamente la + frequenza di lavoro a seconda del carico di lavoro da + sostenere, in modo da ridurre il consumo medio e la + rumorosita' (causata dalle ventole di raffreddamento). Ne + e' un esempio la tecnologia SpeedStep + di Intel, ed equivalenti di altri produttori.

+
+
+ +
+

Supporti di storaggio + (dati)

+ +

Supporti hardware adibiti a contenere le + informazioni che trattiamo. In ambito informatico con il + termine storage si identificano i dispositivi hardware, i + supporti per la memorizzazione, le infrastrutture ed i + software dedicati alla memorizzazione non volatile di grandi + quantita' di informazioni in formato elettronico.

+ +

Tipici esempi di supporto di storaggio sono:

+ +
+
    +
  • Hard disks
  • + +
  • CD rom
  • + +
  • Unita' a nastro
  • + +
  • ...
  • +
+
+ +
+
Supporti fisici per la memorizzazione non volatile: + http://it.wikipedia.org/wiki/Storage
+ +
In ambito informatico con il termine STORAGE + (STORAGGIO, contenitore che conserva info) si identifica + tutto l'hardware (dipositivi/supporti/infrastrutture) + dedicato alla memorizzazione non volatile di grandi + quantita' di informazioni in formato elettronico. + Tipici supporti storaggio sono: hard disks, CD-ROM, unita' + a nastro,floppy, chiavette USB.
+
+ +

Con il termine memorizzazione non volatile si intende la + possibilita' di immagazzinare delle informazioni in maniera + persistente con una ragionevole probabilita' che + l'informazione rimanga inalterata per un ragionevole lasso di + tempo.

+ +
+
Con il termine memorizzazione NON VOLATILE si intende + la possibilita' di immagazzinare delle informazioni IN + MANIERA PERSISTENTE CON UNA RAGIONEVOLE PROBABILITA' CHE + L'INFORMAZIONE RIMANGA INALTERATA PER UN RAGIONEVOLE LASSO + DI TEMPO, e per farlo in formato digitale binario e' + necessaria avere un supporto fisico con le seguenti + caratteristiche:
+ +
+

-sul supporto possono essere scritte + almeno una volta sequenze di bit;

+ +

-le sequenze di bit scritte rimangono inalterate a + meno di una specifica operazione di modifica;

+ +

-le sequenze di bit possono essere + lette un numero elevato di volte senza + alterarle.

+
+
+ +

La memoria RAM di un computer e' la tipica memoria + volatile, infatti e' sufficiente che venga a mancare la + corrente elettrica perche' tutte le informazioni in essa + imagazzinate vadano perdute.

+ +

Esistono molti supporti fisici che rispondono a queste + caratteristiche, ma nella storia dell'informatica solo alcuni + si sono affermati e sono tuttora utilizzati:

+ +
+
    +
  • Schede perforate (decisamente obsolete);
  • + +
  • Nastri magnetici;
  • + +
  • Dischi magnetici (hard disk e floppy disk);
  • + +
  • Dischi ottici;
  • +
+
+ +

Supporti fisici per la memorizzazione non volatile: + http://it.wikipedia.org/wiki/Storage

+ +
+

Hard Disks

+ +

Link: http://it.wikipedia.org/wiki/Hard_disk

+ +

Il disco rigido o hard disk (anche chiamato disco fisso) + e' un dispositivo utilizzato per la memorizzazione a lungo + termine dei dati in un computer. Il disco rigido e' il + principale supporto di storaggio dei + computer per via della sua capienza (~300 GB) e della sua + velocita' di trasferimento dati ( ~25MB per secondo) .

+
+ +
+

Memorie + Flash

+ +

I supporti di storaggio USB o comunque di tipo + NAND o + SSD + sono supporti removibili usati alla stregua dei vecchi + floppy disk. La caratteristica peculiare e' che non hanno + parti in movimento e sono quindi meno delicati rispetto ai + supporti magnetici con testine in movimento su dischi (come + gli hard disks ) o a quelli a nastro (come nei dispositivi + a cartucce quali DAT e similari ). Sono meno fragili dei + supporti ottici ( ala CD-Rom ) e meno sensibili + all'esposizione solare diretta, piu' compatti fino ad + essere tascabili nei tagli piu' piccoli.

+ +

Link: http://it.wikipedia.org/wiki/Chiave_USB

+
+ +
+

Propieta' dei + supporti di storaggio

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Supporti di + Storaggio
Tipo di dispositivocapienzaletturascritturare-scrittura[1]
Hard disk~300GBveroverovero
Floppy disk1.44MBverodipende [2]dipende
CD ROM~640MBverofalsofalso
CD R~640MBveroverofalso
CD RW~640MBveroverovero
DVD ROM~4GBverofalsofalso
Blue Ray~35GB.........
USB Key~1/128GBveroverovero
+ +
+
Nota:
+ +
per DVD e Blue RAY valgono gli stessi ragionamenti di + scrittura (R) e re-scrittura (RW) fatti per i CD, solo + con tante sigle in piu'.
+
+ + + + + + + + + + + + + + +
[1]Un floppy disk e' scrivibile se la targhetta e' + posizionata in modalita' di scrittura, e all'opposto + puo' diventare in sola lettura
+ + + + + + + + + + + + + + +
[2]Con re-scrittura si intende la + possibilita' di modificare un dato piu' di una volta. + Ad esempio su un supporto ottico Recordable + si puo' scrivere una sola volta ( WORM ), + dopodiche i dati scritti non sono ulteriormente + modificabili (ma possono essere aggiunte sucessive + sessioni di scrittura se previsto). Questa + caratteristica li rende indicati come supporto di + back-up. Supporti Rewritable possono invece + essere scritti piu' volte (la posizione dei cristalli + pit/lane interni puo' essere modificata piu' volte, + quindi i dati possono essere modificati / + eliminati).
+ +
+
Tutti supporti di storaggio hanno vita limitata + (aspettativa di vita), influenzata fortemente dalla + nostra modalita' di utilizzo e da fattori/accidenti + esterni; sono quindi soggetti ad alcune norme di + conservazione specifiche:
+ +
+
    +
  • HD: mantiene dati per 2-5 anni
  • + +
  • SUPPORTI MAGNETICI: evitare l'esposizione a + rapide variazioni termiche e campi magnetici.
  • + +
  • SUPPORTI OTTICI: tenerlo lontano da fonti calore, + non depositarlo senza la custodia dedicata, non + sottoporlo a nessun tipo di sollecitazione meccanica + (piegarlo, torcerlo ).
  • +
+
+
+ +
+

HARD + DISK

+ +

Il disco rigido o hard disk (anche chiamato disco + fisso) e' un dispositivo utilizzato per la memorizzazione + a lungo termine dei dati in un computer. E' 1 supporto + magnetico con 1 testina che si sposta per leggere dati su + uno o piu' dischi.

+ +

Caratteristiche fondamentali: capiente (200-500 MB + fino TB) + Trasf.dati (I/O) + riscrivibile (R,W,RW).

+ +

E' quindi il principale supporto di + storaggio per via della sua capienza (~300 GB), + ma rappresenta un limite ('collo di bottiglia') per le + prestazioni dell'intero pc perche' e' molto + lento nel trasferire dati (25-30 MB/s) rispetto alla cpu + (< 3 GHZ). Negli ultimi anni le prestazioni della cpu + sono raddoppiate circa ogni 18 mesi (Legge di Moore), + mentre i dischi rigidi sono rimasti relativamente statici + dal punto di vista delle prestazioni nello scambio + dati.

+ +

Link: http://it.wikipedia.org/wiki/Hard_disk

+ +
+ +
+
+
+
+ +
+

Classi di + elaboratori

+ +

Cerchiamo di distinguere gli elaboratori per + caratteristiche fisiche e funzionali, considerando la loro + architettura, ambiente di utilizzo, target di utenza a cui + sono rivolti.

+ +

Stabiliamo alcuni criteri per distinguere le varie + classi:

+ +
+
    +
  • dimensioni
  • + +
  • mobilita'
  • + +
  • input | output
  • + +
  • capcita' di calcolo
  • + +
  • numero di utenti
  • + +
  • completezza dell'interfaccia utente
  • +
+
+ +
+

Calcolatori + tascabili

img/calcs.jpg + +

Sono le macchine piu' semplici, generalmente poco + flessibili, tendono ad essere piu' sofisticate nel caso + delle calcolatrici scientifiche. Queste ultime sono spesso + programmabili e hanno display comunque di dimensioni + ridotte. L'interfaccia utente e' quindi molto + semplificata.

+
+ +
+

Palmari e smart + phones

img/palm.gif + +

Device caratterizzati dalle piccole dimensioni e dalla + portabilita' (dimensioni tascabili e autonomia + nell'ordine delle decine di ore), possono essere + relativamente potenti e flessibili, sopratutto quando + vengono equipaggiati con sistemi operativi analoghi a + quelli dei personal computers. Le loro prestazioni in + alcuni casi sono paragonabili a PC fissi di 4/5 anni + precedenti alla loro introduzione sul mercato.

+ +

La capacita' di storaggio e' in genere molto limitata, + ma e' possibile espanderla con schede di memoria. I modelli + piu' recenti possono appogiiarsi a file-system di rete.

+ +

Autonomia: da 4 a 25 ore. Capacita' di storaggio: + centinaia di MB

+
+ +
+

Ultraportabili + (netbook)

img/eeepc.jpg + +

Sono sostanzialmente l'anello intermedio tra i palmari e + i portatili. Di prezzo intermedio tra i due, hanno in + genere una dotazione hardware semplificata e ridotte + capacita' di espansione rispetto a un portatile. Dotati di + monitor e tastiere standard possono far + girare gli stessi sistemi operativi dei computer + fissi e quasi tutti i software con essi compatibili senza + dover intervenire sulle interfacce utente.

+ +

Autonomia: da 1 a 8 ore. Capacita' di storaggio: da 4GB + (stato solido) a 80GB (hard disk magnetici)

+
+ +
+

Portatili

img/laptop.jpg + +

Versioni portabili o per lo meno trasportabili + dei personal computers. Hanno generalmente una tastiera + completa ma di dimensioni ridotte, un display di ~ 15 + pollici, processori ottimizzati al risparmio energetico, + capacita' di storaggio limitate. L'espandibilita' e' molto + limitata. I portabili hanno una batteria che ne consente + l'utilizzo senza accesso alla rete elettrica fissa per + alcune ore. I cosidetti trasportabili hanno + un'autonomia senza rete elettrica irrisoria. Visto il + progressivo abbassamento dei prezzi stanno raggiungendo i + computer fissi per diffusione.

+ +

Autonomia: da 2 a 10 ore. Capacita' di storaggio: da + 250Gb fino a 1TB (Anche in RAID! )

+ +
+

Trasportabili

+ +

I cosidetti TRASPORTABILI sono + sostanzialmente delle work-station che si possono + spostare da una lugo all'altro.Data l'autonomi irrisoria + della batteria (anche 30/45 minuti) sono praticamente + utilizzabili solo connessi alla rete elettrica.

+ +

Tipicamente sono piu' tozzi e pesanti dei portatili + veri e propri, ma sono in genere piu' economici. Ad + eccezione dei modelli particolarmente lussuori con + display da 17 o piu' pollici, tipicamente dedicati al + multimedia.

+
+ +
+

Ultraportatili

+ +

Sacrificano le prestazioni per migliorare la + portabilita': molto leggeri, grande autonomia (6 o piu' + ore), display da 12 pollici o inferiore, tipicamente + molto costosi.

+
+
+ +
+

Personal + Computer

img/180px-Apple2.jpg + +

Sono le normali macchine fisse usati dagli gli utenti + per gli usi piu' disparati. Sono le macchine piu' + comuni, utilizzate per lavori di office automation + e intrattenimento, dotate di processori che privilegiano le + prestazioni rispetto al consumo (e al costo), e sono + generalmente il risultato dell'assemblaggio di parti sfuse + (schede madri, processori, periferiche) la cui combinazione + puo' portare a risultati variegati. A differenza delle + classi precedentemente descritte sono aggiornabili (posto + che ci sia compatibilita' tra i singoli componenti).

+
+ +
+

Work + Station

+ +

Sono postazioni singole ad alte performance per gli usi + piu' impegnativi (grafica, calcolo). Fino ad alcuni anni fa + erano generalmente caratterizzate da architetture + multiprocessore, ma oggi si trovano palmari con + piu' di una CPU quindi questo elemento non e' piu' + determinante. Generalmente il costo e' di molte migliaia di + euro. Questo termine sta diventando pero' obsoleto, data la + difficolta' di caratterizzare queste macchine, per scopi + promozionali / commerciali viene ormai usato per quasi + tutti i sistemi in vendita...

+
+ +
+

Server

img/blade_server.jpg + +

Un server e' un elaboratore che tipicamente eroga + servizi a molti utenti (clients) e offre + continuita' del servizio: un server tipicamente resta + acceso 24/7 mentre una workstation otto ore al giorno. + L'hardware di un server (in particolare le parti in + movimento piu' soggette a usura: alimentatore, ventole, + hard disks) dovrebbero quindi essere in grado di funzionare + tutto il giorno tutti i giorni, dato che l'interruzione, + seppur temporanea, dell'erogazione dei servizi puo' + compromettere la produttivita' di molti clients. + Componenti come alimentatore o hard disk hanno comunque una + vita limitata (anche se di buona qualita') e in + previsione di un loro malfunzionamento e' possibile + implementare sistemi di ridondanza relativamente + economici come RAID e + alimentazione ridondante. Puo' essere possibile a seconda + del tipo di hardware sostituire al volo (hot swap) + i componenti guasti senza essere costretti a spegnere la + macchina per l'intervento di manutenzione.

+ +

I requisiti di capacita' di calcolo e memoria avranno da + calcolare in base ai requisiti dei servizi in esecuzione + sul server in relazione al numero dei client collegati e + effettivo utilizzo di questi. Non e' raro trovare server + con quantitativi di RAM o CPU ben piu' + limitati dei clients che servono quando i servizi sono poco + esosi di risorse o le richieste relativamente frequenti e + sopratutto senza picchi di utilizzo. Alcuni servizi + fondamentali come DNS, routing o firewall possono saturare + la banda disponibile del server ben prima delle altre + risorse di sistema. Capita ritrovare vecchie work-station + in disuso, ormai sostituite da macchine piu' recenti e + prestanti, svolgere decorosamente queste funzioni. Il che' + rappresenta un'interessante opzione di reciclo, per quanto + il consumo elettrico sia il piu' delle volte sproporzionato + al lavoro svolto (tenendo come riferimento macchine a + bassissiimo costo di derivazione embedded o NAS di + produzione recente, ma il discorso si farebbe + complicato...) .

+ +

Tipicamente i server hanno capacita' di + collegamento (hardware di rete) superiori ai + singoli client (in proporzione alle macchine che devono + servire), ma dato che spesso client e server + condividono la stessa architettura hardware non e' semplice + fare in modo che i server siano in grado di gestire + input/output in quantita' direttamente proporzionale al + numero dei clients. Si tenga conto che molti servizi non + prevedono un flusso costante di dati ma solo chiamate + sporadiche: questo permette di poter pianificare la + ampiezza di banda necessaria al server sul valore massimo + stimato di connessioni che si potrebbero + verificare in un singolo momento piuttosto che sul reale + numero di clients.

+ +

Spesso i server non hanno periferiche di input dedicate + (mouse e tastiera), e preferibilmente montano hardware a + basso consumo (anche per limitare di conseguenza l'usura + dei sistemi di raffreddamento, e per permettere la + concentrazione in singoli armadi o server farm + ).

+
+ +
+

Mainframe

img/mainframe.jpg + +

Tipo di macchine "desuete" (a parte i casi in cui non se + ne puo' fare a meno, ma la tendenza iattuale e' di + sostituirle con uno o piu' server), i mainframe sono + fondamentalmente caratterizzate da una superiore capacita' + nella gestione dell'input/output, e nel garantire la + continuita' del servizio (molti mainframe permettono la + sostituzione a caldo anche dei processori).

+ +

I mainframe o Sistemi Centrali sono computer utilizzati + per applicazioni critiche soprattutto da grandi aziende e + istituzioni, tipicamente per elaborare con alte prestazioni + ed alta affidabilita' grandi moli di dati, come quelle in + gioco nelle transazioni finanziarie, nei censimenti, nelle + statistiche di industrie e clienti, nelle applicazioni + ERP(Enterprise Resource Planning), etc

+
+ +
+

Cluster

img/cluster.jpg + +

soluzione economica per raggiungere alte + prestazioni utilizzando piu' macchine semplici in + parallelo per lo stesso scopo. Google ad esempio e' un + cluster costituito da macchine x86 facilmente reperibili + sul mercato. L'hardware e' quindi relativamente economico + come gli interventi su di esso, e data la possibilita' di + garantire il funzionamento del cluster a prescindere dal + fallimento di un singolo membro si puo' tollerare + hardware meno sofisticato.

+
+ +
+

Supercomputer

+ + +

I supercomputer sono macchine che raggiungono le massime + prestazioni possibili secondo la tecnologia disponibile per + singola unita'. La loro architettura e' altamente + specializzata e costruita su misura, sono generalmente + molto costosi e poco aggiornabili.

+ +

La tendenza attuale e' di sostituirli con clusters di + macchine piu' semplici da gestire: nelle _classifiche dei + "super computer" molti sistema sono clusters.

+
+
+ +
+

Linguaggi di + programmazione

+ +

I computer, come detto in precedenza, registrano e + elaborano dei dati. Quest'ultima parte viene svolta con dei + programmi che sono sostanzialmente delle sequenze di + istruzioni, scritte in un linguaggio comprensibile + all'elaboratore, ripetute piu' volte.

+ +

links: http://it.wikipedia.org/wiki/Linguaggio_di_programmazione

+ +

Sappiamo che i microporcessori elaborano sequenze binarie + formate dai valori 1|0, ma sarebbe decisamente scomodo per gli + sviluppatori scrivere i programmi in questo formato. Si + preferisce scrivere i software in linguaggi formali + piu' simili alla lingua umana (inglese), che oltre a essere + piu' significativi per gli sviluppatori permettono + di scrivere sequenze di comandi che potranno poi essere + adattate automaticamente alle varie CPU.

+ +

La trasformazione del codice sorgente scritto dal + programmatore in un linguaggio di piu' alto livello + rispetto al codice oggetto direttamente eseguibile + dal microprocessore viene svolta da un compilatore o da un + interprete.

+ +

Esistono probabilmente centinaia di linguaggi di + programmazione, caratterizzabili in base a:

+ +
+
    +
  • Distanza dall'hardware: linguaggi di basso livello + come l'assebler sono molto piu' a contatto con + le caratteristiche propie della CPU rispetto a linguaggi + di alto livello come Python / Ruby / PHP. La + possibilita' di interagire in modo piu' stretto con + l'hardware puo produrre codice piu' prestante.
  • + +
  • Semplicita': linguaggi di alto livello, + sopratutto se interpretati, risultano molto piu' semplici + da scrivere e manutenere, abbassando di conseguenza costi + e tempi di sviluppo. Vista la attuale capacita' di + calcolo dei microprocessori l'efficena massima del codice + tende oggi a non essere prioritaria rispetto al tempo di + sviluppo (almeno in molti casi).
  • +
+
+ +

+ http://it.wikipedia.org/wiki/Linguaggio_di_programmazione#Linguaggi_compilati_e_linguaggi_interpretati

+ +
+

Compilatori

+ +

In informatica, un compilatore e' un programma che + traduce una serie di istruzioni scritte in un determinato + linguaggio di programmazione (codice sorgente) in + istruzioni di un altro linguaggio (codice oggetto). Questo + processo di traduzione si chiama compilazione.

+ +

Dal codice sorgente viene quindi generato un codice + oggetto direttamente eseguibile dalla CPU, senza bisogno + che al momento dell'esecuzione sia disponibile lo stesso + linguaggio o componenti dell'ambiente si sviluppo. Dato che + il compilatore ha la possibilita' di fare un'analisi + generale del codice prima di cominciare a convertirlo il + codice risultante e' in genere piu' ottimizzato rispetto al + codice eseguito da un interprete.

+ +

La compilazione richiede una certa quantita' di tempo, + ma questo accade solo in fase di + compilazione. Una volta creato il codice oggetto + questo sara' immediatamente eseguibile su tutte le macchine + compatibili, con un evidente vantaggio di prestazioni + rispetto ai linguaggi interpretati che devono procedere + alla traduzione a ogni esecuzione del + programma.

+ +

La necessita' di dover ricompilare ogni volta che si + introduce un cambiamento del codice viene pero' visto come + uno svantaggio rispetto ai linguaggi interpretati, dal + punto di vista dello sviluppatore.

+ +

Poiche' in informatica non esitono proiettili_ + d'argento (silver bullets, una soluzione per tutti i + problemi) abbiamo a disposizione tanti linguaggi diversi, + per supportare approcci piu' o meno strutturati a + problematiche piu' o meno complesse: linguaggi piu' o meno + semplici, piu' o meno efficenti nelle prestazioni, + ottimizzati per fare specifiche compiti, etc. L'idea di + base sarebbe di cercare di elaborare soluzioni semplici con + gli strumenti piu' adeguati (i linguaggi di programmazione) + alla natura del problema.

+ +

Esempio di codice in linguaggio C :

+ +

links: http://it.wikipedia.org/wiki/C_(linguaggio)

+ +
+
+ #include <stdio.h> +
+ +
+
+
+ +
+ int main() +
+ +
+ { +
+ +
+
+ printf("Hello, World!"); +
+ +
+ return 0; +
+
+ +
+ } +
+ +
+
+
+
+ +

Analisi codice: http://it.wikipedia.org/wiki/C_(linguaggio)#Hello_world.21

+
+ +
+

Interpreti

+ +

http://it.wikipedia.org/wiki/Interprete_(informatica)

+ +

Un linguaggio interpretato e' un linguaggio di + programmazione i cui programmi vengono eseguiti da un + interprete. Tale approccio si distingue da quello dei + linguaggi compilati: a differenza di un interprete, un + compilatore non esegue il programma che riceve in ingresso, + ma lo traduce in linguaggio macchina (memorizzando su file + il codice oggetto pronto per l'esecuzione diretta da parte + del processore).

+ +

L'approccio interpretato comporta una minore efficienza + a run-time; un programma interpretato, in esecuzione, + richiede piu' memoria ed e' meno veloce, a causa dello + overhead introdotto dall'interprete stesso. Durante + l'esecuzione, l'interprete deve infatti analizzare le + istruzioni a partire dal livello sintattico, identificare + le azioni da eseguire (eventualmente trasformando i nomi + simbolici delle variabili coinvolte nei corrispondenti + indirizzo di memoria), ed eseguirle; mentre le istruzioni + del codice compilato, gia' in linguaggio macchina, vengono + caricate e istantaneamente eseguite dal processore.

+ +

Esempio in python:

+ +
+
+ print "hello world!" +
+
+ +

Analisi: scrive hello world a schermo !

+
+ +
+

Java e + similari

+ +

link http://it.wikipedia.org/wiki/Macchina_virtuale_Java

+ +

La macchina virtuale Java, detta anche Java Virtual + Machine o JVM, e' la macchina virtuale che esegue i + programmi in linguaggio Java bytecode, ovvero i prodotti + della compilazione dei sorgenti Java. La JVM e' formalmente + una specifica, mantenuta da Sun Microsystems. Qualsiasi + sistema che si comporti in modo coerente con tale specifica + sara' quindi da considerarsi una particolare + implementazione della JVM. Esistono implementazioni + software per praticamente tutti i sistemi operativi + moderni, sia gratuite che commerciali. Inoltre, esistono + implementazioni speciali per particolari ambienti + hardware/software (per esempio telefoni cellulari e + palmari), e persino implementazioni hardware.

+ +

La disponibilita' di implementazioni della macchina + virtuale Java per diversi ambienti operativi e' la chiave + della portabilita' di Java, proclamata nello slogan write + once, run everywhere ("scrivi una volta, esegui + dappertutto"). La macchina virtuale realizza infatti un + ambiente di esecuzione omogeneo, che nasconde al software + Java (e quindi al programmatore) qualsiasi specificita' del + sistema operativo sottostante:

+ +
+
+ ================================ +
+ +
+ | Software applicativo Java | +
+ +
+ =============================== +
+ +
+
+ | Java Virtual Machine | +
+ +
+
+ ========================== +
+ +
+
+ | Sistema Operativo | +
+ +
+
+ ====================== +
+
+
+
+
+
+ +

Sostanzialmente il codice Java viene scritto per essere + eseguito da una Java Virtual Machine (JVM), della quale + viene rilasciata una versione per ogni diverso sistema + operativo. In questo modo modo lo sviluppatore puo' + scrivere un codice che sia indipendente dal sistema in cui + verra' eseguito, dato che la JVM (Java Virtual Machine) + dovrebbe comportarsi allo stesso modo su qaulunque sistema + venga installato.

+
+
+ +
+

Licenze + software

+ +

La licenza in ambito informatico e' il contratto che puo' + accompagnare un prodotto software. Tale contratto specifica + le modalita' con cui l'utente puo' usare tale prodotto, + garantendo dei diritti ed imponendo obblighi.

+ +

La licenza e' imposta da chi detiene il copyright sul + prodotto software; la sua validita' dipende dalla presenza + del diritto d'autore, questo perche' solo chi detiene il + copyright ha il diritto di far rispettare in ogni sede la + licenza stessa.

+ +

In vari casi l'autore puo' rilasciare un prodotto software + sotto licenze differenti, lasciando all'utente la + possibilita' di scegliere quella preferita.

+
+ +
+

Tipi di + licenze

+ +
+

Publico + dominio

+ +

Il pubblico dominio non e' propriamente una licenza, per + quanto sia determinante nei rapporti tra l'opera e i + fruitori. L'essenza sta proprio nel non sottoprre l'opera a + meccanismi di tutela della propieta' dell'opera. L'opera e' + patrimonio dell'umanita'. Tutte le opere delle quale il + copyright e' scaduto per termini di leggi (a seconda del + paese possono volerci fino a un centinaio di anni) + diventano di pubblico dominio e quindi liberamente + fruibili. Ad es. non dovete chiedere il permesso a nessuno + per stampare e diffondere l'Odissea di Omero, posto che non + contravveniate ad altre leggi vigenti nel farlo.

+ +

WWW, TCP/IP, sqlite sono + sotto pubblico domnio

+ +

Publico dominio = cessazione di tutti i diritti di + eslusiva: http://it.wikipedia.org/wiki/Pubblico_dominio

+
+ +
+

Freeware

+ +

http://it.wikipedia.org/wiki/Freeware

+ +

Software a gratis. Nel senso che non si paga + per utilizzarlo. Gratis come in "birra gratis per + tutti".

+ +

L'utente non pu' modificarlo in alcun modo, a meno che + non espressamente previsto.

+ +

Il termine freeware indica un software che viene + distribuito in modo gratuito.

+ +

Il freeware e' distribuito indifferentemente con o senza + codice sorgente, a totale discrezione dell'autore e senza + alcun obbligo al riguardo. È sottoposto + esplicitamente ad una licenza che ne permette la + redistribuzione gratuita. Il software freeware viene + concesso in uso senza alcun corrispettivo, ed e' + liberamente duplicabile e distribuibile, con pochissime + eccezioni.

+
+ +
+

Shareware

+ +

Shareware e' una tipologia di licenza software molto + popolare sin dai primi anni Novanta. Vengono distribuiti + sotto tale licenza in genere programmi facilmente + scaricabili via Internet o contenuti in CD e DVD quasi + sempre allegati alle riviste di Informatica in vendita in + edicola.

+ +
+ Il software sotto tale licenza puo' essere liberamente + ridistribuito, e puo' essere utilizzato per un periodo di + tempo di prova variabile (generalmente 30 giorni). + Scaduti questi termini, per continuare ad utilizzare il + software e' necessario registrarlo presso la casa + produttrice, pagandone l'importo. All'avvio + dell'applicazione shareware generalmente un Nag Screen + informa l'utente su come effettuare la registrazione e + sulle condizioni di utilizzo. +
+
+
+ +
+

Licenze per software + liberi

+ +

http://it.wikipedia.org/wiki/Software_libero

+ +

Il Software libero e' una questione di liberta', non di + prezzo. Per capire il concetto, bisognerebbe pensare alla + liberta' di parola e non alla birra gratis [NdT: il termine + free in inglese significa sia gratuito che libero, in + italiano il problema non esiste].

+ +

Cosa sia, o meglio quanto debba essere libero un software + per poter essere definito tecnicamente libero e' + motivo di discussione sia tra sviluppatori che tra i non i + non addetti ai lavori, data l'applicazione del concetto di + copyleft ad altre discipline diverse dall'informatica.

+ +

Generalmente con software libero si intende quel codice + rilasciato sotto licenza GPL, per quanto altre licenze + vengano generalmente accettate come libere. + Stabiliti dei criteri, almeno per quanto riguarda il + software, si puo' procedere a una comparazione tra le varie + licenze alternative alla GPL:

+ +
+ +
+ +

Dal sito del progetto Gnu possiamo copiare la + seguente definizione:

+ +

Definizione di Software Libero

+ +
+

Questa definizione ha lo scopo di chiarire quali sono i + requisiti che un certo programma deve soddisfare perche' lo + si possa considerare "software libero".

+ +

Il Software libero e' una questione di liberta', non di + prezzo. Per capire il concetto, bisognerebbe pensare alla + liberta' di parola e non alla birra gratis [NdT: il termine + free in inglese significa sia gratuito che libero, in + italiano il problema non esiste].

+ +

L'espressione "software libero" si riferisce alla + liberta' dell'utente di eseguire, copiare, distribuire, + studiare, cambiare e migliorare il software. Piu' + precisamente, esso si riferisce a quattro tipi di liberta' + per gli utenti del software: Liberta' di eseguire il + programma, per qualsiasi scopo (liberta' 0). Liberta' di + studiare come funziona il programma e adattarlo alle + proprie necessita' (liberta' 1). L'accesso al codice + sorgente ne e' un prerequisito. Liberta' di ridistribuire + copie in modo da aiutare il prossimo (liberta' 2). Liberta' + di migliorare il programma e distribuirne pubblicamente i + miglioramenti, in modo tale che tutta la comunita' ne + tragga beneficio (liberta' 3). L'accesso al codice sorgente + ne e' un prerequisito.

+ +

Un programma e' software libero se l'utente ha tutte + queste liberta'. In particolare, se e' libero di + ridistribuire copie, con o senza modifiche, gratis o + addebitando delle spese di distribuzione a chiunque ed + ovunque. Essere liberi di fare queste cose significa (tra + l'altro) che non bisogna chiedere o pagare nessun + permesso.

+ +

Bisogna anche avere la liberta' di fare modifiche e + usarle privatamente nel proprio lavoro o divertimento senza + doverlo dire a nessuno. Se si pubblicano le proprie + modifiche, non si deve essere tenuti a comunicarlo a + qualcuno in particolare o in qualche modo particolare.

+ +

La liberta' di usare un programma significa liberta' per + qualsiasi tipo di persona od organizzazione di utilizzarlo + su qualsiasi tipo di sistema informatico, per qualsiasi + tipo di attivita' e senza dover successivamente comunicare + con lo sviluppatore o con qualche altra entita' specifica. + Quello che conta per questa liberta' e' lo scopo + dell'utente, non dello sviluppatore; come utenti potete + eseguire il programma per i vostri scopi; se lo + ridistribuite a qualcun altro, egli e' libero di eseguirlo + per i propri scopi, ma non potete imporgli i vostri + scopi.

+ +

La liberta' di ridistribuire copie deve includere le + forme binarie o eseguibili del programma e anche il codice + sorgente, sia per le versioni modificate che non modificate + (distribuire programmi in formato eseguibile e' comodo per + avere sistemi operativi liberi facili da installare). + È legittimo anche se non c'e' alcun modo di + produrre una forma binaria o eseguibile (dal momento che + alcuni linguaggi non supportano questa caratteristica), ma + si deve avere la liberta' di ridistribuire tali forme nel + caso si trovi o si sviluppi un modo per farlo.

+ +

Affinche' le liberta' di fare modifiche e di pubblicare + versioni migliorate abbiano senso, si deve avere accesso al + codice sorgente del programma. Percio', l'accessibilita' al + codice sorgente e' una condizione necessaria per il + software libero.

+ +

Un importante modo di modificare un programma e' quello + di includervi funzioni e moduli liberi gia' esistenti. Se + la licenza del programma prevede che non si possano + includere moduli gia' esistenti, ad esempio se richiede che + voi possiate aggiungere solo codice di cui detenete il + copyright, allora la licenza e' troppo restrittiva per + essere considerata libera.

+ +

Queste liberta' per essere reali devono essere + irrevocabili fin tanto che non si fa qualcosa di sbagliato: + se lo sviluppatore del software ha il potere di revocare la + licenza anche senza che l'utente sia causa di tale revoca, + il software non e' libero.

+ +

Tuttavia, certi tipi di regole sul come distribuire il + software libero sono accettabili quando non entrano in + conflitto con le liberta' principali. Per esempio, il + copyleft, noto anche impropriamente come "permesso + d'autore", e' (detto poche parole) la regola per cui, + quando il programma e' ridistribuito, non e' possibile + aggiungere restrizioni per negare ad altre persone le + liberta' principali. Questa regola non entra in conflitto + con le liberta' principali, anzi le protegge.

+ +

Indipendentemente dal fatto che si siano ottenute copie + di software GNU a pagamento o gratuitamente, si ha sempre + la liberta' di copiare e cambiare il software, e anche di + venderne copie.

+ +

Software libero non vuol dire non-commerciale. Un + programma libero deve essere disponibile per uso + commerciale, sviluppo commerciale e distribuzione + commerciale. Lo sviluppo commerciale di software libero non + e' piu' inusuale: questo software commerciale libero e' + molto importante.

+
+
+ + + +
+

Licenza + BSD

+ +

Le licenze BSD sono una famiglia di licenze permissive + per software. Molte sono considerate libere ed open source. + Il loro nome deriva dal fatto che la licenza BSD originale + (detta anche licenza BSD con 4 clausole) fu usata + originariamente per distribuire il sistema operativo Unix + Berkeley Software Distribution (BSD), una revisione libera + di UNIX sviluppata presso l'Universita' di Berkeley.

+ +
+
Links:
+ +
+ +
+
+
+ +
+

Licenza + Apache

+ +

In ambito informatico, con Licenza Apache (ingl:Apache + License) si intende una precisa licenza, che similmente + alla licenza BSD, permette di utilizzare il codice dentro + progetti non open source e senza obbligo di rilascio dei + sorgenti modificati.

+ +

La Licenza Apache venne scritta dalla Apache Software + Foundation (ASF) per il piu' usato server web, Apache. + È una licenza per software libero, ma non + compatibile con la GNU GPL.

+ +

Questa licenza assume particolare inportanza in quanto + usata per molti altri software rilasciati dalla Apache + Software Foundation (ASF) + e altri progetti,

+ +

Esistono le versioni 1.0, 1.1 e 2.0.

+
+
+ +
+

Eula

+ +

EULA o End User License Agreement (accordo di licenza con + l'utente finale) e' il contratto tra il fornitore di un + programma software e l'utente finale. Tale contratto assegna + la licenza d'uso del programma all'utente nei termini + stabiliti dal contratto stesso.

+ +

Segue su: http://it.wikipedia.org/wiki/EULA

+ +
+
    +
  • Multilicenze (enterprice)
  • + +
  • Licenze singole
  • + +
  • OEM : legate all'hardware, non possono essere + spostata su una macchina diversa
  • +
+
+ +
+
Link alla licenza EULA di MS Windows XP:
+ +
+ +
+
+
+
+ + diff --git a/reti.html b/reti.html new file mode 100644 index 0000000..9ac05cb --- /dev/null +++ b/reti.html @@ -0,0 +1,1029 @@ + + + + + + + + + + Reti + + + + +
+

Reti

+ +

+ Appunti introduttivi alle reti

+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
Author:Andrea Manni
Copyright:GFDL
Version:0.2
+
+ + + +

Generato con: http://docutils.sourceforge.net/rst.html

+ +

Risorsa alternative in inglese: + http://www.netfilter.org/documentation/HOWTO/networking-concepts-HOWTO.html

+ +
+

Rete di + calcolatori

+ +

Da Wikipedia, l'enciclopedia libera. (Reindirizzamento da + Rete informatica)

+ +

Una rete di calcolatori e' un sistema che permette la + condivisione di informazioni e risorse (sia hardware che + software) tra diversi calcolatori. Il sistema fornisce un + servizio di trasferimento di informazioni ad una popolazione + di utenti distribuiti su un'area più o meno + ampia.

+ +

Le reti di calcolatori generano traffico di tipo + fortemente impulsivo, a differenza del telefono, e per questo + hanno dato origine - e usano tuttora - la tecnologia della + commutazione di pacchetto.

+
+ +
+

Rete / + Mainframe

+ +

La costruzione di reti di calcolatori può + essere fatta risalire alla necessita' di condividere le + risorse di calcolatori potenti e molto costosi (mainframe). + La tecnologia delle reti, e in seguito l'emergere dei + computer personali a basso costo, ha permesso rivoluzionari + sviluppi nell'organizzazione delle risorse di calcolo.

+ +

Si possono indicare almeno tre punti di forza di una rete + di calcolatori rispetto al mainframe tradizionale: fault + tolerance (resistenza ai guasti): il guasto di una macchina + non blocca tutta la rete, ed e' possibile sostituire il + computer guasto facilmente (la componentistica costa poco e + un'azienda può permettersi di tenere i pezzi di + ricambio in magazzino); economicita': come accennato sopra, + hardware e software per computer costano meno di quelli per i + mainframe; gradualita' della crescita e flessibilita' + (scalabilita'): l'aggiunta di nuove potenzialita' a una rete + gia' esistente e la sua espansione sono semplici e poco + costose.

+ +

Tuttavia una rete ha alcuni punti deboli rispetto a un + mainframe: scarsa sicurezza: un malintenzionato + può avere accesso più facilmente ad + una rete di computer che ad un mainframe: al limite gli basta + poter accedere fisicamente ai cablaggi della rete. Inoltre, + una volta che un worm abbia infettato un sistema della rete, + questo si propaga rapidamente a tutti gli altri e l'opera di + disinfezione e' molto lunga, difficile e non offre certezze + di essere completa; alti costi di manutenzione: con il + passare del tempo e degli aggiornamenti, e con l'aggiunta di + nuove funzioni e servizi, la struttura di rete tende ad + espandersi e a diventare sempre più complessa, e + i computer che ne fanno parte sono sempre più + eterogenei, rendendo la manutenzione sempre più + costosa in termini di ore lavorative. Oltre un certo limite + di grandezza della rete (circa 50 computer) diventa + necessario eseguire gli aggiornamenti hardware e software su + interi gruppi di computer invece che su singole macchine, + vanificando in parte il vantaggio dei bassi costi + dell'hardware.

+
+ +
+

Tipi di reti

+ +

Esiste una grande varieta' di tecnologie di rete e di + modelli organizzativi, che possono essere classificati + secondo diversi aspetti:

+ +

Classificazione sulla base dell'estensione geografica

+ +

A seconda dell'estensione geografica, si distinguono + diversi tipi di reti:

+ +
+
    +
  • si parla di rete personale o PAN (Personal Area + Network) se la rete si estende intorno all'utilizzatore + con una estensione di alcuni metri
  • +
+ +

potrebbe anche non essere una distinzione + importante.

+ +
    +
  • si parla di rete locale o LAN (Local Area Network) se + la rete si estende all'interno di un edificio o di un + comprensorio, con una estensione entro alcuni + chilometri
  • + +
  • si parla di rete senza fili o WLAN (Wireless Local + Arddea Network), se la rete locale e' basata su una + tecnologia in radio frequenza (RF), permettendo la + mobilita' all'interno dell'area di copertura, solitamente + intorno al centinaio di metri all'aperto. Si noti che + questa distinzione si basa principlmante sul mezzo + trasmissivo, e non sull'estensione. Quindi il termine + WLAN non e' indicativo dal punto di vista delle + dimensioni.
  • + +
  • si parla di CAN (Campus Area Network), intendendo la + rete interna ad un campus universitario, o comunque ad un + insieme di edifici adiacenti, separati tipicamente da + terreno di proprieta' dello stesso ente, che possono + essere collegati con cavi propri senza far ricorso ai + servizi di operatori di TLC. Tale condizione facilita la + realizzazione di una rete di interconnessione ad alte + prestazioni ed a costi contenuti.
  • + +
  • si parla di rete metropolitana o MAN (Metropolitan + Area Network) se la rete si estende all'interno di una + citta'
  • + +
  • si parla di rete geografica o WAN (Wide Area Network) + se la rete si estende oltre i limiti indicati + precedentemente.
  • +
+
+
+ +
+

Classificazione in + base al canale trasmissivo

+ +
+

Reti Locali

+ +

Le reti locali vengono realizzate tipicamente + utilizzando un sistema di cablaggio strutturato con cavi + UTP in categoria 5 o superiore, che serve uno o + più edifici utilizzati tipicamente da una + stessa entita' organizzativa, che realizza e gestisce la + propria rete, eventualmente con la cooperazione di aziende + specializzate.

+ +

Link ai cavi UTP: http://it.wikipedia.org/wiki/Unshielded_Twisted_Pair + link ai cavi coassiali per vedere la differenza: http://it.wikipedia.org/wiki/Cavo_coassiale

+ +

In molti casi, il cablaggio e' complementato o + sostituito da una copertura wireless.

+ +

Le LAN vengono realizzate soprattutto con la tecnologia + ethernet, e supportano velocita' di 10/100 Mbit/s, o anche + 1 Gbit/s, su cavi in rame dalle caratteristiche adeguate + (CAT5 o superiore), o su fibra ottica.

+
+ +
+

Reti pubbliche - + Distribuzione

+ +

Le reti pubbliche sono gestite da operatori del settore + (gli ISP: Internet Service Provider), e offrono servizi di + telecomunicazione a privati ed aziende in una logica di + mercato.

+ +

Per poter offrire servizi al pubblico, e' necessario + disporre di una infrastruttura di distribuzione che + raggiunga l'intera popolazione.

+ +

Per ragioni storiche, la gran parte delle reti pubbliche + sono basate sul doppino telefonico (dette anche POTS, Plain + Old Telephone System). Questa tecnologia era stata studiata + per supportare il servizio di telefonia analogica, ma data + la sua pervasivita' e gli alti investimenti che sarebbero + necessari per sostituirla e' stata adattata al trasporto di + dati mediante diverse tecnologie: i modem per codificare + segnali digitali sopra le comuni linee telefoniche + analogiche. Il grande vantaggio di questa tecnologia e' che + non richiede modifiche alla rete distributiva esistente. + Sono necessari due modem ai due capi di una connessione + telefonica attiva per stabilire una connessione. Molti + fornitori di servizio offrono un servizio di connettivita' + Internet via modem mediante batterie di modem + centralizzate. La velocita' e' limitata a circa 56 Kbit/s, + con l'adozione di modem client e server che supportano la + versione V92 dei protocolli di comunicazione per modem. + Questo protocollo incorpora funzioni di compressione del + flusso di bit trasmesso, quindi la velocita' effettiva + dipende dal fattore di compressione dei dati trasmessi. le + reti ISDN trasmettendo dati e voce su due canali telefonici + in tecnologia digitale. Mediante appositi adattori, e' + possibile inviare direttamente dati digitali. La tecnologia + ISDN e' ormai molto diffusa nei paesi sviluppati. Usandola + per la trasmissione di dati, arrivano ad una velocita' + massima di 128 Kbit/s, senza compressione, sfruttando in + pratica due connessioni dial-up in parallelo, possibili + solo con determinati provider. La velocita' su un singolo + canale e' invece limitata a 64 Kbit/s. Ci sarebbe un terzo + canale untilizzato per il segnale ma non per la + comunicazione con una capacita' di 16 Kbit/s (Esso non + viene mai utilizzato per i dati).

+ +

Utilizzando modem analogici o ISDN, e' possibile + stabilire una connessione dati diretta tra due qualsiasi + utenze della rete telefonica o ISDN rispettivamente. la + tecnologia ADSL (Asymmetric Digital Subscriber Line) + utilizza una porzione della banda trasmissiva disponibile + sul doppino telefonico dalla sede dell'utente alla centrale + telefonica più vicina per inviare dati + digitali. È necessaria l'installazione di + nuovi apparati di commutazione nelle centrali telefoniche, + chiamati DSLAM, e l'utilizzo di filtri negli impianti + telefonici domestici per separare le frequenze utilizzate + per la trasmissione dati da quelle per la comunicazione + vocale. La loro diffusione sul territorio e' limitata dai + costi, che la rendono conveniente solo nelle aree + maggiormente sviluppate. Durante la connessione tramite + ADSL e' possibile continuare a utilizzare il telefono in + quanto le frequenze della voce e dei dati non si + sovrappongono. Questa tecnologia e' inoltre chiamata + Asimmetric in quanto le velocita' di download e di upload + non sono uguali: in Italia sono tipicamente pari a 4 Mbit/s + in download e 512 Kbit/s in upload, ma per certi + abbonamenti la velocita' di download può + arrivare anche a 12 Mbit/s, o anche 24 Mbit/s, usando + tecnologie di punta come ADSL2+ e reti di distribuzione in + fibra ottica di ottima qualita'. Il doppino di rame + presenta l'inconveniente di attenuare i segnali, e non + permette il funzionamento di questa tecnologia per distanze + superiori ai 5 Km circa. In alcuni casi e' anche possibile + un'ulteriore riduzione della distanza massima dovuta a + interferenze esterne che aumentano la probabilita' + d'errore. Un'altra limitazione importante e' data + dall'interferenza "interna", che si verifica quando molte + utenze telefoniche sullo stesso cavo di distribuzione + utilizzano il servizio ADSL. Questo fa si che non si possa + attivare il servizio ADSL su più di circa il + 50% delle linee di un cavo di distribuzione.

+ +

ADSL e' l'ultimo sviluppo sull'infrastruttura esistente + di doppino telefonico.

+ +

Per superare queste velocita', l'infrastruttura di + distribuzione basata sul doppino dovra' essere sostituita + da supporti fisici più performanti.

+
+ +

Tra i candidati a sostituire il doppino per la + distribuzione domestica dei servizi di telecomunicazioni, + si possono citare:

+ +
+
    +
  • le fibre ottiche:
  • + +
  • le infrastrutture della TV via cavo (diffusa + soprattutto negli USA)
  • + +
  • il trasporto di dati sulla rete elettrica o nelle + condutture del gas.
  • + +
  • le reti wireless
  • + +
  • le reti satellitari (che però sono + tipicamente unidirezionali, dal satellite alla casa + dell'utente, mentre il canale di ritorno deve essere + realizzato con altre tecnologie, spesso su doppino + telefonico.
  • +
+
+
+ +
+

Reti di + trasporto

+ +

Capacita' ancora superiori sono necessarie per + trasportare il traffico aggregato tra le centrali di un + operatore di telecomunicazioni.

+ +

Con tecnologie più costose, tipicamente + utilizzate dai providers, si raggiungono velocita' di 40 + Gbit/s per il singolo link su fibra ottica.

+ +

Su una singola fibra e' poi possibile inviare molteplici + segnali attraverso una tecnica di multiplazione chiamata + (Dense) Wave Division Multiplexing ((D)WDM), o + Multiplazione di Lunghezza d'Onda, che invia segnali ottici + differenti a diverse lunghezze d'onda (in gergo, colori). + Il numero di segnali indipendenti trasportabile va dai 4 o + 16 dei relativamente economici impianti (Coarse)WDM alle + centinaia degli impianti DWDM più + avanzati.

+ +

Negli Stati Uniti d'America il progetto Internet 2 cui + collaborano la NASA, la difesa e le universita' americane + connette gia' molti campus alla velocita' di 2 Gigabit/s + (disponibili anche per studenti), con miglioramenti di + TCP/IP per poter sfruttare alte velocita' di trasmissione, + e permettera' di far transitare in rete il controllo dei + satelliti civili, dello scudo spaziale, aerei comandati a + distanza, testate nucleari e l'intera infrastruttura + militare.

+
+
+ +
+

Classificazione in + base alla topologia

+ +

Link semplificato: http://www.tutorialpc.it/retipc5.asp

img/reti_img/NetworkTopologies.png + +

Tre sono le topologie principali, in base alla tecnologia + assunta come modalita' per il trasferimento dei dati: Bus + Ring Star. Particolare attenzione riceve oggi un modello che + prende il nome di rete Peer to Peer, per quanto e' incerto se + lo si possa assumere come modello di topologia o piuttosto + come paradigma di architettura di rete, in contrapposizione + al modello client-server .

+ +

Altri modelli (mesh, ecc) sono sostanzialmente la + combinazione dei tre precedentemente citati.

+ + + +
+

Rete a + anello

img/reti_img/ring.gif + +

Link: + http://www.net-free.it/articoli/viewart.php?idart=40&idpag=2

+ +

nota: Pag 21 manuale TCP/IP

+ +

pag 21

+
+ +
+

Rete a + stella

+ + +

Le reti broadcast invece sono formate da un unico mezzo + fisico condiviso da più elaboratori, dove i + messaggi inviati da un elaboratore vengono ricevuti da + tutti gli altri. All'interno del messaggio vi e' una parte + relativa all'indirizzo del destinatario, in modo che tutte + le altre macchine in ascolto possano scartare il messaggio + in arrivo. Alcune reti prevedono indirizzi speciali di tipo + broadcast e multicast. Il broadcast permette di inviare + messaggi a tutte le stazioni collegate al mezzo fisico, + mentre il multicast permette di farlo solo ad un gruppo di + stazioni, ma non a tutte. Un esempio di una tale rete e' la + comunissima Ethernet.

+ +

Le moderne reti broadcast sono realizzate con una + topologia fisica a stella (point-to-point), in cui tutti + gli elaboratori sono connessi ad un punto di + concentrazione, dove un apparato attivo (switch o hub) crea + l'illusione che siano tutti connessi allo stesso mezzo + fisico. Talvolta si usa definire questi apparati + centrostella, appunto perche' si trovano al centro della + rete a stella.

+
+
+
+ +
+

Paradigmi di + Rete

+ +
+

Client-Server

+ +

Secondo questo modello l'host client sottopone delle + richieste al computer server, che risponde (e cerca di + soddisfare) queste richieste. Ad es nella navigazione Web + il client http (browser web, es Mozilla Firefox) contatta e + chiede una pagina web al server web, che fornisce + la risorsa al client.

+ +

Il rapporto non e' paritario, il client e' una macchina + stupida che dipende dal server per + l'operazione richiesta. La parte computazione compete al + server, mentre il client deve preoccuparsi prevalentemente + di formulare una richiesta corretta ed essere poi in grado + di elaborare la risposta del server.

+ +

Il rapporto e' quindi molti (client) ad uno + (server).

+ +

Questo paradigma favorisce l'accentramento dei servizi e + la loro consolidazione: all'interno di un'azienda si + possono delegare tutti i servizi fondamentali su una o piu' + macchine in modo da poter concentrare la manutenzione (si + pensi soporatutto alla sicurezza) su queste trattando i + client come elementi sostituibili. I server + tipicamente hanno una configurazione e dotazione hardware + che gli consente di funzionare 24/7 (tutto il giorno, tutti + i giorni), mentre le work station dei client sono + realizzate per funzionare otto ore al giorno.

+ +

Prendendo come esempio il servizio di posta elettronica, + l'utente puo' ricevere emails in ogni momento anche se il + suo computer client e' spento, dato che le caselle email + (mail box o maildir) sono effettivamente sul server, sempre + operativo. Quando richiesto l'utente si colleghera' con una + applicazione client (MUA, Mail Client) al server per + consultare la posta disponibile per il suo account.

+
+ +
+

Peer to + Peer

img/reti_img/P2ptv.PNG + +

Questo paradigma di comunicazione e' tipico dei network + P2P (peer2peer) e si propone come antitesi al + precedente modello client server. Il rapporto tra i singoli + host e' paritario, ogni elemento della rete e' in grado di + svolgere la funzione richesta dall'utente senza + l'intervento di una macchina centrale.

+ +

Uno dei primi e' piu' famosi esmpi di applicazione P2P + e' stato Napster, al momento tecnologie come i + torrents usano un paradigma simile (talvolta si + preferisce avere un host privilegiato che renda + disponibili informazioni di base come la lista dei peer + disponibili per inizializzare i nuovi peer).

+ +

Generalmente una rete P2P e' in grado si sopravvivere + allo spegnimento casuale di qualunque suo membro, e + distribuisce gli oneri della gestione della connessione tra + i sognoli peer.

+
+
+
+ +
+

Commutazione di + Pacchetto

+ +
+ nota: Pag 24 Manuale TCP/IP +
+ +

(Packet Switching)

+ +

Le reti di calcolatori si basano su una multiplazione + dinamica a commutazione di pacchetto, a differenza delle reti + telefoniche che invece utilizzano una multiplazione statica a + commutazione di circuito. Tra le reti a commutazione di + pacchetto però e' fondamentale operare una + distinzione tra:

+ +

Nelle reti con connessione, i percorsi che il pacchetto + seguira' attraverso la rete sono prestabiliti e sono sempre + gli stessi (si veda la vicinanza, sotto questo punto di + vista, alle reti a commutazione di circuito), e si basano su + un canale, stavolta non fisico (come nelle reti telefoniche) + ma "virtuale". Per comprendere meglio il concetto di canale + virtuale si pensi a due elaboratori A e B che devono + comunicare tra loro. A e B all'interno della rete non sono + collegati tra loro, quindi e' necessario che i pacchetti + attraversino degli elaboratori intermedi. Prima + dell'effettivo scambio dei dati però tra A e B + viene creato un percorso prestabilito chiamato canale + virtuale. Esempi particolarmente calzanti di reti orientate + alla connessione sono le reti a commutazione di cella ATM o + le reti Frame Relay e Frame Relay SE (Switch). I vantaggi di + una rete siffatta stanno ovviamente nella qualita' del + servizio.

+ +

Nelle reti a commutazione senza connessione(o datagram), i + percorsi che i pacchetti tenderanno a seguire non sono (e non + possono) essere prestabiliti a priori, ma dipendono da una + serie di fattori. Un esempio classico di rete a commutazione + di pacchetto senza connessione e' l'IP. Come sappiamo nelle + reti TCP/IP il TCP dell'elaboratore A si collega direttamente + al corrispondente servizio dell'elaboratore B. Quindi a + livello di trasporto c'e' connessione e quindi controllo + sulla qualita' del servizio e sulla congestione della rete. + Cosa che non accade a livello network. Il router + dell'elaboratore A affida i pacchetti al router successivo + indicato nella sua tabella di routing. Dopodiche', si + disinteressa totalmente dell'ulteriore percorso che il + pacchetto dovra' seguire all'interno della rete. Questo + potrebbe sembrare un male, ma così non e', + proprio per via di questa divisione di compiti tra il layer + di trasporto e quello network.

+ +
+
Link immagine: http://www.emeraldinsight.com/ + fig/0460020304003.png
+ +
nota rigenerare per licenza.
+
+ +

nota: distinguere tra suddivisione in pacchetti / + scelta del percorso (ICMP)i (pag 28. TCP/IP). Descrivere le + collisioni tra pacchetti. (eventualmente cenni a portante e + evnti fisici / elettrici).

+
+ +
+

Sezioni di una + rete

+ +

In ogni rete di grandi dimensioni (WAN), e' individuabile + una sezione di accesso e una sezione di trasporto.

+ +

La sezione di accesso ha lo scopo di consentire l'accesso + alla rete da parte dell'utente, e quindi di solito + rappresenta una sede di risorse indivise (Si pensi ai + collegamenti ADSL commerciali: La porzione di cavo che ci + collega alla centrale e' un doppino telefonico, utilizzato + esclusivamente dall'abbonato). La sezione di accesso + altresì comprende tutti quegli strumenti idonei a + consentire l'accesso alla rete. Quindi possiamo distinguere + vari tipi di accesso: "Residenziale" (Classica linea a + 56Kbit/s, linea ISDN/ADSL), "Business" (Rete Locale + dell'azienda e Gateway o Proxy che consente l'accesso + all'esterno), "Mobile" (si pensi ad esempio al GSM, che + consente un acesso basato su una rete a radiofrequenza con + copertura "cellulare"), o "Wireless".

+ +

La sezione di trasporto e' quella che ha il compito di + trasferire l'informazione tra vari nodi di accesso, + utilizzando se e' necessario anche nodi di transito. + È sede quindi di risorse condivise sia di + trasporto dati che di elaborazione. Dal punto di vista + strutturale, una rete di trasporto e' costruita quasi + esclusivamente attraverso fibre ottiche (es. Backbone).

+
+ +
+

L'importanza degli + standard - Sistemi aperti

+ +

nota: pag 33 manuale TCP/IP

+ +

Gli standard de iure e de facto aiutano a gestire le reti + aziendali multiprotocollo. I più importanti enti + di standardizzazione per le reti di computer sono: CCITT, + ITU, ISO, ANSI e IEEE.

+ +

Di particolare impatto e' l'OSI (Open System + Interconnection), un progetto ISO risalente alla fine degli + anni '70, che si propone come modello di riferimento per le + reti. Esso presenta un approccio a 7 livelli (layers), con + una serie di protocolli che si inseriscono ai vari livelli. I + livelli 1 (Livello fisico) e 2 (Livello Data Link) sono ormai + standard, mentre per gli altri 5 ci sono protocolli che + esistono da tempo e gli standard faticano ad imporsi.

+
+ +
+

L'importanza dei + protocolli

+ +

Inportanza delle architetture a livelli (pag 33 manuale + TCP - IP).

+ +

I layers di astrazione.

+
+ +

A seguire:

+ +
+
    +
  • il Modello OSI
  • + +
  • il TCP / IP
  • + +
  • Hardware di rete
  • +
+
+ +

Intermezzo:

+ +
+
    +
  • supporti di connessione (radio, fibra, ecc..)
  • + +
  • Cablaggi
  • +
+
+
+
+ + diff --git a/servizi.html b/servizi.html new file mode 100644 index 0000000..6a45af6 --- /dev/null +++ b/servizi.html @@ -0,0 +1,614 @@ + + + + + + +Servizi passo a passo + + + +
+

Servizi passo a passo

+

Appunti sulla installazione e configurazione dei servizi

+ +
+ +++ + + + + + + + +
Author:Andrea Manni
Copyright:GFDL
Version:0.2
+
+ +

Generato con: http://docutils.sourceforge.net/rst.html

+
+

Configurazione sistema

+

Inpostazioni di base per la configurazione del sistema operativo

+
+

Rete

+

Parametri della rete attualmente in uso:

+
+============= ================
+ rete         10.10.208.0/24
+============= ================
+netmask       255.255.255.0
+broadcast     10.10.208.255
+gateway       10.10.208.254
+gateway       10.10.208.250
+              persistente
+DNS           10.10.208.254
+DNS           10.10.208.250
+              persistente
+============= ================
+
+
+
+

Bash completion

+

Abilitare /etc/bash_completion nel file /etc/bash.bashrc oppure ~/.bashrc

+
+. /etc/bash_completion
+
+

/etc/bash_completion deve essere pre istallato, nel caso che non sia disponibile installare il pacchetto: bash-completion

+
+
+

Vim

+

Sara' opportuno installare la versine completa dell'editor vim tramite il pacchetto vim e mnodificare il file di configurazione generale /etc/vim/vimrc

+
+" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
+" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
+" you can find below.  If you wish to change any of those settings, you should
+" do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
+" everytime an upgrade of the vim packages is performed.  It is recommended to
+" make changes after sourcing debian.vim since it alters the value of the
+" 'compatible' option.
+
+" This line should not be removed as it ensures that various options are
+" properly set to work with the Vim-related packages available in Debian.
+runtime! debian.vim
+
+" Uncomment the next line to make Vim more Vi-compatible
+" NOTE: debian.vim sets 'nocompatible'.  Setting 'compatible' changes numerous
+" options, so any other options should be set AFTER setting 'compatible'.
+"set compatible
+
+" Vim5 and later versions support syntax highlighting. Uncommenting the next
+" line enables syntax highlighting by default.
+syntax on
+
+" If using a dark background within the editing area and syntax highlighting
+" turn on this option as well
+set background=dark
+
+" Uncomment the following to have Vim jump to the last position when
+" reopening a file
+
+if has("autocmd")
+  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
+    \| exe "normal! g'\"" | endif
+endif
+
+" Uncomment the following to have Vim load indentation rules and plugins
+" according to the detected filetype.
+if has("autocmd")
+  filetype plugin indent on
+endif
+
+" The following are commented out as they cause vim to behave a lot
+" differently from regular Vi. They are highly recommended though.
+set showcmd             " Show (partial) command in status line.
+"set showmatch          " Show matching brackets.
+set ignorecase          " Do case insensitive matching
+"set smartcase          " Do smart case matching
+"set incsearch          " Incremental search
+set autowrite           " Automatically save before commands like :next and :make
+"set hidden             " Hide buffers when they are abandoned
+"set mouse=a            " Enable mouse usage (all modes) in terminals
+
+" Source a global configuration file if available
+" XXX Deprecated, please move your changes here in /etc/vim/vimrc
+if filereadable("/etc/vim/vimrc.local")
+  source /etc/vim/vimrc.local
+endif
+
+
+
+

VNC

+

Scaricare il pacchetto xtightvncviewer, e lo script guarda.sh che deve essere reso eseguibile in una posizione (nel senso di collocazione nel path degli utenti) comoda per gli utenti.

+

Procedura:

+
+su root
+cd /bin
+wget http://debian.piffa.net/guarda.sh
+chmod +x guarda.sh
+exit
+
+

Si noti, per pieta' divina, che non e' possibile lanciare un applicativo grafico sul server grafico di un utente di sistema da una shell in cui si e' loggati come altro utente, in questo caso root. E' quindi necessario essere l'utente di sistema che si e' loggato inizialmente nella sessione grafica per poter lanciare lo script guarda.sh .

+
+
+

Lista dei pacchetti di base

+

I pacchetti installati generalemnte durante le lezioni sono:

+
+kde-core kdm kde-i18n-it xorg vim less xtightvncviewer
+
+
+
+

Apt configurazione

+

Vediamo i due file principali di apt:

+
+* /etc/apt/sources.list
+
+* /etc/apt/apt.conf
+
+
+

sources.list

+

Questo file contiene i sorgenti da cui apt preleva i pacchetti da installare tramite dpkg, vengono quindi precisati i metodi (ad es. http / ftp / cdrom / file), la release che si vuole tracciare (es stable , testing , unstable oppure i corrispondenti release name es: lenny, squeeze, sid), i rami di interesse (es: main che e' la parte principale, non-free per il software non libero, contrib per i pacchetti non realizzati dai manutentori ufficiali).

+

Gli archivi sono generalemnte:

+
+* deb per pacchetti debian binari
+
+* deb-src per i pacchetti sorgenti (quindi da compilare, come il kernel) degli stessi pacchetti binari. Se non compilate generalmente i vostri pacchetti potete evitare di tracciare i sorgenti per risparmiare tempo e banda.
+
+

/etc/apt/sources.list

+
+# esempio di accesso a un CDROM:
+# cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$
+
+# Archivio principale debian via http su piffa.net,
+# non funziona al difuori dell'aula dei corsi
+deb http://debian.piffa.net/debian/ lenny main
+# deb http://debian.piffa.net/debian/ lenny  non-free contrib
+
+# Mirror da kernel.org da usare a casa:
+deb http://mirrors.eu.kernel.org/debian/ lenny main
+
+# Security dal sito principale
+deb http://security.debian.org/ lenny/updates main
+deb-src http://security.debian.org/ lenny/updates main
+
+# Debian volatile per le cose soggette a cambiamenti non legati
+# a dinamiche di sicurezza
+deb http://volatile.debian.org/debian-volatile lenny/volatile main
+deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
+
+# Esempio di accesso a un filesystem locale contenente i pacchetti:
+# deb file:/mnt/mirror sid main non-free contrib
+
+
+
+

/etc/apt/apt.conf

+

Questo file contiene le opzioni di apt, come ad esempio il proxy:

+
+Acquire::http::Proxy "http://10.10.208.254:3128"
+
+ +
+

Squid

+
+
+

Apache

+
+ +
+

Samba

+

Pacchetti da installare per utilizzare samba in modalita' server:

+
+samba smbfs smbclient
+
+

Durante la prima installazione viene chiesto ilnome del gruppo di appartenenza, il default per windows e' WORKGROUP. In aula usiamo invece 208 . +Per riconfigurare samba si usi il comando:

+
+dpkg-reconfigure samba-common
+
+

Quando si utilizza samba bisogna tener conto di 3 livelli di password:

+
+
    +
  • Sistema *Unix +E' la password di sistema che viene usata sul sistema operativo su cui gira samba. E' importante tenere conto anche delle user id e group id degli utenti che dovranno fisicamente scrivere sui file system. Se un utente non puo' scrivere sul file system per mancanza di privilegi allora neanche samba potra' farlo nel momento in cui gli mette a disposizione la risorsa. +Queste passwords sono salvate nel solito file /etc/shadow (richiamato da /etc/passwd).
  • +
  • Password per l'applicativo samba +Samba deve essere compatibile con Windows e quindi utilizzare un sistema di criptazione delle password diverso da /etc/shadow.a Le password per l'applicativo samba vengono gestite ad esempio col comando smbpasswd e vengono salvate all'interno di /var/lib/samba/passdb.tdb .
  • +
  • Password per windows. +Gli utenti windows effettuazno il log-in alla partenza della sessione di windows. Se si avra' l'accortezza di usare la stessa password data precedentemente anche a windows (o viceversa impostare la password per GNU/Linux / Samba ugale a quella di Windows) l'utente potra' accedere automaticamente alle condivioni a lui disponibili.
  • +
+
+

Password di samba vengono salvate nel file: /var/lib/samba/passdb.tdb

+
+
+
+
+

Creazione Utenti

+

Creiamo per primo l'utente sotto GNU/Linux, facendo attenzione a non dargli una shell di sistema. Gli utenti Windows non hanno bisogno di poter eseguire comandi sul server!

+

Creazione di un utente denominato sambo:

+
+adduser --shell /bin/false sambo
+
+

Nota: Ricordarsi di usare sempre la stessa password. +nel file /etc/passwd avremo qualcosa come:

+
+sambo:x:1001:1001:Sambo utente samba!,,,:/home/sambo:/bin/false
+
+

Aggiunta dell'utente al database delle password per samba e generazione della sua password:

+
+smbpasswd -a sambo
+

Se sucessivamente si vorra' modificare la password di un utente gia' esistente si usi:

+
+smbpasswd sambo
+

La password sotto windows verra' modificata sul sistema Windows.

+
+
+

Creare la condivisione

+

La condivisione altro non e' che una cartella sul server che viene resa disponibile sui client negoziando l'accesso in base all'autenticazione tramite esername / password. Si decida se fisicamente debba risiendere nella home di un utente (nel caso quest'ultimo ne sia l'unico fruitore) o in una cartella in /mnt/ nel caso piu' utenti accedano a questa. Nel secondo caso si gestiscano gli accessi sotto GNU/Linux tramite i gruppi.

+

Creazione della risorsa sambo_share nella home dell'utente sambo:

+
+# mkdir /home/sambo/sambo_share
+# chown sambo:sambo /home/sambo/sambo_share/
+
+

Bisognerebbe notare i permessi di esecuzione del filesystem che ospita la carterlla. Se i file che saranno contenuti nella condivisione saranno da usarsi sotto Windows non c'e' motivo che questi siano eseguibili sotto GNU/Linux. +Si potrebbe avere quindi, ipotizzando una condivisione in /mnt/share che consista in un file system dedicato:

+

In /etc/fstab

+
+/dev/hda10       /mnt/share      ext3    rw,nosuid,noexec  0  3
+
+

Si noti anche l'uso di nosuid per evitare la possibilita' di eseguire programmi con credenziali diverse da quelle originali.

+
+
+

Configurazione dell'applicativo Samba vero e proprio.

+

Avendo preparato gli utenti (ancora una volta: non si dia una shell completa a un utente che serve solo per samba o la posta elettronica) e la cartella sul file system si puo' procedere a configurare la condivisione su Samba.

+

/etc/samba/smb.conf riga ~235 , Share Definitions (in vim si usi 235gg ):

+
+[sambo_share]
+        # Percorso della cartella condivisa
+        path = /home/sambo/sambo_share
+        # Se gli utenti possono scrivere / modificare file
+        writable = yes
+        # Negoziazione degli accessi su base utenti / passwords
+        valid users = sambo
+        # Altri parametri opzionali di interesse
+        # Se posso vedere la condivisione da esplora risorse
+        # anche se non ho i privilegi per accedervi.
+        browseable = yes
+        # Commento indicativo della risorsa
+        comment = Condivisione per Sambo
+
+

Dopo aver salvato il file si puo' fare un primo controllo tramite l'utility testparm , che controlla la sintassi del file di configurazione di Samba. Se questo non rileva problemi si puo' procedere a un /etc/samba# /etc/init.d/samba restart .

+
+
+

Testare il Servizio

+

Come testare il servizio

+

es:

+
+smbclient -U sambo -L localhost
+
+

Questo comando permette di esplorare la risorsa qualificandosi come utnete, in quresto modo potete testare il corretto funzionamento dell'autenticazione. Si provi inizialmente a sbagliare la password deliberatamente, poi a inserirla correttamente: dovrebbbero essere visibili le risorse disponibili al solo utente sambo: la suo /home e la cartella samba_share:

+
+Sharename       Type      Comment
+---------       ----      -------
+sambo_share     Disk      Condivisione per Sambo
+print$          Disk      Printer Drivers
+IPC$            IPC       IPC Service (base server)
+sambo           Disk      Home Directories
+
+

In alternativa e' possibile montare realmente la condivisone anche su linux tramite un client per samba e testare il corretto funzionamento:

+
+mount -t smbfs //localhost/sambo_share /mnt/sambo_mount/ --verbose -o user=sambo
+
+
+
+
+ + diff --git a/sistemi.html b/sistemi.html new file mode 100644 index 0000000..e035845 --- /dev/null +++ b/sistemi.html @@ -0,0 +1,1590 @@ + + + + + + + + + + Sistemi operativi + + + + +
+

Sistemi operativi

+ +

Appunti + introduttivi ai sistemi operativi

+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
Author:Andrea Manni
Copyright:GFDL
Version:1.5
+
+ + + +

Generato con: http://docutils.sourceforge.net/rst.html

+ +
+

Sistema + operativo

+ +
+

Concetti + introduttivi

+ +

Un elaboratore e' una macchina in grado di seguire una + serie di istruzioni al fine di permettere all'utente di + raggiungere il risultato voluto. Possiamo partire da alcuni + concetti di base per poterne studiare le + caratteristiche.

+
+ +
+

Hardware:

+ +
+ Tutto quanto c'e' di fisico in un computer, + quanto ha un peso (in senso materiale: grammi o + kilogrammi) e occupa dello spazio. Il monitor, la + tastiera, i supporti di storaggio dati, il computer + stesso in ogni suo singolo componente interno e + periferico sono l'hardware del computer, + dall'inglese ferraglia. +
+
+ +
+

Software:

+ +
+ Tutti i dati e i programmi (questi ultimi altro non sono + che sequenze di istruzioni, quindi dati) che vengono + elaborati o prodotti nel corso dell'esecuzione del + programma. I software e i dati tipicamente risiedono su + una memoria RAM volatile al momento dell'esecuzione, ma + vengono archiviati sui supporti di storaggio + (hard disk, CD-Rom, floppy...) in base alle necessita' + del momento. +
+
+ +
+

Input

+ +
+ I flussi di dati in ingresso inseriti generalmente + dall'utente tramite le perifieriche dedicate a queste + funzioni. Tastiera e mouse sono perifieriche di solo + Input, una scheda di rete invece e' una periferica + che puo' ricevere e trasmette dati. Questi dati sono + utilizzati per modificare il corso dei programmi, nel + caso ci siano piu' programmi utilizzati + contemporaneamente per raggiungere il risultato voluto + dall'operatore potra' accadere che il nostro programma + riceva Input da un altro programma. Nei sistemi operativi + Unix si fa riferimento allo **standard Input* + (stdin, la sua collocazione piu' elementare in un sistema + basato sul kernel *Linux si basa sul device /dev/input ). +
+
+ +
+

Output

+ +
+ I flussi di dati in uscita, normalmente i risultati + aspettati dall'operatore. Tipiche periferiche di output + dedicate sono i monitor, le casse audio, le stampanti. + Come nel caso dell'input possiamo considerare periferiche + come le schede di rete come di input/output. Nei sistemi + operativi Unix si fa riferimento allo **standard + output* (stdout, fisicamente puo' essere dirottato + sul diverse periferiche a seconda della natura dei dati + (pensiamo a un file audio: verra' mandato alla scheda + audio e da questa alle casse. Sarebbe poco significativo + se visualizzato a schermo, e poco gradevole il caso + inverso: ad es. telefonare a qualcuno e sentirsi + rispondere da un FAX.) ma normalmente ci aspettiamo di + vedere i risultati a schermo: sul nostro + terminale /dev/tty* o equivalente. ). +
+
+ +
+

Errors

+ +
+ Non sempre le nostre aspettative nei confronti + dell'elebarotore vengono soddisfatte, talvolta il nostro + programma genera errori e un risultato solo parziale. Nei + sistemi Unix questo tipo di *output viene + indicato come standard error (stderr) e + puo' essere reindirizzato su una canale diverso dal + normale output. Ad esempio suonando una serie di brani + musicali l'output viene indirizzato fino alle casse del + computer, ma se un brano risulta illeggibile viene + visualizzato un errore a schermo. Situazione + simile nel caso di una stampa: l'output va' alla + stampante me se durante la stampa si generano messaggi di + errore questi non compariranno sulla carta. +
+ +

Questa possibilita' di canalizzare lo stdout e lo stderr + verra' utile in seguito quando si avra' l'esigenza di + pianificare operazioni svolte in automatico (es. script di + back-up) durante le quali l'operatore non e' disponibile + per leggere gli errori, che potranno essere re-indirizzati + su un file di log o altro.

+
+ +
+

Interfaccia + utente

+ +
+ Il sistema formato da periferiche (es tastiera e monitor) + che permette lo scambio di informazioni tra l'utente e + l'elaboratore. Tutti i sistemi multifunzione (cioe' che + possono svolgere piu' di un singolo compito) sono dotati + di una interfaccia utente. I sistemi + multi-pourpose hanno interfacce utente piu' + sofisticate rispetto alle macchine dedicate: ad es. un + personal computer ha un'interfaccia utente piu' completa + rispetto ad una console per videogiochi o a un cellulare. + Le interfacce utente possono essere di diverso tipo: +
+ +
+

Riga di + comando

+ +

CLI (Common Line Interface). Interfaccia testuale: + input e output sono solo o prevalentemente caratteri, + quindi niente grafica, finestre, icone. E' ad esempio + l'interfaccia che ci si trova davanti a un terminale + *Unix ( CTR + ALT + F1 sotto Gnu/Linux) oppure stabilendo + una sessione remota con SSH o telnet.

+
+ +
+

Interfaccia + grafica

+ +

Permette la visualizzazione di icone finestre e + quant'altro, grazie ad un server grafico che trasforma le + informazioni piu' semplici in una rappresentazione + grafica. Generalmente piu' pesante dal punto di + visto delle risorse di sistema del computer, permette di + eseguire solo le operazioni espressamente previste e rese + disponibili dai vari menu, a differenza della + CLI che puo' permettere la combinazioni di singoli + comandi (pipes) e la creazione di script per + automatizzare operazioni anche di relativa + complessita'.

+ +

Generalmente si accompagna a un sistema di puntamento + come un mouse, touch pad, tavoletta grafica. track + ball...

+ +

La superiore complessita' la rende sconsigliabile per + le sessioni remote, per lo meno quando e' possibile + svolgere le stesse operazione tramite un'interfaccia CLI. + Questo per non sottrarre risorse ai software di nostro + interesse e per motivi di sicurezza (piu' una cosa e' + complessa e piu' e' soggetta a problemi di + sicurezza).

+
+ +
+

Touch + screen

+ +

Schermi sensibili al tocco, come su palmari, cellulari + IPhone o i tablet PC. Le caratteristiche sono + analoghe a una interfaccia grafica, cambia solo il + sistema di puntamento (non avete un mouse o un touch pad + ma si tocca direttamente lo schermo con una penna o le + dita).

+
+
+
+ +
+

Caratteristiche di un + Sistema Operativo

+ +

Alcune delle caratteristiche dei sistemi operativi ci + aiuteranno a capire la funzione prevalente di questo in + rapporto con gli altri programmi in esecuzione sul + computer.

+ +
+

Multitasking

+ +
+ Capacita' di un OS di eseguire piu' programmi + contemporaneamente. +
+ +

Un personal computer generalmente ha in esecuzione + centinaia di singoli programmi (o per la precisione: + processi), oltre a quelli direttamente lanciati + dall'utente ce ne saranno altri dedicati alla gestione + dell'hardware o al mantenimento del sistema operativo.

+ +

Una cellulare (si pensi ai vecchi modelli) o una piccola + calcolatrice invece possono eseguire solo un compito (task) + alla volta.

+ +

Tipicamente risiede nel kernel la capacita' del sistema di poter + eseguire con stabilita' piu' processi, utilizzando uno + scheduler.

+
+ +
+

Multiutenza

+ +
+ I sistemi multiutenti possono avere piu' utenti attivi + contemporaneamente (ma anche uno alla volta a seconda + della disponibilita' di input). +
+ +

Il sistema e' comunque in grado di distinguere tra gli + utenti: ad es. mia sorella non ha la possibilita' di + eliminare le MIE foto, e viceversa. La multiutenza sotto il + profilo tecnico si appoggia su un software di + autenticazione / log-in per distinguere gli utenti, oltre a + funzionalita' delegate al file system per limitare accessi + ed esecuzione dei file ai diversi utenti di sistema. Ad + esempio il filesystem FAT32 dei + vecchi sistemi Windows (e usato sulla maggior parte delle + chiavette USB e memory card varie) non permette la gestione + delle propieta' dei files.

+ +

La presenza di piu' utenti in genere prevede una + gerarchia tra questi (ad esempio user, power user, + administrator sotto sistemi Windows o l'utente + root per sistemi Unix). In genere si ha un solo + utente abilitato alle modifiche delle funzionalita' del + sistema (l'amministratore, che puo' abilitare le + periferiche o installare nuovo software nel sistema) e + semplici utenti di sistema (system + users) che possono solo + usufruire dei programmi messi a loro disposizione. Questa + soluzione, oltre che a garantire la presenza di un account + in grado di rimediare in caso di emergenza a eventuali + errori fatti da altri, permette di avere un ambiente di + lavoro piu' sicuro dato che una volta loggati come utenti + di sistema non si ha la possibilita' di causare danni gravi + all'intero sistema per una semplice distrazione. Mai + lavorare come amministratori quando non e' assolutamente + necessario.

+
+
+ +
+

Sistema + operativo

+ +
+
Possiamo ora cercare di dare una definizione di sistema + operativo:
+ +
Il Sistema Operativo (OS: Operative System) e' + quell'insieme di software che servono per far funzionare il + sistema in generale piu' che svolgere un compito + particolare come modificare un file o visualizzare un + video. E' l'ambiente in cui potranno convivere ed + essere utilizzati tutti i software applicativi usati + dall'utente.
+
+ +

Sara' il sistema operativo a identificare gli utenti al + momento di cominciare una sessione di lavoro, e garantisce + gli accessi ai files in base a queste credenziali (e alle + caratteristiche del file system, cosa che approfondiremo + successivamente).

+ +

L'OS si pone poi come tramite tra i singoli applicativi e + le risorse di sistema. Ad esempio se sono disponibili diversi + programmi in grado di produrre stampe e una stampante, sara' + il sistema operativo a gestire le code di stampa in modo che + non si intralcino (a dire il vero l'esempio potrebbe non + essere tecnicamente esatto. Ma rende l'idea.) I singoli + programmi non utilizzeranno direttamente la stampante, ma + semplicemente si interfacceranno all'OS al momento + della stampa.

+ +

Quando installiamo un nuovo editor di testo non ci + preoccupiamo di fornirgli un driver per la stampa. + Sappiamo che questo e' gia' disponibile al sistema operativo, + e i singoli applicativi si appoggeranno a questo. Questo + "layer di astrazione" sull'utilizzo delle + periferiche (al quale partecipa anche il kernel) semplifica + di molto la realizzazione e l'installazione dei singoli + software, garantendo maggiore stabilita' all'intero + sistema.

+ +

In modo simile tutti gli applicativi che utilizziamo si + appoggiano sul sistema operativo, tanto che siamo + abituati ad avere versioni diverse degli stessi + software rilasciate per i diversi sistemi (c'e' una + versione di Openoffice.org per sistemi Microsoft, GnuLinux, + Apple e cosi' via). Ovviamente la versione per il sistema + X + non funzionerebbe sul sistema Y.

+ +

I sistemi operativi, come del resto i singoli applicativi, + sono rilasciati (quando possibile) in versioni a 32 o 64 bit, + oppure per architetture diverse (x86, PPC, Arm, RISC...). In + genere si indica la possibilita' di un OS di girare + su architetture hardware diverse col termine + portabilita'. Una maggiore portabilita', oltre che + per l'intrinseco vantaggio, e' spesso indice di maggiore + stabilita' in quanto il test del sistema in ambienti diversi + permette di evidenziare bug difficilmente + riscontrabili altrimenti.

+
+ +
+

I vari Sistemi + Operativi

+ +

Per ulteriori informazioni sulle caratteristiche di alcuni + dei sistemi operativi attualemnte in uso si seguano i + seguenti link:

+ + + + + + + + + + +
+ +
+

Kernel

+ +
+ In informatica, il kernel Costituisce il + nucleo di un sistema operativo. Si tratta di un software + avente il compito di fornire ai processi in esecuzione + sull'elaboratore un accesso sicuro e controllato + all'hardware. Dato che possono esserne eseguiti + simultaneamente più di uno, il kernel ha anche + la responsabilita'à di assegnare una porzione + di tempo-macchina e di accesso all'hardware a ciascun + programma (multitasking). +
+ +

Tra tutti i processi in esecuzione su un computer uno ha + un'importanza speciale: il kernel.

+ +

Il kernel ha il compito di far funzionare l'hardware + (tastiera, monitor, RAM, CPU) e di attribuire le risorse di + sistema agli altri processi, ne consegue che un + malfunzionamento nel kernel (kernel panic) puo' + compromettere qualunque altro processo in esecuzione. + Considerando che il kernel gestisce anche le periferiche di + input / output, nel caso di blocco del kernel l'intera + macchina potrebbe diventare irraggiungibile. In questo caso + l'unita soluzione sarebbe un rese hardware della + scheda madre, con conseguente perdita di tutti i dati in 3 e + possibile corruzione dei filesystem.

+ +

Il kernel gestisce l'attribuzione della memoria RAM tra i + vari processi in esecuzione: tramite la protezione della + memoria + si evita che un applicativo andato fuori controllo possa + trasbordare nello spazio RAM di un altro, compromettendo + anche questo e magari l'intero sistema. La protezione della + memoria e' una funzione necessaria per garantire l'efficenza + del multitasking.

+ +

Debian utilizza un Kernel Linux. Windows attualmente usa + un kernel di derivazione NT. Mac OSX utilizza un kernel + "Darwin" su un sistema operativo derivato da BSD (Unix). Il + sistema operativo e' composto da una serie di processi che + girano sopra il kernel. I software applicativi a loro volta + girano sul sistema operativo.

+ +

Il kernel e' sostituibile e aggiornabile rispetto al + sistema operativo.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Gnu/LinuxOS
Linuxkernel
Microsoft Windows XPOS
NTkernel di MS Windows XP
+
+ +
+

Le + distribuzioni

+ +

Differenze principali tra le varie distribuzioni:

+ +
+
+
    +
  • utility di installazione
  • + +
  • gestione dei pacchetti: es dpkg e RPM (portage e + altri)
  • + +
  • numero e qualita' dei pacchetti
  • + +
  • licenze
  • + +
  • target di utilizzo
  • + +
  • tempi di rilascio
  • +
+
+ + +
+
+ +
+

Memoria + virtuale

+ +

O memoria di swap. Si utilizza quando il sistema esaurisce + la RAM fisicamente disponibile. Si utilizza un altro supporto + di storaggio per sopperire alla mancanza di RAM. Tipicamente + viene usato l'hard disk, che e' piu' lento della RAM.

+ +

Con il termine swap si intende, in informatica, + l'estensione della capacita'à della memoria + volatile complessiva del computer, oltre il limite imposto + dalla quantita'à di RAM installata, attraverso + l'utilizzo di uno spazio su un altro supporto fisico, ad + esempio il disco fisso.

+ +

A seconda del sistema operativo utilizzato è + possibile avere file di swap (chiamato anche 'Memoria + virtuale'), residenti nel normale file system del sistema, + oppure partizioni di swap, cioe'è sezioni di + disco integralmente dedicate allo swap ed inizializzate con + un proprio specifico tipo di file system. L'uso della + partizione è generalmente migliore dal punto + vista delle prestazioni, perché evita che lo + swap vada soggetto alla tipica di alcuni file system. Per + contro, occupa una delle (poche) partizioni disponibili sul + disco fisso.

+ +

In pratica, quando la memoria RAM libera non è + più sufficiente per contenere tutte le + informazioni che servono ai programmi, il sistema operativo + si fa carico di spostare una certa quantita'à di + dati (quelli meno recentemente utilizzati) dalla memoria + volatile a quella di massa, liberando quindi una parte della + RAM per permettere il corretto funzionamento dei programmi. + È chiaro che nel momento in cui si rende + necessaria tale operazione, le prestazioni del sistema + crollano bruscamente, essendo la scrittura su hard disk molto + più lenta di quella in RAM (oltre cento volte, + al 2006).

+ +
+

Swap space per + Linux

+ +

Sui sistemi basati sul kernel di Linux viene creata una + partizione con un file-system dedicato per la memoria + virtuale: una o piu' cosidette partizioni di + swap.

+ +

Per le normali work-station si segue la regola di creare + una partizione di swap pari al doppio della memoria RAM, ma + non superiore a 512MB (questo per via della buona + ottimizzazione del gestore della memoria di Linux: + raramente nell'uso normale si arriva ad aver bisogno di + piu' di 512MB di swap.

+ +

Caso particolare sono i portatili: vista la lentezza + degli Hard Disk dei portatili e il maggior consumo + elettrico causato dall'utilizzo di questi supporti per lo + swap si tende ad avere un po' piu' di RAM (512MB + - 1GB) ed evitare completamente lo spazio + di swap. Ma attenzione: se si vuole utilizzare il + Suspend to disk (S4) + servira' una partizione di swap pari a circa il doppio + della RAM.

+
+
+ +
+

Devices a + blocchi

+ +

I device a blocchi sono suddividisibili in blocchi (unita) + ed e' possibile scrivere e/o leggere su questi (input/output) + Ad esempio gli hard disk o i supporti di storaggio in + generale sono visti dal kernel come block device. Tipicamente + per poterli utilizzare al fine dello storaggio dati sara' + necessario creare un filesystem su di essi.

+
+ +
+

Devices a caratteri + (seriali)

+ +

I device seriali sono continui, e non prevedono il + "ritorno" (si pensi a una stampante, o all'output delle + casse, a un terminale seriale) [1].

+ + + + + + + + + + + + + + +
[1]Questa definizione di device a caratteri + non e' esatta, ma allo stato attuale delle nostre + conoscenze e necessita' risulta piu' utile + caratterizzare i due tipi di device dal punto di vista + funzionale. Una definizione piu' tecnica di + questo particolare tipo di device dovrebbe citare il + fatto che questi in genere non supportano buffers + e non permettono di accedere ai dati in modalita' + random_access. + Oltre al fatto che trattano singoli caratteri per volta + invece che per blocchi di dati.
+
+ +
+

Dati

+ +
+

Dato

+ +

Il termine dati e' fondamentale nell'informatica, + essendo i dati l'oggetto e il risultato di tutto il nostro + lavoro.

+ +

Potremmo definire un dato come un'informazione + elementare, significativa ed autonoma.

+ +

Si prenda ad esempio un sistema realizzato per gestire + elettronicamente la contabilita': il guadagno del mese di + Gennaio 2009 potrebbe essere 1200. + Oppure l'indirizzo di un contatto Via + Mazzini 8.

+ +

Questi valori possono essere l'oggetto di + elaborazioni, o il risultato di procedure che hanno + manipolato altri dati.

+
+ +
+

Metadato

+ +

I metadati sono informazioni che qualificano i dati. + Essi non hanno un'esistenza e un valore autonomo, sono + funzionali ai dati che descrivono e senza di essi non + avrebbero valore.

+ +

Tornando al precedente esempio del software per la + contabilita', Gennaio 2009 + potrebbe essere un metadato, in quanto la sua funzione e' + di descrivere il periodo a cui fa riferimento il dato + 1200. Senza quest'ultimo non ci + interesserebbe sprecare risorse di storaggio per conservare + Gennaio 2009.

+ + + + + + + + + + + + + + + + + + + + + + +
DatoMetadato
1200Gennaio 2009
+ +

Spesso i metadati vengono utilizzati per stabilire le + relazioni tra i vari dati, in modo da poterli + caratterizzare e distinguere tra loro. Si pensi a un + supporto di storaggio in cui vengano mantenuti terabytes di + dati: senza la possibilita' di distinguerli l'uno dagli + altri diventerebbero inutili (o meglio inutilizzabili), + maggiore e' il numero dei dati tanto piu' si avverte la + necessita' di caratterizzarli in modo da poterli + gestire piu' facilmente e incrociarli tra + loro in modo da ottenere le informazioni che veramente ci + interessano.

+ +

Si tenga conto che buona parte dell'informatica consiste + nello storaggio di enormi quantitativi di dati + (che bisognera' essere in grado di distinguere e + recuperare), e la funzione fondamentale degli elaboratori + e' la capacita' di confrontare rapidamente questi dati tra + loro. Quindi con l'aumentare del numero dei dati i metadati + diventano sempre piu' importanti e significativi. + Si pensi alla natura dei database.

+
+
+ +
+

I filesystem

+ +
+

File

+ +

Un file e' un insieme di dati con un inizio e una fine + identificabile in mezzo ad altri.

+ +
+
Quindi avremo:
+ +
+
    +
  • un identificatore, come un nome_file accoppiato al suo + percorso sul file system (possono esserci + molti file con lo stesso nome ma non possono esserci + due file on lo stesso nome nella stessa + cartella).
  • + +
  • Un qualche sistema per recuperare quel + file in mezzo ad altri. Ad esempio potremmo pensare, + in un sistema molto rudimentale, a una coppia di + coordinate che ci permettano di identificare il punto + di inizio e il termine su un block device.
  • +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Filestem elementare
Identificatoreiniziofine
pippo1221
+
+ +
+

Filesystem

+ +

Il file system e' una struttura logica che ci permette + di individuare i diversi file. Sostanzialmente e' + un'insieme di metadati che caratterizzano i singoli file + piu' quanto necessario per poterli gestire.

+ +

Alcuni esempi: e' il filesytem a poter caratterizzare i + file con propietari, gruppi, permessi (lettura, scrittura, + esecuzione), data di creazione e cosi' via. Alcuni + filesytem permettono certe funzionalita', altri (sopratutto + quelli piu' datati) sono piu' rudimentali.

+ +

Tipicamente i filesystem sono strutturati secondo un + modello gerarchico basato su files e cartelle: + quindi per poter identificare un file ci serve il suo + nome proprio piu' il suo percorso nella + struttura del filesystem. Il progressivo aumento del numero + dei files sta cominciando a far sentire i limiti di questo + modello.

+ +

Con l'aumentare delle informazioni tendono ad essere + piu' efficaci modelli relazionali, che permettono di + interagire coi file in modo simile a un database. Ad + esempio pensiamo alle librerie che contengono centinaia di + migliaia di brani musicali MP3, oppure migliaia di + fotografie: cercare di gestirli tramite nome del file e + cartelle diventa poco pratico. Meglio raggrupparli per + autore, data, album o quant'altro si adatti alla loro + natura e al loro utilizzo.

+ +

Tabella di allocazione files

+ +

non solo su device fisici: esempio NFS

+ +

File system distribuito: citati il NBD e ATA over + ethernet

+
+
+ +
+

Gestione dei + Pacchetti

+ +

Un Sistema di gestione dei pacchetti e' una collezione di + strumenti che automatizzano il processo di installazione, + aggiornamento, configurazione e rimozione dei pacchetti + software di un computer.

+ +

Tali strumenti sono diffusi tipicamenti sui sistemi basati + su software libero, in quanto i gestori della distribuzione + (cosidetti mantainers) avendo accesso al codice + sorgente del software hanno la possibilita' di prepararne una + versione ottimizzata e adattata all'infrastruttura del + sistema operativo (si pensi a librerie condivise, API, + standard per la collocazione dei files di importanza + particolare).

+ +

Cerchiamo di capire meglio il processo: L'autore / + sviluppatore di un software (ad esempio un browser web come + Mozilla Firefox) rilascia il suo lavoro con una licenza + libera, che prevede la possibilita' di ottenere il codice + sorgente, modificarlo e redistribuirlo. A questo punto un + mantainer della distribuzione, che non deve + per forza essere l'autore del software originale, scarica il + sorgente, lo modifica in modo che si integri con gli altri + software del sistema operativo, preoccupandosi che i file di + configurazione, temporanei, ecc. vengano collocati sul + file-system in modo analogo agli altri software del sistema + operativo, in modo da ottenere un sistema il piu' possibile + omogeneo e strutturato. Il mantainer quindi non + introduce nuove funzionalita' nel software (per lo meno non + nella distribuzione di cui si occupa, nel caso provvederebbe + a fornire le modifiche all'autore in modo che sia lui stesse + ad integrarle nella versione ufficiale, cosi' che + poi anche chi non usa quella determinata distribuzione possa + avantaggiarsene): si limita ad adattarlo perche + possa ben funzionare nella distribuzione.

+ +

Quindi possiamo dire che un software come ad es. Apache o + Firefox sono funzionalmente identici in ogni distribuzione, + cambia solo il loro livello di integrazione nel sistema + operativo. Come gia' detto le distribuzioni si caratterizzano + per la qualita' di questa integrazione, il numero di + pacchetti che riescono a gestire, l'efficacia dei software di + installazione / aggiornamento / rimozione.

+ +

Non ultima per importanza: l'attenzione alle problematiche + legate alla sicurezza. Infatti e' bene tener presente che + sara' il mantainer a dover provvedere tempestivamente + all'aggiornamento del pacchetto in caso di problemi di + sicurezza, dato che l'utente finale non interagisce + direttamente con l'autore del software. Il che puo' porre il + seguente problema: quando l'autore rileva un problema tende + spesso a risolverlo con una versione aggiornata del software + (quindi si passa ad es dalla versione 1.0 alla 1.1 , e gia' + che si rilascia magari si coglie l'occasione per introdurre + nuove funzionalita'). Ma una distribuzione per essere + definita stabile deve rimanere + costante, altrimenti diventa impossibile controllare + possibili conflitti tra i diversi software. In questo caso, + le i mantainers delle distribuzioni dedicate al lato + server o comunque con particolare vocazione alla + sicurezza, si attivano per portare loro stessi i + soli aggiornamente della sicurezza alla versione precedente + del software in modo che eventuali nuove funzionalita' non + possano rischiare di compromettere l'interazione del software + con altri presenti sul sistema.

+ +

Distribuzioni come Debian lavorano in questo + modo, altre preferiscono un approccio piu' + rilassato: tipicamente perche mettono a disposizione + dell'utente software aggiornato piu' frequentemente, + atteggiamento molto gradito sulle work station degli + utenti che possono cosi' avvantaggiarsi piu' rapidamente di + nuove funzionalita'. Se il software viene aggiornato + molto rapidamente l'utente fianale non puo' + aspettarsi che l'integrazione tra i vari pacchetti sia stata + testata per lunghi periodi!

+ +

Cio' non toglie che gli utenti di Debian possano decidere + di utilizzare le release Sid/unstable o + testing che vengono aggiornate quotidianamente. Ma + sulle macchine che devono restare stabili senza creare + problemi quotidianamente si puo' contare sulla versione + stable, che garantisce due o tre anni di + ragionevole quiete senza sorprese. Dal momento in + cui si raggiunge la stabilita' del sistema con le + funzionalita' richieste, in ambiente aziendale non + si avverte la necessita' di avere sempre a disposizione + l'ultima release disponibile di un software col rischio che + si possano verificare problemi. Un software appena rilasciato + non puo' vantare stabilita': questa infatti non e' un + concetto assoluto: la stabilita' si ottiene facendo + girare sempre la stessa versione del software sul piu' ampio + bacino di utenza in modo da poter individuare e risolvere gli + eventuali problemi che mano a mano si individuano. La + stabilita', per quanto riguarda il software + consumer, e' relativa (allo stesso modo la + sicurezza non e' uno status ma piuttosto un + processo: i problemi si possono sempre verificare, + tutto sta nella capacita' e tempi di reazione per risolverli + con aggiornamenti).

+ +

Ci sono 3 principali gestori di pacchetti in generale:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Gestori di pacchetti
NomeDistroestensione
DPKGDebian.deb
RPMRed Hat.rpm
PortageUnix---
+ +

Lo stesso software viene pacchettizzato in + formati diversi (deb,rpm,...)

+ +

In alternativa c'e' generalmente una versione binaria + generica del software, che viene distribuita con un archivio + (targz ). Questo non usufruisce delle agevolazioni e + integrazioni offerte dal gestore dei pacchetti della + distro.

+ +

In alternativa per tutto il software libero e' sempre + disponibile il codice sorgente da compilare in un binario + eseguibile. Permette l'ottimizzazione e la customizzazione + del software. Portage si basa su questo sistema: si scaricano + i sorgenti modificati e poi si compilano. Si faccia + attenzione all'ottimizzazione: dipende da chi la fa...

+ +

Per la gestione dei pacchetti su distribuzioni Debian o + derivate (quindi anche Ubuntu) si legga: l'Apt Howto = + http://www.debian.org/doc/manuals/apt-howto/index.it.html

+ +
+
DPKG
+ +
Il gestore dei pacchetti. Il software che si occupa + dell'istallazione, rimozione e risoluzione dei conflitti e + dipendenze. Apt e' il front-end di DPKG.
+
+
+ +
+

Elementi:

+ +
+

Dipendenze

+ +

Talvolta un pacchetto per poter funzionare necessita di + un altro pacchetto. Si deve quindi installare anche l'altro + oltre a quello richiesto.

+ +

Il software di installazione si preoccupa quindi + dell'ordine in cui installare i vari pacchetti (dato che il + pacchetto dovrebbe essere un'entita' indipendente / + modulare rispetto agli altri pacchetti) e la configurazione + di tutti e del sistema. Per i pacchetti rimossi vengono + tolte anche le dipendenze quando queste non compromettano + altri software, in caso di incomprensioni si puo' usare il + comando apt-get autoremove (su sistemi dotati di + DPKG).

+ +

Si tenga presente che Debian, di default, quando rimuove + un pacchetto non elimina i file di configurazione dello + stesso, nel caso si deve usare l'opzione --purge. + In questo modo se l'utente rimuove un particolare software + per provare un alternativa o liberare dello spazio + temporaneamente, al momento opportuno re-installando lo + stesso software questi si comportera' esattamente come + quando era presente sul sistema. E' doverso far notare che + in caso di problemi di configurazione di un programma + l'idea di rimuoverlo per poi re-installarlo sia poco seria: + i problemi vanno tracciati e risolti, non evitati. In caso + contrario ripeteranno. Piuttosto si faccia sempre un una + copia di back-up del file di configurazione + prima di cominciare a modificarlo, in modo + che in caso non si riesca ad arrivare ad arrivare nei tempi + richiesti ad una nuova configurazione funzionale si possa + per lo meno tornare alla precedente.

+ +

Stessa cosa per la rimozione per dpkg, ma Portage non + permette la rimozione di software.

+
+ +
+

Conflitti

+ +

Alcuni software non possono essere presenti sul sistema + contemporaneamente ad altri. Si pensi a un server di posta + (o a qualunque servizio che ascolta su una porta + determinata), o a versioni incompatibili dello + stesso software. In questo caso il gestore di + pacchetti avvertira' l'utente che al momento + dell'installazione del software richiesto verranno rimossi + i pacchetti in conflitto.

+
+
+
+ + diff --git a/source/LICENSE-fdl-1.3.txt b/source/LICENSE-fdl-1.3.txt new file mode 100644 index 0000000..2f7e03c --- /dev/null +++ b/source/LICENSE-fdl-1.3.txt @@ -0,0 +1,451 @@ + + GNU Free Documentation License + Version 1.3, 3 November 2008 + + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +0. PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +1. APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The "Document", below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as "you". You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A "Modified Version" of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A "Secondary Section" is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The "Invariant Sections" are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The "Cover Texts" are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A "Transparent" copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called "Opaque". + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The "Title Page" means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +The "publisher" means any person or entity that distributes copies of +the Document to the public. + +A section "Entitled XYZ" means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as "Acknowledgements", +"Dedications", "Endorsements", or "History".) To "Preserve the Title" +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +2. VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no +other conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +3. COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to +give them a chance to provide you with an updated version of the +Document. + + +4. MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. +D. Preserve all the copyright notices of the Document. +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. +H. Include an unaltered copy of this License. +I. Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. +K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. +M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. +N. Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. +O. Preserve any Warranty Disclaimers. + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +5. COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + + +6. COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other +documents released under this License, and replace the individual +copies of this License in the various documents with a single copy +that is included in the collection, provided that you follow the rules +of this License for verbatim copying of each of the documents in all +other respects. + +You may extract a single document from such a collection, and +distribute it individually under this License, provided you insert a +copy of this License into the extracted document, and follow this +License in all other respects regarding verbatim copying of that +document. + + +7. AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +8. TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +9. TERMINATION + +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. + + +10. FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions of the +GNU Free Documentation License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in +detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +11. RELICENSING + +"Massive Multiauthor Collaboration Site" (or "MMC Site") means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +"Massive Multiauthor Collaboration" (or "MMC") contained in the site +means any set of copyrightable works thus published on the MMC site. + +"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +"Incorporate" means to publish or republish a Document, in whole or in +part, as part of another Document. + +An MMC is "eligible for relicensing" if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole or +in part into the MMC, (1) had no cover texts or invariant sections, and +(2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + + +ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + + Copyright (c) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. diff --git a/source/TODO b/source/TODO new file mode 100644 index 0000000..6779b77 --- /dev/null +++ b/source/TODO @@ -0,0 +1,18 @@ +informatica base +-------------------- +done compilatori / interpreti + Chiudere! + + +Sistemi operativi +-------------------- + sistemare licenza windows + multilicenza + OEM + +done filesytem +done gestori pacchetti RPM Prtage + +Hardware +------------------- +done Partizioni diff --git a/source/backup.txt b/source/backup.txt new file mode 100644 index 0000000..4c28329 --- /dev/null +++ b/source/backup.txt @@ -0,0 +1,230 @@ +==================== +Back up +==================== +--------------------------------------------- +Appunti introduttivi alle strategie di bak-up +--------------------------------------------- + + :Author: Andrea Manni + :Copyright: GFDL + :Version: 0.1 + +.. contents:: + +*Generato con: http://docutils.sourceforge.net/rst.html* + +Scegliere i supporti di back-up +================================= + +Prima di cominciare le procedure di back-up e' fondamentale decidere su quale supporto di memorizzazione fare i back up: + + * su un file system diverso diverso da quello oggetto di back-up. + + * Utilizzare possibilmente un supporto di storaggio: + - Esterno, collegato ad una fonte di alimentazione indipendente dalla macchina principale. In caso di danneggiamento del filesystem originale causato da sbalzo elettrico, il supporto di back up potrebbe essere sopravvissuto. + - Possibilmente *Write Once Read Many*, che si possa leggere piu' volte ma scrivibile una sola. Questo per scongiurare la possibilita' di accidentali modifiche ai dati contenuti sul supporto di back-up. Nel caso si usi un normale hard-disk assicurarsi che sia montato in sola lettura (quando non si e' nella finestra temporale necessaria per la scrittura del back-up). + - Possibilmentte dislocato in altra sede, in caso di incendio, vandalismi, eventi che possano danneggiare anche le macchine vicine a quella di nostro interesse. Si consideri la possibilita' di usare uno spazio di back up remoto in un altro continente, una cassetta di sicurezza nella banca di fiducia per i dati particolarmente *sensibili* (dati personali, segreti aziendali, chiavi di sistemi di criptaziuone). + + * S i tenga sempre presente che l'evento che puo' compromettere i dati potrebbe compromettere anche i back-up, e che nessun supporto di storaggio ha un *aspettativa di vita* infinita. Gli hard-disk prima o poi smetteranno di funzionare correttamente, il back-up va' quindi preparato **prima** piuttosto che dopo. + +Possibili eventi che possono compromettere i supporti di sotoraggio: +----------------------------------------------------------------------- + +Sostanzialmente qualunque evento che possa modificare i dati, o renderli non piu' leggibili per motivi fisici (rottura hardware): + + 1. virus + + 2. errore di distrazione (cancellazione accidentale, sovrascrittura di vecchie versioni...) + + 3. Aggiornamento software non riuscito + + 4. problema hardware (hard disk fail) + + 5. Incendio! Terremoto! Pestilenze! + + +1,2,3) sono tutte cose che possono modificare i files (da software): + - Li mettiamo in sola lettura, non scrittura. + Cosi' non si puo' modificarli accidentalmente + **I back-up devono essere in sola lettura** + +4) I dati vanno tenerli su un supporto fisico diverso dall'originale, + Possibilmente collegato ad un altro sistema. + Il problema principale e' l'alimentazione: quindi un HD esterno con alimentazione autonoma e' gia' un miglioramento. + +5) Dislocare i media, tenerli in luoghi separati. + Tenere una copia in una banca, su un server remoto + tramite gli appositi servizi online. + +---------------------------- + + +Come si fa il back-up +===================== + +* Si stabilisce dove e come fare i back up +* Si fanno fisicamente i back up +* Si **ripristina** un back up per vedere se tutto funziona +* Periodicamente si fa un ripristino per vedere se i back up sono ancora utilizzabili. + +Strategia di back-up +======================= + +Bisogna stabilire una strategia di back-up: + + 1. Decidere **cosa** possa essere back uppato. Dato che le risorse di storaggio sono limitate + + 2. Quando e quanto spesso fare il back up. + Anche questo inciude sulla quantita' di aspazio necessario. + Aiuterebbe poter creare un back up incrementale. + + +Per il punto primo: + 1. Bisogna fare un'alisi dei dati. + Dimensioni, natura dei file (se sono binari o testo) + Un file di **testo** si puo' comprimere, o si puo' tenere una versione incrementale. + Un file binario (tipo un mp3, un progetto...) non e' comprimibile o spezzettabile. + + 2. Analisi dell'utilizzo dei dati: quanto spesso vengo utilizzati, + da chi, a quale scopo, quanto spesso cambiano i dati. + +Gestione dei back up: +===================== + +Si potrebbe fare una copia semplce con ``cp``. +Il sistema e' semplice e gestibile. + +Es: + `` # cp -ar sorgente destinazione/`` + +Esercizio con le patch +----------------------- + +| 502 mkdir patch +| 503 cd patch/ +| 504 ifconfig > rete +| 505 cat rete +| 506 cp rete rete_new +| 507 vim rete_new +| 508 tail rete +| 509 tail rete_new +| 510 vimdiff rete rete_new +| 511 diff rete rete_new +| 512 diff rete rete_new > rete_patch +| 513 mkdir paccio +| 514 cp rete rete_patch paccio/ +| 515 cd paccio/ +| 516 ls +| 517 ls -sh +| 518 patch rete < rete_patch +| 519 cat rete +| 520 tail ../rete +| 521 ls +| 522 ls +| 523 gunzip rete +| 524 gunzip -h +| 525 gunzip rete > rete.gz +| 526 man gunzip +| 527 gzip -c rete > rete.gz +| 528 ls -sh +| 529 du -sh ./* +| 530 vim rete.gz +| 531 cd ../../ +| 532 history >patch +| 533 history >patch.txtx + + +Storia del backup +------------------ +| 252 cfdisk /dev/hda +| 253 reboot +| 254 cat /proc/partitions +| 255 cfdisk /dev/hda +| 256 cd /mnt/ +| 257 ls +| 258 mount /dev/hda8 hda8/ +| 259 mount /dev/hda10 hda10/ +| 260 mount +| 261 umount hda10 +| 262 mkfs.ext3 /dev/hda10 +| 263 mount /dev/hda10 hda10/ +| 264 ls hda10/ +| 265 ls hda8/ +| 266 time cp -arv /mnt/hda8/ /mnt/hda10/ + +Controllare da un'altra shell che la copia stia avanzando correttamente mentre e' in corso. + +Ripristino sistema con rsync +----------------------------- + +| 281 cd /mnt/ +| 282 ls +| 283 mount +| 284 mount /dev/hda8 /mnt/hda8/ +| 285 mount /dev/hda10 /mnt/hda10/ +| 286 mount +| 287 ls hda8/ +| 288 ls hda10/hda8/ +| 289 rsync -arv --delete /mnt/hda10/hda8/* /mnt/hda8/ + +Esercizio con rsync +---------------------- + +| * E' stata creata una cartella ``originale`` e un'altra nominata ``copie``. +| * E' stata fatta una copia di originale in copie: linea 519 +| * varie prove a seguire, ancghe con l'opzione ``--delete`` (che potete cercare nella pagina MAN di rsync) +| * Rsync usando una destrinazione remota tramite ssh: linea 547 +| +| 512 mkdir originale +| 513 cd originale/ +| 514 touch primo secondo terzo +| 515 cd ../ +| 516 ls -l originale/ +| 517 mkdir copie +| 518 rsync originale copie/ +| 519 rsync -r originale copie/ +| 520 ls +| 521 tree -l3 +| 522 tree -L3 +| 523 tree -L 3 +| 524 cd originale/ +| 525 ls +| 526 touch quarto +| 527 rm primo +| 528 cd ../ +| 529 tree -L 3 +| 530 rsync -r originale copie/ +| 531 tree -L 3 +| 532 rsync -r --delete originale copie/ +| 533 tree -L 3 +| 534 cd originale/ +| 535 ls +| 536 mkdir nuovi +| 537 touch nuovi/pippo +| 538 rm secondo +| 539 touch altra_cosa +| 540 cd ../ +| 541 rsync -r --delete originale copie/ +| 542 tree -L 3 +| 543 tree -L 4 +| 544 rsync -ar --delete originale copie/ +| 547 rsync -ar --delete originale andrea@bender:/home/andrea/copie +| 548 rsync -var --delete originale andrea@bender:/home/andrea/copie +| 549 touch originale/locale +| 550 rsync -var --delete --progress originale andrea@bender:/home/andrea/copie +| 551 cd originale/ +| 552 ls +| 553 rm -r nuovi/ +| 554 ifconfig > quarto +| 555 cd ../ +| 556 trere -L 3 +| 557 tree -L 3 +| 558 rsync -var --delete --progress andrea@bender:/home/andrea/copie ./ +| 559 tree -L 3 +| 560 cat originale/quarto +| 561 ls +| 562 tree -L 3 copie/ +| 563 rm -r copie/ +| 564 rsync -var --delete --progress andrea@bender:/home/andrea/copie/originale ./ +| 565 ls +| 566 tree -L 3 diff --git a/source/cli.txt b/source/cli.txt new file mode 100644 index 0000000..8fe3be6 --- /dev/null +++ b/source/cli.txt @@ -0,0 +1,16 @@ +===================== +Common line interface +===================== +--------------------------------------------- +Appunti introduttivi alla riga di comando +--------------------------------------------- + + :Author: Andrea Manni + :Copyright: GFDL + :Version: 1.2 + +.. contents:: + +Generato con: http://docutils.sourceforge.net/rst.html + + diff --git a/source/hardware.txt b/source/hardware.txt new file mode 100644 index 0000000..4ef465f --- /dev/null +++ b/source/hardware.txt @@ -0,0 +1,458 @@ +======================== +Hardware +======================== +Integrazione all'hardware +----------------------------- + + :Author: Andrea Manni + :Copyright: GFDL + :Version: 1.1 + +.. contents:: + +Generato con: http://docutils.sourceforge.net/rst.html + +*Nota*: si consiglia la lettura di: http://medialab.freaknet.org/sag/node29.html + +Partizioni +=================== + +Ci sono 3 tipi di partizioni: + + * 4 partizioni primarie + + * 1 puo' diventare estesa + + * la partizione estesa puo' contenere molte partizioni logiche + + +Le partizioni vengono *sicuramente* lette al momento del *Boot* dal BIOS della scheda madre (all'accensione del sistema, quando si aziona il tasto ``power`` per accendere il computer), quindi potrebbe essere necessario riavviare la macchina per poter vedere cambiamenti alla tabella delle partizioni. + +La tabella delle partizioni risiede nei primi ~400b del disco rigido, quindi nel primo settore che chiamiamo *Master Boot Record* (MBR, primi 512 byte del supporto) nel quale e' generalmente contenuto anche un boot loader o un boot manager nel caso di sistemi operativi multipli ospitati sullo stesso supporto di storaggio. + +============= ====================== + Bytes Contenuto +============= ====================== +446 bytes codice boot + 64 bytes tabella partizioni + 2 bytes "magic number 55AA" +============= ====================== + + +Per conoscere le partizioni attualmente visibili dal Kernel in esecuzione: + + ``$ cat /proc/partitions`` + +Gestione dell'MBR +=================== + +I dati contenuti nell'MBR sono quindi di fondamentale importanza per il sistema, dato che se questi non sono correttamente disponibili diventa impossibile accedere ai block device (e quindi ai file system e ai dati) ed eventualmente far partire il sistema (boot loader o boot manager). + +E' quindi importante tenere una copia di questi dati in caso di bisogno. Il metodo piu' semplice e' l'utilizzo del comando ``dd``, per copiare / riprodurre il solo schema di partizionamento (ad esempio per un sistema in RAID) si puo' usare anche ``sfdisk`` . + + * Per modificare le partizioni si usi ``# cfdisk /dev/nome_del_device`` + + - ``# cfdisk /dev/hda`` + + * Per fare una copia del contenuto dell'MBR: + + - ``# dd if=/dev/hdX of=/path/MBR-backup bs=512 count=1`` + + * Per ripristinarlo: + + - ``# dd if=/path/MBR-backup of=/dev/hdX bs=512 count=1`` + + * Per salvare solo la tabella delle partizioni: + + - ``# dd if=/dev/hdX of=/path/backup-partition-table bs=1 count=66 skip 466`` + + * Per ripristinare la tabella delle partizioni: + + - ``# dd if=/path/backup-partition-table of=/dev/hdX bs=1 count=66 skip 466`` + + * Per **cancellare completamente** tutto l'MBR: + + - ``# dd if=/dev/zero of=/dev/hdX bs=512 count=1`` + + +----------- + +Nomenclatura dei device +========================= + +Nei sistemi GNU/Linux la nomenclatura usata per individuare i device e le relative partizioni e' strutturata, a differenza di sistemi operativi come Windows in cui i block device vengono associati a lettere piu' o meno casuali come ``C: D: E:`` in base al momento in cui questi vengono resi disponibili al sistema (cosa che non permette di prevedere facilmente dove trovarli). + +Tutti i device fisici sono raggiungibili nella cartella ``/dev``. + +Per i device di tipo EIDE / Parallel ATA su una scheda madre con due connettori si avra' a disposizione: + +Primary controller: + * Primary Master: ``/dev/hda`` + * Primary Slave: ``/dev/hdb`` + + +Secondary controller: + * Secondary Master: ``/dev/hdc`` + * Secondary Slave: ``/dev/hdd`` + +Si noti la progressione alfabetica delle lettere: ``hda`` e' il primo device, ``hdb`` il secondo e cosi' via. + +Al nome del device segue il numero della partizione, es: + + * /dev/hda1 : prima partizione (Primary master EIDE) + + * /dev/hda2 : seconda partizione (Primary master EIDE) + + * /dev/hda3 : terza partizione (Primary master EIDE) + + * ecc. + +In uno schema *tipico* di partizionamento, nel quale si prevedono tre partizioni primarie, una estesa e alcune logiche, si avra' uno schema del tipo: + + + * /dev/hda1 : prima partizione primaria (Primary master EIDE) + + * /dev/hda2 : seconda partizione primaria (Primary master EIDE) + + * /dev/hda3 : terza partizione primaria (Primary master EIDE) + + * /dev/hda5 : prima partizione logica (Primary master EIDE) + + * /dev/hda6 : seconda partizione logica (Primary master EIDE) + + * /dev/hda7 : terza partizione logica (Primary master EIDE) + + * Seguono le altre eventuali partizioni logiche + +Si consiglia caldamente di seguire questo schema, creando la partizione estesa nell'ultima primaria disponibile (la quarta, che per questo non compare nello schema precedente). + +Si tenga presente che alcuni sistemi operativi come Windows o \*BSD possono non gradire di essere collocati su partizioni logiche: si consiglia quindi di preservare le partizioni primarie per questi, eventualmente lasciando dello spazio non allocato prima della creazione delle partizioni logiche nel caso si voglia avere la possibilita' in futuro di poter installare questi sistemi. Gnu/Linux non ha nessun problema a partire da una partizione logica, mettete tranquillamente i vostri sistemi da ``/dev/device5`` in poi. + + +I filesystem +=============== + +Il file system e' una struttura logica che ci permette di individuare i diversi file. Sostanzialmente e' un'insieme di meta dati che caratterizzano i singoli file piu' quanto necessario per poterli gestire. + +Alcuni esempi: e' il filesytem a poter caratterizzare i file con propietari, gruppi, permessi (lettura, scrittura, esecuzione), data di creazione e cosi' via. Alcuni filesytem permettono certe funzionalita', altri (sopratutto quelli piu' datati) +sono piu' *rudimentali*. + +Tipicamente i filesystem sono strutturati secondo un modello gerarchico basato su *files e cartelle*: quindi per poter identificare un file ci serve il suo *nome proprio* piu' il suo *percorso* nella struttura del filesystem. Il progressivo aumento del numero dei files sta cominciando a far sentire i limiti di questo modello. + +Con l'aumentare delle informazioni tendono ad essere piu' efficaci modelli relazionali, che permettono di interagire coi file in modo simile a un database. Ad esempio pensiamo alle librerie che contengono centinaia di migliaia di brani musicali MP3, oppure migliaia di fotografie: cercare di gestirli tramite nome del file e cartelle diventa poco pratico. Meglio raggrupparli per autore, data, album o quant'altro si adatti alla loro natura e al loro utilizzo. + +------------------------------- + +Dopo aver definito un *block device* (ad esempio avendo fatto una partizione) per poterlo usare occorre creare una struttura logica su di esso: il **file system**. + +Per creare un file system di tipo ext3 si puo' usare un comando del tipo: + + ``# mkfs.ext3 /dev/nome_del_device`` + +**Attenzione**: creare un nuovo filesytem su un device che gia' ne contiene uno rende non raggiungibili i file precedentemente esistenti. Sostanzialmente potete vedere la creazione del FS come *la formattazione* alla *windows*. + +---------------- + +Partizioni, nomenclatura linux, ridimeensionamente, frammentazione. + +Case +======= + +Antec: http://www.antec.com/ec/it/pro_enclosures.php + + * tower + + - middle tower + + - full tower + + * desktop + * rack per i server: http://www.antec.com/productImage.php?ProdID=03207&SetZone=en + + * mini: es http://gizmodo.com/gadgets/images/mini_itx.jpg + +Alimentatori +============ +Voltaggi: da 60W -> ~1000. Tipicamente 400W. +Si sceglie il voltaggio in base ai consumi, in particolare al giorno d'oggi le schede video (che possono consumare ~200w l'una). + +Caratteristiche: + * ha una ventola di raffreddamento: quindi fa rumore e la ventola si puo' rompere col tempo. + + * Sovraccarichi di tensione possono causare la rottura dell'alimentatore e qualunque altra cosa ad esso connessa. Utile usare un UPS / stabilizzatore di corrente priuma dell'alimentatore. Questo vale anche per la scheda di rete / modem / RJ11. + +link a esemplari in vendita: http://www.eprice.it/default.aspx?cat3=497&des=Alimentatori + +Un buon alimentatore da PC cosata corca ~80 per 400W. +Non si deve risparmiare su gli alimentatori. + +Per un server se ne deve sempre avere uno di scorta disponibile, o alimentazione ridondante. + +Link: http://it.wikipedia.org/wiki/Alimentatore#Alimentatori_Ridondanti + + +Schede madri +============= + +http://it.wikipedia.org/wiki/Scheda_madre +============================================== +ATX sono sempre in presa + + + +Processori: +================ + +http://it.wikipedia.org/wiki/CPU + +Multi core + +Hyperthreading + http://it.wikipedia.org/wiki/Hyper-Threading + +Architetture +------------- + +Ci sono tante architetture e **non** sono compatibili tra di loro. Il codice oggetto e' diverso per CPU diverse. + +Le vostre macchine sono generalmente della famiglia x86: tipicamnete dei i686. La maggior parte del codice viene comunque compilata per i386, ma sui sistemi piu' recenti si puo' comunque utilizzare le *librerie C ottimizzate* per i686. + +Controllate se nel vopstro sistema sono presenti: + ``dpkg -l | grep libc6-i686`` + +Se non sono presenti e siente su un 686 installatele! + +Sulle vostre macchine gira quindi software: + * i386 : normali pc + + * amd64 : i nuovi processori a 64 bit + + +http://it.wikipedia.org/wiki/Microprocessore + +Link: http://en.wikipedia.org/wiki/X86 + +Elenco dei processori AMD: + - http://it.wikipedia.org/wiki/Microprocessori_AMD + +Elenco dei processori Intel: + - http://it.wikipedia.org/wiki/Microprocessori_Intel + + - http://processorfinder.intel.com/details.aspx?sSpec=SLAPB + + +Elenco dei processori Intel: + - http://www.via.com.tw/en/products/processors/c7-m/ + +Elenco dei processori ARM: + * http://it.wikipedia.org/wiki/Architettura_ARM + - Es: Router, NAT, network appliance (fortigate...) + + - http://www.cyrius.com/debian/nslu2/ + +Arm e simili (geode, Xscale, alcuni PPC) sono utilizzati per i sistemi embedded. + +IBM Cell/PPC +============= + +Link: http://it.wikipedia.org/wiki/Cell_(processore) + +Embedded / NAS +=============== + +Devices a basse prestazioni per usi dedicati e altamente specializzati. + + * http://www.cappuccinopc.com/star-466.asp + + * http://www.kurobox.com/ + + * http://www.linutop.com/linutop2/shop/ + + * http://www.soekris.com/ + + * Meno testati: http://www.eprice.it/default.aspx?sku=1864201 + + * http://www.onehardware.it/05/06/2008/asus-eee-box-specifiche-e-prezzi/ + + + +RAM +======== + +http://it.wikipedia.org/wiki/Immagine:RAM_n.jpg + + + +Velocita' accesso dati supporti di storaggio +=============================================== + +Tenere conto di: + * velocita' teorica dei bus di conssione, es ATA / PCI + + * velocita' potenziale dell'hd: 7200rpm = ~45MB + + * caratteristiche del FS (ottimizzazione per dimesioni file) + + * numero di file e cartelle, e "vecchiaia" del FS + + +Bus per HD +------------- + + * PATA = Parallel ATA (vecchio) + - http://it.wikipedia.org/wiki/PATA + + + * SATA = Seral ATA (piu' moderno) + - http://it.wikipedia.org/wiki/SATA + + * SCSI = Small Computer System Interface + - http://it.wikipedia.org/wiki/SCSI + + +RAID +========== + + * http://www.acnc.com/raid.html + + * http://it.wikipedia.org/wiki/RAID + +Gli hard disk hanno dei limiti fisici: dati dalle loro dimensioni finite. + Pianificare le rrisorse di storaggio, + +Gli hard disks hanno la tendenza a rompersi. + +La velocita' degli hard disks influenza molto le prestazioni del sistema. + +Spare Disk: + Uno spare e' un hd che si lascia inattivo, in caso di rottura di uno degli elementi del'array questo viene attivato e ne pronde automaticcamente il posto. + +RAID1: Mirror +-------------- + +Piu' hard disk vengono messi in mirror, per creare ridondanza. + +Caratteristiche: Modello ipotetico con hd da s=100GB con velocita' v=40MB/s + 1. C'e' ridondanza dei dati: se si rompe un supporto il sistema continua a lavorare. + + 2. Dimensioni: si perde meta' della capacita' di storaggio. + Per 2hd si ha: + raid size= (s+s)/2 = 100 + + 3. Prestazioni: + + 3.1 Lettura: Non ci dovrebbero essere cambiamenti: + raid read speed = v * (numero array -1) = 120MB/s (3 hd in stripe + 1 per la parita') + + 3.2 Scrittura: si scrive molto velocemente sulla *parte in stripe*, ma ad ogni scrittura si deve calcolare la parita' e scriverla sul supporto dedicato, che diventa il collo di bottiglia dell'intero array. + - raid read speed = dipende dell'hd della parita' = 40 MB/s + + +RAID0: Stripe +-------------- + +Piu' hard disk vengono messi in *sequenza*, per aumentare prestazioni e dimensioni massime. + +Caratteristiche: Modello ipotetico con hd da s=100GB con velocita' v=40MB/s + 1. Non C'e' ridondanza dei dati: se si rompe un supporto perdo tutto l'array. Non va' quindi usato per dati *importanti*, ma per dati che si possono facilmente rimpiazzare (es: una chache proxy. un mirror di qualcosa, file temnporanei per la compilazione...). + + 2. Dimensioni: si sommano le capacita' di storaggio. + + - Per 2hd si ha: + - raid size= s+s = 200 + - nota: s sta per la dimesione del membro piu' piccolo dell'ARRAY. + - disk1 300GB + disk2 150GB = RAID0 300GB + + 3. Prestazioni: + + 3.1 Lettura: Dovrebbero aumentare + - raid read speed = v * numero membri array = 80MB/s + + 3.2 Scrittura: teoricamente bisogna scrivere il doppio dei dati: le prestazioni in scrittura dimezzano. + + - raid read speed = v * numer dei membri dell'array= 80 MB/s + +Note: + Si usa per aumentare la velocita' e per ottenere blok device di grosse dimensioni, ma e' *pericoloso* per quanto riguarda la disponibilita' dei dati. + + +RAID4: +-------------- + +http://www.acnc.com/04_01_05.html + +Piu' hard disk vengono messi in stripe con un elemto dedicato alla parita'. + +Parita: + +======== ======= ======= ======== + disk0 disk1 disk2 disk3 +-------- ------- ------- -------- + stripe stripe stripe parita' +-------- ------- ------- -------- + 0 0 1 1 + 1 0 1 0 + 1 1 1 1 + 0 0 0 0 + 1 1 0 0 +======== ======= ======= ======== + + +Se si rompe un HD: si puo' riapplicare l'algoritmo usato per calcolare la parita' per ri-ottenere i valori persi. + +======== ======= ======= ======== + disk0 disk1 disk2 disk3 +-------- ------- ------- -------- + stripe stripe stripe parita' +-------- ------- ------- -------- + 0 x 1 1 + 1 x 1 0 + 1 x 1 1 + 0 x 0 0 + 1 x 0 0 +======== ======= ======= ======== + +Nota: e' fondamentale avere uno spare disk diponibile: perche' in caso di rottura di due elementi perdo l'intero array senza avere possibilita' di recupero. I raid 4 0 5 tendono ad essere molto grandi, quindi il danno interesserebbe molti dati. + +Caratteristiche: Modello ipotetico con hd da s=100GB con velocita' v=40MB/s + 1. C'e' ridondanza dei dati: se si rompe un supporto il sistema continua a lavorare. E' fondamental;e avere uno spare disk sempre disponibile, meglio se piu' di uno. + + 2. Dimensioni: si perde la capacita' di storaggio usata per ospitare la parita'. + + - Per 2hd si ha: + + - raid size= somma (numero mebri array -1) = 450 + + 3. Prestazioni: tipicamente aumentano, ma varia in base alla modalita' di gestione del RAID: se sia hardware o software. + + 3.1 Lettura: Dovrebbero aumentare drasticamente come per uno stripe + raid read speed = v = 40MB/s + + 3.2 Scrittura: teoricamente bisogna scrivere il doppio dei dati: le prestazioni in scrittura dimezzano. + + - raid read speed = v/2 = 20 MB/s + +Note: + La velocita' di lettura puo' aumentare: migliora notevolmente il *seek time* dato che il kernel o il controller raid puo' scegliere di leggere i dati dal'HD in cui la testina e' piu' vicina ai dati. + + Inserendo uno *spare disk* si puo' aumentare ulteriormente la cap[acita' dell'array di sopravvivere a un guarsto fisico. + +RAID5 +------ + +http://www.acnc.com/04_01_05.html + +Il RAID5 e' un RAID4 in cui la parita' e distruibuita su tutti i membri dell'array. + + +Mnitors +========= + +http://it.wikipedia.org/wiki/Monitor_(video) + +http://it.wikipedia.org/wiki/HDCP + +-------------------- + +TODO ridimensionamento, frammentazione, raid LVM + diff --git a/source/img/180px-Apple2.jpg b/source/img/180px-Apple2.jpg new file mode 100644 index 0000000..6300638 Binary files /dev/null and b/source/img/180px-Apple2.jpg differ diff --git a/source/img/blade_server.jpg b/source/img/blade_server.jpg new file mode 100644 index 0000000..cd6d388 Binary files /dev/null and b/source/img/blade_server.jpg differ diff --git a/source/img/calcs.jpg b/source/img/calcs.jpg new file mode 100644 index 0000000..67bb1d6 Binary files /dev/null and b/source/img/calcs.jpg differ diff --git a/source/img/cluster.jpg b/source/img/cluster.jpg new file mode 100644 index 0000000..178da5a Binary files /dev/null and b/source/img/cluster.jpg differ diff --git a/source/img/differ16.gif b/source/img/differ16.gif new file mode 100644 index 0000000..fc3f9f9 Binary files /dev/null and b/source/img/differ16.gif differ diff --git a/source/img/eeepc.jpg b/source/img/eeepc.jpg new file mode 100644 index 0000000..3d3a4d9 Binary files /dev/null and b/source/img/eeepc.jpg differ diff --git a/source/img/hardware_img/Immagine:AsusP4PE_MainboardSocket478.jpg b/source/img/hardware_img/Immagine:AsusP4PE_MainboardSocket478.jpg new file mode 100644 index 0000000..9f4b5fc --- /dev/null +++ b/source/img/hardware_img/Immagine:AsusP4PE_MainboardSocket478.jpg @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + + + Immagine:AsusP4PE MainboardSocket478.jpg - Wikipedia + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +

Immagine:AsusP4PE MainboardSocket478.jpg

+
+

Da Wikipedia, l'enciclopedia libera.

+
+ +
+
Logo di Commons
+

Questo file e la sua pagina di descrizione (discussione · modifica) si trovano su Wikimedia Commons.
Se non hai mai usato Commons, visita la pagina di benvenuto o leggi le FAQ. +

+
+La descrizione che appare in quella sede, sulla relativa pagina di descrizione del file, viene mostrata di seguito.

ATX Mainboard Asus P4PE

+

Photographer: Andreas Frank, Munich, Germany Date: 2005-02-23

+


+ + + + + +
Creative Commons license
+Creative Commons Attribution Creative Commons Share Alike
This file is licensed under Creative Commons Attribution ShareAlike 2.0 License +
+

English | Français | Plattdüütsch | +/-

+
+ + + + + +

Cronologia di questa immagine

Fare clic su un gruppo data/ora per vedere il file come si presentava nel momento indicato. +

+ + +
DataMiniaturaDimensioniUtenteCommento
corrente20:57, 23 feb 2005Miniatura della versione delle 20:57, 23 feb 20051.800×1.400 (1.001 KB)Afrank99 (ATX Mainboard Asus P4PE)
+ +
+

Le pagine seguenti richiamano questa immagine: +

+

Metadati

+

Questo file contiene informazioni aggiuntive, probabilmente aggiunte dalla fotocamera o dallo scanner usati per crearlo o digitalizzarlo. Se il file è stato modificato, alcuni dettagli potrebbero non corrispondere alla realtà. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
Visite
+
+ +
+
+
+
Strumenti personali
+ +
+ + +
+
Navigazione
+ +
+ + + +
+
+ +
+ + + diff --git a/source/img/img b/source/img/img new file mode 120000 index 0000000..8d8c82b --- /dev/null +++ b/source/img/img @@ -0,0 +1 @@ +source/img \ No newline at end of file diff --git a/source/img/informatica_base.html b/source/img/informatica_base.html new file mode 100644 index 0000000..e69de29 diff --git a/source/img/laptop.jpg b/source/img/laptop.jpg new file mode 100644 index 0000000..12f0d0f Binary files /dev/null and b/source/img/laptop.jpg differ diff --git a/source/img/mainframe.jpg b/source/img/mainframe.jpg new file mode 100644 index 0000000..cece982 Binary files /dev/null and b/source/img/mainframe.jpg differ diff --git a/source/img/palm.gif b/source/img/palm.gif new file mode 100644 index 0000000..902e6ee Binary files /dev/null and b/source/img/palm.gif differ diff --git a/source/img/reti_img/0460020304003.png b/source/img/reti_img/0460020304003.png new file mode 100644 index 0000000..d12e1e0 Binary files /dev/null and b/source/img/reti_img/0460020304003.png differ diff --git a/source/img/reti_img/NetworkTopologies.png b/source/img/reti_img/NetworkTopologies.png new file mode 100644 index 0000000..7304b69 Binary files /dev/null and b/source/img/reti_img/NetworkTopologies.png differ diff --git a/source/img/reti_img/Netzwerktopologie_Stern.png b/source/img/reti_img/Netzwerktopologie_Stern.png new file mode 100644 index 0000000..5b1805d Binary files /dev/null and b/source/img/reti_img/Netzwerktopologie_Stern.png differ diff --git a/source/img/reti_img/P2ptv.PNG b/source/img/reti_img/P2ptv.PNG new file mode 100644 index 0000000..de38c04 Binary files /dev/null and b/source/img/reti_img/P2ptv.PNG differ diff --git a/source/img/reti_img/bus.gif b/source/img/reti_img/bus.gif new file mode 100644 index 0000000..71218a3 Binary files /dev/null and b/source/img/reti_img/bus.gif differ diff --git a/source/img/reti_img/ring.gif b/source/img/reti_img/ring.gif new file mode 100644 index 0000000..326c62b Binary files /dev/null and b/source/img/reti_img/ring.gif differ diff --git a/source/img/reti_img/star.gif b/source/img/reti_img/star.gif new file mode 100644 index 0000000..a9fc8c7 Binary files /dev/null and b/source/img/reti_img/star.gif differ diff --git a/source/img/supercomputer.jpg b/source/img/supercomputer.jpg new file mode 100644 index 0000000..b4fa284 Binary files /dev/null and b/source/img/supercomputer.jpg differ diff --git a/source/informatica_base.txt b/source/informatica_base.txt new file mode 100644 index 0000000..d0cdbb1 --- /dev/null +++ b/source/informatica_base.txt @@ -0,0 +1,715 @@ +===================== +Informatica di Base +===================== +--------------------------------------------- +Appunti introduttivi ai sistemi informativi +--------------------------------------------- + + :Author: Andrea Manni + :Copyright: GFDL + :Version: 1.5 + +.. contents:: + +Generato con: http://docutils.sourceforge.net/rst.html + +Informatica +============ + +.. image:: img/180px-Apple2.jpg + +Informatica: + L'informatica e' una scienza interdisciplinare che riguarda tutti gli aspetti del trattamento dell'informazione mediante procedure automatizzate. + +L'oggetto della materia sono quindi i **dati** e la **manipolazione** di questi, da un lato la capacita' di *storare* i dati (cosa non cosi' elementare quando il quantitativo diventa enorme) per poterli poi *manipolare*. Buona parte del lavoro del sistemista consistera' quindi nel garantire l'*integrita'* e la *disponibilita'* (intesa come *continuita'* del servizio) dei dati. Stara' poi all'*amministratore di rete* preoccuparsi di renderli disponibili (si pensi a un sito web che rende delle risorse disponibili) agli *utilizzatori*. + + +Link sull'argomento: http://it.wikipedia.org/wiki/Informatica + +Evoluzione nella societa' +------------------------- + +Per meglio percepire l'importanza dell'informatica si rifletta sull'influenza che le seguenti invenzioni nel campo del trattamento delle informazioni hanno avuto sulla societa' umana: + + * Diffusione della scrittura: + - *integrita'* dell'informazione: dati come il costo di una merce cessano di essere arbitrari, con conseguenze negli scambi commerciali. + - maggiore durata nel tempo delle informazioni (seppur limitata da supporti deperibili) + * Invenzione della stampa: Gutenberg_ 1448 + - Maggiore diffusione delle informazioni grazie all'abbattimento dei costi di stampa. + - Progressivo ampliamento della base di utenza: sempre piu' persone possono almeno imparare a leggere e quindi emanciparsi da una *casta* ristretta che mantiene il controllo sulla fruizione delle informazioni. Seppure in misura minore aumenta anche la possibilita' di produrre e diffondere contenuti. + * Nascita dell'informatica/elettronica + - Superamento di parte dei problemi legati alla deperibilita' dei supporti sui quali si conservano le informazioni. + - Enorme aumento del quantitativo di dati gestibili e abbassamento del costo di gestione. Supporti magnetici e ottici hanno radicalmento cambiato il modo di archiviare le informazioni rispetto ai depositi cartacei. + - Maggiore rapidita' nella trattazione delle informazioni, per es. la possibilita' di censire la popolazione rapidamente e gestire un apparato fiscale piu' efficiente. + - Possibilita' di incrociare i dati, ottenendo sostanzialmente nuovo valore da informazioni preesistenti + * Diffusione della rete Internet + - Disponibilita' globale delle informazioni (in formato elettronico) con costi nettamente minori rispetto al passato + - Abbattimento del costo della diffusione delle informazioni + +.. _Gutenberg: + +L'importanza della gestione digitale delle informazioni e' tale da accentuare il divario esistente tra chi puo' accedere ai nuovi mezzi e chi ne e' escluso, problema indicato generalmente con il termine `Digital Divide`__. + +__ : http://it.wikipedia.org/wiki/Digital_Divide#Descrizione + + +--------------- + +Analogico e Digitale +==================== + +Grandezze analogiche: + Sono grandezze **continue**: hanno infiniti *stadi intermedi*. Si pensi al movimento dell'ombra dell'asta di una meridiana in contrapposizione alle posizioni finite di un orologio digitale, o alle infinite posizioni che puo' assumere il potenziometro di un amplificatore (ovviamente un amplificatore *analogico*!). + Tensione e corrente elettriche sono grandezze analogiche perche' rappresentabili con funzioni continue. +Grandezze digitali: + Sono *discrete*: assumono un numero *finito* di stadi intermedi. Ad esempio l'interruttore per accendere una lampada. Quando i valori sono solo due si parla di valori *binari*, caso che riscontriamo in tutte le tecnologie basate sul silicio come i microprocessori o sui vecchi transistor. Si potrebbe pensare ai componenti di un computer come ad enorme numero di lampadine che possono essere solo accese o spente: l'evoluzione tecnologica passando dai transistor ai microporocessori ha raggiunto un livello di miniaturizzazione dell'ordine dei ~30 nanometri. + +La miniaturizzazione presenta i seguenti vantaggi: + * Minor costo di produzione ( rapporto tra il numero di transistor e superfice del *wafer* sul quale si stampano i microprocessori) + * Minore distanza tra gli elementi = minore *attrito* prodotto dal passaggio della corrente = minore dispersione termica = minore calore. Questo si traduce in un minore consumo elettrico, ulteriormente accentuato dal corrispettivo risparmio sulle unita' di raffreddamento. + +In informatica, con digitale ci si riferisce a tutto cio' che viene rappresentato con numeri o che opera manipolando numeri. Il termine deriva dall'inglese digit, che significa cifra, che a sua volta deriva dal latino digitus, che significa dito. + +.. image:: img/differ16.gif + +Una grandezza, tensione o corrente, si dice analogica quando al variare del tempo puo' essere rappresentata mediante una funzione continua, + senza punti di discontinuita'. + +Una grandezza si dice digitale quando viene rappresentata mediante un sistema binario costituito da valori 0 ed 1. + +Links: http://www.culturadigitale.net/?p=4 + +In informatica quindi si pone costantemente il problema della rappresentazione delle grandezze analogiche (tipiche del mondo *reale*) in valori digitali (discreti, e quindi approsimativi) **A/D - D/A** + +Sistema Binario +=============== + +I *computer* lavorano solo con grandezze finite, e si basano su sistemi cosidetti *binari*, dato che i microprocessori sono transistor miniaturizzati, che a loro volta possono essere visti come insiemi di lampadine che per definizione possono essere solo *accese* o *spente*. + +Potremmo considerare quindi i due stati come: + + * Spento = 0 + + * Acceso = 1 + +Entita' *discrete* come numeri interi o caratteri possono essere espressi facilmente con la sola combinazione dei valori 0 e 1, mentre valori *complessi* riconducibili a numeri reali (pensiamo alle infinite sfumature di un colore o ai suoni) tramite un'approssimazione basata su un numero di bit arbitrario. Ad esempio Il carattere *a* in formato *ASCII* si puo' esprimere con: ``01100001`` , un'immagine puo' essere rappresentata da una griglia di punti (pixel) piu' o meno estesa (risoluzione) con una certa *profondita' di colore* espressa in bit, + +E cercare di comporre valori *complessi* (approssimazione di numeri reali tramite un numero di bit arbitrario), con la sola combinazione dei valori 0 e 1, mentre entita' *discrete* Il carattere *a* in formato *ASCII* si puo' esprimere con: ``01100001`` . + + +Schema sulla trasformazione da binario a decimale:: + + + 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 decimali = 0 + 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 decimali = 1 + 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 decimali = 2 + 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 decimali = 3 + 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 decimali = 4 + 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 decimali = 5 + 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 decimali = 6 + .... + 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 decimali = 255 + +Si lavora in base 2 (cioe' si moltiplica sempre per 2), quindi si ha a che fare con sequenze numeriche del tipo: + ``2 4 8 16 32 64 128 256 512 1024 ...`` + + C'e' una ripetizione di questi *patterns* numerici dovuti alle **parole** usate dai processori. Se l'unita' minima dell'informazione e' il *bit*, l'unita' minima *funzionale* e' il **Byte**: + con 256 valori possibili possiamo esprimere efficacemente caratteri, colori ed altre informazioni percepibili dai nostri sensi. + + In informatica, word_(dall'inglese parola) e' un termine che identifica la dimensione nativa dei dati usati da un computer. Una word e' semplicemente un gruppo di bit di una determinata dimensione che sono gestiti come unita' da un microprocessore. La dimensione (o lunghezza) della word e' un'importante caratteristica dell'architettura di un computer. + +.. _word: http://it.wikipedia.org/wiki/Word + +Links aggiuntivi: + * http://www.culturadigitale.net/?p=8 + + * http://doc.studenti.it/appunti/introduzione-allinformatica/2/introduzione-informatica.html + +Unita' di misura +==================== + +Se diciamo che una singola *lampadina* sia un **bit**, nel nostro lavoro ci troviamo a gestire miliardi di lampadine. Cerchiamo di definire dei multipli del bit per rendere la quotidianita' piu' semplice. + + +bit + Una singola informazione, l'unita' minima. Si indica con la *b* **minuscola**. E' l'unita' di misura di riferimento per il *trasferimento* dei dati su reti: una scheda di rete *10/100* sposta circa 12MB (Bytes) al secondo. + + +Byte: + Un Byte e' formato da 8 bit. Si indica con la *B* **Maiuscola** . La si puo' considerare l'unita' *funzionale* minima nell'informatica, dato che un numero minore di bit difficilmente puo' rappresentare qualcosa di significativo. E' l'unita' di misura di riferimento per lo storaggio dati: le dimensioni dei files e dei supporti di storaggio si esprimono in Bytes. + + +Multipli del Bit (TABELLE DI CONVERSIONE): +-------------------------------------------- + + * Bit + * + * Byte (B): 8 bit + * + * Kilobyte (KB): 1024 B + * + * Megabyte (MB): 1024 KB, 1048576 B + * + * Gigabyte (GB): 1024 MB, 1048576 KB, 1073741824 B + * + * Terabyte (TB): 1024 GB, 1048576 MB, 1073741824 KB, 1099511627776 B + + +Link disponibile: http://it.wikipedia.org/wiki/Byte + +Nota: + Si tenga conto che i produttori di Hard Disk generalmente indicano la capienza di detti supporti in migliaia di megabyte e non 1024*: quindi per formattare 1 hd di 500 MB si considera 500/1000 (e non 500/1024). + + +Trasmissione dati su reti +------------------------- + +Il termine velocita' di trasmissione (o di trasferimento) viene solitamente utilizzato a proposito di scambi di informazioni tra computer o comunque dispositivi elettronici. Siccome su questi dispositivi l'informazione viene memorizzata e viaggia in forma digitale, ovvero e' sostanzialmente una sequenza di bit, e' naturale che tale velocita' venga misurata in bit per secondo (e da qui il termine equivalente inglese bitrate). + +Ad esempio, se in una linea ADSL abbiamo un trasferimento dati di 4 Mb/s, cioe' 4.000.000 b/s, avremo (4.000.000/8) B/s equivalenti a 500 kB/s. + +Quindi per calcolare la velocita' di trasferimento di un file le cui dimensioni sono espresse in BYTEs su una rete bisogna **dividere per 8** + +Ad es: + + * ADSL 20 Mb (*venti mega bit*) ha una velocita' equivalente di circa ~1.8MB (*mega* Bytes) per secondo + + * Rete etherent 10/100 Mb ha una velocita' di trasferimento di circa ~12MB per secondo. + + +C'e' uno scarto tra la velocita' nominale di trasferimento dati su una rete e l'effettivo trasferimento dei dati tra i due punti. Tipicamente questo e' dovuto a forme di interferenza del supporto trasmissivo (pensiamo a una rete wifi su onde radio), a imprecisioni dell'hardware di rete, conflitti tra pacchetti, problemi ambientali. + +Velocita' di clock +------------------- + +Usiamo l'Hertz_ come unita' di misura per le frequenze quali quelle di clock della CPU (es 2.0GHz numero di cicle del processore in un secondo) o di un BUS di per il trasferimento dati (es 33Mhz). Un hertz corrisponde alla distanza tra due creste di un onda. + +In teoria, la **velocita' o frequenza di clock** e' il numero di commutazioni (tra i due livelli logici "0" e "1") che circuiti logici (interni ad un'unita' di calcolo o di un microprocessore) sono in grado di eseguire in un minuto secondo (preso come unita'di tempo); essa espressa in cicli/secondo (Hertz) ed i suoi multipli. + +.. _Hertz: http://it.wikipedia.org/wiki/Hertz + +Unita' di misura per le frequenze: + * 1 hekt o hertz (simbolo hHz ) = 102 Hz = 100 Hz + + * 1 kilohertz (simbolo kHz ) = 103 Hz = 1 000 Hz + + * 1 megahertz (simbolo MHz ) = 106 Hz = 1 000 000 Hz + + * 1 gigahertz (simbolo GHz ) = 109 Hz = 1 000 000 000 Hz + + +Ricordiamo che i prefissi 'kilo', 'mega', 'giga', 'tera' derivano dal sistema numerico decimale (a base 10) e servono per esprimere le quantita' in 'ordini di grandezza': + + - 1 KILO = mille = 10^3 + + - 1 MEGA = 1 milione = 10^6 + + - 1 GIGA = 1 miliardo = 10^9 + + - 1 TERA = mille miliardi = 10^12 + +La velocita' o frequenza di clock e' il numero di commutazioni tra i due livelli logici "0" e "1" che circuiti logici interni ad un'unita' di calcolo o di un microprocessore sono in grado di eseguire nell'unita' di tempo di un minuto secondo, ed e' espressa in cicli al secondo, o hertz, e suoi multipli; normalmente per eseguire un'istruzione o una semplice somma sono necessari piu' cicli di clock. + +In queste moderne CPU essendo la velocita' di clock cosi' elevata, viene generata da un minuscolo oscillatore al quarzo posto all'interno della stessa CPU, regolabile tramite il BIOS. Gli informatici esperti sono in grado di aumentare le prestazioni dei computer aumentando la velocita' di clock nominale del processore, ma si tratta di un'operazione rischiosa che puo' portare al surriscaldamento della CPU. Vi sono comunque alcuni processori di particolare efficienza e robustezza che sono in grado di supportare bene velocita' di clock maggiori di quella nominale, senza subire danni. Nel gergo informatico questa operazione viene definita _overclocking, ed e' utilizzata anche dall'industria per testare l'affidabilita' delle CPU prodotte. + + +.. _overclocking: http://it.wikipedia.org/wiki/Overclocking + +Tipicamente la velocita' di clock consigliata per una cpu viene stabilita da un valore medio statistico ottenuto considerando vari esemplari del wafer da cui proviene la cpu, quindi e' possibile che la nostra CPU sia *stabile* anche a una velocita' di clock **leggermente** superiore a quella indicata. All'opposto, quando un elaboratore non necessita della velocita' massima della CPU e' possibile fare il *downclock* della stessa, in modo da ridurne il consumo e il riscaldamento, a vantaggio di una maggiore stabilita' del sistema e minore usura del sistema di raffreddamento. + +Le CPU piu' moderne, in particolare quelle montate sui sistemi portatili, possono variare dinamicamente la frequenza di lavoro a seconda del carico di lavoro da sostenere, in modo da ridurre il consumo medio e la rumorosita' (causata dalle ventole di raffreddamento). Ne e' un esempio la tecnologia SpeedStep_ di Intel, ed equivalenti di altri produttori. + +.. _SpeedStep: http://it.wikipedia.org/wiki/SpeedStep + +Supporti di storaggio (dati) +=============================== + +Supporti **hardware** adibiti a contenere le informazioni che trattiamo. +In ambito informatico con il termine storage si identificano i dispositivi hardware, i supporti per la memorizzazione, le infrastrutture ed i software dedicati alla memorizzazione non volatile di grandi quantita' di informazioni in formato elettronico. + +Tipici esempi di supporto di storaggio sono: + + * Hard disks + * CD rom + * Unita' a nastro + * ... + +Supporti fisici per la memorizzazione non volatile: http://it.wikipedia.org/wiki/Storage + In ambito informatico con il termine STORAGE (STORAGGIO, contenitore che conserva info) si identifica tutto l'hardware + (dipositivi/supporti/infrastrutture) dedicato alla memorizzazione non volatile di grandi quantita' di informazioni in *formato elettronico*. Tipici supporti storaggio sono: hard disks, CD-ROM, unita' a nastro,floppy, chiavette USB. + +Con il termine memorizzazione non volatile si intende la possibilita' di immagazzinare delle informazioni in maniera persistente con una ragionevole probabilita' che l'informazione rimanga inalterata per un ragionevole lasso di tempo. + +Con il termine memorizzazione NON VOLATILE si intende la possibilita' di immagazzinare delle informazioni IN MANIERA PERSISTENTE CON UNA RAGIONEVOLE PROBABILITA' CHE L'INFORMAZIONE RIMANGA INALTERATA PER UN RAGIONEVOLE LASSO DI TEMPO, e per farlo in formato digitale binario e' necessaria avere un supporto fisico con le seguenti caratteristiche: + -sul supporto possono essere *scritte almeno una volta* sequenze di bit; + + -le sequenze di bit scritte rimangono *inalterate a meno di una specifica operazione di modifica*; + + -le sequenze di bit possono essere *lette un numero elevato di volte* senza alterarle. + +La memoria RAM di un computer e' la tipica memoria volatile, infatti e' sufficiente che venga a mancare la corrente elettrica perche' tutte le informazioni in essa imagazzinate vadano perdute. + +Esistono molti supporti fisici che rispondono a queste caratteristiche, ma nella storia dell'informatica solo alcuni si sono affermati e sono tuttora utilizzati: + + * Schede perforate (decisamente obsolete); + + * Nastri magnetici; + + * Dischi magnetici (hard disk e floppy disk); + + * Dischi ottici; + +Supporti fisici per la memorizzazione non volatile: http://it.wikipedia.org/wiki/Storage + +Hard Disks +------------ + +Link: http://it.wikipedia.org/wiki/Hard_disk + +Il disco rigido o hard disk (anche chiamato disco fisso) e' un dispositivo utilizzato per la memorizzazione a lungo termine dei dati in un computer. Il disco rigido e' il **principale supporto di storaggio** dei computer per via della sua capienza (~300 GB) e della sua velocita' di trasferimento dati ( ~25MB per secondo) . + + +Memorie Flash +-------------- + +I supporti di storaggio *USB* o comunque di tipo NAND_ o SSD_ sono supporti removibili usati alla stregua dei vecchi floppy disk. La caratteristica peculiare e' che non hanno parti in movimento e sono quindi meno delicati rispetto ai supporti magnetici con testine in movimento su dischi (come gli hard disks ) o a quelli a nastro (come nei dispositivi a cartucce quali DAT e similari ). Sono meno fragili dei supporti ottici ( ala CD-Rom ) e meno sensibili all'esposizione solare diretta, piu' compatti fino ad essere tascabili nei tagli piu' piccoli. + +.. _NAND: http://it.wikipedia.org/wiki/Memoria_flash +.. _SSD: http://it.wikipedia.org/wiki/Disco_a_stato_solido + +Link: http://it.wikipedia.org/wiki/Chiave_USB + +Propieta' dei supporti di storaggio +-------------------------------------- + + +===================== =========== ========= =========== ============== + Supporti di Storaggio +-------------------------------------------------------------------------- + Tipo di dispositivo capienza lettura scrittura re-scrittura[1] +===================== =========== ========= =========== ============== + Hard disk ~300GB vero vero vero + Floppy disk 1.44MB vero dipende [2] dipende + CD ROM ~640MB vero falso falso + CD R ~640MB vero vero falso + CD RW ~640MB vero vero vero + DVD ROM ~4GB vero falso falso + Blue Ray ~35GB ... ... ... + USB Key ~1/128GB vero vero vero +===================== =========== ========= =========== ============== + +Nota: + per DVD e Blue RAY valgono gli stessi ragionamenti di scrittura (R) e re-scrittura (RW) fatti per i CD, solo con *tante sigle in piu'*. + +.. [1] Un floppy disk e' scrivibile se la targhetta e' posizionata in modalita' di scrittura, e all'opposto puo' diventare in sola lettura + +.. [2] Con *re-scrittura* si intende la possibilita' di modificare un dato piu' di una volta. Ad esempio su un supporto ottico *Recordable* si puo' scrivere una sola volta ( WORM_ ), dopodiche i dati scritti non sono ulteriormente modificabili (ma possono essere aggiunte sucessive *sessioni* di scrittura se previsto). Questa caratteristica li rende indicati come supporto di back-up. Supporti *Rewritable* possono invece essere scritti piu' volte (la posizione dei cristalli pit/lane interni puo' essere modificata piu' volte, quindi i dati possono essere modificati / eliminati). + +Tutti supporti di storaggio hanno vita limitata (aspettativa di vita), influenzata fortemente dalla nostra modalita' di utilizzo e da fattori/accidenti esterni; sono quindi soggetti ad alcune norme di conservazione specifiche: + - HD: mantiene dati per 2-5 anni + + - SUPPORTI MAGNETICI: evitare l'esposizione a rapide variazioni termiche e campi magnetici. + + - SUPPORTI OTTICI: tenerlo lontano da fonti calore, non depositarlo senza la custodia dedicata, non sottoporlo a nessun tipo di sollecitazione meccanica (piegarlo, torcerlo ). + +.. _WORM: http://it.wikipedia.org/wiki/WORM + + +HARD DISK +~~~~~~~~~~~~~ +Il disco rigido o hard disk (anche chiamato disco fisso) e' un dispositivo utilizzato per la memorizzazione a lungo termine dei dati in un computer. E' 1 supporto magnetico con 1 testina che si sposta per leggere dati su uno o piu' dischi. + +Caratteristiche fondamentali: capiente (200-500 MB fino TB) + Trasf.dati (I/O) + riscrivibile (R,W,RW). + +E' quindi il **principale supporto di storaggio** per via della sua capienza (~300 GB), ma rappresenta un limite ('collo di bottiglia') per le *prestazioni* dell'intero pc perche' e' molto lento nel trasferire dati (25-30 MB/s) rispetto alla cpu (< 3 GHZ). Negli ultimi anni le prestazioni della cpu sono raddoppiate circa ogni 18 mesi (Legge di Moore_), mentre i dischi rigidi sono rimasti relativamente statici dal punto di vista delle prestazioni nello scambio dati. + +.. _Moore: http://it.wikipedia.org/wiki/Legge_di_Moore + +Link: http://it.wikipedia.org/wiki/Hard_disk + + + * I vari formati dei supporti ottici DVD: http://it.wikipedia.org/wiki/Dvd#Formati_DVD + * I vari formati dei supporti ottici Blue-Ray Disk: http://it.wikipedia.org/wiki/Blu-ray_Disc + + +Classi di elaboratori +======================= + +Cerchiamo di distinguere gli elaboratori per caratteristiche fisiche e funzionali, considerando la loro architettura, ambiente di utilizzo, target di utenza a cui sono rivolti. + +Stabiliamo alcuni criteri per distinguere le varie classi: + + * dimensioni + * mobilita' + * input | output + * capcita' di calcolo + * numero di utenti + * completezza dell'interfaccia utente + + +Calcolatori tascabili +--------------------------- + +.. image:: img/calcs.jpg + +Sono le macchine piu' semplici, generalmente poco flessibili, tendono ad essere piu' sofisticate nel caso delle calcolatrici scientifiche. Queste ultime sono spesso programmabili e hanno display comunque di dimensioni ridotte. L'interfaccia utente e' quindi molto semplificata. + + +Palmari e smart phones +----------------------- + +.. image:: img/palm.gif + +Device caratterizzati dalle piccole dimensioni e dalla portabilita' (dimensioni *tascabili* e autonomia nell'ordine delle decine di ore), possono essere relativamente potenti e flessibili, sopratutto quando vengono equipaggiati con sistemi operativi analoghi a quelli dei personal computers. Le loro prestazioni in alcuni casi sono paragonabili a PC fissi di 4/5 anni precedenti alla loro introduzione sul mercato. + +La capacita' di storaggio e' in genere molto limitata, ma e' possibile espanderla con schede di memoria. I modelli piu' recenti possono appogiiarsi a file-system di rete. + +.. _schede: http://it.wikipedia.org/wiki/Scheda_di_memoria + +Autonomia: da 4 a 25 ore. +Capacita' di storaggio: centinaia di MB + +Ultraportabili (netbook) +------------------------- + +.. image:: img/eeepc.jpg + +Sono sostanzialmente l'anello intermedio tra i palmari e i portatili. Di prezzo intermedio tra i due, hanno in genere una dotazione hardware semplificata e ridotte capacita' di espansione rispetto a un portatile. Dotati di monitor e tastiere *standard* possono far *girare* gli stessi sistemi operativi dei computer fissi e quasi tutti i software con essi compatibili senza dover intervenire sulle interfacce utente. + +Autonomia: da 1 a 8 ore. +Capacita' di storaggio: da 4GB (stato solido) a 80GB (hard disk magnetici) + +Portatili +------------ + +.. image:: img/laptop.jpg + +Versioni portabili o per lo meno *trasportabili* dei personal computers. Hanno generalmente una tastiera completa ma di dimensioni ridotte, un display di ~ 15 pollici, processori ottimizzati al risparmio energetico, capacita' di storaggio limitate. L'espandibilita' e' molto limitata. I portabili hanno una batteria che ne consente l'utilizzo senza accesso alla rete elettrica fissa per alcune ore. I cosidetti *trasportabili* hanno un'autonomia senza rete elettrica irrisoria. Visto il progressivo abbassamento dei prezzi stanno raggiungendo i computer fissi per diffusione. + +Autonomia: da 2 a 10 ore. +Capacita' di storaggio: da 250Gb fino a 1TB (Anche in RAID! ) + +Trasportabili +~~~~~~~~~~~~~~~ + +I cosidetti *TRASPORTABILI* sono sostanzialmente delle work-station che si possono spostare da una lugo all'altro.Data l'autonomi irrisoria della batteria (anche 30/45 minuti) sono praticamente utilizzabili solo connessi alla rete elettrica. + +Tipicamente sono piu' tozzi e pesanti dei portatili veri e propri, ma sono in genere piu' economici. Ad eccezione dei modelli particolarmente lussuori con display da 17 o piu' pollici, tipicamente dedicati al multimedia. + + +Ultraportatili +~~~~~~~~~~~~~~~~~~ + +Sacrificano le prestazioni per migliorare la portabilita': molto leggeri, grande autonomia (6 o piu' ore), display da 12 pollici o inferiore, tipicamente molto costosi. + +Personal Computer +------------------- + +.. image:: img/180px-Apple2.jpg + +Sono le normali macchine fisse usati dagli gli utenti per gli usi piu' disparati. Sono le macchine piu' *comuni*, utilizzate per lavori di office automation e intrattenimento, dotate di processori che privilegiano le prestazioni rispetto al consumo (e al costo), e sono generalmente il risultato dell'assemblaggio di parti sfuse (schede madri, processori, periferiche) la cui combinazione puo' portare a risultati variegati. A differenza delle classi precedentemente descritte sono aggiornabili (posto che ci sia compatibilita' tra i singoli componenti). + + +Work Station +------------- + +Sono postazioni singole ad alte performance per gli usi piu' impegnativi (grafica, calcolo). Fino ad alcuni anni fa erano generalmente caratterizzate da architetture multiprocessore, ma oggi si trovano *palmari* con piu' di una CPU quindi questo elemento non e' piu' determinante. Generalmente il costo e' di molte migliaia di euro. Questo termine sta diventando pero' obsoleto, data la difficolta' di caratterizzare queste macchine, per scopi promozionali / commerciali viene ormai usato per quasi tutti i sistemi in vendita... + +Server +-------- + +.. image:: img/blade_server.jpg + +Un server e' un elaboratore che tipicamente eroga servizi a molti *utenti* (clients) e offre continuita' del servizio: un server tipicamente resta acceso 24/7 mentre una workstation otto ore al giorno. L'hardware di un server (in particolare le parti in movimento piu' soggette a usura: alimentatore, ventole, hard disks) dovrebbero quindi essere in grado di funzionare tutto il giorno tutti i giorni, dato che l'interruzione, seppur temporanea, dell'erogazione dei servizi puo' compromettere la produttivita' di molti *clients*. +Componenti come alimentatore o hard disk hanno comunque una vita limitata (anche se di *buona* qualita') e in previsione di un loro malfunzionamento e' possibile implementare sistemi di *ridondanza* relativamente economici come RAID_ e alimentazione ridondante. Puo' essere possibile a seconda del tipo di hardware sostituire *al volo* (hot swap) i componenti guasti senza essere costretti a spegnere la macchina per l'intervento di manutenzione. + +.. _RAID: http://it.wikipedia.org/wiki/RAID + +I requisiti di capacita' di calcolo e memoria avranno da calcolare in base ai requisiti dei servizi in esecuzione sul server in relazione al numero dei client collegati e effettivo utilizzo di questi. Non e' raro trovare server con quantitativi di *RAM* o *CPU* ben piu' limitati dei clients che servono quando i servizi sono poco esosi di risorse o le richieste relativamente frequenti e sopratutto senza picchi di utilizzo. Alcuni servizi fondamentali come DNS, routing o firewall possono saturare la banda disponibile del server ben prima delle altre risorse di sistema. Capita ritrovare vecchie work-station in disuso, ormai sostituite da macchine piu' recenti e prestanti, svolgere decorosamente queste funzioni. Il che' rappresenta un'interessante opzione di reciclo, per quanto il consumo elettrico sia il piu' delle volte sproporzionato al lavoro svolto (tenendo come riferimento macchine a bassissiimo costo di derivazione embedded o NAS di produzione recente, ma il discorso si farebbe complicato...) . + +Tipicamente i server hanno capacita' di *collegamento* (hardware di rete) superiori ai singoli client (in proporzione alle macchine che devono servire), ma dato che *spesso* client e server condividono la stessa architettura hardware non e' semplice fare in modo che i server siano in grado di gestire input/output in quantita' direttamente proporzionale al numero dei clients. Si tenga conto che molti servizi non prevedono un flusso costante di dati ma solo chiamate sporadiche: questo permette di poter pianificare la ampiezza di banda necessaria al server sul valore massimo *stimato* di connessioni che si potrebbero verificare in un singolo momento piuttosto che sul reale numero di clients. + +Spesso i server non hanno periferiche di input dedicate (mouse e tastiera), e preferibilmente montano hardware a basso consumo (anche per limitare di conseguenza l'usura dei sistemi di raffreddamento, e per permettere la concentrazione in singoli armadi o *server farm* ). + + +Mainframe +---------- + +.. image:: img/mainframe.jpg + +Tipo di macchine "desuete" (a parte i casi in cui non se ne puo' fare a meno, ma la tendenza iattuale e' di sostituirle con uno o piu' server), i mainframe sono fondamentalmente caratterizzate da una superiore capacita' nella gestione dell'input/output, e nel garantire la continuita' del servizio (molti mainframe permettono la sostituzione a caldo anche dei processori). + +I mainframe o Sistemi Centrali sono computer utilizzati per applicazioni critiche soprattutto da grandi aziende e istituzioni, tipicamente per elaborare con alte prestazioni ed alta affidabilita' grandi moli di dati, come quelle in gioco nelle transazioni finanziarie, nei censimenti, nelle statistiche di industrie e clienti, nelle applicazioni ERP(Enterprise Resource Planning), etc + +Cluster +----------- + +.. image:: img/cluster.jpg + +soluzione *economica* per raggiungere alte prestazioni utilizzando piu' macchine *semplici* in parallelo per lo stesso scopo. Google ad esempio e' un cluster costituito da macchine x86 facilmente reperibili sul mercato. L'hardware e' quindi relativamente economico come gli interventi su di esso, e data la possibilita' di garantire il funzionamento del cluster a prescindere dal *fallimento* di un singolo membro si puo' tollerare hardware meno sofisticato. + +Supercomputer +--------------- + +.. image:: img/supercomputer.jpg + +I supercomputer sono macchine che raggiungono le massime prestazioni possibili secondo la tecnologia disponibile per singola unita'. La loro architettura e' altamente specializzata e costruita su misura, sono generalmente molto costosi e poco aggiornabili. + +La tendenza attuale e' di sostituirli con clusters di macchine piu' semplici da gestire: nelle _classifiche dei "super computer" molti sistema sono clusters. + +.. _classifiche: http://www.top500.org/ + +Linguaggi di programmazione +=========================== + +I computer, come detto in precedenza, registrano e elaborano dei dati. Quest'ultima parte viene svolta con dei programmi che sono sostanzialmente delle sequenze di istruzioni, scritte in un linguaggio comprensibile all'elaboratore, ripetute piu' volte. + +links: http://it.wikipedia.org/wiki/Linguaggio_di_programmazione + +Sappiamo che i microporcessori elaborano sequenze binarie formate dai valori ``1|0``, ma sarebbe decisamente scomodo per gli sviluppatori scrivere i programmi in questo formato. Si *preferisce* scrivere i software in linguaggi formali piu' simili alla lingua umana (inglese), che oltre a essere piu' *significativi* per gli sviluppatori permettono di scrivere sequenze di comandi che potranno poi essere adattate automaticamente alle varie CPU. + +La trasformazione del *codice sorgente* scritto dal programmatore in un linguaggio di piu' *alto livello* rispetto al *codice oggetto* direttamente eseguibile dal microprocessore viene svolta da un compilatore o da un interprete. + +Esistono probabilmente centinaia di linguaggi di programmazione, caratterizzabili in base a: + + * Distanza dall'hardware: linguaggi di basso livello come l'*assebler* sono molto piu' a contatto con le caratteristiche propie della CPU rispetto a linguaggi di alto livello come *Python / Ruby / PHP*. La possibilita' di interagire in modo piu' stretto con l'hardware puo produrre codice piu' prestante. + + * Semplicita': linguaggi di *alto livello*, sopratutto se interpretati, risultano molto piu' semplici da scrivere e manutenere, abbassando di conseguenza costi e tempi di sviluppo. Vista la attuale capacita' di calcolo dei microprocessori l'efficena massima del codice tende oggi a non essere prioritaria rispetto al tempo di sviluppo (almeno in molti casi). + +http://it.wikipedia.org/wiki/Linguaggio_di_programmazione#Linguaggi_compilati_e_linguaggi_interpretati + + +Compilatori +------------ + +In informatica, un compilatore e' un programma che traduce una serie di istruzioni scritte in un determinato linguaggio di programmazione (codice sorgente) in istruzioni di un altro linguaggio (codice oggetto). Questo processo di traduzione si chiama compilazione. + +Dal codice sorgente viene quindi generato un codice oggetto direttamente eseguibile dalla CPU, senza bisogno che al momento dell'esecuzione sia disponibile lo stesso linguaggio o componenti dell'ambiente si sviluppo. Dato che il compilatore ha la possibilita' di fare un'analisi generale del codice prima di cominciare a convertirlo il codice risultante e' in genere piu' ottimizzato rispetto al codice eseguito da un interprete. + +La compilazione richiede una certa quantita' di tempo, ma questo accade **solo in fase di compilazione**. Una volta creato il codice oggetto questo sara' immediatamente eseguibile su tutte le macchine compatibili, con un evidente vantaggio di prestazioni rispetto ai linguaggi interpretati che devono procedere alla *traduzione* a ogni esecuzione del programma. + +La necessita' di dover ricompilare ogni volta che si introduce un cambiamento del codice viene pero' visto come uno svantaggio rispetto ai linguaggi interpretati, dal punto di vista dello sviluppatore. + +Poiche' in informatica non esitono *proiettili_ d'argento* (silver bullets, una soluzione per tutti i problemi) abbiamo a disposizione tanti linguaggi diversi, per supportare approcci piu' o meno strutturati a problematiche piu' o meno complesse: linguaggi piu' o meno semplici, piu' o meno efficenti nelle prestazioni, ottimizzati per fare specifiche compiti, etc. L'idea di base sarebbe di cercare di elaborare soluzioni semplici con gli strumenti piu' adeguati (i linguaggi di programmazione) alla natura del problema. + +.. _proiettili: http://en.wikipedia.org/wiki/Silver_bullet + +Esempio di codice in linguaggio **C** : + +links: http://it.wikipedia.org/wiki/C_(linguaggio) + +| #include +| +| int main() +| { +| printf("Hello, World!"); +| return 0; +| } +| + + + +Analisi codice: http://it.wikipedia.org/wiki/C_(linguaggio)#Hello_world.21 + + +Interpreti +----------- + +http://it.wikipedia.org/wiki/Interprete_(informatica) + +Un linguaggio interpretato e' un linguaggio di programmazione i cui programmi vengono eseguiti da un interprete. Tale approccio si distingue da quello dei linguaggi compilati: a differenza di un interprete, un compilatore non esegue il programma che riceve in ingresso, ma lo traduce in linguaggio macchina (memorizzando su file il codice oggetto pronto per l'esecuzione diretta da parte del processore). + +L'approccio interpretato comporta una minore efficienza a run-time; un programma interpretato, in esecuzione, richiede piu' memoria ed e' meno veloce, a causa dello overhead introdotto dall'interprete stesso. Durante l'esecuzione, l'interprete deve infatti analizzare le istruzioni a partire dal livello sintattico, identificare le azioni da eseguire (eventualmente trasformando i nomi simbolici delle variabili coinvolte nei corrispondenti indirizzo di memoria), ed eseguirle; mentre le istruzioni del codice compilato, gia' in linguaggio macchina, vengono caricate e istantaneamente eseguite dal processore. + +Esempio in python: + +| print "hello world!" + +Analisi: scrive hello world a schermo ! + + +Java e similari +------------------------ + +link http://it.wikipedia.org/wiki/Macchina_virtuale_Java + +La macchina virtuale Java, detta anche Java Virtual Machine o JVM, e' la macchina virtuale che esegue i programmi in linguaggio Java bytecode, ovvero i prodotti della compilazione dei sorgenti Java. La JVM e' formalmente una specifica, mantenuta da Sun Microsystems. Qualsiasi sistema che si comporti in modo coerente con tale specifica sara' quindi da considerarsi una particolare implementazione della JVM. Esistono implementazioni software per praticamente tutti i sistemi operativi moderni, sia gratuite che commerciali. Inoltre, esistono implementazioni speciali per particolari ambienti hardware/software (per esempio telefoni cellulari e palmari), e persino implementazioni hardware. + +La disponibilita' di implementazioni della macchina virtuale Java per diversi ambienti operativi e' la chiave della portabilita' di Java, proclamata nello slogan write once, run everywhere ("scrivi una volta, esegui dappertutto"). La macchina virtuale realizza infatti un ambiente di esecuzione omogeneo, che nasconde al software Java (e quindi al programmatore) qualsiasi specificita' del sistema operativo sottostante: + +| ================================ +| | Software applicativo Java | +| =============================== +| | Java Virtual Machine | +| ========================== +| | Sistema Operativo | +| ====================== + +Sostanzialmente il codice Java viene scritto per essere eseguito da una Java Virtual Machine (JVM), della quale viene rilasciata una versione per ogni diverso sistema operativo. In questo modo modo lo sviluppatore puo' scrivere un codice che sia indipendente dal sistema in cui verra' eseguito, dato che la JVM (Java Virtual Machine) dovrebbe comportarsi allo stesso modo su qaulunque sistema venga installato. + +Licenze software +==================== + +La licenza in ambito informatico e' il contratto che puo' accompagnare un prodotto software. Tale contratto specifica le modalita' con cui l'utente puo' usare tale prodotto, garantendo dei diritti ed imponendo obblighi. + +La licenza e' imposta da chi detiene il copyright sul prodotto software; la sua validita' dipende dalla presenza del diritto d'autore, questo perche' solo chi detiene il copyright ha il diritto di far rispettare in ogni sede la licenza stessa. + +In vari casi l'autore puo' rilasciare un prodotto software sotto licenze differenti, lasciando all'utente la possibilita' di scegliere quella preferita. + + +Tipi di licenze +================= + + +Publico dominio +---------------- + +Il pubblico dominio non e' propriamente una licenza, per quanto sia determinante nei rapporti tra l'opera e i fruitori. L'essenza sta proprio nel non sottoprre l'opera a meccanismi di tutela della propieta' dell'opera. L'opera e' patrimonio dell'umanita'. Tutte le opere delle quale il copyright e' scaduto per termini di leggi (a seconda del paese possono volerci fino a un centinaio di anni) diventano di pubblico dominio e quindi liberamente fruibili. Ad es. non dovete chiedere il permesso a nessuno per stampare e diffondere l'Odissea di Omero, posto che non contravveniate ad altre leggi vigenti nel farlo. + +WWW, TCP/IP, sqlite_ sono sotto pubblico domnio + +.. _sqlite: http://www.sqlite.org/copyright.html + +Publico dominio = cessazione di tutti i diritti di eslusiva: +http://it.wikipedia.org/wiki/Pubblico_dominio + +Freeware +---------- + +http://it.wikipedia.org/wiki/Freeware + +Software *a gratis*. Nel senso che non si paga per utilizzarlo. Gratis come in "birra gratis per tutti". + +L'utente non pu' modificarlo in alcun modo, a meno che non espressamente previsto. + +Il termine freeware indica un software che viene distribuito in modo gratuito. + +Il freeware e' distribuito indifferentemente con o senza codice sorgente, a totale discrezione dell'autore e senza alcun obbligo al riguardo. È sottoposto esplicitamente ad una licenza che ne permette la redistribuzione gratuita. Il software freeware viene concesso in uso senza alcun corrispettivo, ed e' liberamente duplicabile e distribuibile, con pochissime eccezioni. + +Shareware +----------- + +Shareware e' una tipologia di licenza software molto popolare sin dai primi anni Novanta. Vengono distribuiti sotto tale licenza in genere programmi facilmente scaricabili via Internet o contenuti in CD e DVD quasi sempre allegati alle riviste di Informatica in vendita in edicola. + + Il software sotto tale licenza puo' essere liberamente ridistribuito, e puo' essere utilizzato per un periodo di tempo di prova variabile (generalmente 30 giorni). Scaduti questi termini, per continuare ad utilizzare il software e' necessario registrarlo presso la casa produttrice, pagandone l'importo. All'avvio dell'applicazione shareware generalmente un Nag Screen informa l'utente su come effettuare la registrazione e sulle condizioni di utilizzo. + + +Licenze per software liberi +=============================== + +http://it.wikipedia.org/wiki/Software_libero + +Il Software libero e' una questione di liberta', non di prezzo. Per capire il concetto, bisognerebbe pensare alla liberta' di parola e non alla birra gratis [NdT: il termine free in inglese significa sia gratuito che libero, in italiano il problema non esiste]. + +Cosa sia, o meglio quanto debba essere libero un software per poter essere definito tecnicamente *libero* e' motivo di discussione sia tra sviluppatori che tra i non i non addetti ai lavori, data l'applicazione del concetto di copyleft ad altre discipline diverse dall'informatica. + +Generalmente con software libero si intende quel codice rilasciato sotto licenza GPL, per quanto altre licenze vengano generalmente accettate come *libere*. Stabiliti dei criteri, almeno per quanto riguarda il software, si puo' procedere a una comparazione tra le varie licenze alternative alla GPL: + + * http://it.wikipedia.org/wiki/Comparazione_di_licenze_libere + + * http://www.gnu.org/philosophy/categories.it.html + +Dal sito del progetto Gnu possiamo *copiare* la seguente definizione: + +Definizione di Software Libero + + Questa definizione ha lo scopo di chiarire quali sono i requisiti che un certo programma deve soddisfare perche' lo si possa considerare "software libero". + + Il Software libero e' una questione di liberta', non di prezzo. Per capire il concetto, bisognerebbe pensare alla liberta' di parola e non alla birra gratis [NdT: il termine free in inglese significa sia gratuito che libero, in italiano il problema non esiste]. + + L'espressione "software libero" si riferisce alla liberta' dell'utente di eseguire, copiare, distribuire, studiare, cambiare e migliorare il software. Piu' precisamente, esso si riferisce a quattro tipi di liberta' per gli utenti del software: + Liberta' di eseguire il programma, per qualsiasi scopo (liberta' 0). + Liberta' di studiare come funziona il programma e adattarlo alle proprie necessita' (liberta' 1). L'accesso al codice sorgente ne e' un prerequisito. + Liberta' di ridistribuire copie in modo da aiutare il prossimo (liberta' 2). + Liberta' di migliorare il programma e distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunita' ne tragga beneficio (liberta' 3). L'accesso al codice sorgente ne e' un prerequisito. + + Un programma e' software libero se l'utente ha tutte queste liberta'. In particolare, se e' libero di ridistribuire copie, con o senza modifiche, gratis o addebitando delle spese di distribuzione a chiunque ed ovunque. Essere liberi di fare queste cose significa (tra l'altro) che non bisogna chiedere o pagare nessun permesso. + + Bisogna anche avere la liberta' di fare modifiche e usarle privatamente nel proprio lavoro o divertimento senza doverlo dire a nessuno. Se si pubblicano le proprie modifiche, non si deve essere tenuti a comunicarlo a qualcuno in particolare o in qualche modo particolare. + + La liberta' di usare un programma significa liberta' per qualsiasi tipo di persona od organizzazione di utilizzarlo su qualsiasi tipo di sistema informatico, per qualsiasi tipo di attivita' e senza dover successivamente comunicare con lo sviluppatore o con qualche altra entita' specifica. Quello che conta per questa liberta' e' lo scopo dell'utente, non dello sviluppatore; come utenti potete eseguire il programma per i vostri scopi; se lo ridistribuite a qualcun altro, egli e' libero di eseguirlo per i propri scopi, ma non potete imporgli i vostri scopi. + + La liberta' di ridistribuire copie deve includere le forme binarie o eseguibili del programma e anche il codice sorgente, sia per le versioni modificate che non modificate (distribuire programmi in formato eseguibile e' comodo per avere sistemi operativi liberi facili da installare). È legittimo anche se non c'e' alcun modo di produrre una forma binaria o eseguibile (dal momento che alcuni linguaggi non supportano questa caratteristica), ma si deve avere la liberta' di ridistribuire tali forme nel caso si trovi o si sviluppi un modo per farlo. + + Affinche' le liberta' di fare modifiche e di pubblicare versioni migliorate abbiano senso, si deve avere accesso al codice sorgente del programma. Percio', l'accessibilita' al codice sorgente e' una condizione necessaria per il software libero. + + Un importante modo di modificare un programma e' quello di includervi funzioni e moduli liberi gia' esistenti. Se la licenza del programma prevede che non si possano includere moduli gia' esistenti, ad esempio se richiede che voi possiate aggiungere solo codice di cui detenete il copyright, allora la licenza e' troppo restrittiva per essere considerata libera. + + Queste liberta' per essere reali devono essere irrevocabili fin tanto che non si fa qualcosa di sbagliato: se lo sviluppatore del software ha il potere di revocare la licenza anche senza che l'utente sia causa di tale revoca, il software non e' libero. + + Tuttavia, certi tipi di regole sul come distribuire il software libero sono accettabili quando non entrano in conflitto con le liberta' principali. Per esempio, il copyleft, noto anche impropriamente come "permesso d'autore", e' (detto poche parole) la regola per cui, quando il programma e' ridistribuito, non e' possibile aggiungere restrizioni per negare ad altre persone le liberta' principali. Questa regola non entra in conflitto con le liberta' principali, anzi le protegge. + + Indipendentemente dal fatto che si siano ottenute copie di software GNU a pagamento o gratuitamente, si ha sempre la liberta' di copiare e cambiare il software, e anche di venderne copie. + + Software libero non vuol dire non-commerciale. Un programma libero deve essere disponibile per uso commerciale, sviluppo commerciale e distribuzione commerciale. Lo sviluppo commerciale di software libero non e' piu' inusuale: questo software commerciale libero e' molto importante. + +--------------------- + +Copyleft != Copyright +----------------------- + +Il copyleft e' un metodo generico per rendere un programma libero ed imporre che tutte le modifiche e versioni estese del programma siano anch'esse software libero. + +L'espressione inglese copyleft, lett. "(diritto di) copiatura (esclusiva) abbandonato" , e' gioco di parole su copyright (lett. "diritto (esclusivo) di copiatura"), in cui la seconda parola del composto, "right" e' scambiata con "left" individua un modello alternativo di gestione dei diritti d'autore basato su un sistema di licenze attraverso le quali l'autore (in quanto detentore originario dei diritti sull'opera) indica ai fruitori dell'opera che essa puo' essere utilizzata, diffusa e spesso anche modificata liberamente, pur nel rispetto di alcune condizioni essenziali. Nella versione pura e originaria del copyleft (cioe' quella riferita all'ambito informatico) la condizione principale obbliga i fruitori dell'opera a rilasciare eventuali modifiche apportate all'opera a loro volta sotto lo stesso regime giuridico (e generalmente sotto la stessa licenza). In questo modo, il regime di copyleft e tutto l'insieme di liberta' da esso derivanti sono sempre garantiti. + + +Il modo piu' semplice per rendere un programma, o altro lavoro, libero e' dichiararlo di dominio pubblico, privo di copyright. [NdT: in Italia questo concetto a rigore non esiste, perche' l'autore non puo' rinunciare alla paternita' dell'opera; effetti simili si possono ottenere con l'uso di una licenza permissiva, come la licenza di X del MIT]. Cio' permette a chiunque di condividere il programma e i suoi miglioramenti. Tuttavia permette anche a chi non vuol cooperare di convertire il programma in software proprietario. Costoro possono infatti apportare modifiche, che siano significative o meno, e distribuire il risultato come prodotto proprietario. Chi riceve il programma nella forma modificata non ha la liberta' data dall'autore originario; l'intermediario l'avra' rimossa. + +*Segue su:* http://www.gnu.org/copyleft/copyleft.it.html + +Link alla Licenza GPL (e DSFG): + + - http://it.wikipedia.org/wiki/GNU_GPL + + - http://www.gnu.org/copyleft/gpl.html + + - FAQ sulla GPL: http://www.fsf.org/licensing/licenses/gpl.html + + - DSFG (Le Linee Guida Debian per il Software Libero (Debian Free Software Guidelines - DFSG): http://www.debian.org/social_contract#guidelines + +Non dci dovrebbe essere nessuna differenza tecnica tra "free software" +e "open source". + +Licenza BSD +------------- + +Le licenze BSD sono una famiglia di licenze permissive per software. Molte sono considerate libere ed open source. Il loro nome deriva dal fatto che la licenza BSD originale (detta anche licenza BSD con 4 clausole) fu usata originariamente per distribuire il sistema operativo Unix Berkeley Software Distribution (BSD), una revisione libera di UNIX sviluppata presso l'Universita' di Berkeley. + +Links: + - http://it.wikipedia.org/wiki/Licenze_BSD + - http://www.opensource.org/licenses/bsd-license.php + +Licenza Apache +----------------- + +In ambito informatico, con Licenza Apache (ingl:Apache License) si intende una precisa licenza, che similmente alla licenza BSD, permette di utilizzare il codice dentro progetti non open source e senza obbligo di rilascio dei sorgenti modificati. + +La Licenza Apache venne scritta dalla Apache Software Foundation (ASF) per il piu' usato server web, Apache. È una licenza per software libero, ma non compatibile con la GNU GPL. + +Questa licenza assume particolare inportanza in quanto usata per molti altri software rilasciati dalla Apache Software Foundation (ASF_) e altri progetti, + +.. _ASF: http://it.wikipedia.org/wiki/Apache_Software_Foundation + +Esistono le versioni 1.0, 1.1 e 2.0. + + + +Eula +===================== + +EULA o End User License Agreement (accordo di licenza con l'utente finale) e' il contratto tra il fornitore di un programma software e l'utente finale. Tale contratto assegna la licenza d'uso del programma all'utente nei termini stabiliti dal contratto stesso. + +Segue su: http://it.wikipedia.org/wiki/EULA + + + * Multilicenze (enterprice) + + * Licenze singole + + * OEM : legate all'hardware, non possono essere spostata su una macchina diversa + +Link alla licenza EULA di MS Windows XP: + - http://alice.andreamanni.com/eula.txt + - http://www.microsoft.com/windowsxp/eula/home.mspx + + diff --git a/source/reti.txt b/source/reti.txt new file mode 100644 index 0000000..f635aa6 --- /dev/null +++ b/source/reti.txt @@ -0,0 +1,254 @@ +===================== +Reti +===================== +--------------------------------------------- +Appunti introduttivi alle reti +--------------------------------------------- + + :Author: Andrea Manni + :Copyright: GFDL + :Version: 0.2 + +.. contents:: + +Generato con: http://docutils.sourceforge.net/rst.html + +Risorsa alternative in inglese: http://www.netfilter.org/documentation/HOWTO/networking-concepts-HOWTO.html + +Rete di calcolatori +====================== + +Da Wikipedia, l'enciclopedia libera. +(Reindirizzamento da Rete informatica) + +Una rete di calcolatori e' un sistema che permette la condivisione di informazioni e risorse (sia hardware che software) tra diversi calcolatori. Il sistema fornisce un servizio di trasferimento di informazioni ad una popolazione di utenti distribuiti su un'area piu' o meno ampia. + +Le reti di calcolatori generano traffico di tipo fortemente impulsivo, a differenza del telefono, e per questo hanno dato origine - e usano tuttora - la tecnologia della commutazione di pacchetto. + +Rete / Mainframe +============================== + +La costruzione di reti di calcolatori puo' essere fatta risalire alla necessita' di condividere le risorse di calcolatori potenti e molto costosi (mainframe). La tecnologia delle reti, e in seguito l'emergere dei computer personali a basso costo, ha permesso rivoluzionari sviluppi nell'organizzazione delle risorse di calcolo. + +Si possono indicare almeno tre punti di forza di una rete di calcolatori rispetto al mainframe tradizionale: +fault tolerance (resistenza ai guasti): il guasto di una macchina non blocca tutta la rete, ed e' possibile sostituire il computer guasto facilmente (la componentistica costa poco e un'azienda puo' permettersi di tenere i pezzi di ricambio in magazzino); +economicita': come accennato sopra, hardware e software per computer costano meno di quelli per i mainframe; +gradualita' della crescita e flessibilita' (scalabilita'): l'aggiunta di nuove potenzialita' a una rete gia' esistente e la sua espansione sono semplici e poco costose. + +Tuttavia una rete ha alcuni punti deboli rispetto a un mainframe: +scarsa sicurezza: un malintenzionato puo' avere accesso piu' facilmente ad una rete di computer che ad un mainframe: al limite gli basta poter accedere fisicamente ai cablaggi della rete. Inoltre, una volta che un worm abbia infettato un sistema della rete, questo si propaga rapidamente a tutti gli altri e l'opera di disinfezione e' molto lunga, difficile e non offre certezze di essere completa; +alti costi di manutenzione: con il passare del tempo e degli aggiornamenti, e con l'aggiunta di nuove funzioni e servizi, la struttura di rete tende ad espandersi e a diventare sempre piu' complessa, e i computer che ne fanno parte sono sempre piu' eterogenei, rendendo la manutenzione sempre piu' costosa in termini di ore lavorative. Oltre un certo limite di grandezza della rete (circa 50 computer) diventa necessario eseguire gli aggiornamenti hardware e software su interi gruppi di computer invece che su singole macchine, vanificando in parte il vantaggio dei bassi costi dell'hardware. + +Tipi di reti +========================== + +Esiste una grande varieta' di tecnologie di rete e di modelli organizzativi, che possono essere classificati secondo diversi aspetti: + +Classificazione sulla base dell'estensione geografica + +A seconda dell'estensione geografica, si distinguono diversi tipi di reti: + + * si parla di rete personale o PAN (Personal Area Network) se la rete si estende intorno all'utilizzatore con una estensione di alcuni metri + + *potrebbe anche non essere una distinzione importante*. + + * si parla di rete locale o LAN (Local Area Network) se la rete si estende all'interno di un edificio o di un comprensorio, con una estensione entro alcuni chilometri + + * si parla di rete senza fili o WLAN (Wireless Local Arddea Network), se la rete locale e' basata su una tecnologia in radio frequenza (RF), permettendo la mobilita' all'interno dell'area di copertura, solitamente intorno al centinaio di metri all'aperto. Si noti che questa distinzione si basa principlmante sul mezzo trasmissivo, e non sull'estensione. Quindi il termine WLAN non e' indicativo dal punto di vista delle dimensioni. + + * si parla di CAN (Campus Area Network), intendendo la rete interna ad un campus universitario, o comunque ad un insieme di edifici adiacenti, separati tipicamente da terreno di proprieta' dello stesso ente, che possono essere collegati con cavi propri senza far ricorso ai servizi di operatori di TLC. Tale condizione facilita la realizzazione di una rete di interconnessione ad alte prestazioni ed a costi contenuti. + + * si parla di rete metropolitana o MAN (Metropolitan Area Network) se la rete si estende all'interno di una citta' + + * si parla di rete geografica o WAN (Wide Area Network) se la rete si estende oltre i limiti indicati precedentemente. + +Classificazione in base al canale trasmissivo +==================================================== + +Reti Locali +--------------- + +Le reti locali vengono realizzate tipicamente utilizzando un sistema di cablaggio strutturato con cavi UTP in categoria 5 o superiore, che serve uno o piu' edifici utilizzati tipicamente da una stessa entita' organizzativa, che realizza e gestisce la propria rete, eventualmente con la cooperazione di aziende specializzate. + +Link ai cavi UTP: http://it.wikipedia.org/wiki/Unshielded_Twisted_Pair +link ai cavi coassiali per vedere la differenza: http://it.wikipedia.org/wiki/Cavo_coassiale + +In molti casi, il cablaggio e' complementato o sostituito da una copertura wireless. + +Le LAN vengono realizzate soprattutto con la tecnologia ethernet, e supportano velocita' di 10/100 Mbit/s, o anche 1 Gbit/s, su cavi in rame dalle caratteristiche adeguate (CAT5 o superiore), o su fibra ottica. + +Reti pubbliche - Distribuzione +--------------------------------- + +Le reti pubbliche sono gestite da operatori del settore (gli ISP: Internet Service Provider), e offrono servizi di telecomunicazione a privati ed aziende in una logica di mercato. + +Per poter offrire servizi al pubblico, e' necessario disporre di una infrastruttura di distribuzione che raggiunga l'intera popolazione. + +Per ragioni storiche, la gran parte delle reti pubbliche sono basate sul doppino telefonico (dette anche POTS, Plain Old Telephone System). Questa tecnologia era stata studiata per supportare il servizio di telefonia analogica, ma data la sua pervasivita' e gli alti investimenti che sarebbero necessari per sostituirla e' stata adattata al trasporto di dati mediante diverse tecnologie: +i modem per codificare segnali digitali sopra le comuni linee telefoniche analogiche. Il grande vantaggio di questa tecnologia e' che non richiede modifiche alla rete distributiva esistente. Sono necessari due modem ai due capi di una connessione telefonica attiva per stabilire una connessione. Molti fornitori di servizio offrono un servizio di connettivita' Internet via modem mediante batterie di modem centralizzate. La velocita' e' limitata a circa 56 Kbit/s, con l'adozione di modem client e server che supportano la versione V92 dei protocolli di comunicazione per modem. Questo protocollo incorpora funzioni di compressione del flusso di bit trasmesso, quindi la velocita' effettiva dipende dal fattore di compressione dei dati trasmessi. +le reti ISDN trasmettendo dati e voce su due canali telefonici in tecnologia digitale. Mediante appositi adattori, e' possibile inviare direttamente dati digitali. La tecnologia ISDN e' ormai molto diffusa nei paesi sviluppati. Usandola per la trasmissione di dati, arrivano ad una velocita' massima di 128 Kbit/s, senza compressione, sfruttando in pratica due connessioni dial-up in parallelo, possibili solo con determinati provider. La velocita' su un singolo canale e' invece limitata a 64 Kbit/s. Ci sarebbe un terzo canale untilizzato per il segnale ma non per la comunicazione con una capacita' di 16 Kbit/s (Esso non viene mai utilizzato per i dati). + +Utilizzando modem analogici o ISDN, e' possibile stabilire una connessione dati diretta tra due qualsiasi utenze della rete telefonica o ISDN rispettivamente. +la tecnologia ADSL (Asymmetric Digital Subscriber Line) utilizza una porzione della banda trasmissiva disponibile sul doppino telefonico dalla sede dell'utente alla centrale telefonica piu' vicina per inviare dati digitali. È necessaria l'installazione di nuovi apparati di commutazione nelle centrali telefoniche, chiamati DSLAM, e l'utilizzo di filtri negli impianti telefonici domestici per separare le frequenze utilizzate per la trasmissione dati da quelle per la comunicazione vocale. La loro diffusione sul territorio e' limitata dai costi, che la rendono conveniente solo nelle aree maggiormente sviluppate. Durante la connessione tramite ADSL e' possibile continuare a utilizzare il telefono in quanto le frequenze della voce e dei dati non si sovrappongono. Questa tecnologia e' inoltre chiamata Asimmetric in quanto le velocita' di download e di upload non sono uguali: in Italia sono tipicamente pari a 4 Mbit/s in download e 512 Kbit/s in upload, ma per certi abbonamenti la velocita' di download puo' arrivare anche a 12 Mbit/s, o anche 24 Mbit/s, usando tecnologie di punta come ADSL2+ e reti di distribuzione in fibra ottica di ottima qualita'. Il doppino di rame presenta l'inconveniente di attenuare i segnali, e non permette il funzionamento di questa tecnologia per distanze superiori ai 5 Km circa. In alcuni casi e' anche possibile un'ulteriore riduzione della distanza massima dovuta a interferenze esterne che aumentano la probabilita' d'errore. Un'altra limitazione importante e' data dall'interferenza "interna", che si verifica quando molte utenze telefoniche sullo stesso cavo di distribuzione utilizzano il servizio ADSL. Questo fa si che non si possa attivare il servizio ADSL su piu' di circa il 50% delle linee di un cavo di distribuzione. + +ADSL e' l'ultimo sviluppo sull'infrastruttura esistente di doppino telefonico. + +Per superare queste velocita', l'infrastruttura di distribuzione basata sul doppino dovra' essere sostituita da supporti fisici piu' performanti. + +------------------------- + +Tra i candidati a sostituire il doppino per la distribuzione domestica dei servizi di telecomunicazioni, si possono citare: + + * le fibre ottiche: + + * le infrastrutture della TV via cavo (diffusa soprattutto negli USA) + + * il trasporto di dati sulla rete elettrica o nelle condutture del gas. + + * le reti wireless + + * le reti satellitari (che pero' sono tipicamente unidirezionali, dal satellite alla casa dell'utente, mentre il canale di ritorno deve essere realizzato con altre tecnologie, spesso su doppino telefonico. + +Reti di trasporto +--------------------- + +Capacita' ancora superiori sono necessarie per trasportare il traffico aggregato tra le centrali di un operatore di telecomunicazioni. + +Con tecnologie piu' costose, tipicamente utilizzate dai providers, si raggiungono velocita' di 40 Gbit/s per il singolo link su fibra ottica. + +Su una singola fibra e' poi possibile inviare molteplici segnali attraverso una tecnica di multiplazione chiamata (Dense) Wave Division Multiplexing ((D)WDM), o Multiplazione di Lunghezza d'Onda, che invia segnali ottici differenti a diverse lunghezze d'onda (in gergo, colori). Il numero di segnali indipendenti trasportabile va dai 4 o 16 dei relativamente economici impianti (Coarse)WDM alle centinaia degli impianti DWDM piu' avanzati. + +Negli Stati Uniti d'America il progetto Internet 2 cui collaborano la NASA, la difesa e le universita' americane connette gia' molti campus alla velocita' di 2 Gigabit/s (disponibili anche per studenti), con miglioramenti di TCP/IP per poter sfruttare alte velocita' di trasmissione, e permettera' di far transitare in rete il controllo dei satelliti civili, dello scudo spaziale, aerei comandati a distanza, testate nucleari e l'intera infrastruttura militare. + +Classificazione in base alla topologia +========================================= + +Link semplificato: http://www.tutorialpc.it/retipc5.asp + +.. image:: img/reti_img/NetworkTopologies.png + +Tre sono le topologie principali, in base alla tecnologia assunta come modalita' per il trasferimento dei dati: Bus Ring Star. Particolare attenzione riceve oggi un modello che prende il nome di rete Peer to Peer, per quanto e' incerto se lo si possa assumere come modello di topologia o piuttosto come paradigma di architettura di rete, in contrapposizione al modello *client-server* . + +Altri modelli (mesh, ecc) sono sostanzialmente la combinazione dei tre precedentemente citati. + +Rete a bus +------------ + +.. image:: img/reti_img/bus.gif + +Link: http://www.net-free.it/articoli/viewart.php?idart=40&idpag=1 + +*nota*: Pag 17 manuale TCP/IP + +Rete a anello +---------------- + +.. image:: img/reti_img/ring.gif + +Link: http://www.net-free.it/articoli/viewart.php?idart=40&idpag=2 + +*nota*: Pag 21 manuale TCP/IP + + +pag 21 + + +Rete a stella +------------------ + +.. image:: img/reti_img/Netzwerktopologie_Stern.png + +Le reti broadcast invece sono formate da un unico mezzo fisico condiviso da piu' elaboratori, dove i messaggi inviati da un elaboratore vengono ricevuti da tutti gli altri. All'interno del messaggio vi e' una parte relativa all'indirizzo del destinatario, in modo che tutte le altre macchine in ascolto possano scartare il messaggio in arrivo. Alcune reti prevedono indirizzi speciali di tipo broadcast e multicast. Il broadcast permette di inviare messaggi a tutte le stazioni collegate al mezzo fisico, mentre il multicast permette di farlo solo ad un gruppo di stazioni, ma non a tutte. Un esempio di una tale rete e' la comunissima Ethernet. + +Le moderne reti broadcast sono realizzate con una topologia fisica a stella (point-to-point), in cui tutti gli elaboratori sono connessi ad un punto di concentrazione, dove un apparato attivo (switch o hub) crea l'illusione che siano tutti connessi allo stesso mezzo fisico. Talvolta si usa definire questi apparati centrostella, appunto perche' si trovano al centro della rete a stella. + +-------------- + +Paradigmi di Rete +==================== + +Client-Server +-------------- + +Secondo questo modello l'host client sottopone delle richieste al computer server, che risponde (e cerca di soddisfare) queste richieste. Ad es nella navigazione Web il client http (browser web, es Mozilla Firefox) contatta e chiede una *pagina web* al server web, che fornisce la risorsa al client. + +Il rapporto non e' paritario, il client e' una macchina *stupida* che dipende dal *server* per l'operazione richiesta. La parte computazione compete al server, mentre il client deve preoccuparsi prevalentemente di formulare una richiesta corretta ed essere poi in grado di elaborare la risposta del server. + +Il rapporto e' quindi molti (client) ad uno (server). + +Questo paradigma favorisce l'accentramento dei servizi e la loro consolidazione: all'interno di un'azienda si possono delegare tutti i servizi fondamentali su una o piu' macchine in modo da poter concentrare la manutenzione (si pensi soporatutto alla sicurezza) su queste trattando i client come elementi sostituibili. I *server* tipicamente hanno una configurazione e dotazione hardware che gli consente di funzionare 24/7 (tutto il giorno, tutti i giorni), mentre le work station dei client sono realizzate per funzionare otto ore al giorno. + +Prendendo come esempio il servizio di posta elettronica, l'utente puo' ricevere emails in ogni momento anche se il suo computer client e' spento, dato che le caselle email (mail box o maildir) sono effettivamente sul server, sempre operativo. Quando richiesto l'utente si colleghera' con una applicazione client (MUA, Mail Client) al server per consultare la posta disponibile per il suo account. + +Peer to Peer +------------------------ + +.. image:: img/reti_img/P2ptv.PNG + +Questo paradigma di comunicazione e' tipico dei network *P2P* (peer2peer) e si propone come antitesi al precedente modello client server. Il rapporto tra i singoli host e' paritario, ogni elemento della rete e' in grado di svolgere la funzione richesta dall'utente senza l'intervento di una macchina centrale. + +Uno dei primi e' piu' famosi esmpi di applicazione P2P e' stato Napster, al momento tecnologie come i *torrents* usano un paradigma simile (talvolta si preferisce avere un host *privilegiato* che renda disponibili informazioni di base come la lista dei peer disponibili per inizializzare i nuovi peer). + +Generalmente una rete P2P e' in grado si sopravvivere allo spegnimento casuale di qualunque suo membro, e distribuisce gli oneri della gestione della connessione tra i sognoli peer. + +----------------- + +Commutazione di Pacchetto +========================== + + *nota*: Pag 24 Manuale TCP/IP + +(Packet Switching) + +Le reti di calcolatori si basano su una multiplazione dinamica a commutazione di pacchetto, a differenza delle reti telefoniche che invece utilizzano una multiplazione statica a commutazione di circuito. Tra le reti a commutazione di pacchetto pero' e' fondamentale operare una distinzione tra: + +Nelle reti con connessione, i percorsi che il pacchetto seguira' attraverso la rete sono prestabiliti e sono sempre gli stessi (si veda la vicinanza, sotto questo punto di vista, alle reti a commutazione di circuito), e si basano su un canale, stavolta non fisico (come nelle reti telefoniche) ma "virtuale". Per comprendere meglio il concetto di canale virtuale si pensi a due elaboratori A e B che devono comunicare tra loro. A e B all'interno della rete non sono collegati tra loro, quindi e' necessario che i pacchetti attraversino degli elaboratori intermedi. Prima dell'effettivo scambio dei dati pero' tra A e B viene creato un percorso prestabilito chiamato canale virtuale. Esempi particolarmente calzanti di reti orientate alla connessione sono le reti a commutazione di cella ATM o le reti Frame Relay e Frame Relay SE (Switch). I vantaggi di una rete siffatta stanno ovviamente nella qualita' del servizio. + +Nelle reti a commutazione senza connessione(o datagram), i percorsi che i pacchetti tenderanno a seguire non sono (e non possono) essere prestabiliti a priori, ma dipendono da una serie di fattori. Un esempio classico di rete a commutazione di pacchetto senza connessione e' l'IP. Come sappiamo nelle reti TCP/IP il TCP dell'elaboratore A si collega direttamente al corrispondente servizio dell'elaboratore B. Quindi a livello di trasporto c'e' connessione e quindi controllo sulla qualita' del servizio e sulla congestione della rete. Cosa che non accade a livello network. Il router dell'elaboratore A affida i pacchetti al router successivo indicato nella sua tabella di routing. Dopodiche', si disinteressa totalmente dell'ulteriore percorso che il pacchetto dovra' seguire all'interno della rete. Questo potrebbe sembrare un male, ma cosi' non e', proprio per via di questa divisione di compiti tra il layer di trasporto e quello network. + +Link immagine: http://www.emeraldinsight.com/ fig/0460020304003.png + *nota* rigenerare per licenza. + +*nota*: distinguere tra suddivisione in pacchetti / scelta del percorso (ICMP)i (pag 28. TCP/IP). Descrivere le collisioni tra pacchetti. (eventualmente cenni a portante e evnti fisici / elettrici). + +Sezioni di una rete +================================= + +In ogni rete di grandi dimensioni (WAN), e' individuabile una sezione di accesso e una sezione di trasporto. + +La sezione di accesso ha lo scopo di consentire l'accesso alla rete da parte dell'utente, e quindi di solito rappresenta una sede di risorse indivise (Si pensi ai collegamenti ADSL commerciali: La porzione di cavo che ci collega alla centrale e' un doppino telefonico, utilizzato esclusivamente dall'abbonato). La sezione di accesso altresi' comprende tutti quegli strumenti idonei a consentire l'accesso alla rete. Quindi possiamo distinguere vari tipi di accesso: "Residenziale" (Classica linea a 56Kbit/s, linea ISDN/ADSL), "Business" (Rete Locale dell'azienda e Gateway o Proxy che consente l'accesso all'esterno), "Mobile" (si pensi ad esempio al GSM, che consente un acesso basato su una rete a radiofrequenza con copertura "cellulare"), o "Wireless". + +La sezione di trasporto e' quella che ha il compito di trasferire l'informazione tra vari nodi di accesso, utilizzando se e' necessario anche nodi di transito. È sede quindi di risorse condivise sia di trasporto dati che di elaborazione. Dal punto di vista strutturale, una rete di trasporto e' costruita quasi esclusivamente attraverso fibre ottiche (es. Backbone). + +L'importanza degli standard - Sistemi aperti +=============================================== + +*nota*: pag 33 manuale TCP/IP + +Gli standard de iure e de facto aiutano a gestire le reti aziendali multiprotocollo. I piu' importanti enti di standardizzazione per le reti di computer sono: CCITT, ITU, ISO, ANSI e IEEE. + +Di particolare impatto e' l'OSI (Open System Interconnection), un progetto ISO risalente alla fine degli anni '70, che si propone come modello di riferimento per le reti. Esso presenta un approccio a 7 livelli (layers), con una serie di protocolli che si inseriscono ai vari livelli. I livelli 1 (Livello fisico) e 2 (Livello Data Link) sono ormai standard, mentre per gli altri 5 ci sono protocolli che esistono da tempo e gli standard faticano ad imporsi. + +L'importanza dei protocolli +=============================== + +Inportanza delle architetture a livelli (pag 33 manuale TCP - IP). + +I layers di astrazione. + + +------------------- + +A seguire: + + * il Modello OSI + + * il TCP / IP + + * Hardware di rete + +Intermezzo: + + * supporti di connessione (radio, fibra, ecc..) + + * Cablaggi diff --git a/source/servizi.txt b/source/servizi.txt new file mode 100644 index 0000000..b81531b --- /dev/null +++ b/source/servizi.txt @@ -0,0 +1,318 @@ +===================== +Servizi passo a passo +===================== +---------------------------------------------------------- +Appunti sulla installazione e configurazione dei servizi +---------------------------------------------------------- + + :Author: Andrea Manni + :Copyright: GFDL + :Version: 0.2 + +.. contents:: + +Generato con: http://docutils.sourceforge.net/rst.html + +Configurazione sistema +######################### + +Inpostazioni di base per la configurazione del sistema operativo + +Rete +------ + +Parametri della rete attualmente in uso:: + + ============= ================ + rete 10.10.208.0/24 + ============= ================ + netmask 255.255.255.0 + broadcast 10.10.208.255 + gateway 10.10.208.254 + gateway 10.10.208.250 + persistente + DNS 10.10.208.254 + DNS 10.10.208.250 + persistente + ============= ================ + + + +Bash completion +------------------- + +Abilitare /etc/bash_completion nel file /etc/bash.bashrc oppure ~/.bashrc :: + + . /etc/bash_completion + +/etc/bash_completion deve essere pre istallato, nel caso che non sia disponibile installare il pacchetto: bash-completion + + +Vim +------------ + +Sara' opportuno installare la versine completa dell'editor vim tramite il pacchetto vim e mnodificare il file di configurazione generale /etc/vim/vimrc :: + + " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just + " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime + " you can find below. If you wish to change any of those settings, you should + " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten + " everytime an upgrade of the vim packages is performed. It is recommended to + " make changes after sourcing debian.vim since it alters the value of the + " 'compatible' option. + + " This line should not be removed as it ensures that various options are + " properly set to work with the Vim-related packages available in Debian. + runtime! debian.vim + + " Uncomment the next line to make Vim more Vi-compatible + " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous + " options, so any other options should be set AFTER setting 'compatible'. + "set compatible + + " Vim5 and later versions support syntax highlighting. Uncommenting the next + " line enables syntax highlighting by default. + syntax on + + " If using a dark background within the editing area and syntax highlighting + " turn on this option as well + set background=dark + + " Uncomment the following to have Vim jump to the last position when + " reopening a file + + if has("autocmd") + au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") + \| exe "normal! g'\"" | endif + endif + + " Uncomment the following to have Vim load indentation rules and plugins + " according to the detected filetype. + if has("autocmd") + filetype plugin indent on + endif + + " The following are commented out as they cause vim to behave a lot + " differently from regular Vi. They are highly recommended though. + set showcmd " Show (partial) command in status line. + "set showmatch " Show matching brackets. + set ignorecase " Do case insensitive matching + "set smartcase " Do smart case matching + "set incsearch " Incremental search + set autowrite " Automatically save before commands like :next and :make + "set hidden " Hide buffers when they are abandoned + "set mouse=a " Enable mouse usage (all modes) in terminals + + " Source a global configuration file if available + " XXX Deprecated, please move your changes here in /etc/vim/vimrc + if filereadable("/etc/vim/vimrc.local") + source /etc/vim/vimrc.local + endif + +VNC +------------ + +Scaricare il pacchetto xtightvncviewer, e lo script guarda.sh che deve essere reso eseguibile in una posizione (nel senso di collocazione nel path degli utenti) comoda per gli utenti. + +Procedura:: + + su root + cd /bin + wget http://debian.piffa.net/guarda.sh + chmod +x guarda.sh + exit + +Si noti, per pieta' divina, che non e' possibile lanciare un applicativo grafico sul server grafico di un utente di sistema da una shell in cui si e' loggati come altro utente, in questo caso root. E' quindi necessario essere l'utente di sistema che si e' loggato inizialmente nella sessione grafica per poter lanciare lo script guarda.sh . + +Lista dei pacchetti di base +----------------------------- + +I pacchetti installati generalemnte durante le lezioni sono:: + + kde-core kdm kde-i18n-it xorg vim less xtightvncviewer + +Apt configurazione +--------------------- + +Vediamo i due file principali di apt:: + + * /etc/apt/sources.list + + * /etc/apt/apt.conf + +sources.list +~~~~~~~~~~~~~~~~ + +Questo file contiene i sorgenti da cui apt preleva i pacchetti da installare tramite dpkg, vengono quindi precisati i metodi (ad es. http / ftp / cdrom / file), la release che si vuole tracciare (es stable , testing , unstable oppure i corrispondenti release name es: lenny, squeeze, sid), i rami di interesse (es: main che e' la parte principale, non-free per il software non libero, contrib per i pacchetti non realizzati dai manutentori ufficiali). + +Gli archivi sono generalemnte:: + + * deb per pacchetti debian binari + + * deb-src per i pacchetti sorgenti (quindi da compilare, come il kernel) degli stessi pacchetti binari. Se non compilate generalmente i vostri pacchetti potete evitare di tracciare i sorgenti per risparmiare tempo e banda. + + +/etc/apt/sources.list :: + + # esempio di accesso a un CDROM: + # cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$ + + # Archivio principale debian via http su piffa.net, + # non funziona al difuori dell'aula dei corsi + deb http://debian.piffa.net/debian/ lenny main + # deb http://debian.piffa.net/debian/ lenny non-free contrib + + # Mirror da kernel.org da usare a casa: + deb http://mirrors.eu.kernel.org/debian/ lenny main + + # Security dal sito principale + deb http://security.debian.org/ lenny/updates main + deb-src http://security.debian.org/ lenny/updates main + + # Debian volatile per le cose soggette a cambiamenti non legati + # a dinamiche di sicurezza + deb http://volatile.debian.org/debian-volatile lenny/volatile main + deb-src http://volatile.debian.org/debian-volatile lenny/volatile main + + # Esempio di accesso a un filesystem locale contenente i pacchetti: + # deb file:/mnt/mirror sid main non-free contrib + + +/etc/apt/apt.conf +~~~~~~~~~~~~~~~~~~ + +Questo file contiene le opzioni di apt, come ad esempio il proxy:: + + Acquire::http::Proxy "http://10.10.208.254:3128" + + +Servizi +======== + +Squid +====== + +Apache +======== + +DNSmasq +======== + +Samba +====== + +Pacchetti da installare per utilizzare samba in modalita' server:: + + samba smbfs smbclient + + +Durante la prima installazione viene chiesto ilnome del gruppo di appartenenza, il default per windows e' WORKGROUP. In aula usiamo invece 208 . +Per riconfigurare samba si usi il comando:: + + dpkg-reconfigure samba-common + +Quando si utilizza samba bisogna tener conto di 3 livelli di password: + + * Sistema \*Unix + E' la password di sistema che viene usata sul sistema operativo su cui gira samba. E' importante tenere conto anche delle user id e group id degli utenti che dovranno fisicamente scrivere sui file system. Se un utente non puo' scrivere sul file system per mancanza di privilegi allora neanche samba potra' farlo nel momento in cui gli mette a disposizione la risorsa. + Queste passwords sono salvate nel solito file /etc/shadow (richiamato da /etc/passwd). + + * Password per l'applicativo samba + Samba deve essere compatibile con Windows e quindi utilizzare un sistema di criptazione delle password diverso da /etc/shadow.a Le password per l'applicativo samba vengono gestite ad esempio col comando smbpasswd e vengono salvate all'interno di /var/lib/samba/passdb.tdb . + + * Password per windows. + Gli utenti windows effettuazno il log-in alla partenza della sessione di windows. Se si avra' l'accortezza di usare la stessa password data precedentemente anche a windows (o viceversa impostare la password per GNU/Linux / Samba ugale a quella di Windows) l'utente potra' accedere automaticamente alle condivioni a lui disponibili. + +Password di samba vengono salvate nel file: /var/lib/samba/passdb.tdb + +Creazione Utenti +------------------- + +Creiamo per primo l'utente sotto GNU/Linux, facendo attenzione a *non* dargli una shell di sistema. Gli utenti Windows non hanno bisogno di poter eseguire comandi sul server! + +Creazione di un utente denominato sambo:: + + adduser --shell /bin/false sambo + +Nota: Ricordarsi di usare sempre la stessa password. +nel file /etc/passwd avremo qualcosa come:: + + sambo:x:1001:1001:Sambo utente samba!,,,:/home/sambo:/bin/false + + +Aggiunta dell'utente al database delle password per samba e generazione della sua password: + + smbpasswd -a sambo + +Se sucessivamente si vorra' modificare la password di un utente gia' esistente si usi: + + smbpasswd sambo + + +La password sotto windows verra' modificata sul sistema Windows. + +Creare la condivisione +------------------------ + +La condivisione altro non e' che una cartella sul server che viene resa disponibile sui client negoziando l'accesso in base all'autenticazione tramite esername / password. Si decida se fisicamente debba risiendere nella home di un utente (nel caso quest'ultimo ne sia l'unico fruitore) o in una cartella in /mnt/ nel caso piu' utenti accedano a questa. Nel secondo caso si gestiscano gli accessi sotto GNU/Linux tramite i gruppi. + +Creazione della risorsa sambo_share nella home dell'utente sambo:: + + # mkdir /home/sambo/sambo_share + # chown sambo:sambo /home/sambo/sambo_share/ + +Bisognerebbe notare i permessi di esecuzione del filesystem che ospita la carterlla. Se i file che saranno contenuti nella condivisione saranno da usarsi sotto Windows non c'e' motivo che questi siano eseguibili sotto GNU/Linux. +Si potrebbe avere quindi, ipotizzando una condivisione in /mnt/share che consista in un file system dedicato: + +In /etc/fstab :: + + /dev/hda10 /mnt/share ext3 rw,nosuid,noexec 0 3 + +Si noti anche l'uso di *nosuid* per evitare la possibilita' di eseguire programmi con credenziali diverse da quelle originali. + +Configurazione dell'applicativo Samba vero e proprio. +------------------------------------------------------ + +Avendo preparato gli utenti (ancora una volta: non si dia una shell completa a un utente che serve solo per samba o la posta elettronica) e la cartella sul file system si puo' procedere a configurare la condivisione su Samba. + + +/etc/samba/smb.conf riga ~235 , Share Definitions (in vim si usi 235gg ):: + + [sambo_share] + # Percorso della cartella condivisa + path = /home/sambo/sambo_share + # Se gli utenti possono scrivere / modificare file + writable = yes + # Negoziazione degli accessi su base utenti / passwords + valid users = sambo + # Altri parametri opzionali di interesse + # Se posso vedere la condivisione da esplora risorse + # anche se non ho i privilegi per accedervi. + browseable = yes + # Commento indicativo della risorsa + comment = Condivisione per Sambo + +Dopo aver salvato il file si puo' fare un primo controllo tramite l'utility testparm , che controlla la sintassi del file di configurazione di Samba. Se questo non rileva problemi si puo' procedere a un /etc/samba# /etc/init.d/samba restart . + + +Testare il Servizio +-------------------- + +Come testare il servizio + +es:: + + smbclient -U sambo -L localhost + +Questo comando permette di esplorare la risorsa qualificandosi come utnete, in quresto modo potete testare il corretto funzionamento dell'autenticazione. Si provi inizialmente a sbagliare la password deliberatamente, poi a inserirla correttamente: dovrebbbero essere visibili le risorse disponibili al solo utente sambo: la suo /home e la cartella samba_share:: + + Sharename Type Comment + --------- ---- ------- + sambo_share Disk Condivisione per Sambo + print$ Disk Printer Drivers + IPC$ IPC IPC Service (base server) + sambo Disk Home Directories + +In alternativa e' possibile montare realmente la condivisone anche su linux tramite un client per samba e testare il corretto funzionamento:: + + mount -t smbfs //localhost/sambo_share /mnt/sambo_mount/ --verbose -o user=sambo diff --git a/source/sistemi.txt b/source/sistemi.txt new file mode 100644 index 0000000..fd62514 --- /dev/null +++ b/source/sistemi.txt @@ -0,0 +1,387 @@ +===================== +Sistemi operativi +===================== +--------------------------------------------- +Appunti introduttivi ai sistemi operativi +--------------------------------------------- + + :Author: Andrea Manni + :Copyright: GFDL + :Version: 1.5 + +.. contents:: + +Generato con: http://docutils.sourceforge.net/rst.html + + +Sistema operativo +================== + +Concetti introduttivi +---------------------- + +Un elaboratore e' una macchina in grado di seguire una serie di istruzioni al fine di permettere all'utente di raggiungere il risultato voluto. Possiamo partire da alcuni concetti di base per poterne studiare le caratteristiche. + +Hardware: +------------ + Tutto quanto c'e' di *fisico* in un computer, quanto ha un peso (in senso materiale: grammi o kilogrammi) e occupa dello spazio. Il monitor, la tastiera, i supporti di storaggio dati, il computer stesso in ogni suo singolo componente interno e periferico sono l'**hardware** del computer, dall'inglese *ferraglia*. + +Software: +---------- + Tutti i dati e i programmi (questi ultimi altro non sono che sequenze di istruzioni, quindi dati) che vengono elaborati o prodotti nel corso dell'esecuzione del programma. I software e i dati tipicamente risiedono su una memoria RAM volatile al momento dell'esecuzione, ma vengono archiviati sui *supporti di storaggio* (hard disk, CD-Rom, floppy...) in base alle necessita' del momento. + +Input +--------- + I flussi di dati in ingresso inseriti generalmente dall'utente tramite le perifieriche dedicate a queste funzioni. Tastiera e mouse sono perifieriche di *solo Input*, una scheda di rete invece e' una periferica che puo' ricevere e trasmette dati. Questi dati sono utilizzati per modificare il corso dei programmi, nel caso ci siano piu' programmi utilizzati contemporaneamente per raggiungere il risultato voluto dall'operatore potra' accadere che il nostro programma riceva Input da un altro programma. Nei sistemi operativi *Unix si fa riferimento allo **standard Input** (stdin, la sua collocazione piu' elementare in un sistema basato sul kernel \*Linux si basa sul device ``/dev/input`` ). + +Output +--------- + I flussi di dati in uscita, normalmente i risultati aspettati dall'operatore. Tipiche periferiche di output dedicate sono i monitor, le casse audio, le stampanti. Come nel caso dell'input possiamo considerare periferiche come le schede di rete come di input/output. Nei sistemi operativi *Unix si fa riferimento allo **standard output** (stdout, fisicamente puo' essere dirottato sul diverse periferiche a seconda della natura dei dati (pensiamo a un file audio: verra' mandato alla scheda audio e da questa alle casse. Sarebbe poco significativo se visualizzato a schermo, e poco gradevole il caso inverso: ad es. telefonare a qualcuno e sentirsi rispondere da un FAX.) ma normalmente ci aspettiamo di vedere i risultati *a schermo*: sul nostro terminale ``/dev/tty*`` o equivalente. ). + +Errors +--------- + Non sempre le nostre aspettative nei confronti dell'elebarotore vengono soddisfatte, talvolta il nostro programma genera errori e un risultato solo parziale. Nei sistemi *Unix questo tipo di *output* viene indicato come **standard error** (stderr) e puo' essere reindirizzato su una canale diverso dal normale output. Ad esempio suonando una serie di brani musicali l'output viene indirizzato fino alle casse del computer, ma se un brano risulta illeggibile viene visualizzato un errore a *schermo*. Situazione simile nel caso di una stampa: l'output va' alla stampante me se durante la stampa si generano messaggi di errore questi non compariranno sulla carta. + +Questa possibilita' di canalizzare lo stdout e lo stderr verra' utile in seguito quando si avra' l'esigenza di pianificare operazioni svolte in automatico (es. script di back-up) durante le quali l'operatore non e' disponibile per leggere gli errori, che potranno essere re-indirizzati su un file di log o altro. + +Interfaccia utente +-------------------- + Il sistema formato da periferiche (es tastiera e monitor) che permette lo scambio di informazioni tra l'utente e l'elaboratore. Tutti i sistemi multifunzione (cioe' che possono svolgere piu' di un singolo compito) sono dotati di una interfaccia utente. I sistemi *multi-pourpose* hanno interfacce utente piu' sofisticate rispetto alle macchine dedicate: ad es. un personal computer ha un'interfaccia utente piu' completa rispetto ad una console per videogiochi o a un cellulare. Le interfacce utente possono essere di diverso tipo: + +Riga di comando +~~~~~~~~~~~~~~~~ + +CLI (Common Line Interface). Interfaccia testuale: input e output sono solo o prevalentemente caratteri, quindi niente grafica, finestre, icone. E' ad esempio l'interfaccia che ci si trova davanti a un terminale \*Unix ( CTR + ALT + F1 sotto Gnu/Linux) oppure stabilendo una sessione remota con SSH o telnet. + +Interfaccia grafica +~~~~~~~~~~~~~~~~~~~~ + +Permette la visualizzazione di icone finestre e quant'altro, grazie ad un server grafico che trasforma le informazioni piu' semplici in una rappresentazione grafica. Generalmente piu' *pesante* dal punto di visto delle risorse di sistema del computer, permette di eseguire solo le operazioni espressamente previste e rese disponibili dai vari *menu*, a differenza della CLI che puo' permettere la combinazioni di singoli comandi (pipes) e la creazione di script per automatizzare operazioni anche di relativa complessita'. + +Generalmente si accompagna a un sistema di puntamento come un mouse, touch pad, tavoletta grafica. track ball... + +La superiore complessita' la rende sconsigliabile per le sessioni remote, per lo meno quando e' possibile svolgere le stesse operazione tramite un'interfaccia CLI. Questo per non sottrarre risorse ai software di nostro interesse e per motivi di sicurezza (piu' una cosa e' complessa e piu' e' soggetta a problemi di sicurezza). + +Touch screen +~~~~~~~~~~~~~~~ + +Schermi sensibili al tocco, come su palmari, cellulari IPhone o i *tablet PC*. Le caratteristiche sono analoghe a una interfaccia grafica, cambia solo il sistema di puntamento (non avete un mouse o un touch pad ma si tocca direttamente lo schermo con una penna o le dita). + + +Caratteristiche di un Sistema Operativo +======================================== + +Alcune delle caratteristiche dei sistemi operativi ci aiuteranno a capire la funzione prevalente di questo in rapporto con gli altri programmi in esecuzione sul computer. + + +Multitasking +------------- + Capacita' di un OS di eseguire piu' programmi contemporaneamente. + +Un personal computer generalmente ha in esecuzione centinaia di singoli programmi (o per la precisione: *processi*), oltre a quelli direttamente lanciati dall'utente ce ne saranno altri dedicati alla gestione dell'hardware o al mantenimento del sistema operativo. + +Una cellulare (si pensi ai vecchi modelli) o una piccola calcolatrice invece possono eseguire solo un compito (task) alla volta. + +Tipicamente risiede nel kernel_ la capacita' del sistema di poter eseguire con stabilita' piu' processi, utilizzando uno scheduler_. + +.. _scheduler: http://it.wikipedia.org/wiki/Sistema_operativo#Scheduler + +Multiutenza +-------------- + I sistemi multiutenti possono avere piu' utenti attivi contemporaneamente (ma anche uno alla volta a seconda della disponibilita' di input). + +Il sistema e' comunque in grado di distinguere tra gli utenti: ad es. mia sorella non ha la possibilita' di eliminare le MIE foto, e viceversa. La multiutenza sotto il profilo tecnico si appoggia su un software di autenticazione / log-in per distinguere gli utenti, oltre a funzionalita' delegate al file system per limitare accessi ed esecuzione dei file ai diversi utenti di sistema. Ad esempio il filesystem FAT32_ dei vecchi sistemi Windows (e usato sulla maggior parte delle chiavette USB e memory card varie) non permette la gestione delle propieta' dei files. + +.. _FAT32: http://it.wikipedia.org/wiki/FAT32#FAT32 + +La presenza di piu' utenti in genere prevede una gerarchia tra questi (ad esempio *user, power user, administrator* sotto sistemi Windows o l'utente *root* per sistemi Unix). In genere si ha un solo utente abilitato alle modifiche delle funzionalita' del sistema (l'amministratore, che puo' abilitare le periferiche o installare nuovo software nel sistema) e semplici *utenti di sistema* (``system users``) che possono solo usufruire dei programmi messi a loro disposizione. Questa soluzione, oltre che a garantire la presenza di un account in grado di rimediare in caso di emergenza a eventuali errori fatti da altri, permette di avere un ambiente di lavoro piu' sicuro dato che una volta loggati come utenti di sistema non si ha la possibilita' di causare danni gravi all'intero sistema per una semplice distrazione. *Mai lavorare come amministratori quando non e' assolutamente necessario.* + + +Sistema operativo +================== + +Possiamo ora cercare di dare una definizione di sistema operativo: + Il Sistema Operativo (OS: Operative System) e' quell'insieme di software che servono per far funzionare il sistema *in generale* piu' che svolgere un compito particolare come modificare un file o visualizzare un video. E' l'*ambiente* in cui potranno convivere ed essere utilizzati tutti i software applicativi usati dall'utente. + +Sara' il sistema operativo a identificare gli utenti al momento di cominciare una sessione di lavoro, e garantisce gli accessi ai files in base a queste credenziali (e alle caratteristiche del file system, cosa che approfondiremo successivamente). + +L'OS si pone poi come tramite tra i singoli applicativi e le risorse di sistema. Ad esempio se sono disponibili diversi programmi in grado di produrre stampe e una stampante, sara' il sistema operativo a gestire le code di stampa in modo che non si intralcino (a dire il vero l'esempio potrebbe non essere tecnicamente esatto. Ma rende l'idea.) I singoli programmi non utilizzeranno direttamente la stampante, ma semplicemente si *interfacceranno* all'OS al momento della stampa. + +Quando installiamo un nuovo editor di testo non ci preoccupiamo di fornirgli un *driver* per la stampa. Sappiamo che questo e' gia' disponibile al sistema operativo, e i singoli applicativi si appoggeranno a questo. Questo "*layer di astrazione*" sull'utilizzo delle periferiche (al quale partecipa anche il kernel) semplifica di molto la realizzazione e l'installazione dei singoli software, garantendo maggiore stabilita' all'intero *sistema*. + +In modo simile tutti gli applicativi che utilizziamo si *appoggiano* sul sistema operativo, tanto che siamo abituati ad avere *versioni diverse* degli stessi software rilasciate per i *diversi sistemi* (c'e' una versione di Openoffice.org per sistemi Microsoft, Gnu\Linux, Apple e cosi' via). Ovviamente la versione per il sistema ``X`` non funzionerebbe sul sistema ``Y``. + + +I sistemi operativi, come del resto i singoli applicativi, sono rilasciati (quando possibile) in versioni a 32 o 64 bit, oppure per architetture diverse (x86, PPC, Arm, RISC...). In genere si indica la possibilita' di un OS di *girare* su architetture hardware diverse col termine *portabilita'*. Una maggiore portabilita', oltre che per l'intrinseco vantaggio, e' spesso indice di maggiore stabilita' in quanto il test del sistema in ambienti diversi permette di evidenziare *bug* difficilmente riscontrabili altrimenti. + + +I vari Sistemi Operativi +========================== + +Per ulteriori informazioni sulle caratteristiche di alcuni dei sistemi operativi attualemnte in uso si seguano i seguenti link: + +MS Windows +----------- + + * http://it.wikipedia.org/wiki/Windows + +Unix +----- + +http://it.wikipedia.org/wiki/Unix + +Gnu/Linux +---------- + + * http://it.wikipedia.org/wiki/Gnu/Linux + +BSD +------ + + * http://it.wikipedia.org/wiki/Berkeley_Software_Distribution + + * http://it.wikipedia.org/wiki/FreeBSD + + * http://it.wikipedia.org/wiki/Openbsd + +Apple Mac OS +-------------- + + * http://it.wikipedia.org/wiki/Mac_OS + + * http://it.wikipedia.org/wiki/Mac_OS_X + + +Kernel +======== + + In informatica, il **kernel** Costituisce il nucleo di un sistema operativo. Si tratta di un software avente il compito di fornire ai processi in esecuzione sull'elaboratore un accesso sicuro e controllato all'hardware. Dato che possono esserne eseguiti simultaneamente più di uno, il kernel ha anche la responsabilita'à di assegnare una porzione di tempo-macchina e di accesso all'hardware a ciascun programma (multitasking). + +Tra tutti i processi in esecuzione su un computer uno ha un'importanza speciale: il kernel. + +Il kernel ha il compito di far funzionare l'hardware (tastiera, monitor, RAM, CPU) e di attribuire le risorse di sistema agli altri processi, ne consegue che un malfunzionamento nel kernel (*kernel panic*) puo' compromettere qualunque altro processo in esecuzione. Considerando che il kernel gestisce anche le periferiche di input / output, nel caso di blocco del kernel l'intera macchina potrebbe diventare irraggiungibile. In questo caso l'unita soluzione sarebbe un *rese* hardware della scheda madre, con conseguente perdita di tutti i dati in 3 e possibile corruzione dei filesystem. + +Il kernel gestisce l'attribuzione della memoria RAM tra i vari processi in esecuzione: tramite la protezione della memoria_ si evita che un applicativo andato fuori controllo possa trasbordare nello spazio RAM di un altro, compromettendo anche questo e magari l'intero sistema. La protezione della memoria e' una funzione necessaria per garantire l'efficenza del multitasking. + +.. _memoria: http://it.wikipedia.org/wiki/Memoria_protetta + +Debian utilizza un Kernel Linux. Windows attualmente usa un kernel di derivazione NT. Mac OSX utilizza un kernel "Darwin" su un sistema operativo derivato da BSD (Unix). +Il sistema operativo e' composto da una serie di processi che girano sopra il kernel. I software applicativi a loro volta girano sul sistema operativo. + +Il kernel e' sostituibile e aggiornabile rispetto al sistema operativo. + +==================== ===================== +Gnu/Linux OS +Linux kernel +Microsoft Windows XP OS +NT kernel di MS Windows XP +==================== ===================== + +Le distribuzioni +================== + +Differenze principali tra le varie distribuzioni: + + * utility di installazione + + * gestione dei pacchetti: es dpkg e RPM (portage e altri) + + * numero e qualita' dei pacchetti + + * licenze + + * target di utilizzo + + * tempi di rilascio + + * http://it.wikipedia.org/wiki/Distribuzione_Linux + + * http://it.wikipedia.org/wiki/Categoria:Distribuzioni_Linux + +Memoria virtuale +=================== + +O memoria di swap. +Si utilizza quando il sistema esaurisce la RAM fisicamente disponibile. +Si utilizza un altro supporto di storaggio per sopperire alla mancanza di RAM. +Tipicamente viene usato l'hard disk, che e' piu' lento della RAM. + +Con il termine swap si intende, in informatica, l'estensione della capacita'à della memoria volatile complessiva del computer, oltre il limite imposto dalla quantita'à di RAM installata, attraverso l'utilizzo di uno spazio su un altro supporto fisico, ad esempio il disco fisso. + +A seconda del sistema operativo utilizzato è possibile avere file di swap (chiamato anche 'Memoria virtuale'), residenti nel normale file system del sistema, oppure partizioni di swap, cioe'è sezioni di disco integralmente dedicate allo swap ed inizializzate con un proprio specifico tipo di file system. L'uso della partizione è generalmente migliore dal punto vista delle prestazioni, perché evita che lo swap vada soggetto alla tipica di alcuni file system. Per contro, occupa una delle (poche) partizioni disponibili sul disco fisso. + +In pratica, quando la memoria RAM libera non è più sufficiente per contenere tutte le informazioni che servono ai programmi, il sistema operativo si fa carico di spostare una certa quantita'à di dati (quelli meno recentemente utilizzati) dalla memoria volatile a quella di massa, liberando quindi una parte della RAM per permettere il corretto funzionamento dei programmi. È chiaro che nel momento in cui si rende necessaria tale operazione, le prestazioni del sistema crollano bruscamente, essendo la scrittura su hard disk molto più lenta di quella in RAM (oltre cento volte, al 2006). + +Swap space per Linux +---------------------- + +Sui sistemi basati sul kernel di Linux viene creata una partizione con un file-system dedicato per la memoria virtuale: una o piu' cosidette *partizioni di swap*. + +Per le normali work-station si segue la regola di creare una partizione di swap pari al doppio della memoria RAM, ma non superiore a ``512MB`` (questo per via della buona ottimizzazione del gestore della memoria di Linux: raramente nell'uso normale si arriva ad aver bisogno di piu' di ``512MB`` di swap. + +Caso particolare sono i portatili: vista la lentezza degli Hard Disk dei portatili e il maggior consumo elettrico causato dall'utilizzo di questi supporti per lo swap si tende ad avere un po' piu' di RAM (``512MB - 1GB``) ed evitare completamente lo spazio di swap. Ma attenzione: se si vuole utilizzare il *Suspend to disk* (S4_) servira' una partizione di swap pari a circa il doppio della RAM. + +.. _S4: http://www.e-moka.net/2005/06/20/suspend-to-ramdisk-con-linux/ + + +Devices a blocchi +================== + +I device a blocchi sono suddividisibili in blocchi (unita) ed e' possibile scrivere e/o leggere su questi (input/output) Ad esempio gli hard disk o i supporti di storaggio in generale sono visti dal kernel come block device. Tipicamente per poterli utilizzare al fine dello storaggio dati sara' necessario creare un filesystem su di essi. + +Devices a caratteri (seriali) +=============================== + +I device seriali sono continui, e non prevedono il "ritorno" (si pensi a una stampante, o all'output delle casse, a un terminale seriale) [#]_. + + +.. [#] Questa definizione di device a *caratteri* non e' esatta, ma allo stato attuale delle nostre conoscenze e necessita' risulta piu' utile caratterizzare i due tipi di device dal punto di vista funzionale. Una definizione piu' *tecnica* di questo particolare tipo di device dovrebbe citare il fatto che questi in genere non supportano buffers_ e non permettono di accedere ai dati in modalita' random_access_. Oltre al fatto che trattano singoli caratteri per volta invece che per *blocchi* di dati. + +.. _buffers: http://it.wikipedia.org/wiki/Buffer_(informatica) + +.. _random_access: http://en.wikipedia.org/wiki/Random_access + + +Dati +====== + +Dato +-------- + +Il termine dati e' fondamentale nell'informatica, essendo i dati l'oggetto e il risultato di tutto il nostro lavoro. + +Potremmo definire un dato come un'informazione elementare, significativa ed autonoma. + +Si prenda ad esempio un sistema realizzato per gestire elettronicamente la contabilita': il guadagno del mese di Gennaio 2009 potrebbe essere ``1200``. Oppure l'indirizzo di un contatto ``Via Mazzini 8``. + +Questi *valori* possono essere l'oggetto di elaborazioni, o il risultato di procedure che hanno manipolato altri dati. + +Metadato +---------- + +I metadati sono informazioni che qualificano i dati. Essi non hanno un'esistenza e un valore autonomo, sono funzionali ai dati che descrivono e senza di essi non avrebbero valore. + +Tornando al precedente esempio del software per la contabilita', ``Gennaio 2009`` potrebbe essere un metadato, in quanto la sua funzione e' di descrivere il periodo a cui fa riferimento il dato ``1200``. Senza quest'ultimo non ci interesserebbe sprecare risorse di storaggio per conservare ``Gennaio 2009``. + +======== =============== +Dato Metadato +======== =============== +1200 Gennaio 2009 +======== =============== + +Spesso i metadati vengono utilizzati per stabilire le relazioni tra i vari dati, in modo da poterli caratterizzare e distinguere tra loro. Si pensi a un supporto di storaggio in cui vengano mantenuti terabytes di dati: senza la possibilita' di distinguerli l'uno dagli altri diventerebbero inutili (o meglio inutilizzabili), maggiore e' il numero dei dati tanto piu' si avverte la necessita' di caratterizzarli in modo da poterli *gestire* piu' facilmente e *incrociarli* tra loro in modo da ottenere le informazioni che veramente ci interessano. + +Si tenga conto che buona parte dell'informatica consiste nello storaggio di *enormi* quantitativi di dati (che bisognera' essere in grado di distinguere e recuperare), e la funzione fondamentale degli elaboratori e' la capacita' di confrontare rapidamente questi dati tra loro. Quindi con l'aumentare del numero dei dati i metadati diventano sempre piu' importanti e *significativi*. Si pensi alla natura dei database_. + +.. _database: http://it.wikipedia.org/wiki/Database + +I filesystem +=============== + +File +------- + +Un file e' un insieme di dati con un inizio e una fine identificabile in mezzo ad altri. + +Quindi avremo: + * un identificatore, come un ``nome_file`` accoppiato al suo *percorso* sul file system (possono esserci molti file con lo stesso nome ma non possono esserci due file on lo stesso nome nella stessa cartella). + + * Un qualche *sistema* per recuperare quel file in mezzo ad altri. Ad esempio potremmo pensare, in un sistema molto rudimentale, a una coppia di coordinate che ci permettano di identificare il punto di inizio e il termine su un block device. + +====================== ========== ============ + Filestem elementare +---------------------------------------------- +Identificatore inizio fine +====================== ========== ============ +pippo 12 21 +====================== ========== ============ + + +Filesystem +------------ + +Il file system e' una struttura logica che ci permette di individuare i diversi file. Sostanzialmente e' un'insieme di metadati che caratterizzano i singoli file piu' quanto necessario per poterli gestire. + +Alcuni esempi: e' il filesytem a poter caratterizzare i file con propietari, gruppi, permessi (lettura, scrittura, esecuzione), data di creazione e cosi' via. Alcuni filesytem permettono certe funzionalita', altri (sopratutto quelli piu' datati) sono piu' *rudimentali*. + +Tipicamente i filesystem sono strutturati secondo un modello gerarchico basato su *files e cartelle*: quindi per poter identificare un file ci serve il suo *nome proprio* piu' il suo *percorso* nella struttura del filesystem. Il progressivo aumento del numero dei files sta cominciando a far sentire i limiti di questo modello. + +Con l'aumentare delle informazioni tendono ad essere piu' efficaci modelli relazionali, che permettono di interagire coi file in modo simile a un database. Ad esempio pensiamo alle librerie che contengono centinaia di migliaia di brani musicali MP3, oppure migliaia di fotografie: cercare di gestirli tramite nome del file e cartelle diventa poco pratico. Meglio raggrupparli per autore, data, album o quant'altro si adatti alla loro natura e al loro utilizzo. + + + +Tabella di allocazione files + +non solo su device fisici: esempio NFS + +File system distribuito: citati il NBD e ATA over ethernet + + +Gestione dei Pacchetti +======================== + +Un Sistema di gestione dei pacchetti e' una collezione di strumenti che automatizzano il processo di installazione, aggiornamento, configurazione e rimozione dei pacchetti software di un computer. + +Tali strumenti sono diffusi tipicamenti sui sistemi basati su software libero, in quanto i gestori della distribuzione (cosidetti *mantainers*) avendo accesso al codice sorgente del software hanno la possibilita' di prepararne una versione ottimizzata e adattata all'infrastruttura del sistema operativo (si pensi a librerie condivise, API, standard per la collocazione dei files di importanza particolare). + +Cerchiamo di capire meglio il processo: L'autore / sviluppatore di un software (ad esempio un browser web come Mozilla Firefox) rilascia il suo lavoro con una licenza libera, che prevede la possibilita' di ottenere il codice sorgente, modificarlo e redistribuirlo. A questo punto un **mantainer** della distribuzione, che non deve per forza essere l'autore del software originale, scarica il sorgente, lo modifica in modo che si integri con gli altri software del sistema operativo, preoccupandosi che i file di configurazione, temporanei, ecc. vengano collocati sul file-system in modo analogo agli altri software del sistema operativo, in modo da ottenere un sistema il piu' possibile omogeneo e *strutturato*. Il mantainer quindi non introduce nuove funzionalita' nel software (per lo meno non nella distribuzione di cui si occupa, nel caso provvederebbe a fornire le modifiche all'autore in modo che sia lui stesse ad integrarle nella versione *ufficiale*, cosi' che poi anche chi non usa quella determinata distribuzione possa avantaggiarsene): si limita ad *adattarlo* perche possa ben funzionare nella distribuzione. + +Quindi possiamo dire che un software come ad es. Apache o Firefox sono funzionalmente identici in ogni distribuzione, cambia solo il loro livello di integrazione nel sistema operativo. Come gia' detto le distribuzioni si caratterizzano per la *qualita'* di questa integrazione, il numero di pacchetti che riescono a gestire, l'efficacia dei software di installazione / aggiornamento / rimozione. + +Non ultima per importanza: l'attenzione alle problematiche legate alla sicurezza. Infatti e' bene tener presente che sara' il mantainer a dover provvedere tempestivamente all'aggiornamento del pacchetto in caso di problemi di sicurezza, dato che l'utente finale non interagisce direttamente con l'autore del software. Il che puo' porre il seguente problema: quando l'autore rileva un problema tende spesso a risolverlo con una versione aggiornata del software (quindi si passa ad es dalla versione 1.0 alla 1.1 , e gia' che si rilascia magari si coglie l'occasione per introdurre nuove funzionalita'). Ma una distribuzione per essere definita *stabile* **deve** rimanere costante, altrimenti diventa impossibile controllare possibili conflitti tra i diversi software. In questo caso, le i mantainers delle distribuzioni dedicate al *lato server* o comunque con particolare vocazione alla sicurezza, si attivano per *portare* loro stessi i soli aggiornamente della sicurezza alla versione precedente del software in modo che eventuali nuove funzionalita' non possano rischiare di compromettere l'interazione del software con altri presenti sul sistema. + +Distribuzioni come *Debian* lavorano in questo modo, altre preferiscono un approccio piu' *rilassato*: tipicamente perche mettono a disposizione dell'utente software aggiornato piu' frequentemente, atteggiamento molto gradito sulle *work station* degli utenti che possono cosi' avvantaggiarsi piu' rapidamente di nuove funzionalita'. Se il software viene aggiornato *molto rapidamente* l'utente fianale non puo' aspettarsi che l'integrazione tra i vari pacchetti sia stata testata per lunghi periodi! + +Cio' non toglie che gli utenti di Debian possano decidere di utilizzare le release *Sid/unstable* o *testing* che vengono aggiornate quotidianamente. Ma sulle macchine che devono restare stabili senza creare problemi quotidianamente si puo' contare sulla versione *stable*, che garantisce due o tre anni di *ragionevole quiete senza sorprese*. Dal momento in cui si raggiunge la stabilita' del sistema con le funzionalita' richieste, in ambiente *aziendale* non si avverte la necessita' di avere sempre a disposizione l'ultima release disponibile di un software col rischio che si possano verificare problemi. Un software appena rilasciato non puo' vantare stabilita': questa infatti non e' un concetto *assoluto*: la stabilita' si ottiene facendo girare sempre la stessa versione del software sul piu' ampio bacino di utenza in modo da poter individuare e risolvere gli eventuali problemi che mano a mano si individuano. La stabilita', per quanto riguarda il software *consumer*, e' relativa (allo stesso modo la *sicurezza* non e' uno *status* ma piuttosto un *processo*: i problemi si possono sempre verificare, tutto sta nella capacita' e tempi di reazione per risolverli con aggiornamenti). + +Ci sono 3 principali gestori di pacchetti in generale: + + +========= ================ =========== +Gestori di pacchetti +--------------------------------------- +Nome Distro estensione +========= ================ =========== +DPKG_ Debian .deb +RPM_ Red Hat .rpm +Portage_ Unix --- +========= ================ =========== + +.. _DPKG: http://it.wikipedia.org/wiki/Dpkg +.. _RPM: http://it.wikipedia.org/wiki/RPM_Package_Manager +.. _Portage: http://it.wikipedia.org/wiki/Portage + +Lo stesso software viene pacchettizzato in *formati* diversi (deb,rpm,...) + +In alternativa c'e' generalmente una versione binaria generica del software, che viene distribuita con un archivio (targz ). Questo non usufruisce delle agevolazioni e integrazioni offerte dal gestore dei pacchetti della distro. + +In alternativa per tutto il software libero e' sempre disponibile il codice sorgente da compilare in un binario eseguibile. Permette l'ottimizzazione e la customizzazione del software. Portage si basa su questo sistema: si scaricano i sorgenti modificati e poi si compilano. Si faccia attenzione all'ottimizzazione: dipende da chi la fa... + + +Per la gestione dei pacchetti su distribuzioni Debian o derivate (quindi anche Ubuntu) si legga: l'Apt Howto = http://www.debian.org/doc/manuals/apt-howto/index.it.html + + +DPKG + Il gestore dei pacchetti. Il software che si occupa dell'istallazione, rimozione e risoluzione dei conflitti e dipendenze. Apt e' il *front-end* di DPKG. + +Elementi: +============ + +Dipendenze +------------ +Talvolta un pacchetto per poter funzionare necessita di un altro pacchetto. Si deve quindi installare anche l'altro oltre a quello richiesto. + +Il software di installazione si preoccupa quindi dell'ordine in cui installare i vari pacchetti (dato che il pacchetto dovrebbe essere un'entita' indipendente / modulare rispetto agli altri pacchetti) e la configurazione di tutti e del sistema. +Per i pacchetti rimossi vengono tolte anche le dipendenze quando queste non compromettano altri software, in caso di incomprensioni si puo' usare il comando ``apt-get autoremove`` (su sistemi dotati di DPKG). + +Si tenga presente che Debian, di default, quando rimuove un pacchetto non elimina i file di configurazione dello stesso, nel caso si deve usare l'opzione ``--purge``. In questo modo se l'utente rimuove un particolare software per provare un alternativa o liberare dello spazio temporaneamente, al momento opportuno re-installando lo stesso software questi si comportera' esattamente come quando era presente sul sistema. E' doverso far notare che in caso di problemi di configurazione di un programma l'idea di rimuoverlo per poi re-installarlo sia poco seria: i problemi vanno tracciati e risolti, non evitati. In caso contrario ripeteranno. Piuttosto si faccia sempre un una copia di *back-up* del file di configurazione **prima** di cominciare a modificarlo, in modo che in caso non si riesca ad arrivare ad arrivare nei tempi richiesti ad una nuova configurazione funzionale si possa per lo meno tornare alla precedente. + +Stessa cosa per la rimozione per dpkg, ma Portage non permette la rimozione di software. + +Conflitti +----------- + +Alcuni software non possono essere presenti sul sistema contemporaneamente ad altri. Si pensi a un server di posta (o a qualunque servizio che ascolta su una porta determinata), o a versioni incompatibili dello *stesso* software. In questo caso il gestore di pacchetti avvertira' l'utente che al momento dell'installazione del software richiesto verranno rimossi i pacchetti in conflitto. + + +