Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
FONDAMENTI DI INFORMATICA
Tradigo Giuseppe
Docente:
Lezione 00209. Scrivere la definizione di Algoritmo.
Procedimento in grado di risolvere un problema
- definito tramite sequenza finita di passi elementari
- i passi devono essere chiari e non ambigui
- Algoritmo deriva dal nome del matematico persiano al-Khwarizmie, per traslitterazione, diventa algoritmo
10. Descrivere le proprietà che devono essere verificate per un Algoritmo.
- atomicità - i passi che lo costituiscono devono essere elementari;
- non ambiguità - i passi devono essere univoci;
- finitezza - il numero di passi deve essere finito;
- terminazione - l'esecuzione deve terminare in tempo finito;
- univocità del risultato - dagli stessi dati in ingresso si devono ottenere gli stessi risultati.
Lezione 00301.
Descrivere cosa contiene il grafico tipico della Legge di Moore.
Gordon Moore, di Intel, nel 1965 osservò empiricamente che il numero
La produzione dei processori raddoppia ogni anno. Sull'asse x sono indicati gli anni di uscita.
Sull'asse y è rappresentato il numero di transistor integrati nel processore.
- L'asse y è logaritmico.
- Dal grafico si può osservare che l'evoluzione dei processori segue la legge di Moore.
- Negli ultimi anni la produzione dei microprocessori non segue più tale legge.
- Gli ultimi trend di produzione preferiscono:
- Meno performance esasperate.
- Più bassi consumi di energia.
- Batterie dei dispositivi che durino più a lungo.
Si descriva la Legge di Moore e le sue implicazioni.
Negli ultimi anni, come vedremo più avanti, la produzione industriale dei chip ha visto avvicinarsi sempre più i limiti fisici di integrazione dei componenti, per cui l'attuale produzione non segue più tale legge.
Ultimamente infatti il trend è quello di progettare chip che, piuttosto di avere performance esasperate, abbiano un consumo di energia
L'Architettura di Von Neumann è un modello di architettura dei calcolatori che prevede l'utilizzo di una CPU, una Memoria, un Bus di sistema e Interfacce alle varie periferiche di I/O (Input/Output).
13. Descrivere il funzionamento della ALU.L'elaborazione dei dati viene svolta dalla ALU (Unità Logico-Aritmetica), un sottocomponente della CPU.
14. Descrivere le fasi del ciclo fetch-decode-execute.Fetch - Lettura della prossima istruzione:
- Memorizza nel registro Program Counter (PC) il suo indirizzo;
- La memoria legge all'indirizzo specificato nel PC;
- L'istruzione viene copiata nel registro Instruction Register (IR);
Decode, preparazione all'esecuzione dell'istruzione:
- Estrazione delle sue parti dall'IR
- Ad esempio: add, sub, mul
- Gli eventuali operandi
Execute, esecuzione dell'istruzione.
- Esecuzione dell'istruzione: il numero di microistruzioni dipende dall'istruzione corrente
- Lezione 0051
- Descrivere il funzionamento di una Pila, le sue funzioni e un esempio.
- Il registro SP viene inizializzato con l'indirizzo della prima locazione.
- L'immissione di un dato nella Pila (push) si effettua decrementando il contenuto del registro e scrivendo il dato nella cella libera; si va verso indirizzi di memoria minori.
- Il prelievo di un dato dalla pila (pop) si effettua utilizzando il contenuto del registro come indirizzo di lettura e incrementando il registro stesso; si torna verso indirizzi di memoria maggiori (verso la cima della pila).
- Descrivere a cosa servono e come si utilizzano le memorie gerarchiche.
- L'organizzazione gerarchica di memoria serve a migliorare l'efficienza nell'accesso ai dati combinando l'accesso casuale (RAM) con l'accesso associativo (cache).
- Descrivere le differenze fra una Pila e una
Coda. Una Pila è una struttura lineare di celle contigue in cui:
- I nuovi elementi vengono inseriti sempre dalla cima;
- Per togliere un elemento, lo si estrae dalla cima secondo la politica LIFO (Last In First Out).
Una Coda è un struttura lineare in cui:
- I nuovi elementi, entrano dalla cima;
- L'estrazione degli elementi avviene dal fondo, secondo la politica FIFO (First In First Out).
Lezione 00809. Descrivere in quali casi non è possibile eseguire due istruzioni in parallelo in presenza di Architetture Superscalari.
Ovviamente non tutte le istruzioni possono essere eseguite in parallelo o simultaneamente. Ad esempio, se il risultato di una istruzione deve essere usato dall'istruzione che segue, esse non possono essere eseguite insieme. È quindi importante che il processore riceva da eseguire istruzioni di tipo diverso e in maniera opportuna per sfruttare al meglio tutti gli stadi della pipeline.
10. Considerando un sistema Superscalare
a due core, a cui arrivano da eseguire le due istruzioni seguenti:
mov ax, 0
(salva il valore zero nel registro ax)
sub ax, 1
(sottrai 1 dal valore registro ax e salvalo in ax)
descrivere tutti gli scenari che si possono verificare nel caso di esecuzione parallela e, per ognuno, il valore finale del registro ax.
mov ax, 0
sub ax, 1
quale sarebbe il valore di ax? Potrebbe essere sia 0, se la prima istruzione fosse eseguita per ultima, che -1, se la seconda istruzione fosse eseguita per ultima.
Lezione 00909. Descrivere le principali differenze fra un computer classico e un computer quantistico.
Quando abbiamo introdotto il supercomputer più potente attualmente esistente, l'IBM Summit (le classifiche lasciano il tempo che trovano perché in ogni momento possono risultare obsolete), abbiamo anche visto che esistono problemi che, per la loro complessità intrinseca, non sono risolvibili in tempi utili.
10. Dopo aver descritto brevemente la Legge di Moore, illustrare quali sono le
sistemi Unix/Posix utilizzano tre gruppi di permessi per controllare l'accesso ai file e alle directory: 1. Proprietario: il proprietario del file o della directory ha il controllo completo su di essi. Può leggere, scrivere e eseguire il file o la directory, nonché modificarne i permessi. 2. Gruppo: il gruppo a cui appartiene il file o la directory può avere permessi specifici assegnati dal proprietario. I membri del gruppo possono leggere, scrivere ed eseguire il file o la directory, a seconda dei permessi assegnati. 3. Altri: tutti gli altri utenti che non sono né il proprietario né membri del gruppo appartengono a questa categoria. I permessi per gli altri utenti possono essere diversi da quelli del proprietario e del gruppo. Per superare le limitazioni della legge di Moore, gli sviluppatori stanno esplorando nuove tecnologie come l'informatica quantistica e l'elaborazione parallela. Queste tecnologie potrebbero consentire di superare i limiti fisici dell'integrazione dei transistor e di aumentare ulteriormente la potenza di calcolo dei processori.I permessi in Unix sono organizzati secondo tre gruppi:
- Permessi dell'utente - tipi di permessi per l'utente proprietario della risorsa;
- Permessi del gruppo - tipi di permessi per gli altri utenti dello stesso gruppo;
- Permessi degli altri - tipi di permessi per tutti gli altri utenti del sistema.
Lezione 01109. Descrivere che cos'è e a cosa serve la shell di Unix.
La shell di Unix:
- è l'interfaccia testuale dei comandi;
- ne esistono di tanti tipi diversi;
- è un programma di sistema che permette agli utenti di:
- Lanciare comandi;
- Visualizzare file;
- Navigare tra le directory.
10. Dare una descrizione e qualche esempio del comando man di Unix.
Dalla pagina del manuale appena vista apprendiamo che il comando "ls":
- genera la lista dei file contenuti nella directory corrente;
- in assenza di altre opzioni ordina i file in ordine alfabetico;
- ha (almeno) un'altra opzione.
“-a”◦ permette di visualizzare anche i file nascosti
Descrivere che cos'è e a cosa serve la pipe di Unix.
In Unix si possono concatenare comandi, una pipe viene invocata tramite il carattere “|” (barra verticale).
Lezione 012
Descrivere la procedura per trasformare un numero positivo nel suo corrispondente numero negativo quando esso è rappresentato in formato binario in complemento a due. Proporre un esempio di tale trasformazione.
E' possibile trasformare un numero rappresentato in formato binario da positivo in negativo trasformandolo in complemento a due invertendo le cifre (trasformare gli 0 in 1 e viceversa) e poi aggiungendo 1.
Partiamo ad esempio dalla configurazione binaria del numero 1200001100 che in complemento a due(x) diventa: x = 11110011.
Indi, per avere -x dobbiamo calcolare x+1: 11110011 +1 = 11110100
Si calcoli la somma fra numeri binari 1001+0011 discutendo i passaggi.
Si converta poi il risultato in base
- 10.1001+0011=------0 riporto di 10 riporto di 11 senza riporto1 senza riportoindi il risultato è 1100in base 2 diventa:
0X2^0 = 0
0X2^1 = 0
1X2^2 = 4
1X2^3= 8
indi 1214. - Dato il numero 35, rappresentato in base 10, illustrare i passaggi per la conversione in base 2. Una volta convertito nella sua rappresentazione binaria, trasformarlo nella sua controparte negativa (ovvero -35) usando la rappresentazione in complemento a due.
35:2 = 17 resto 1
17:2 = 8 resto 1
8:2 = 4 resto 0
4:2 = 2 resto 0
2:2 = 1 resto 0
1:2 = 0 resto 1
in base 2 diventa : 00100011
il cui complemento a 2 sarà 11011100
aggiungiamo a questo punto 111011100 +1 =----------11011101 - Calcolare, illustrando tutti i passaggi, quanto vale in base 10 il numero binario 10110011.
1x2^0 = 1
1x2^1 = 2
0x2^2 = 0
0x2^3 = 0
1x2^4 = 16
1x2^5 = 32
0x2^6 = 0
1x2^7 = 128
indi 179 - Descrivere il processo di compilazione di un programma Java.
Il processo di compilazione ci consente di partire da un programma scritto in un linguaggio x di
Per arrivare ad avere il programma eseguibile, di solito per procedere a compilare un programma devono intervenire i seguenti componenti:
- Analizzatore lessicale
- Analizzatore sintattico
- Analizzatore semantico
- Ottimizzatore di codice
- Generatore di codice
La compilazione e l'esecuzione di un programma Java viene effettuata in semplici passi:
- Sia HelloWorld.java il programma sorgente in Java;
- Il compilatore lo analizza (come input) e genera (come output) un file eseguibile.