Anteprima
Vedrai una selezione di 3 pagine su 8
Domande e Risposte di Fondamenti di Informatica 1 Pag. 1 Domande e Risposte di Fondamenti di Informatica 1 Pag. 2
Anteprima di 3 pagg. su 8.
Scarica il documento per vederlo tutto.
Domande e Risposte di Fondamenti di Informatica 1 Pag. 6
1 su 8
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

DOMANDE DAI TEMI D'ESAME

D I F O N D A M E N T I D I I N F O R M A T I C A 1

Si presentino i codici ASCII e UNICODE evidenziando la loro

utilità. Si dica se il codice ASCII è un codice ridondante,

motivando la risposta. Si presenti la distanza di Hamming anche in

relazione ai codici non ridondanti e a quelli ridondanti.

Sulla base della necessità di avere calcolatori che non trattano solo numeri ma

anche altri tipi di caratteri, sono stati inventati i codici. I Codici utilizzano

una codifica, ovvero una corrispondenza biunivoca tra elementi di alfabeti

diversi; in particolare un gruppo di elementi di un alfabeto più povero (meno

elementi) identificano un solo simbolo di un alfabeto più ricco. Definita C la

cardinalità (#elementi) dell'alfabeto ricco e n il numero di cifre disponibili

all'alfabeto povero per codificare l'altro, la codifica è possibile se e solo se:

C < o = 2^n; quindi se n > o = log(base2)C=M.

Se n=M l'alfabeto povero utilizza tutte le combinazioni possibili

se n>M il codice si dice ridondante e usa più cifre del necessario per codificare

l'alfabeto ricco.

La distanza di hamming è il numero minimo di elementi che differiscono da

una parola qualsiasi all'altra di un alfabeto. Se non c'è ridondanza H=1,

altrimenti H > o = a 1. I codici ridondanti si usano per rilevare e correggere

errori di trasmissione nei dati.

La codifica ASCII è la più utilizzata per la rappresetazione di caratteri

alfanumerici e ne esistono due versioni:

7 bit (+1 di parità per la correzzione di errori; H=2) che può quindi

rappresentare 128 simboli (2^7)

8 bit con 256 simboli, che aggiunge 128 simboli che però possono variare da

macchina a macchina, creando dei problemi di portabilità.

Il codice unicode utilizza invece diverse codifice a 16 bit (65536 simboli) e fu

introdotto per rappresentare ogni simbolo di tutti i linguaggi del pianeta.

ASCII non è ridondante poichè a ogni simbolo corrisponde una e una sola

combinazione di bit, e per giunta non vi sono configurazioni inutilizzate.

Si descriva l’architettura di una generica CPU evidenziando in

particolare le funzioni che vengono svolte dall’IR e dal

decodificatore e commentando il coinvolgimento delle risorse della

CPU durante la fase di fetch dell’istruzione.

La CPU (Central Processing Unit) è l'unità fondamentale di ogni calcolatore,

quella che di fatto compie le varie operazioni tra i dati.

Ha più componenti :

I Bus sono i collegamenti fisici attraverso i quali passano i segnali elettrici e

collegano le varie componenti della cpu o la cpu con l'esterno. Si dividono in

base al tipo di informazione trasportata: dati (bus dati), indirizzi di memoria

(bus indirizzi), istruzioni di controllo del processo o gestione delle priorità

(bus di controllo)

Inoltre per agire più velocemente sui dati, quelli di interesse in un certo

momento sono salvati in piccoli blocchi di memoria detti registri. Alcuni

registri inoltre sono specializzati per racchiudere un certo tipo di informazioni:

I Flag: registri che contengono un controllo sull'output di un'elaborazione per

verificare se è andata a buon fine e non vi sono errori

Il Program Counter : un registro che contiene sempre l'indirizzo dell'istruzione

successiva da eseguire (è un puntatore → punta all'istruzione successiva)

Lo stack Pointer invece contiene l'indirizzo della cima di uno stack pila,

particolare struttura di dati che torna utile nella gestione di chiamate a

sottoprogrammi.

L'IR (Instruction Register) è utilizzato invece per conservare il codice

operativo dell'istruzione da eseguire, da qui poi la sequanza di bit del op code

verrà decodificata per mezzo di un decodificatore che ricevute le n linee di

ingresso attiva i (2^n) circuiti appropriati per l'esecuzione dell'istruzione.

La alu infine è l'unità che svolge le operazioni aritmetiche e logiche tra

sequenze di bit, interagendo col registo dei flag per la rilevazione di errori.

Spesso utilizza un registro detto accumulatore nel quale mantiene

temporaneamente gli operandi o il risultato.

La fetch è la prima fase di esecuzione di un programma e consiste nel

prelevare dalla memoria tutto ciò che serve per far partire la decodifica e

l'esecuzione dell'istruzione.

In un primo momento il PC (Program Counter) punta all'istruzione da

eseguire che avrà un certo indirizzo di memoria, il quale viene trasferito in un

particolare registro della memoria (principale) detto MAR (Memory Address

Register) quindi verrà prelevata l'istruzione relativa all'indirizzo contenuto nel

MAR e messa in un altro registro della memoria, il MBR (Memory Buffer

Register).

A questo punto il PC si autoincrementa per puntare all'istruzione successiva

mentre il contenuto dell'MBR, l'istruzione stessa, verrà scomposta nei vari

campi e il codice operativo verrà immesso nell'IR. Se tutti gli operandi sono

pronti e l'op code è nell'IR, termina la fase di FETCH e inizia quella di

decodifica.

Si elenchino i tipi di istruzioni presenti tipicamente in una CPU

descrivendo in particolare le funzioni svolte dalle istruzioni di

“Controllo programma”.

In un calcolatore ci sono diversi tipi di istruzioni:

Aritmetiche

Logiche

Rotazione e Shift

Trasferimento dati

Controllo programma

Controllo macchina

Le istruzioni in genere sono memorizzate nel calcolatore usando un linguaggio,

intermedio tra il linguaggio di alto livello e il linguaggio macchina, detto

linguaggio assembler.

Le istruzioni di controllo programma sono quelle che vanno a modificare

l'ordine in cui le istruzioni di un programma vengono prelevate dalla

memoria. Se devo far partire un programma infatti questo verrà caricato dal

disco (memoria secondaria) in RAM, che è più veloce. Le istruzioni vengono

eseguite in maniera sequenziale, ma spesso è utile imporre delle decisioni al

calcolatore che possono andare a intaccare la sequenzialità, facendo si che

istruzioni successive debbano essere prelevate in altre zone della memoria

RAM (zone non contigue). Per far ciò si utilizzano le istruzioni di controllo

programma. Sono istruzioni di tipo SALTO e possono essere incondizionati;

ovvero a un certo punto del programma si salta all'inidirizzo indicato in ogni

caso, o condizionati; ovvero si salta a una certa istruzione solo se è verificata

una certa condizione. Inoltre possono essere con ritorno o meno; infatti non è

sempre necessario ritornare al punto in cui il programma aveva effettuato il

salto. Il salto può essere anche relativo a una posizione, in tal caso è

necessario riportare l'entità dello spostamento (displacement)

Salto condizionato JP -condizione-indirizzo

Salto incondizionato JP -indirizzo

Salto relativo incondizionato JR -displacement

Salto relativo condizionato JR- condizione-displacement

Le Istruzioni di salto con ritorno sono dei casi in cui un programma chiama

dei sottoprogrammi che ricevono i dati dal main, li elaborano e restutuiscono i

risultati al programma principale.

Nella chiamata a sottoprogramma è necessario non perdere il contenuto del

PC relativo all'istruzione successiva a quella in esecuzione nel main appena

prima della chiamata, questo costituirà l'indirizzo di ritorno e verrà salvato

come primo elemento (ultimo che uscirà) in una struttura stack pila.

Es. di salto con ritorno: Lo Stack Pointer viene decrementato per far spazio

all'indirizzo di ritorno che sarà PC+4( 4 byte = 1 word) SP-4 -> SP ; SP ->

MAR ; PC+4 -> MBR; MBR -> MAR

Con questi passaggi abbiamo liberato uno spazio nella stack pila per inserire

l'istruzione di ritorno (PC+4); a questo punto, essento il ritorno salvato nello

stack, possiamo scrivere l'indirizzo di inizio routine nel program counter.

Si dimostri perché l’operatore NOR sia considerato universale. Si

elenchino gli elementi usati dall’algebra di Boole, gli operatori e le

proprietà note.

L'operatore NOR si definisce universale perchè insieme all'operatore NAND

possono costituire tutte le operazioni di base dell'algebra booleana (AND,

NOT e OR). Questa si basa su due valori che possono essere on/off, 1/0,

Vero/Falso ecc...Si Basa su più operandi e le relative tabelle di verità indicano

per ciascuno degli ingressi il valore in uscita.

Esempio. AND: 1*1=1; 1*0=0*1=0*0=0

Si descrivano e si confrontino i sistemi operativi dedicati,

multiprogrammati e a condivisione di tempo (time sharing)

I sistemi operativi sono il software di base di ogni calcolaatore e sono

l'intermediario tra l'utente e la macchina. I primi calcolatori erano spaziosi e

molto costosi, per cui erano condivisi da molti utenti, e il fatto che questi

eseguissero un solo programma alla volta creava sempre lunghe attese tra gli

utilizzatori. Ogni programma doveva essere caricato sul calcolatore dalla

memoria di massa e il calcolatore doveva essere resettato. Per snellire queste

procedure si iniziarono a sviluppare i sistemi operativi. Quelli dedicati sono i

primi, e gestiscono ancora un solo programma alla volta, presentano un nucleo

semplice. Dopo ulteriori evoluzioni (batch-code di lavori riunite in un lotto ed

eseguite senza interruzioni) per gestire il problema della lentezza del

trasferimento di dati da massa, poichè la CPU più veloce rimaneva in attesa,si

passò ai sistemi operativi multiprogrammati che mentre eseguivano una task

preparavano l'altro tramite un canale che gestisce l'I/O, in particolare quando

viene richiesto da un processo un servizio di I/O da un programma in

esecuzione, l'esecuzione si blocca per gestire gli ingressi e parte un altra

operazione in attesa che i dati siano pronti. La coda è gestita secondo delle

priorità (scheduling) ma il sistema non differenzia tra programi che effettuano

maggiori accessi in memoria e sono quindi più lenti, da ciò deriva un

rallentamento nell'esecuzione. Per ovviare anche a questo problema si

svilupparono i sistemi operativi time sharing in cui il tempo di esecuzione

veniva diviso in quanti e a ogni quanto la cpu veniva riservata ciclicamente

per ogni programma, dando l'illusione di parallelismo dell'esecuzione.

Si descriva l’architettura di una generica CPU evidenziando in

particolare le funzioni che vengono svolte dall’IR e dall’unità di

controllo e commentando il coinvolgimento delle risorse della CPU

durante la fase di execute dell’istruzione. Si motivi infine la

necessità di prevedere un collegamento bidirezionale fra PC e bus

Dettagli
Publisher
A.A. 2017-2018
8 pagine
8 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher UNSIGNED di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica 1 e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pavia o del prof Danese Giovanni.