Per ciascun capitolo dovrebbe preparare un numero di...

13
CAPITOLO 2 Soluzioni agli esercizi del libro: 2) 6 3) Utilizzando i simboli 0, 1 e 2 e considerando che sono necessarie 2 cifre per rappresentare 9 possibilità, è possibile ad esempio la codifica (00-lunedì), (01-martedì), (02-mercoledì), (10- giovedì), (11-venerdì), (12-sabato), (20-domenica) 4) 10001011, 1000.01 5) 12011, 22112 6) 00010011, 11011010 7) 10101 + 1101 = 100010; 100011 – 10010 = 10001; 10000001 + 10000011 = 00000100 con overflow 11) Si consideri che 2^10 = 1024 e 2^20 = (2^10)^2 = 1024^2 = 1048576 e che 2^4 = 16 < 20 < 2^5 =32. Per rappresentare in binario 20 milioni di valori è quindi sufficiente utilizzare 5 + 20 = 25 bit. Poiché ad ogni cifra esadecimale corrispondono 4 bit (2^4 = 16) ne consegue che sono sufficienti sequenze di 7 cifre esadecimali (25 / 4 = 6.25 da arrotondare a 7) 12) 73; 1001001; 16781313 13) 00100011 + 00010010 = 00110101; 00100011 - 00010010 = 00010001; 01100101 + 00110011 = 10011000 con overflow; 01100101 - 00110011 = 00110010 15) Complemento a 2 binario (a) 0 1011 1111, 10 0111 1101; (b) 0000 0000 1011 1111, 1111 1110 0111 1101. Complemento a 2 ottale: (a) 277, 7175; (b) 000277, 777175. Complemento a 2 esadecimale (a) 0BF, E7D; (b) 00BF, FE7D Introduzione ai sistemi informatici 5/ed Donatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

Transcript of Per ciascun capitolo dovrebbe preparare un numero di...

CAPITOLO 2

Soluzioni agli esercizi del libro:

2) 6

3) Utilizzando i simboli 0, 1 e 2 e considerando che sono necessarie 2 cifre per rappresentare 9

possibilità, è possibile ad esempio la codifica (00-lunedì), (01-martedì), (02-mercoledì), (10-

giovedì), (11-venerdì), (12-sabato), (20-domenica)

4) 10001011, 1000.01

5) 12011, 22112

6) 00010011, 11011010

7) 10101 + 1101 = 100010; 100011 – 10010 = 10001; 10000001 + 10000011 = 00000100 con

overflow

11) Si consideri che 2^10 = 1024 e 2^20 = (2^10)^2 = 1024^2 = 1048576 e che 2^4 = 16 < 20 < 2^5

=32. Per rappresentare in binario 20 milioni di valori è quindi sufficiente utilizzare 5 + 20 = 25 bit.

Poiché ad ogni cifra esadecimale corrispondono 4 bit (2^4 = 16) ne consegue che sono sufficienti

sequenze di 7 cifre esadecimali (25 / 4 = 6.25 da arrotondare a 7)

12) 73; 1001001; 16781313

13) 00100011 + 00010010 = 00110101; 00100011 - 00010010 = 00010001; 01100101 + 00110011

= 10011000 con overflow; 01100101 - 00110011 = 00110010

15) Complemento a 2 binario (a) 0 1011 1111, 10 0111 1101; (b) 0000 0000 1011 1111, 1111 1110

0111 1101. Complemento a 2 ottale: (a) 277, 7175; (b) 000277, 777175. Complemento a 2

esadecimale (a) 0BF, E7D; (b) 00BF, FE7D

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

CAPITOLO 3

Soluzioni agli esercizi del libro:

4) Una soluzione possibile è basata sull’utilizzo della notazione unaria per i numeri, che prevede di

rappresentare un numero con una sequenza di simboli uguali (ad esempio il simbolo 1) lunga

quanto il numero. I due addendi siano scritti di seguito sul nastro, separati da una loczione vuota

(denotata dal simbolo 0). La macchina, a partire dalla prima locazione del nastro che verrà

cancellata, scorrerà il nastro fino alla locazione vuota di separazione, che sarà sovrascritta con un 1.

A questo punto la macchina tornerà indietro sul nastro fino alla prima locazione vuota per poi

arrestarsi sulla locazione precedente alla prima locazione che contiene il risultato (anche esso

rappresentato nella stessa notazione).

Stato Letto Vai a Scrivi Sposta

S0 1 S1 * Destra

S1 1 S1 1 Destra

S1 * S2 1 Sinistra

S2 1 S2 1 Sinistra

12)

inizio

i <- 0

i < n

fine

NO

SI

leggi N

a)

leggi v[i]

i <- i+1

inizio

fine

leggi N

b)

carica N

valori in v[ ]

usando a)

inizio

Risultato <- 0

Resto <- 0

i <- 1

Resto >=

Divisore

fine

NO

SI

leggi Dividendo

leggi Divisore

c)

j <- 1

Resto <- Resto +

i-esima cifra del

dividendo

Resto >=

j*Divisore

Risultato <-

Risultato*10 + j

Resto <- Resto –

j*Divisore

j <- j + 1

i <- i + 1

i > numero

cifre dividendo

NO

SI

stampa Risultato

stampa Resto

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

inizio

i <- 0

Somma <- 0

Cont <- 0

i < m

fine

NO

SI

d)

scrivi Cont

scrivi Somma

Cont <- Cont + 1

Somma <- Somma + v[i]

v[i] – 2*[v[i]/2]

= 0

SI

NO

inizio

j <- 0

Cont <- 0

j < n

fine

NO

SI

f)

scrivi Cont

Cont <- Cont + risultato

del passo precedente

j <- j + 1

applica d) alla

j-esima riga di

M[ ][ ]

m: lunghezza nota del

vettore v[ ]

n, m: dimensioni note della

matrice M[ ][ ]

inizio

i <- 0

Cont <- 0

i < n

fine

NO

SI

e)

scrivi Cont

Cont <- Cont + 1

j < m

SI

NO

n, m: dimensioni note della

matrice M[ ][ ]

j < m

j <- j + 1

i <- i + 1

SI

NO

j <- 0

inizio

i < n

fine

NO

SI

g)

temp <- M[i][C1]

M[i][C1] <- M[i][C2]

M[i][C2] <- Temp

n, m: dimensioni note della

matrice M[ ][ ]

leggi C1

leggi C2

i <- 0

i <- i + 1

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

13) Le due espressioni sono equivalenti: si può partire dalla seconda espressione e considerare che

!a c !a !b c + !a b c. Si ottiene !a c + !a !b !c + a b c !a !b c + !a b c + !a !b !c + a b c. Si può

raccogliere il primo con il terzo termine e il secondo con il quarto. Si ottiene !a !b c + !a !b !c + !a b

c + a b c !a !b (c + !c) + b c (!a + a) !a !b + b c. In alternativa, ragionando in forma tabellare si

ha:

a b c !a!b bc !a!b+bc !ac !a!b!c abc !ac+!a!b!c+abc

F F F T F T F T F T

F F T T F T T F F T

F T F F F F F F F F

F T T F T T T F F T

T F F F F F F F F F

T F T F F F F F F F

T T F F F F F F F F

T T T F T T F F T T

14, 15, 16 e 17)

inizio

N <= 0

fine

NO

SI

leggi Min

14)

Min <- N

inizio

Somma <- N

Max <- N

Min <- N

i <- 1

N <= 0

fine

SI

NO

leggi N

15)

i <- i + 1

N > Max

Somma <-

Si ipotizzi per semplicità

almeno un valore validoSi ipotizzi per semplicità

almeno un valore valido

leggi N

leggi N

Somma + N

Max <- N

NO

stampa Min

stampa Max

stampa Somma/i

N < Min

SI

NO

stampa Min

N < Min Min <- N

NO

SI

SI

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

16) Si ipotizzi per semplicità inizio

N >= 1

i <- 0

i = 0

leggi N

fine

SI

NO

Somma <-

Somma + x

x > Max

i <- i + 1

Max <- x

NO

stampa Min

stampa Max

stampa Somma/N

x < Min Min <- x

NO

i

SI

< NNO

leggi x

Somma = x

Min = x

Max = x

SI

SI

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

inizio

leggi Giorno

17)

fine

stampa

errore

Giorno <= 0SI

NO

leggi Mese

Mese <= 0SI

NO

Mese > 12SI

NO

leggi Anno

Anno <= 0SI

NO

Anno divisibile

per 400

SI

NO

Anno divisibile

per 4

Anno divisibile

per 100

NO

SI

SINO

Bisestile

<- 1

Bisestile

<- 0

Mese = 1SI

NO

Mese = 2

NO

Mese = 3

Mese = 4

SI

NO

SI

Mese = 5SI

NO

Mese = 6

SI

NO

Mese = 7

Mese = 8

SI

NO

SI

Mese = 9SI

NO

Mese = 10

SI

NO

Mese = 11SI

NO

SI

NO

NO

Prec <- 0

Ultimo <- 31

Prec <- 31

Ultimo <- 28 +

Bisestile

Prec <- 59

+ Bisestile

Ultimo <- 31

Prec <- 90

+ Bisestile

Ultimo <- 30

Prec <- 120

+ Bisestile

Ultimo <- 31

Prec <- 151

+ Bisestile

Ultimo <- 30

Prec <- 181

+ Bisestile

Ultimo <- 31

Prec <- 212

+ Bisestile

Ultimo <- 31

Prec <- 243

+ Bisestile

Ultimo <- 30

Prec <- 273

+ Bisestile

Ultimo <- 31

Prec <- 304

+ Bisestile

Ultimo <- 30

Prec <- 334

+ Bisestile

Ultimo <- 30

Giorno >

Ultimo

SI

NO

fine

stampa Prec

+ Giorno

Una soluzione migliore si ottiene impiegando un vettore che per ogni mese memorizza le

informazioni relative (Prec e Ultimo): in tal caso la parte destra del diagramma (in cui si valuta il

mese e si impostano Prec e Ultimo) si riduce a un solo blocco azione che lavora sul vettore.

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

18) E’ sufficiente mettere in OR i termini AND della tabella a cui corrisponde un valore V: !a!b!c +

!a!bc + ab!c + abc. Si noti che i quattro termini differiscono a coppie per una variabile (presente in

forma negata e affermata): pertanto tale variabile non influisce sul risultato e l’espressione si

semplifica in !a!b + ab.

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

CAPITOLO 4

Soluzioni agli esercizi del libro:

8)

Problema 1.1

Dati

x, y, d interi

Risoluzione

leggi a e b

d <- a – b

se d > 0

allora

scrivi “max è x”

altrimenti

scrivi “max è y”

fine se

fine

Problema 1.3

Dati

a, b, m interi

Risoluzione

leggi a e b

m <- max(a,b)

finchè ci sono altri numeri da esaminare ripeti

leggi a

m <- max(a, m)

fine ciclo

scrivi “max è m”

fine

Esempio 2

Dati

n, ris, i interi positivi

Risoluzione

leggi n

ris <- 0

i <-0

finchè i < n ripeti

ris <- ris + i

i <- i + 1

fine ciclo

scrivi ris

fine

Problema 5.1

Dati

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

i, temp, v[n] interi

Risoluzione

i <- 0

finchè i < n/2

temp <- v[i]

v[i] <- v[n-i-1]

v[n-i-1] <- temp

i <- i

fine ciclo

fine

Problema 5.2

Dati

s[m], v[n] simboli

j, i interi

Risoluzione

i <- 0

finchè m < n- i ripeti

j <- 0

finchè v[i+j] = s ripeti

se j=m allora

scrivi “si”

fine

altrimenti

j <- j + 1

fine se

fine ciclo

i <- i + 1

fine ciclo

scrivi “no”

fine

Problema 5.3

Dati

l, i, temp, v[n] interi

Risoluzione

l <- n

finchè l > 1 ripeti

i <- 0

finchè i < l-1 ripeti

se v[i] > v[i+1]

allora

temp <- v[i]

v[i] <- v [i+1]

v[i+1] <- temp

fine se

i <- i+1

fine ciclo

l <- l - 1

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

fine ciclo

fine

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

CAPITOLO 5

Soluzioni agli esercizi del libro:

8) Per ogni simbolo devono essere trasmessi 8 bit. La banda del canale permette 10kbit/secondo,

quindi la sorgente può emettere simboli a una velocità massima di 10/8=1,25ksimboli/secondo.

9) Da quanto detto riguardo gli errori sul canale è sufficiente rilevare errori su un solo bit per

simbolo per rilevare la maggior parte degli errori di trasmissione, risultato ottenibile con l’uso di un

bit di parità. Per ogni simbolo di sorgente servono quindi 9 bit (8+1) e quindi il flusso di sorgente

espresso in bit che il canale deve poter sostenere è di 10 ksimboli/secondo * 9 bit/simbolo = 90

kbit/secondo.

10) Il flusso deve arrivare integro, quindi è necessario innanzi tutto rilevare gli errori e poi

ritrasmettere i blocchi errati in tempo. Semplificando, assumiamo che i pacchetti ritrasmessi non

siano ulteriormente affetti da errore (0,02 * 0,02 = 0,004): è necessario considerare che la sorgente

deve generare il flusso più il 2% che viene ritrasmesso, mentre il canale deve trasportare il flusso, i

bit di parità e il 2% di blocchi ritrasmessi comprensivi di bit di parità. Quindi la sorgente deve

generare 100 kbit/secondo * 1.02 = 102 kbit/secondo e il canale deve poter trasportare (100

kbit/secondo + 100 kbit/secondo / 100 bit/blocco * 1 bit/blocco) * 1.02 = 101 kbit/secondo * 1.02 =

103.02 kbit/secondo.

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

CAPITOLO 6

Soluzioni agli esercizi del libro:

5)

IR = MI[PC], PC = PC + 1;

BR[SRC1] = R02, BR[SRC2] = R03, BR[DEST] = R01;

ALU.OR(BR[R02], BR[R03]);

BR[R01] = ALU.

6) ERRATUM: La percentuale di istruzioni del tipo A è 78%. Si consideri una sequenza di N

istruzioni. Il tempo medio di esecuzione di una istruzione senza pipeline è 0.8*30 ns + 0.1*40 ns +

0.1*35 ns = 24 ns+ 4 ns + 3.5 ns = 31.5 ns; il tempo complessivo speso senza pipeline per una

sequenza di N istruzioni è 31.5N. Il tempo complessivo speso per una sequenza di N istruzioni con

pipeline è dato dal tempo speso per la prima istruzione più il tempo speso per le rimanenti N-1

istruzioni nel primo stadio, e quindi è 50 ns + 10*(N–1) ns = (40 + 10N) ns. Il miglioramento è dato

dal tempo speso senza pipeline meno il tempo speso con la pipeline normalizzato al tempo speso

senza pipeline: (31.5N – 40 – 10N) ns / 31.5N ns = 21.5/31.5 – 40/31.5N = 43/63 – 80/63N. Il

valore limite del miglioramento (N ) è 43/63 = 68.25%, quindi il miglioramento richiesto è

possibile e si ottiene quando 31.5N > 3*(40 + 10N) -> 31.5N > 120 + 30N -> 1.5N > 120 -> N > 80.

8) Nel primo caso si ha TA = 0.9 * 2 + 0.1 * 20 = 1.8 + 2.0 = 3.8; nel secondo caso si ha TA = 0.8 *

2 + 0.2 * (0.8 * 4 + 0.2 * 20) = 1.6 + 0.2 * (3.2 + 4.0) = 1.6 + 1.44 = 3.04; nel terzo caso si ha TA =

0.8 * 2 + 0.2 * (x * 5 + (1 – x)* 20) = 1.6 + 0.2 * (20 – 15x) = 5.6 – 3x. La seconda soluzione è

migliore della prima. La terza soluzione è migliore della seconda quando 5.6 – 3x < 3.04, cioè 3x >

2.56, da cui x > 0.8533 (85.33%).

9) Nel primo caso si ha TA = 0.9 * 2 + 0.1 * 8 = 1.8 + 0.8 = 2.6; nel secondo caso si ha TA = 0.8 *

2 + 0.2 * (0.8 * 4 + 0.2 * 8) = 1.6 + 0.2 * (3.2 + 1.6) = 1.6 + 0.96 = 2.56; nel terzo caso si ha TA =

0.8 * 2 + 0.2 * (x * 5 + (1 – x)* 8) = 1.6 + 0.2 * (8 – 3x) = 3.2 – 0.6x. La seconda soluzione è

migliore della prima. La terza soluzione non può essere mai migliore della seconda perché al

massimo arriva a 2.6 (quindi pari alla prima). In pratica la disequazione 3.2 – 0.6x < 2.56 impone

che x > (3.2–2.56)/0.6 = 0.64/0.6 = 1.06, ma x non può essere maggiore di 1 (la frequenza di

successo non può superare il 100%), quindi non c’è nessuna possibilità che la terza soluzione sia

migliore della seconda e potrà al limite (!!) essere uguale alla prima.

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl

CAPITOLO 7

Soluzioni agli esercizi del libro:

5) Rimangono:

01: start (processo inizia in stato pronto)

03: termina esecuzione (modo kernel)

09: è il primo in coda e tocca a lui (contemporanea a 03 o 10 oppure 17)

10: preempt (quanto di tempo scaduto)

11: è arrivato l’evento atteso (vedi 17)

13: interrupt o SVC (supervisor call)

14: RTI (ritorno da Interrupt/SVC)

17: serve qualcosa dall’esterno (aspetta un evento)

Eliminate: 02 04 05 06 07 08 12 15 16 18 19 20

6) P1 è stato deschedulato perché ha richiesto una operazione che richiede una risorsa esterna e

quindi ha seguito il percorso (5,7); P2 era pronto e ha preso il posto di P1 in esecuzione seguendo il

percorso (2,4); P3 è stato sbloccato dall’arrivo dell’evento esterno che attendeva ed è passato tra i

processi pronti (8)

8) E’ necessario procedere al calcolo della dimensione degli indirizzi: le pagine sono di 512 kByte

ciascuna, quindi sono necessari 19 bit di offset; la memoria fisica è di 2 GByte, quindi sono

necessari 31 bit di indirizzo fisico (di cui 12 vanno ad indicare il numero di pagina fisica e 19

l’offset). Nel caso di una memoria virtuale di 1/2/4 GByte, sono necessari 30/31/32 bit di indirizzo

virtuale (ovvero 11/12/13 per il numero di pagina e 19 per l’offset). Le dimensioni della tabella

delle pagine sono date dal numero di celle (2^bit necessari per il numero di pagine) per il numero di

bit necessario a memorizzare il numero della pagina fisica corrispondente, cioè

1. per una memoria virtuale di 1 GByte: 2^11 celle × 12 bit/cella = 2048 × 12 bit = 24576 bit

2. per una memoria virtuale di 2 GByte: 2^12 celle × 12 bit/cella = 4096 × 12 bit = 49152 bit

3. per una memoria virtuale di 4 GByte: 2^13 celle × 12 bit/cella = 8192 × 12 bit = 98304 bit

Introduzione ai sistemi informatici 5/edDonatella Sciuto, Giacomo Buonanno, Luca Mari Copyright © 2016 – McGraw-Hill Education (Italy) Srl