Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Fondamenti Di Informatica PDF
Fondamenti Di Informatica PDF
2. FONDAMENTI DI INFORMATICA
PREMESSE:
Un altro modo per rappresentare la stessa cosa è il seguente (con potenze di 10):
In americano il termine “numero binario” viene espresso con “binary digit” che viene
abbreviato in bit: ogni “0” oppure “1” è chiamato “bit”.
Tutti i nostri dati nel computer (immagini, testo, musica, ecc.) sono rappresentati sotto
forma di sequenze di bit.
0 = 0
1 = 1
2 = 10
3 = 11
1
4 = 100
5 = 101
6 = 110
7 = 111
8 = 1000
9 = 1001
10 = 1010
11 = 1011
12 = 1100
13 = 1101
14 = 1110
… …
Tornando all’esempio del numero 6.357 nel sistema binario sarà rappresentato come
segue:
1100011010101
Nel sistema informatico i bit sono organizzati a gruppi di 8: un gruppo di 8 bit viene
chiamato Byte (quindi 8 bit = 1 Byte).
Con un byte (quindi con 8 bit) posso rappresentare al massimo 256 valori (da 0 a 255)
ovvero:
[ 2^8 = 256 ]
0 = 00000000
1 = 00000001
2 = 00000010
...
254 = 11111110
255 = 11111111
0 = 0000000000000000
1 = 0000000000000001
2 = 0000000000000010
...
2
65534 = 1111111111111110
65535 = 1111111111111111
Quando si comincia a parlare di molti bytes si cominciano ad usare i prefissi del tipo
Kilo, Mega, Giga, ecc.
George Boole, nel 1847, pubblicò un libro, The Mathematical Analysis of Logic in cui
dimostrava che la maggior parte del pensiero logico, privato di particolari irrilevanti e
verbosità, potesse essere concepito come una serie di scelte. Questa idea è poi
divenuta la base della logica utilizzata dal computer e che viene detta appunto
“booleana”.
Dunque, qualsiasi processo logico può essere ricondotto ad una sequenza di eventi
elementari, che nell'insieme prende il nome di algoritmo. Tale sequenza può essere
rappresentata con un diagramma di flusso, Flow chart, il quale a sua volta è facilmente
traducibile in un particolare programma comprensibile dall'elaboratore.
In informatica, possiamo dunque dire che con il termine algoritmo si intende un metodo
per la soluzione di un problema adatto ad essere implementato sotto forma di
programma (software), ovvero come un procedimento che consente di ottenere un
risultato atteso eseguendo, in un determinato ordine, un insieme di passi semplici
corrispondenti ad azioni scelte solitamente da un insieme finito.
3
Questo è un esempio fin troppo esplicito per un essere umano, ma nel caso di un
automa richiederebbe di specificare i passi con una complessità maggiore:
− Algoritmo "vai dal salotto alla cucina", seconda versione più complessa con operatori
logici (False o True, 0 oppure 1):
1) Inizio.
2) Se (IF) sei in piedi procedi al punto 4. In caso contrario (ELSE):
3) Alzati in piedi (chiamata al sotto-algoritmo “Alzarsi in piedi”).
4) Cammina per 4 passi fino alla porta davanti a te (chiamata al sotto-algoritmo
“Camminare”).
5) Se la porta è aperta procedi al punto 7. In caso contrario:
6) Apri la porta (chiamata al sotto-algoritmo “Apri la porta”).
7) Esci dal salotto attraverso la porta, camminando per 2 passi (chiamata al sotto-
algoritmo “Camminare”).
8) Ruota di 90° in senso orario (chiamata al sotto-algoritmo “Rotazione”).
9) Cammina per 9 passi fino alla porta della cucina (chiamata al sotto-algoritmo
“Camminare”).
10) Se la porta è aperta procedi al punto 12. In caso contrario:
11) Apri la porta della cucina (chiamata al sotto-algoritmo “Apri la porta”).
12) Entra in cucina attraverso la porta, camminando per 2 passi (chiamata al sotto-
algoritmo “Camminare”).
13)Sei in cucina.
14)Fine.
4
VALORI POSSIBILI: TRUE (VERO = 1) oppure FALSE (FALSO = 0)
o AND
L'operatore logico AND (letteralmente “e” di congiunzione in inglese) restituisce
vero se e solo se tutte le proposizioni (ovvero gli operandi) hanno valore vero
(1), altrimenti restituisce falso (0).
• 1 AND 1 = 1
• 1 AND 0 = 0
• 0 AND 1 = 0
• 0 AND 0 = 0
o OR
L'operatore OR restituisce vero se almeno una delle proposizioni in entrata
restituisce vero (1):
• 1 OR 0 =1
• 1 OR 1 =1
• 0 OR 0 =0
• 1 OR 1 OR 0 = 1
• 0 OR 0 OR 1 = 1
• 0 OR 0 OR 0 = 0
o NOT
L'operatore NOT restituisce il valore inverso di quello in entrata: esegue dunque
una negazione logica in un'espressione.
• NOT 0 = 1
• NOT 1 = 0
5
HARDWARE:
• CASE
E’ l’involucro esterno ed è preposto a contenere tutte le parti principali del computer.
Al suo interno troviamo anche l’alimentatore che fornisce i vari voltaggi necessari al
funzionamento del computer (l’alimentatore attuale è in formato ATX)
Parti principali:
- Socket per la ritenzione del processore sul quale viene collegato il medesimo;
- Vari slot per le memorie (generalmente nelle Mobo per home computer sono 4);
- Vari slot per le schede di espansione:
per la scheda video: PciExpressX16 (banda di 8GB/s (4 in upstream + 4 in
downstream) che sostituisce il precedente standar AGP (banda di 2GB/s).
per le schede di espansione PCI (Peripheral Component Interconnect, banda di
130MB/s), PCI-X (Extended PCI a 64 bit, banda fino a 4GB/s) o PCI-Express
(x1, x2, x4, x8 con velocità di 250MB/s per lane). Le espansioni possono essere
di vari tipi: schede audio, porte aggiuntive, ecc.
- Chipset: chip, circuito integrato con Read Only Memory (ROM) che contiene piccoli
software che permettono al pc di coordinare il trasferimento dati fra i vari componenti
del pc:
Northbridge (si occupa del system bus): connette il processore (CPU) con la
memoria esterna (RAM) e con il PCI-Express o l’AGP (accelerated graphic port).
Southbridge (si occupa dell’ I/O, Input/Output bus): connette il processore
(CPU) con il canale PCI, Pci-X e Pci-Express, con l’EIDE (enhanced - Intelligent
Drive Electronics) ed il SerialATA (ATA: advanced technology attachment) e
dunque con i dischi rigidi, il floppy e le unità ottiche, ed inoltre con il bus USB,
Firewire, seriale, parallelo e talvolta con l'audio (nel caso di chipset audio
integrato).
BIOS (Basic Input Output System) con il CMOS (pronuncia: sii-moss -
Complimentary Metal Oxide Semiconductor) che è una piccola zona di memoria
(di tipo RAM) che serve a memorizzare i dati del system setup; tali dati vengono
conservati grazie ad una piccola batteria. Serve per l'avvio del pc.
Durante la fase di boot (avvio) del computer si susseguono infatti 4 fasi:
6
- POST (Power On Self Test): è la prima istruzione che viene eseguita e
controlla che l’hardware sia funzionante (in caso di errore emette dei beep o
visualizza il problema sul monitor).
- CMOS: memorizza i dati hardware del sistema rilevati nel precedente punto.
- BIOS Instructions: interconnessione delle varie periferiche hardware con
possibilità di modificare determinati valori tramite il “Setup del BIOS” (al
quale si accede premendo il tasto “Canc” o “F2” durante il boot).
- BOOT Instructions: sono le ultime istruzioni della fase di boot e si occupano
di fare la chiamata al sistema operativo.
Tra i principali produttori di BIOS ricordiamo: PHOENIX, AMI (American
Megatrends) e AWARD.
- Connessioni esterne per Tastiera, Mouse, Stampante e altre periferiche (su porta
Parallela, Seriale, USB o FireWire), Scheda di rete, I/O audio
- Connettori interni per i cavi del CD-DVD (40pin), Hard Disk (40 pin se Eide, 7 pin se
Serial-Ata), Floppy Disk (34 pin).
• CPU (Central Processing Unit, nasce nel 1971 alla INTEL, “MPU 4004”)
E’ il cervello del computer ed è preposto a svolgere tutte le operazioni di calcolo e di
trasporto dei dati. E’ composto da due parti:
- ALU (arithmetic logic unit) che svolge le operazioni aritmetiche e logiche
- CONTROL UNIT, che estrae le istruzioni dalla memoria, le decodifica e le esegue
invocando l’ALU.
Il processore riceve continuamente dati da eseguire e questi si dividono in due tipi:
- Istruzioni, che indicano come devono essere trattati i dati
- Dati, che sono i dati veri e propri
Quindi il lavoro più grande del processore è quello di decodificare le istruzioni che gli
vengono mandate dai programmi (dal software) e di localizzare i dati che devono essere
processati.
La decodifica avviene grazie ad un set di istruzioni contenuto all’interno del processore:
questo set si basa sullo standard denominato 8086, ovvero X86, in quanto le prime
istruzioni vennero scritte originariamente per il processore 8086 del 1978 della Intel, che
rappresenta lo standard “de facto” nel campo dei PC. Naturalmente fino ai giorni nostri
sono state aggiunte ulteriori istruzioni al fine di velocizzare il processamento dei dati (vedi
SSE, SSE2, SSE3, SSE4, MMX, ecc.).
Internamente il processore contiene anche due “Cache”, ovvero delle piccole memorie nel
quale salvare i dati temporaneamente e che hanno la stessa frequenza di clock del
processore. Il vantaggio infatti di utilizzare queste memorie rispetto a quella di sistema
consiste proprio nella loro grande velocità.
- Level 1 Cache (intorno ai 20K: 12K Istruzioni e 8K Dati)
- Level 2 Cache (oggi nei nuovi processori Intel Pentium4 è di 2MB o 4MB))
Il clock per il processore proviene come già detto dalla scheda madre. Dall’Intel 80486 del
1992 il clock viene moltiplicato internamente dal processore (prendendo ad esempio un
processore a 3GHz e considerando che oggi tipicamente il System Bus è a 200MHz
(800MHz quad pumped), il moltiplicatore del processore sarà a 15x, ovvero 3000/200)
7
della CPU, quindi anche i dati memorizzati sui vari supporti che sono più lenti rispetto a
questa, vengono prima caricati nella RAM e poi gestiti dal sistema.
Abbiamo due tipi di memoria:
- DRAM (Dynamic): è il tipo utilizzato nella maggior parte dei casi e necessita di un
refresh di migliaia di volte al secondo (il termine Dynamic indica proprio che la memoria
deve essere “rinfrescata”; a questo provvede un circuito interno)
- SRAM (Static): è un tipo statico, ovvero ricorda il suo contenuto senza aver bisogno del
refresh, ed è anche molto più veloce della DRAM. Il contro è che costa molto e viene
generalmente usata come memoria cache (per il processore come L1 e L2 e nei dischi
rigidi)
>> Tra i principali produttori: Kingston, Twinmos, Kingwin, KingMaxx, Corsair, Crucial,
Micron.
8
I blocchi che contengono la parità rendono possibile il ripristino dei dati nel caso in
cui una delle unità presenti un problema. La parità nel blocco xyz viene calcolata
attraverso una combinazione matematica dei dati di ogni blocco xyz su tutte le altre
unità presenti nell'array. Se i dati presenti in un blocco vengono aggiornati, il blocco
di parità corrispondente deve essere ricalcolato e aggiornato.
Questo significa anche che ogni qualvolta che i dati vengono scritti sull'array,
almeno due unità vengono scritte su: una unità che contiene i dati, e sulla unità che
contiene il blocco di parità.
Un punto molto importante da ricordare è la distribuzione dei blocchi di parità,
infatti questi non sono concentrati tutti su un unica unità presente nell'array, ma al
contrario vengono distribuiti in modo omogeneo attraverso tutte le unità. Anche se è
possibile dedicare una unità specifica per contenere nient'altro che la parità (infatti
questa configurazione è conosciuta come RAID level 4), il costante aggiornamento
della parità stessa man mano che i dati vengono scritti sull'array, significherebbe
che l'unità che presenta la parità potrebbe diventare una limitazione nei confronti
della prestazione. Distribuendo le informazioni sulla parità in modo omogeneo
sull'array, è possibile ridurre questo impatto.
La capacità dei dischi sarà data da: (capacità di un'unità) x (numero di unità - 1).
Vantaggi: buona velocità di lettura – Svantaggi: bassa velocità in scrittura (dovuta
al calcolo della parità.
- Tape Stream: registrazione su cassetta con nastro magnetico, tipo DAT.
Capacita: tra 30GB e 70GB.
- Zip drive: è un supporto removibile prodotta da Iomega, capace di contenere in un
supporto poco più voluminoso di un floppy disk, una quantità di dati pari a 100
Megabyte nella sua versione iniziale; successivamente sono state rese disponibili
versioni da 250 Megabyte e recentemente una versione da 750 MB. Si tratta sempre di
floppy magnetici, come gli hard disk. È attualmente disponibile in due versioni: interna
(EIDE) ed esterna (USB e Firewire).
di tipo Ottico:
- CD/DVD
Lettura e scrittura dei dati attraverso l’uso di un raggio laser: i dati vengono scritti in
forma di spirale dal centro verso la periferia del disco.
Attualmente si trovano anche DVD a doppio strato, in grado di memorizzare i dati su
due strati sovrapposti che permettono di avere una maggior capacità di storaggio.
Capacità: CD=700MB, DVD=4.38GB, DVD-DoubleLayer=7.95GB
di tipo statico:
- Memorie statiche o flash memory con nessuna parte meccanica in movimento: vedi
PenDrive USB, memorie SD o Compact Flash per macchine fotografiche digitali, palmari,
ecc. Come capacità si arriva attualmente fino a 16GB.
- Solid State Disk (Hard disk allo stato solido): sono essenzialmente delle memorie flash
di tipo “NAND” (Not AND) che funzionano come dei dischi rigidi ma senza parti in
movimento, con una velocità di accesso bassissima ed una ottima velocità di lettura e
scrittura. Sono attualmente piuttosto cari e di non facile reperibilità.
• SCHEDA VIDEO
E’ la scheda che si occupa della visualizzazione dei dati sul monitor del pc. Grazie al
coprocessore integrato, GPU (Graphic Processing Unit) svolge tutti i calcoli per il rendering
delle immagini in 2 e 3 dimensioni (2d e 3d). Possiede anche una memoria integrata
(OnBoard), attualmente da 64 a 512 MB, importante per il rendering di texture o trame più
dettagliate, un decodificatore mpeg-2 per vedere i DVD, e varie uscite (o tavlvolta anche
entrate a seconda dei modelli). Tra i principali connettori ricordiamo: RGB (su D-Sub 15
pin, connessione analogica), DVI (Digital Visual Interface, connessione Digitale con
trasporto dei soli dati Video), HDMI (High Definition Multimedia Interface, connessione
Digitale con trasporto contemporaneo dei dati Video e Audio), Composito (su pin RCA,
9
analogico, trasporta i dati video con un unico segnale), S-Video (Separate Video, su
connettore a 4 pin mini-DIN, di tipo analogico ma migliore rispetto al Composito, trasporta
le informazioni video attraverso due segnali separati: luminosità e colore), Component
(generalmente su cavi coassiali, analogico, connessione di tipo professionale di ottima
qualità).
Il connettore su cui viene montata la Scheda Video è attualmente chiamato PCI-Express16x
che permette di avere una banda passante totale dei dati di 8GB/s (4 in upstream + 4 in
downstream). Quello precedente ancora molto diffuso era l’AGP (banda intorno ai 2GB/s).
Trai i produttori principali di GPU ricordiamo “N-VIDIA” e “ATI”
• SCHEDA AUDIO
• “digital signal processor” (DSP) – coprocessore che si occupa dei calcoli necessari per
l’audio
• “digital to analog converter” (DAC) – chip che si occupa di convertire il segnale audio
da digitale ad analogico (segnale in uscita)
• “analog to digital converter” (ADC) – chip che si occupa di convertire il segnale audio
da analogico a digitale (segnale in ingresso)
• “read-only-memory” (ROM) o “Flash memory” – per memorizzare eventuali dati
(campioni)
• “musical instrument digital interface” (MIDI) – per la connessione con periferiche
esterne di tipo Midi (tastiere, expander e campionatori, surface control)
• jack vari per la connessione con altoparlanti e microfoni, line-in e line-out (tra cui anche
connettori interni vari)
• spesso nelle schede “Entry Level” è presente anche una porta per il collegamento con il
joystick o con una frusta Midi
Per ulteriori approfondimenti sulla Scheda Audio e sulle relative connessioni vedi la Tesi
n.5, “Sistemi Audio e Midi”.
10
SOFTWARE:
Quali funzioni sia opportuno che il kernel debba fornire e quali possano essere demandate a
moduli esterni è oggetto di opinioni divergenti: se il kernel di un sistema operativo
implementa soltanto un numero molto ristretto di funzioni, delegando il resto ad altre parti,
si parla di microkernel. Il vantaggio di un sistema operativo microkernel è la semplicità del
suo kernel; lo svantaggio è l'interazione più complessa fra il kernel e le altre componenti
del S.O. stesso, che rallenta il sistema. Di solito il kernel di un sistema operativo
microkernel è molto piccolo e fornisce solo poche funzioni di base per l' astrazione
dall'hardware e la comunicazione fra i vari moduli, che sono esterni ad esso.
Schema di Microkernel
11
Un kernel tradizionale, monolitico, integra invece dentro di sé la gestione della memoria
virtuale, lo scheduler e i gestori di file system, nonché i driver necessari per il controllo di
tutte le periferiche collegate. Questo tipo di kernel è più complesso da progettare,
mantenere ed aggiornare, ma è anche più veloce ed efficiente. Una sua evoluzione è
costituita dai kernel "modulari", che mantengono al loro interno lo scheduler e i gestori di
file system e memoria virtuale ma separano alcune funzioni non essenziali in moduli a sé
stanti, da caricare in memoria solo in caso di effettivo uso della funzione o periferica di loro
competenza.
- File system: Il file system è il modo in cui i file sono immagazzinati ed organizzati su un
dispositivo di archiviazione, come un hard disk o un CD-ROM. Esistono molti tipi di file
system, creati per diversi sistemi operativi, per diverse unità di memorizzazione e per
diversi usi. Si possono identificare due grandi classi di file system: quelli per unità locali,
destinate ad organizzare fisicamente i dati su un disco, e i file system distribuiti, nati per
condividere i dati fra più computer collegati attraverso una rete, superando le differenze fra
sistemi operativi e filesystem locali delle varie macchine.
Filesystem distribuiti:
- Network File System (NFS)
- Coda File System
- Andrew file system (AFS)
12
Un altro buon motivo per registrare la memoria usata dai vari processi è il fatto che in caso
di errori gravi i processi possono andare in crash e non essere più in grado di comunicare al
sistema che la memoria che occupano può essere liberata: in questo caso è compito del
gestore di memoria, in caso di terminazione anomala del processo, marcare come libere le
zone di memoria possedute dal processo "defunto", rendendole disponibili per nuove
allocazioni.
• 2. Software(s) di sistema:
I software di sistema sono i programmi che servono alla gestione del sistema operativo.
Ricordiamo i principali: drivers (interfacciano il sistema operativo con l'hardware), utility
(ScanDisk, Defrag, ecc.) e pannelli di controllo (dai quali è possibile gestire il sistema
operativo da parte dell'utente, vedi ad esempio il “Pannello di Controllo” di Windows).
• 3. Software(s) applicativi:
Sono i programmi che svolgono i lavori reali per l’utente: Word Processor, Foglio
Elettronico, Database, Programmi musicali, Browser per Internet, Posta Elettronica, Media
Player, ecc.
13