vuoi
o PayPal
tutte le volte che vuoi
1. Introduzione
Hardware: insieme dei dispositivi che compongono il calcolatore
Software: insieme delle istruzioni e delle informazioni necessarie a risolvere il problema proposto
Programma: insieme di istruzioni codificate in modo comprensibile al calcolatore, sufficienti a risolvere un problema
Programmare un calcolatore: scrivere l'algoritmo necessario a risolvere il problema
Firmware: software integrato in un componente elettronico (o in un dispositivo) capace di avviarlo e farlo interagire con altri componenti
Assembly (linguaggio macchina): insieme di istruzioni eseguibili direttamente dall'hardware
- Limitato per via:
- Costo della realizzazione di hardware che esegua operazioni complesse
- Complessità crescente del computer
Macchine a più livelli: si crea un nuovo linguaggio, più comprensibile al programmatore umano, che viene poi tradotto in linguaggio macchina. Si possono fare quanti più livelli vogliamo
Compilazione: il compilatore/assemblatore legge il programma e ne produce un altro adeguato al livello inferiore
Interpretazione: l'interprete legge il programma e lo traduce direttamente, mandandolo in esecuzione al livello inferiore (non produce un secondo programma nel nuovo linguaggio come fa il compilatore)
Architetture ai più livelli
Nei computer moderni sono 5:
- livello logico digitale: hardware del calcolatore costituito da porte logiche e circuiti demultip.
- livello della microarchitettura: la macchina virtuale esegue microistruzioni (implementata nell'unità di controllo della CPU).
- livello ISA (Assembler): esegue il linguaggio assembler di calcolatore.
- Instruction Set: complessità e numero delle istruzioni dal livello virtuale tra i calcolatori.
- livello di sistema operativo: astrazione sui villi e al livello ISA. Si aggiungono alcune istruzioni primitive del sistema operativo.
- livello applicativo: contiene linguaggi che possono essere utilizzati dal programmatore.
Compilatore
è il traduttore per linguaggi di alto livello.
Traduce il linguaggio sorgente (un file) in linguaggio oggetto (ultimo divis per moduli).
Linker
collega moduli del linguaggio oggetto e li trasforma in eseguibile (da no un unico file).
Loader
legge l'eseguibile, inizial. programmi in memoria e lo manda in esecuzione.
Assemblatore
(assembler) e il traduttore di linguaggio assembly.
* Introdotta negli anni '60 per supportare un ISA complesso con hardware semplice, alla fine degli anni '70 avueda fgenerato dei microprogammi la cui dimensione rallentava il calcolatore le moderne architetture RISC hanno quasi completamente abbandonanto il microprogrammi.
Funzionamento CPU:
- Fetch (prelevamento)
- Decode (decodifica)
- Execute (esecuzione)
Memorie: componenti del calcolatore in grado di mantenere le informazioni. Ci sono diversi tipi di memorie:
- volatile: l'informazione è memorizzata finché il calcolatore è alimentato (Registri, Cache, RAM)
- persistente: l'informazione è sempre memorizzata
- on-line: dati sempre accessibili
- off-line: il supporto deve essere caricato nuovamente nella memoria sul lettore per farlo funzionare (Hard-disk)
Codici di correzione degli errori:
- distanza di Hamming: indica il numero di bit corrispondenti che differiscono in due parole
- Parola di codice: un insieme di n bit ha al suo interno m bit di dati e l bit di controllo
- bit di parità: ad ogni parola è aggiunto un bit di controllo. Questo vale 1 se il numero di bit a 1 nella parola è dispari, 0 se è pari.
RAM: immagazzina programmi in esecuzione e relativi dati. È volatile ed è composta di celle (locations) associate univocamente ad un indirizzo. La dimensione della cella è detta parola. I chip di memoria non vengono venduti singolarmente, ma sono montati su schede di varie tipologie:
- SIMM (single inline memory module): contatti su un solo lato della scheda. Trasferiscono 32 bit per ciclo di clock. Hanno un bus dati