Home > GNU/Linux, newbie > Guida per principianti a GNU/Linux: Come è fatto un computer

Guida per principianti a GNU/Linux: Come è fatto un computer

Ho un processore Pentium 4

La RAM del mio computer è di 4 Giga

Ma Linux gestisce i dual-core?

Spesso si leggono o sentono frasi del genere ma, non sempre, si comprende a fondo cosa significano. Cosa fa, esattamente, il processore e a cosa serve? Perché avere più memoria migliora le prestazioni del computer (non sempre…). Perché un dual-core è più veloce di un single-core? Cosa significa che devo attivare il DMA per fare andare più veloce il masterizzatore?

Non rispenderò subito a tutte queste domande (lo farò più avanti) ma spiegherò almeno le basi della cosiddetta “architettura degli elaboratori”, o detto più prosaicamente, “come è fatto un computer”.

Intanto un bel disegnino:

Modello di Von Neumann

Schema di un computer

Questo disegno illustra schematicamente come è fatto un qualsiasi elaboratore elettronico. Un Commodore 64 o un moderno Pc seguono, più o meno, questo schema, anche se l’evoluzione tecnologica ha portato nel tempo ad alcuni miglioramenti e ottimizzazioni che però in questo momento non ci interessano.

Invece di illustrare pezzo per pezzo lo schema, come di solito si fa nei libri, ho scelto un approccio più pratico a partire da questa domanda:

Cosa succede quando faccio click sull’icona di OpenOffice e il programma parte?

“Fare click” vuol dire usare il mouse. In questo schema il mouse è una periferica di Input (ingresso). Non si sono mai visti mouse che visualizzano qualcosa, ma sono sicuro che la Logitech li farà (se non li ha già fatti). Se invece del mouse usassi un touchscreen allora sarei di fronte ad una periferica di Input/Output (ingresso e uscita) in quanto capace sia di ricevere dati (la pressione del mio dito) che di darmeli (le immagini a schermo).

Il comando che ho dato attraverso il mouse arriva al processore. Nello schema è indicato con il nome CPU che sta per Central Processing Unit ovvero “unità centrale di elaborazione”. Quando sentiamo dire 386, 486, Pentium o Athlon stiamo parlando di processori.

Il processore, quindi, sarà istruito a “caricare” OpenOffice (vedremo nei prossimi post che è il sistema operativo a spiegarglielo). Andrà quindi a cercare il programma nella memoria di massa ovvero, nel caso più comune, nell’hard disk. Ma il processore non può eseguire il programma direttamente dall’hard disk. L’hard disk è troppo lento. Allora il processore caricherà il programma nella memoria principale cioè in quella che, comunemente, viene indicata come RAM ovvero Random Access Memory: “memoria ad accesso casuale”.

Dopo aver caricato il nostro OpenOffice nella RAM, il processore inizierà ad eseguire il programma. Poiché parliamo di un programma interattivo (cioè che interagisce con l’utente) esso si servirà della tastiera (dispositivo di input), del mouse (dispositivo di input), dello schermo (dispositivo di output) per “parlare” con noi utenti.

Scriviamo la nostra lettera con OpenOffice. Dove sta ciò che scriviamo? Ancora una volta il processore utilizzerà la RAM per memorizzare ciò che stiamo digitando. Bene, adesso spegniamo il computer e andiamo a farci una passeggiata…

Ehi, ma devo salvare la lettera!

Già, devi salvarla. Perché se spegni il computer e te ne vai a fare un giro perderai ore di lavoro e tutta l’ispirazione che ti era venuta in quel momento. Ma perché?

La RAM è composta di circuiti elettronici che, per mantenere i propri dati, devono essere alimentati dalla corrente elettrica. Ma dover ricominciare da capo ogni volta la nostra lettera, non poterla “salvare” per poi rivederla prima di stamparla (a proposito: la stampante è un dispositivo di output) sarebbe molto stressante. I computer, così, sarebbero poco utili. Ma cosa potremmo usare per “salvare” la nostra lettera? Be’, perché non usare di nuovo la memoria di massa, cioé l’hard disk? Clickiamo sull’apposita icona di salvataggio di OpenOffice, scegliamo un nome per la nostra lettera. Il processore prenderà i dati dalla RAM e lì trasferirà sull’hard disk, così che noi possiamo stare tranquilli.

Ecco come funziona un computer, tralasciando ovviamente i dettagli più fini.

  • Una piccola nota: la memoria principale, in realtà, è composta non solo dalla RAM, ma anche dalla ROM (Read Only Memory: memoria a sola lettura). Nella ROM trova posto un software il famoso BIOS (Basic Input/Output System) che contiene alcune funzioni basilari. Ad esempio è necessario modificare una opzione del BIOS per fare in modo che il computer si avvii dal lettore CD-ROM invece che dall’hard disk, così che se nel CD-ROM abbiamo una bella distribuzione GNU/Linux possiamo installarla.

Ed ora, qualche domanda.

Tutti i computer con qualsiasi sistema operativo funzionano così?

Più o meno sì. Ci sono alcuni dettagli che possono cambiare: ad esempio possono esserci più CPU,  la presenza del DMA (Direct Access Memory), l’uso della memoria virtuale, tecnologie che migliorano le prestazioni. Ma di questo parlerò più avanti, poiché tali tecnologie sono sorte per sfruttare meglio il multitasking dei sistemi operativi.

Quelle frecce azzurre nel disegno cosa sono?

E’ il canale attraverso il quale la CPU comunica con il resto del computer (comprese le periferiche esterne). Ha un nome specifico: bus. USB,  SCSI, PCI sono esempi di bus.

Cosa vuol dire che un processore è a 64 bit?

Vuol dire due cose: la prima è che le sue memorie interne (chiamate registri) sono a 64 bit, possono cioè contenere numeri da 0 a 2^64 -1 =18.446.744.073.709.551.616 (un ben numero no?) e che il suo bus è a 64 bit, cioè trasferisce in una “sola passata” (più correttamente, in un solo ciclo di clock) il doppio dei dati di un processore a 32 bit. Non solo: un processore a 32 bit può individuare 2^32 byte = 4 Giga Byte di memoria. Vivecersa uno a 64 bit può arrivare alla spaventosa cifra di 17.179.869.184 di Giga Byte.

Ehm… ma cosa sono bit, byte, giga byte?

E’ un argomento noioso che richiede una lunga spiegazione di matematica. In sintesi, il bit è una cifra binaria, invece di andare da 0 a 9 come le cifre “normali”, può essere solo 0 oppure 1. Un byte è un insieme di 8 bit, puoi rappresentare così numeri da 0 a 255 (255=2^8 -1).  Sui multipli del byte c’è una leggera confusione. Tradizionalmente si dice che un kilobyte è 1024 byte, un megabyte è 1024 kilobyte e un gigabyte è 1024 megabyte. Ma questo faceva confusione con i prefissi kilo-, mega- e giga- delle misure fisiche (kilometro, kilogrammo, ecc.) che vanno di 1000 in 1000. Così adesso si distringue tra Gibibyte e Gigabyte, ma sto andando già troppo nel particolare e mi sa che così ti confondo🙂

E cosa sarebbe invece questo ciclo di clock?

Penso che hai sentito dire qualcosa come: “pentium 4 a 3 GHz” (gigahertz). Come il nostro cuore pulsa, anche i processori hanno dei battiti. Ad ogni battito corrisponde una operazione fondamentale del processore. Più battiti ci sono in un secondo, più operazioni fondamentali riesce a compiere il processore. I battiti vengono scanditi da un orologio (clock) che può essere costituito da un cristallo di quarzo, proprio come negli orologi che teniamo al polso. Tieni conto però che questo non significa che un processore a 3 GHz sia per forza più veloce di uno a 2 GHz. Difatti processori diversi possono eseguire le loro operazioni con meno cicli di clock. Ad esempio per fare la somma di due numeri, uno più metterci 4 cicli di clock mentre un altro solo 2. In tal caso anche se la frequenza del clock è minore, il processore sarà più veloce.

Cosa vuol dire che la RAM è ad “accesso casuale”? Nel senso di “ndo’ cojo, cojo”?

Ehm.. chiaramente no🙂 La parola “casuale” non significa che il processore vi accede “a caso” ma che può leggerla a partire da qualsiasi “celletta” al suo interno. Una volta i computer usavano i nastri magnetici come memorie di massa e per leggere una “celletta” del nastro magnetico serve scorrere tutte le “cellette” precedenti. Da qui la contrapposizione tra il nastro (ad accesso sequenziale) e la RAM (ad accesso casuale). Gli hard disk di oggi sono anch’essi ad accesso casuale (più o meno) ma in ricordo dei vecchi tempi il nome RAM è stato mantenuto.

Avrei un sacco di altre domande…

Scrivile nei commenti, le aggiungerò.

  1. 15 luglio 2008 alle 21:57

    Ciao solo ora ho conosciuto il tuo blog e mi sono messo a studiare, anzi grazie per il modo di spiegare, una cosa non mi è chiara:
    se un processore a 3 Ghz non per forza è più veloce di uno a 2 Ghz, allora come riconosco quale è più veloce?

    ciao

  2. guiodic
    15 luglio 2008 alle 22:22

    Il blog l’ho aperto da poco quindi non ti sei perso nulla🙂 E grazie per i complimenti.

    Riguardo la domanda, il modo migliore è valutare i test sui siti specializzati, ma con la propria testa.
    Tutti gli indici che sono stati creati per misurare la velocità effettiva di un processore (come MIPS e MOPS) lasciano un po’ il tempo che trovano e non permettono di confrontare le prestazioni di processori diversi tra loro dal punto di vista architetturale. L’unico modo è sperimentare, facendo fare al processore alcuni test e valutare così l’effettiva capacità di calcolo. Ed anche questa è una misura indicativa che può essere influenzata facilmente dal sistema operativo o da altri programmi che girano insieme al test.

  3. 16 luglio 2008 alle 22:50

    Bravissimo, ottima spiegazione…oserei dire a prova di idiota😀
    Ti ho aggiunto nel mio blogroll…prometti bene ^_^

  4. guiodic
    16 luglio 2008 alle 22:57

    E io al mio…
    Ciao.

  5. Scacchia
    17 luglio 2008 alle 13:48

    Ottimo articolo. La storia dei Gibibyte non la sapevo… ora mi documento.

    Ah, voglio anche io 2 banchi di memoria NCCAM (‘ndo cojo cojo access memory)😀

  6. 17 luglio 2008 alle 19:47

    Ciao.. Davvero un lavoro stupendo! Complimenti! Il modo che hai di spiegare il tutto è davvero originale e diretto.. Difficile non capire.. Se non ti dispiace ho aggiunto il link del tuo BLOG nel mio space per farti un pò di pubblicità..🙂 Spero ti servi a qualcosa e che altri apprezzino il tuo lavoro!

  7. guiodic
    17 luglio 2008 alle 20:19

    Grazie Liberato, faccio lo stesso con te, anche se ho un’idiosincrasia per msn lives🙂

  8. sid9477
    31 luglio 2008 alle 22:24

    grande guiodic! mi hai chiarito alcune cose e che non sono un niubbo… comunque hai un ottimo modo di spiegare… mai pensato di fare il professore?🙂

    P.s: ti rivogliamo nel forum!

  9. guiodic
    31 luglio 2008 alle 22:29

    @sid: sai che è un po’ che ci penso a far domanda per la scuola?

  10. sid9477
    31 luglio 2008 alle 22:40

    vengo a scuola a roma apposta per avere te come prof…🙂

  11. 30 luglio 2009 alle 4:35

    Ciao.
    Non ho capito bene cosa intendi dire quando scrivi che siccome l’HD è lento questi necessita di una RAM per eseguire una task. Perché è lento? In che senso e rispetto a cosa è lento?

    • 30 luglio 2009 alle 4:38

      Ci ho pensato un attimo. Vuoi dire forse che ci mette troppo tempo a scrivere, quindi ad interagire, tra i miei imput e i cluster(non so come si chiamano su GNU/Linux) e quindi, per maggiore espedività si utilizza la memoria RAM che trasmetterà, diciamo così, i dati acquisiti all’HD solo in fase di salvataggio? Ho capito bene?

      • 30 luglio 2009 alle 13:58

        Be’ in realtà le cose sono più complicate. Non è solo una questione di velocità, ma proprio di architettura degli elaboratori. Il processore è capace di eseguire programmi e manipolare dati direttamente solo dalla RAM, non dalla memoria di massa, anche nel caso di pagine swappate sull’hard disk queste vengono richiamate in RAM quando servono, con un meccanismo abbastanza trasparente ma comunque non esiste proprio la possibilità di eseguire un programma direttamente dalla memoria di massa.

  12. fuser
    1 agosto 2009 alle 11:04

    Scusi guidoc riguardo all’ultima risposta volevo chiedere come è stato possibile quindi creare delle penne USB trasformandole in “Hard disk” dove installare programmi e tutto e poi senza installare niente attaccarle al pc e far partire le applicazioni come se fossero nel nostro pc ma nn avendole installate.

    Grazie

    • 1 agosto 2009 alle 15:46

      Che c’è di strano? le penne usb sono sempre viste come hard disk.

      • 1 agosto 2009 alle 19:12

        Grazie per le tue risposte.
        Quindi qualsiasi operazione passa per la RAM e se swappa, se abbiamo creato una parte in una partizione dedicata allo SWAP, scrive sul disco rigido. Ma, in questo ultimo caso, non si ha comunque un rallentamento del sistema e quindi della velocità di esecuzione delle tasks che stiamo utilizzando? Voglio dire: se una persona nota che il suo computer, a causa dell’uso che ne fa, va continuamente a scrivere sulla swap, non gli converrebbe a quel punto comprare della RAM da aggiungere fisicamente?

        Poi volevo chiederti, se hai tempo di rispondermi: la swap è semplicemente uno spazio vuoto di cluster che tramite una certa nomencaltura che noi diamo viene riconosciuta come tale. Può essere in comune e per win e per linux se uno ha in dual boot entrambi gli OS oppure ci vuole una swap per uno e un’altra per l’altro?

        • 1 agosto 2009 alle 19:28

          e se uno avesse più partizioni con più OS, mettiamo con Ubuntu 9.04, LinuxMint, Debian Lenny, Kubuntu 9.04, la swap vale per tutti o bisogna crearne una specifica per ogni OS?

          • 1 agosto 2009 alle 20:10

            può essere condivisa.

        • 1 agosto 2009 alle 20:09

          Mi pare esista un modo un po’ aarzigogolato per condividere lo swapfile di Windows con Linux ma non ho mai approfondito, può farsi che ricordo pure male.

          Quanto alla rpima domanda, la risposta è sì.

          • 2 agosto 2009 alle 17:45

            Grazie.

  13. manuel
    31 agosto 2010 alle 17:28

    Ciao Guido,per prima cosa voglio complimentarmi per l’ottimo lavoro che hai fatto e poi ringraziarti perchè hai permesso a me e a chissà quanti altri di comprendere cosa succede all’interno di un computer.Era da tanto tempo che cercavo qualcosa del genere,mi sono anche fatto prestare un libro universitario che ha esordito con una noiosa trattazione sul sistema binario,sui cambiamenti di base,sui floating point…per poi passare ad un barbosissimo trattato sui sistemi operativi,che mi ha solo confuso le idee.I tuoi scritti riescono in brevissimo tempo a far comprendere l’argomento,ma soprattutto riescono ad appassionare…credimi non è adulazione se ti dico che la tua è una dote non comune!Da qualche settimana frequento il tuo sito e ho letto tutti i post della sezione newbie e adesso li sto rileggendo da capo e volevo farti qualche domanda…hai scritto:
    Cosa succede quando faccio click sull’icona di OpenOffice e il programma parte?
    Il comando che ho dato attraverso il mouse arriva al processore….
    La mia domanda è:il comando dato con il mouse arriva direttamente al processore o c’è comunque la mediazione del sistema operativo?
    Ciao e grazie

    • 1 settembre 2010 alle 0:33

      In realtà dipende da come è fatto il calcolatore. Nei personal computer il mouse manda proprio un segnale al calcolatore (chiamato interrupt), che viene ricevuto dal controller della porta seriale, PS/2 oppure usb e mandato al processore (non direttamente, ci sono altri componenti hardware di mezzo). A quel punto il processore esegue la procedura del kernel associata all’evento (interrupt) che in sostanza va a leggere i dati e li rende disponibili alle altre parti del sistema attraverso un file virtuale (ad esempio /dev/mouse o /dev/input/mouse).
      Nel sistemi pc, di solito tastiera e mouse corrispondono allo stesso interrupt, per cui il kernel dovrà interrogare l’hardware (cioè andrà a leggere in certe particolari indirizzi di memoria che non sono nella RAM ma proprio nel chip di controllo della tastiera e del mouse) per sapere cosa ha generato l’interrupt.
      La tabella degli interrupt è visibile nel file /proc/interrupts

  14. 13 novembre 2014 alle 12:48

    Does your blog have a contact page? I’m having trouble
    locating it but, I’dlike to shokt you aan email. I’ve got some
    ideas for your blog you might be interested in hearing.
    Either way, great blog and I look forwward to seeing it grow over time.

  1. 18 luglio 2008 alle 1:29
  2. 22 luglio 2008 alle 9:33
  3. 17 marzo 2010 alle 7:22

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: