Info Appunti Miei

Scarica in formato pdf o txt
Scarica in formato pdf o txt
Sei sulla pagina 1di 13

1 PARTE

PROGRAMMAZIONE
La programmazione richede:

-L’identificazione del problema da trattare

-Progetto in cui si definisce l’architettura

-Implementazione, fase di codifica

-Collaudo: Provo che il programma funzioni

-Manutenzione eventuale dopo il rilascio del programma

PROGRAMMAZIONE “C”
Uno dei linguaggi piu’ utilizzati.

PREGI: DIFETTI:

-Efficienza(Crea programmi efficienti) -Incline agli errori

-Portabilita’(i programmi in C funzionano su diverse piattaforme) -Difficile da modificare

-Potenza(con poche istruzioni si fanno molte cose)

-Semplicita

-Flessibilita(si puo’ utilizzare in diversi ambiti)

ALGORITMO E CALCOLATORE
-PROBLEMA: classe di domande omogenee alle quali è possibile dare risposta mediante una procedura
uniforme

- ISTANZA del problema: ogni specifica domanda della classe

- VARIABILI DI INGRESSO: termini variabili che caratterizzano la formulazione di un problema (permettono


di generare le istanze)

- VARIABILI DI USCITA: termini variabili che caratterizzano le soluzioni attese di un problema

- DATI: valori che possono assumere le variabili di ingresso

- RISULTATI: valori che possono assumere le variabili di uscita

- SOLUZIONE DI UN’ISTANZA: risposta alla specifica domanda che l’istanza rappresenta

RISOLUZIONE DI UN PROBLEMA
Un problema classe di domande omogenee a cui e’ possibile rispondere in modo uniforme.Istanza puo’
essere visto come una domanda del specifica del problema.Fasi:
-Identificazione del problema

-Analisi, la cui soluzione e’ l’algoritmo

-Descrizione, il cui risultato e’ il programma

-Interpretazione e descrizione, il linguaggio macchina

-Attuazione soluzione, si trova la soluzione al problema

PROCEDURA DI RISOLUZIONE DI UN ALGORITMO


La procedura di risoluzione e’ espressa come sequenza di istruzioni ed e’ composta da:
COMPUTAZIONE: esecuzione di un algoritmo in corrispondenza di certi dati

PASSO DI COMPUTAZIONE: ogni singolo passo elementare che un esecutore compie durante l’esecuzione di
un algoritmo

SEQUENZA DI COMPUTAZIONE: sequenza di passi elementari che un esecutore compie in corrispondenza


di certi dati iniziali durante l’esecuzione di un algoritmo

- Algoritmo è un concetto statico

- Computazione è concetto dinamico

CARATTERISTICHE DI UN ALGORITMO
-Finitezza: ha un numero finito di istruzioni
-Univoco: Ogni istruzione deve essere univocamente interpretabile
-Effettivita’: Deve esistere un compilatore capace di eseguire le istruzioni in un tempo finito
-Correttezza: Calcola correttamente la funzione
-Efficienza: Poco utilizzo delle risorse per completare il problema
-Terminazione: L’esecutore termina in un numero finito di passi di computazione

ALGORITMO
Un algoritmo, e’ una procedura usata per la risoluzione del problema. Viene specificato mediante
una serie di piccole istruzioni.
Un algoritmo e’ composto da Variabili + Istruzioni. Un algoritmo e’ parametrico

Variabili hanno:

-nome e un valore
-localizzazione di memoria: per salvare il valore in memoria
-compaiono in istruzioni di assegnamento ed espressioni

E possono essere classificati:


-variabilita’: (Costanti, Variabili=acquisizione dall’esterno o assegnazione)
-struttura: Elementari(Interi, alfanumerici, logici…),Strutturati(vettori, matrici…)
-origine
-visibilita’ nel codice: (Visibile=di ingresso/uscita)(Trasparente=dati temporanei di supporto)
-visibilita’ nel flusso di esecuzione

Istruzioni(3 tipi):
-I/O
-aritmetico logiche: che servono per l’elaborazione dei dati
-controllo: che verificano le istruzioni dell’algoritmo

ISTRUZIONI ARITMETICO-LOGICHE
Aritmetiche:
- OPERANDI: variabili e costanti (si ipotizza di considerare solo numeri interi)

- OPERATORI: addizione, sottrazione, moltiplicazione, divisione intera, modulo

- SEMANTICA: quella usuale dell’aritmetica

Relazionali:
-Operandi: variabili, costanti, espressioni aritmetiche
-Operatori: operatori relazionali di uguaglianza (==), diversità (!=), minoranza (<) e maggioranza
(>) fra numeri

-Semantica: quella delle disequazioni fra numeri

Logiche e predicati logici:


-Operandi: Variabili, costanti, espressioni relazionali

-Operatori: Operatori logici, tra cui congiunzione(And), disgiunzione(Or), negazione(Not)

-Semantica: Quella dell’algebra di Boole (Logica proposizionale)

ALGEBRA DI BOOLE
L’algebra di Boole è lo strumento matematico su cui si fonda anche il funzionamento dei circuiti digitali
(circuito aperto/chiuso).
SCHEMA A BLOCCHI
Anche chiamati diagrammi a blocchi, schemi a blocchi e flowchart, sono un formalismo grafico per
descrivere gli algoritmi. Ci sono simboli per indicare inizio e fine, operazioni di ingresso/uscita (I/O),
elaborazioni, condizioni, sottoprogrammi. 2 Proprieta:

-Correttezza: l’algoritmo risolve il problema per cui e’ stato progettato (-> efficacia)

-Complessita’: legata a quanti passi ci impiega l’algoritmo per risolvere il problema

SB GENERICI E SBS
-Il Teorema di Boem-Jacopini dice che: per ogni SB non strutturato esiste uno SBS debolmente equivalente

-SBS permette di risolvere ogni problema solubile (dal punto di vista funzionale la potenza di SBS=SB)

-SB non permette di rappresentare ogni possibile algoritmo(dal punto di vista algoritmico la potenza di
SBS<SB)

-Potenza Computazionale= SBS ammette almeno un algoritmo per ogni problema solubile.

-Potenza Espressiva= SBS ammette, permette di rappresentare, ogni possibile algoritmo per ogni problema
solubile
Due schemi a blocchi sono debolmente equivalenti se danno stessi risultati per ogni input (=risolvono lo
stesso problema).

Due schemi a blocchi sono fortemente equivalenti se danno la stessa sequenza di risultati per ogni input

2 PARTE
CODICE
Il calcolatore è il sistema che elabora l’informazione. L’informazione è un entità astratta, il supporto è
qualcosa di fisico. l’informazione, per esistere, ha bisogno di un supporto. Informazione es. traccia audio,
Supporto es. CD ROM.

Bit (Binary Digit= Misura la quantita’ delle informazioni. Una cifra binaria puo’ avere 2 configurazioni(1/0)

Il calcolatore distingue tra solamente 2 simboli (0/1). C’e’ un insieme di regole che:

-Stabilisce le associazioni fra configurazioni e entita’ di informazione

-Specificano come i simboli devono essere combinati

I multipli di un bit sono:

Usate per indicare le grandezze dei dischi e per il Usate per il calcolo della misura dei file

networking(misura di download)
CODIFICA DI DATI NON NUMERICI
-ASCII (American Standard Code for Information
Interchange): Prevede successioni di 7 bit ed include anche la
codifica di caratteri speciali (CANC, ESC, INVIO, ecc.)
-Latin-1: Estensione di ASCII basato su successioni di 8 bit
con i quali è possibile rappresentare lettere accentate
-UNICODE: Basato su successioni di 16 bit che contiene
simboli di altri alfabeti, altri simboli (matematici, valute, ecc.)
e simboli utili per la scrittura in lingue orientali

Il Latin-1 è un’estensione dell’ASCII, è basato su 8 bit; si possono rappresentare le lettere accentate.


UNICODE è basato su 16 bit, è più sofisticato dei precedenti, ha simboli di altri alfabeti, altri simboli
(matematici -sommatorie, integrali…- , valute),

simboli utili per scrivere in lingue orientali

CODIFICA DEI NUMERI INTERI/REALI


Interi:
Esistono 2 modi per codificare i numeri Interi:

-Codifica con modulo e segno: Dove il primo bit sta ad indicare il segno, e i restanti il valore assoluto

-Codifica in complemento a due

Reali:
in cui si vanno a memorizzare :

-segno: 0 positivo, 1 negativo

-mantissa ed esponente: convertendo i loro numeri in base 2

La IEEE(Institute of Electrical and Electronic Engineers) stabilisce il numero di bit per la mantissa e per
l’esponente, ed abbiamo 2 modelli:

-Numeri a precisione singola:32 bit -> 1 bit per il segno, 23 per la mantissa e 8 per l’esponente

-Numeri a precisione doppia:64 bit -> 1 bit per il segno, 52 per la mantissa e 11 per l’esponente

LA MACCHINA DI VON NEUMAN


E’ un architettura ottima, difatti viene utilizzata anche oggi. E’ composta da una

-CPU(Centra Process Unit)=Un unita centrale di elaborazione, che carica le istruzioni dei programmi in
memoria, le interpreta e manipola i dati di conseguenza

-Memoria Centrale=Memorizza dati I/O e di elaborazione. A ciascuna cella e’ associto un indirizzo di


memoria

Unico canale di comunicazione:

Bus= Un insieme di fili con cui i dispositivi possono essere collegati. Per evitare conflitti tra i dati in
comunicazione nel bus, la CPU fa dà controllore
Esistono 3 tipi di Bus:

-Bus Dati=E’ il bus sul quale transitano le informazioni.

-Bus indirizzi=Indica quali parti di memoria sono coinvolte

-Bus di controllo=Controllo di altri dispositivi es. tastiera. Compie un operazione di lettura/scrittura

I pregi sono:

-semplice ed economico: dato che c’e’ un solo canale

-estendibilita’ (non si va ad alterare gli altri dispositivi)

-standardizzabilita’.

I difetti sono:

-Lentezza dato che c’e’ un solo bus

-Limitata capacita di trasferire dati

-Sovraccarico di lavoro per la CPU

Come viaggiano i dati da memoria a Cpu o viceversa?


Non esiste un operazione di cancellazione, solo di lettura e scrittura

Lettura: - La Cpu presenta la parola sul bus indirizzi

-La Cpu attiva il comando di lettura sul bus di controllo

-la memoria presenta sul bus dati il dato della parola indirizzata

Scrittura: - La CPU presenta la parola da scrivere sul bus indirizzi

-La CPU pone il dato sul bus dati

-La CPU attiva il comando scrittura sul bus dati

STRUTTURA DEL PROCESSORE


Il Processore e’ costituito dal ALU(Unita’ aritmetica logica) che fa i calcoli ed elabora i dati, ed e’ una rete
combinatoria ed e’ formata da un insieme di porte logiche (and, or, not). L’unita di Controllo regola il
flusso di dati e comanda la Alu ed e’ una rete sequenziale.

L’Alu e’ collegata a RA,RB e RC e anche le loro operazioni sono comandate dall’unita di controllo. I registri
servono per avere sottomano i dati che devono essere lavorati. Non ci sono collegamenti diretti tra la
memoria e la ALU. Ci sono diversi registri:

-PC(Program Counter):Memorizza l’indirizzo della prossima istruzione da eseguire

-IR(Instruction Register): Contiene l’istruzione da eseguire

-MAR: Memorizza gli indirizzi delle parole da leggere/scrivere

-MDR: Contiene i dati da leggere/scrivere in memoria

PSW(Processor Status): Verifica lo stato della CPU. Vengono utilizzati i bit per controllare
-Ra, RC, RB: Indicano i risultati dell’operazione eseguita

CICLO MACCHINA
1 Fase di FETCH: Acquisisce un istruzione del programma

2 Fase di DECODE: Decodifica le istruzioni del programma

3 Fase di EXECUTE: Manda i comandi alla ALU( per la selezione dell’operazione), ai registri della CPU( per la
lettura/scrittura) e al bus per accedere alla memoria.

PERIODO DI CLOCK
E’ un segnale che fornisce una scadenza temporale che quando scatta i dispositivi collegati devono agire. Le
CPU hanno un frequenza[Ghz] piu’ e’ alta e piu’ e’ veloce, pero’ non ci dobbiamo basare solo su questo per
capire se una CPU e’ realmente piu’ veloce dell’altra o meno, perche’ dato che il linguaggio macchina delle
Cpu lo sceglie il costruttore una Cpu potrebbe svolgere meno istruzioni di un’altra pur avendo una
frequenza maggiore. Per calcolare quanto ci mette una CPU a fare delle operazioni usiamo:

-Elapsed time: il tempo che passa dall’inizio di un programma alla sua fine contando anche i tempi morti
come l’attesa di input e altri tempi d’attesa

-Cpu time: Indica il tempo che ci impiega la Cpu per eseguire un programma. Ed e’ dato da (CPI x periodo di
clock). CPI= (cicli di clock x istruzione)

LOGICHE DI PROGETTAZIONE DELLA CPU


Esistono 2 Filosofie di pensiero:

-CISC: Un linguaggio che fa piu’ operazioni ed e’ sempre piu’ complesso

RISC: Poche istruzioni, ma essenziali. Basato sul linguaggio macchina.


ASSEMBLY
E’ la rappresentazione simbolica del linguaggio macchina(binario). E’ piu’ leggibile perche’ i bit vengono
sostituiti da variabili e etichette:

-Variabili: Usate per far riferimento agli indirizzi di dati

-Etichette: Usate per far riferimento agli indirizzi di istruzioni.

Abbiamo l’assemblatore che traduce da linguaggio assembly a quello macchina utilizzando la Tabella dei
codici (per Comparare i bit con le operazioni) e la Tabella dei simboli(Compara le variabili e le etichette con
gli indirizzi)

LA MEMORIA
Una memoria deve fornire alla Cpu dati e istruzioni velocemente. Deve conservare i dati anche col PC
spento e renderli reperibili anche dopo tanto tempo. L’obiettivo dovrebbe essere quello di avere una
memoria grande e veloce e ovviamente poco costosa. C’e’ pero’ un compromesso:

-Ovvero integrare memorie piccole e veloci con altri dispositivi grandi e lenti es ssd piccola e veloce e hdd
grande e lento.

Le memorie hanno varie caratteristiche:

-Velocita’: Tempo di accesso, ciclo di memoria e velocita di trasferimento

-Volatilita’: Se quando spegni il Pc i dati rimangono o meno

-Capacita’: Capacita di dati che puo’ contenere

-Costo

CLASSIFICAZIONE DELLE MEMORIE IN BASE AGLI ACCESSI


-Accesso sequenziale: Parole messe in successione quindi ad es. se la parola e la 100 devi essere anche le
altre 99 “memorie ottiche”

-Accesso casuale: Puoi accedere ad una parola indipendentemente dalle altre “memorie elettroniche”

-Accesso misto: L’indirizzo di un dato non determina la sua posizione fisica “disco magnetico”
-Accesso associativo: metodo ad accesso casuale che permette di confrontare alcuni bit specifici
dell’indirizzo della parola con quelli di alcune etichette “memoria cache”

Perché una struttura piramidale? Al vertice, ci sono le memorie con meno capacità. All base, invece, ci sono
le memorie più lente. Più si sale, più la CPU viene usata di frequente.
Memoria ROM(read only memory):Una memoria elettronica che serve per memorizzare dei
programmi di inizializzazione(programmi quando si accende il pc) e di diagnosi(se tutti i dispositivi interni
sono funzionanti)

Memoria RAM(random access memory): Utile per la memoria centrale del calcolatore
Cache: Una memoria estremamente veloce ma con poca capienza. Ha lo scopo di velocizzare l’esecuzione
dei programmi. Quando la cache e’ piena per inserire nuovi dati vengono “sacrificati” i dati che non
vengono usati da molto( LRU: least recent used)

DISCHI MAGNETICI
I Dischi magnetici sono divisi in tracce e settori

-tracce: sono sequenze di dati circolari sulla superficie del disco, che memorizzano informazioni tutte della
stessa quantita’.

-settori: sono delle porzioni di disco

-record: parte di traccia di un singolo spicchio (cluster=gruppo di record)

Prima di poter memorizzare dei dati bisogna riformattare il disco(operazione con la quale si prepara per
l’uso un supporto di memorizzazione di massa). Ogni superficie del disco e’ costituita da una testina che
legge i dati.
Struttura:

-Piu’ dischi uno sopra l’altro

-Ogni singolo disco viene utilizzato sia dal lato superiore che quello inferiore

-Le testine sono in grado di leggere da ambo i lati

-I Dischi si muovono tutti insieme

L’accesso ai dati del disco avviene in 2 modi:

-Sick time (5-15ms): Tempo necessario per spostare il braccio con le testine

-Latency time(5400-10800 rpm): Tempo necessario che il disco impiega a girare per permettere alla testina
di raggiungerlo

DISCHI OTTICI
-CD-Rom=Utile quando si vuole distribuire un software

-CD-R/CD+R= Possono essere scritti solo una volta tramite il masterizzatore


-CD-RW= Puo’ essere riscritto piu’ volte

Stessa cosa per i DVD,DVD-R,DVD-RW/BD-Rom,BD-R,BD-RE

La principale differenza tra questi dischi ottici e la capacita’ di memoria.

INTERFACCE DI INGRESSO/USCITA
Piu’ comuni: tastiera, mouse, monitor. La comunicazione verso queste periferiche avviene attraverso
l’interfaccia di ingresso/uscita, che traduce i segnali dal calcolatore in un linguaggio comprensibile alle
periferiche. Le interfacce di I/O sono classificate in base al tipo di Indirizzamento:

-Mappato in memoria: Gli indirizzi che usiamo per le parole in memoria, possiamo usarli anche per i
dispositivi I/O

-isolato: Gli indirizzi che usiamo per le parole in memoria, non possiamo usarli anche per i dispositivi I/O

2 MODALITA DI SINCRONIZZAMENTO PER I/O


-Indirizzamento=mappato in memoria e isolato

-Sincronizzazione:

-A controllo di programma: prevede che sia il programma in esecuzione ad occuparsi della


sincronizzazione con la periferica

-A interruzione: è la periferica a dimostrare disponibilità di dialogo col calcolatore.

-Ad accesso diretto della memoria: quando si devono trasferire dati non dalla CPU alle periferiche.

Potrebbero piacerti anche