Sei sulla pagina 1di 150

Set Domande: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI

INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)


Docente: Ducange Pietro

Lezione 007
01.  Da punto di vista funzionale, una rete logica è caratterizzata da:

 Stati di ingresso, stati di uscita e una legge di evoluzione nel tempo

 Stati Interni e Stati di uscita

 Stati di Ingresso e stati di uscita

 Stati di Ingresso e stati Interni

02.  Le reti combinatorie sono delle reti:

 Nessuna delle altre opzioni

 A volte sincronizzate e a volte asincrone

 Asincrone

 Sincronizzate

03.  Una variabile logica si resetta quando:

 Transisce da 0 a 1

 Nessuna delle altre opzioni

 Resta sempre a 0

 Transisce da 1 a 0

04.  Cosa è la fascia di indeterminazione del segnale ?

05.  Descrivere una rete logica a livello funzionale.

06.  Cosa significa settare e resettare una variabile logica?

07.  Quale è la differenza fra reti sincrone ed asincrone?

08.  Come si classificano le reti logiche?

09.  Descrivere il problema della contemporaneità.


Lezione 008
01.  La descrizione funzionale e la legge di evoluzione nel tempo di una rete combinatoria:

 Sono la stessa cosa

 Nessuna delle altre opzioni

 Non servono a niente

 Potrebbero non esserci

02.  Cosa è una rete combinatoria?

 Una rete il cui stato di uscita dipende solo dallo stato di ingresso

 Una rete il cui stato di uscita dipende dallo stato di ingresso e dello stato interno

 Una rete il cui stato di uscita dipende dallo stato interno

 Una rete il cui stato di uscita è indipendente dallo stato di ingresso

03.  Una rete combinatoria si dice a regime:

 Quando l'uscita è stabile a fronte di un ingresso stabile

 Quando l'uscita non cambia

 Quando oscilla

 Quando l'ingresso non cambia

04.  Gli stati di ingresso di una rete combinatoria:

 Possono cambiare solo dopo che la rete è a regime

 Possono cambiare in qualsiasi momento

 Non possono cambiare

 Possono cambiare solo dopo 20ms

05.  Quando una rete combinatoria si dice a regime?

06.  Cosa significa rete combinatoria pilotata in modo fondamentale?

07.  Cosa si intende per tempo di attraversamento?

Lezione 009
01.  Le porte logiche AND e OR:

 Nessuna delle altre opzioni

 Hanno solo due ingressi

 Possono solo avere un numero di ingressi multiplo di 2

 Si ragruppano a due a due

02.  I generatori di costanti sono reti a:

 Due Ingressi

 Zero Ingressi

 Nessuna delle altre opzioni

 Un Ingresso

03.  Dimostrare (tramite un opportuno esempio) che connettendo ad albero porte NAND (oppure NOR) a due ingressi non si ottiene una generalizzazione della
funzione logica descritta per porte a due ingressi.

04.  Descrizione funzionale e tabella di verità di una porta logica elementare Nand

05.  Descrizione funzionale e tabella di verità di una porta logica elementare XOR

06.  Descrizione funzionale e tabella di verità di una porta logica elementare Or


Lezione 010

01.   L'immagine in

figura mostra la sintesi circuitale di un:

 Nessuna delle altre opzioni Multiplexer


 Decoder con enabler

 Demultiplexed

 Decoder

02.   L'immagine in figura mostra la

sintesi circuitale di un:

 Decoder

 Multiplexer

 Demultiplexed

 Nessuna delle altre opzioni


03.   L'immagine in figura mostra la sintesi circuitale

di un:

 Demultiplexed

 Multiplexer

 Nessuna delle altre opzioni

 Decoder

04.  Che differenza c'é fra un decoder con enabler e un demultiplexer?

05.  Cosa significa che un multiplexer è una rete combinatoria universale?

06.  Definizione e sintesi circuitale di un decoder 2 to 4


Lezione 011
01.  Esiste differenza fra mintermini, implicanti e implicanti principali?

 Si, le differenze sono sostanziali

 Si, ma le differenze sono impercettibili

 No, non ci sono differenze

 Si, ma non significative

02.  Cosa significa sintesi in forma SP in forma canonica?

 L'uscita della rete combinatoria è ottenuta come somma di prodotti e ogni prodotto contiene tutti gli ingressi

 L'uscita della rete combinatoria è ottenuta come somma di prodotti e ogni somma contiene tutti gli ingressi diretti o negati

 L'uscita della rete combinatoria è ottenuta come somma di prodotti e ogni somma contiene tutti gli ingressi

 L'uscita della rete combinatoria è ottenuta come somma di prodotti e ogni prodotto contiene tutti gli ingressi diretti o negati

03.  A cosa servono le mappe di Karnaugh?

 Servono per rappresentare le leggi combinatorie e per la sintesi di reti combinatorie

 Servono per rappresentare le leggi combinatorie e solo per la sintesi di reti combinatorie solo a porte AND

 Non sono presenti nel programma del corso

 Servono per rappresentare le leggi combinatorie e solo per la sintesi di reti combinatorie solo a porte OR

04.  Cosa sono i sottocubi nelle mappe di Karnaugh?

Lezione 012
01.  Nella sintesi a porte NAND di una rete combinatoria:

 Si suppone di avere una rete logica combinatoria già sintetizzata come Somma di Prodotti

 Si suppone di avere una rete logica combinatoria già sintetizzata come Prodotto di Somme

 Non si suppone nulla

 Ci vuole già una base di sintesi a porte NAND

02.  Perché le porte NAND e NOR sono dette universali?

 Perché ogni porta logica può essere fatta usando esclusivamente porte NOR

 Perché ogni porta logica può essere fatta usando esclusivamente porte NAND (o usando esclusivamente porte NOR).

 Nessuna delle altre opzioni

 Perché ogni porta logica può essere fatta usando esclusivamente porte NAND

03.  E' possible realizzare una porta NOT con le porte universali?

 Si, solo con le porte NAND

 No

 Si, solo con le porte NOR

 Nessuna delle altre opzioni

04.  Nella sintesi a porte NOR di una rete combinatoria:

 Si suppone di avere una rete logica combinatoria già sintetizzata come Prodotto di Somme

 Ci vuole già una base di sintesi a porte NOR

 Si suppone di avere una rete logica combinatoria già sintetizzata come Somma di Prodotti

 Non si suppone nulla

05.  Perché le porte NAND e NOR sono dette universali?

06.  Esempio di sintesi a porte NAND (NOR) da sintesi SP (PS)

07.  Differenza fra sintesi SP e PS


Lezione 013
01.  Una rete sequenziale asincrona viene pilotata in maniera fondamentale se:

 Nessuna delle altre opzioni (Mantenuto ingresso alto per tutto il tempo che occorre alla rete per diventare stabile)

 Se gli stati di ingresso successivi sono adiacenti

 Se lo stato interno viene aggiornato dopo 20 ms

 Il nuovo stato di ingresso viene fornito dopo 20 ms

02.  Quali sono le differenza fra le reti sequenziali asincrone e le reti combinatorie?

 Nessuna delle altre opzioni

 Nessuna, in entrambi lo stato di uscita dipende dallo stato di ingresso

 Nessuna, entrambe hanno degli elementi di memoria per marcare lo stato interno

 Nelle reti sequenziali asincrone estitono elementi di memoria per marcare gli stati interni, nelle reti combinatorie no

03.  Cosa è una rete sequenziale asincrona?

 E' una rete sempre in evoluzione il cui stato di uscita dipende dallo stato di ingresso

 E' una rete sempre in evoluzione il cui stato interno dipende dall'uscita precedente

 E' una rete sempre in evoluzione il cui stato di uscita dipende dallo stao interno marcato e dallo stato di ingresso

 E' una rete sempre in evoluzione il cui stato di ingresso dipende dallo stato interno

04.  Quale è la corretta descrizione a parole del Flip-Flop SR?

 Il FF-SR si comporta nel seguente modo:

- se la variabile s è alta (vale 1) e la variabile r è alta (vale 1), l'uscita viene posta al livello alto (set),
- se la variabile s è bassa e la variabile r è alta, l'uscita viene posta al livello basso (reset);
- se entrambi gli ingressi sono bassi, l'uscita mantiene il valore precedente Il comportamento della rete non è definito se entrambi gli ingressi sono alti

 Il FF-SR si comporta nel seguente modo:

- se la variabile s è bassa (vale 0) e la variabile r è bassa (vale 0), l'uscita viene posta al livello alto (set),
- se la variabile s è bassa e la variabile r è alta, l'uscita viene posta al livello basso (reset);
- se entrambi gli ingressi sono bassi, l'uscita mantiene il valore precedente Il comportamento della rete non è definito se entrambi gli ingressi sono alti

 Il FF-SR si comporta nel seguente modo:

- se la variabile s è alta (vale \) e la variabile r è bassa (vale 0), l'uscita viene posta al livello basso (reset),
- se la variabile s è bassa e la variabile r è alta, l'uscita viene posta al livello alto (set);
- se entrambi gli ingressi sono bassi, l'uscita mantiene il valore precedente Il comportamento della rete non è definito se entrambi gli ingressi sono alti

 Il FF-SR si comporta nel seguente modo:

- se la variabile s è alta (vale 1) e la variabile r è bassa (vale 0), l'uscita viene posta al livello alto (set),
- se la variabile s è bassa e la variabile r è alta, l'uscita viene posta al livello basso (reset);
- se entrambi gli ingressi sono bassi, l'uscita mantiene il valore precedente Il comportamento della rete non è definito se entrambi gli ingressi sono alti

05.  Descrivere un riconoscitore di sequenza con il suo diagramma (oppure tabella) di flusso.

06.  Cosa si intende per stabilità di una rete sequenziale asincrona?

07.  Disegnare il diagramma di temporizzazione del flip-flop SR.


Lezione 014
01.  Quando si deve utilizzare una stato ponte nella sintesi di reti sequenziali asincrone?

 Quando esistono delle transizioni fra stati interni identificati le cui codifiche non sono adiacenti

 Quando non bastano i bit per le codifiche degli stati interni

 Quando ci sono pochi stati interni

 Nessuna delle altre opzioni

02.  Quando una tabella di flusso si dice normale?

 Quando partendo da ogni stato interno stabile, al variare dell'ingresso, o si rimante in tale stato, oppure si va a finire in un nuovo stato

 Quando partendo da ogni stato interno al variare dell'ingresso, o si rimante in tale stato, oppure si va a finire in un nuovo stato stabile

 Nessuna delle altre opzioni

 Quando partendo da ogni stato interno stabile, al variare dell'ingresso, o si rimante in tale stato, oppure si va a finire in un nuovo stato stabile

03.  Quando una rete sequenziale asincrona è priva di alee essenziali?

 Nessuna delle altre opzioni

 Si analizza la tabella di flusso che deve essere normale. Se partendo da uno stato stabile e variando di un bit lo stato di ingresso, si finisce in uno stato stabile X, e tale
stato stabile X è lo stesso nel quale si finisce variando altre due volte lo stesso bit di ingresso

 Si analizza la tabella di flusso che deve essere normale. Se partendo da uno stato stabile e variando di un bit lo stato di ingresso, si finisce in uno stato stabile X, e tale
stato stabile X è diverso da quello in cui si finisce variando altre due volte lo stesso bit di ingresso

 Si analizza la tabella di flusso che deve essere normale. Se partendo da uno stato stabile e variando di un bit lo stato di ingresso, si finisce in uno stato stabile X, e tale
stato stabile X è lo stesso nel quale si finisce variando un'altra volta lo stesso bit di ingresso

04.  Il modello strutturale per la sintesi di reti sequenziali asincrone prevede:

 La presenza di: i) una rete combinatoria A per la generazione dello stato interno successivo, ii) un meccanismo di retroazione per riportare lo stato interno attuale in
ingresso alla rete A, iii) una seconda rete combinatoria B per generale lo stato di uscita in base allo stato interno attuale

 La presenza di: i) una rete combinatoria A per la generazione dello stato interno successivo, ii) un elemento di ritardo, iii) una seconda rete combinatoria B per generale
lo stato di uscita in base allo stato interno attuale

 La presenza di: i) una rete combinatoria A per la generazione dello stato interno successivo, ii) un elemento di ritardo, iii) un meccanismo di retroazione per riportare lo
stato interno attuale in ingresso alla rete A, iv) una seconda rete combinatoria B per generale lo stato di uscita in base allo stato interno attuale

 La presenza di: i) una rete combinatoria A per la generazione dello stato interno successivo, ii) una seconda rete combinatoria B per generale lo stato di uscita in base allo
stato interno attuale

05.  Riportare la sintesi completa di un riconoscitore di sequenza 01, 11, 10

06.  Descrivere il modello strutturale con ritardo per la sintesi delle reti sequenziali asincrone (Schema grafico e discussione di ciascun componente)
Lezione 015
01.  Si possono eliminare i ritardi di marcatura per gli stati interni nella sintesi a porte NAND di un flip-flop SR commerciale?

 Si, perché basta il ritardo introdotto dalle porte NAND

 Si, perché basta il ritardo introdotto dalle porte NOT

 No, è necessario inserire un livello di logica di ritardo

 Nessuna delle altre opzioni

02.  Quanti stati interni si utilizzano nella sintesi di un flip-flop SR commerciale?

 3

 2

 4

 1

03.  Quale è la corretta descrizione a parole del Flip-Flop D-Latch?

- Il flip flop D-latch è dotato di due ingressi (p e d) ed una uscita q.


- Memorizza il valore dello stato di ingresso d (quindi, memorizza un bit) sul fronte in discesa di p (trasparenza).
- Quando p vale 1, invece, è in conservazione, cioè mantiene in uscita (memorizza) l'ultimo valore che d ha assunto.
- Quindi, il FF D-latch una rete che può trovarsi in due stati, uno nel quale ha memorizzato il valore 0 ed uno nel quale ha memorizzato il valore 1.

- Il flip flop D-latch è dotato di due ingressi (p e d) ed una uscita q.


- Memorizza il valore dello stato di ingresso d (quindi, memorizza un bit) sul fronte in salita di p (trasparenza).
- Quando p vale 0, invece, è in conservazione, cioè mantiene in uscita (memorizza) l'ultimo valore che d ha assunto.
- Quindi, il FF D-latch una rete che può trovarsi in due stati, uno nel quale ha memorizzato il valore 0 ed uno nel quale ha memorizzato il valore 1.

- Il flip flop D-latch è dotato di due ingressi (p e d) ed una uscita q.


- Memorizza il valore dello stato di ingresso d (quindi, memorizza un bit) quando l'ingresso p vale 1 (trasparenza).
- Quando p vale 0, invece, è in conservazione, cioè mantiene in uscita (memorizza) l'ultimo valore che d ha assunto.
- Quindi, il FF D-latch una rete che può trovarsi in due stati, uno nel quale ha memorizzato il valore 0 ed uno nel quale ha memorizzato il valore 1.

- Il flip flop D-latch è dotato di due ingressi (p e d) ed una uscita q.


- Memorizza il valore dello stato di ingresso d (quindi, memorizza un bit) quando l'ingresso p vale 0 (trasparenza).
- Quando p vale 1, invece, è in conservazione, cioè mantiene in uscita (memorizza) l'ultimo valore che d ha assunto.
- Quindi, il FF D-latch una rete che può trovarsi in due stati, uno nel quale ha memorizzato il valore 0 ed uno nel quale ha memorizzato il valore 1.

04.  Disegnare la sintesi a porte NAND del FF-SR. Si possono eliminare i ritardi di marcatura? Perché'?

05.  Riportare la temporizzazione del FF D-latch.

06.  Sintetizzare un FF-SR considerando il modello strutturale ad elementi di ritardo (considerare la presenza dell'uscita affermata e negata).
Lezione 016
01.  Quale è il principale problema legato al fatto che il FF D-latch è trasparente quando l'ingresso p è a 1?

 Nessuno

 Nessuna delle altre opzioni

 Non si può memorizzare in un FF D-Latch niente che sia funzione dell'ingresso p

 Non si può memorizzare in un FF D-Latch niente che sia funzione dell'uscita q

02.  Cosa si intende per modello strutturale con Flip-flop SR per la sintersi di reti sequenziali asincrone?

 Si tratta di un modello in cui si utilizzano i flip-flop SR come elemento di ritardo.

 Si tratta di un modello in cui si utilizzano i flip-flop SR come supporto agli stati di ingresso

 Si tratta di un modello in cui si utilizzano i flip-flop SR come supporto agli stati di uscita

 Nessuna delle altre opzioni

03.  Quali sono i vantaggi sella sintesi per reti sequenziali asincrone con modello strutturale con Flip-Flop SR?

 Permette di utilizzare meno stati di interni per risolvere lo stesso problema

 Nessuno, è solo una modalità diversa per marcare gli stati interni

 Potrebbe non essere necessario inserire elementi di ritardo per la propagazione del nuovo stato interno e spesso il costo della sintesi finale risulta inferiore al modello
classico con elementi di ritardo

 Nessuna delle altre opzioni

04.  Quale è la corretta descrizione a parole del Flip-Flop D-positive edge triggered?

- Flip-Flop D-positive edge triggered è dotato di due ingressi (p e d) ed una uscita q.


- E' sensibile a d soltanto a cavallo del fronte in salita di p, per un tempo breve .
- L'ingresso d viene campionato sul fronte di salita di p.
- Per tutto il (breve) tempo in cui il Flip-Flop D-positive edge triggered è sensibile alla variabile di ingresso d, la variabile di uscita q è in corto circuito con l'ingresso d.
- L'uscita q viene adeguata al valore campionato di d mentre la rete è sensibile al valore di d

- Flip-Flop D-positive edge triggered è dotato di due ingressi (p e d) ed una uscita q.


- E' sensibile a d soltanto a cavallo del fronte di cambio di p, per un tempo breve .
- L'ingresso d viene campionato sul fronte di cambio di p.
- Per tutto il (breve) tempo in cui il Flip-Flop D-positive edge triggered è sensibile alla variabile di ingresso d, la variabile di uscita q è disconnessa dall'ingresso.
- L'uscita q viene adeguata al valore campionato di d dopo che la rete ha smesso di essere sensibile al valore di d

 Nessuna delle altre opzioni

- Flip-Flop D-positive edge triggered è dotato di due ingressi (p e d) ed una uscita q.


- E' sensibile a d soltanto a cavallo del fronte in salita di p, per un tempo breve .
- L'ingresso d viene campionato sul fronte di salita di p.
- Per tutto il (breve) tempo in cui il Flip-Flop D-positive edge triggered è sensibile alla variabile di ingresso d, la variabile di uscita q è disconnessa dall'ingresso.
- L'uscita q viene adeguata al valore campionato di d dopo che la rete ha smesso di essere sensibile al valore di d

05.  Riportare la Sintesi del FF D-latch usando il modello strutturale con FF-SR.

06.  Riportare la sintesi del Flip Flop D-positive-edge-triggered (FF-DET) usando il modello strutturale con FF-SR

07.  Riportare la sintesi del riconoscitore di sequenza 01 11 10 usando il modello strutturale con FF-SR.
Lezione 017
01.  Le memorie RAM statiche sono:

 Nessuna delle altre opzioni Matrici D-Latch


 Matrici di condensatori

 Matrici di Flip-Flop SR

 Matrici di Flip-flop D-Positive Edge Triggered

02.  I piedini di una memoria RAM statica sono:

 Indirizzi (in ingresso), Dati (in uscita), Selezione del Banco (in ingresso), Selezione per la lettura (in ingresso), Selezione per la Scrittura (in ingresso)

 Indirizzi (in ingresso), Dati (bidirezionali), Selezione del Banco (in ingresso), Selezione per la lettura (in uscita) Selezione per la Scrittura (in ingresso)

 Indirizzi (bidirezionali), Dati (bidirezionali), Selezione del Banco (in ingresso), Selezione per la lettura (in ingresso), Selezione per la Scrittura (in ingresso)

 Indirizzi (in ingresso), Dati (bidirezionali), Selezione del Banco (in ingresso), Selezione per la lettura (in ingresso), Selezione per la Scrittura (in ingresso)

03.  Le memorie RAM statiche sono:

 Reti sequenziali asincrone

 Reti sequenziali asincone con il segnale di clock

 Reti sequenziali sincronizzate

 Reti combinatorie

04.  Le memorie ROM sono:

 Reti sequenziali sincronizzate

 Reti sequenziali asincone con il segnale di clock

 Reti sequenziali asincrone

 Reti combinatorie

05.  Riportare un esempio di montaggio di una RAM statica in parallelo. Spiegare anche a cosa serve?

06.  Riportare un esempio di montaggio di una RAM statica in serie. Spiegare anche a cosa serve?

07.  Disegnare lo schema realizzativo di una RAM con Flip-flop D latch.


Lezione 018
01.  Indicare quali sono le corrette regole di pilotaggio dei registri:

 Nessuna delle altre opzioni

 Gli stati di ingresso si devono mantenere stabili intorno al fronte di salita del clock, per un tempo Tsetup prima e Thold dopo

 Stati di ingresso successivi devono essere adiacenti (non possono variare per più di un bit)

 Dato che i registri sono reti sequenziali sincronizzate non esistono regole di pilotaggio

02.  Il fatto che due stati di ingresso ai registri, presentati su istanti di clock (fronti di salita) consecutivi, siano identici, adiacenti o non adiacenti non riveste alcuna
importanza.

 Nessuna delle altre opzioni

 E' falso

 E' sempre vero

 E' vero solo se il registro è pilotato da una rete combinatoria a regime

03.  Che cosa è un registro?

 Una collezione di flip-flop D positive edge triggered, quindi una rete sequenziale asincrona

 Nessuna delle altre opzioni Una collezione di flip-flop D positive edge triggered, quindi una rete sequenziale sincrona
 Una collezione di flip-flop D Latch in cui tutti gli ingressi p sono collegati ad un segnale clock, quindi una rete sequenziale sincronizzata

 Una collezione di flip-flop D Latch, quindi una rete sequenziale asincrona

04.  Indicare quale delle seguenti descrizioni è quella corretta

 Una rete sequenziale sincronizzata è, in prima approssimazione, una collezione di registri e di reti sequenziali asincrone, montati in qualunque modo. E' fondamentale che
non ci siano anelli di reti combinatorie (che invece darebbero vita ad una rete sequenziale asincrona), e che i registri abbiano tutti lo stesso clock. Ci possono essere senza
alcun problema, invece, anelli che abbiano registri al loro interno, in quanto questo non crea alcun problema.

 Nessuna delle altre opzioni

 Una rete sequenziale sincronizzata è, in prima approssimazione, una collezione di registri e di reti combinatorie, montati in qualunque modo. E' fondamentale che non ci
siano anelli di reti combinatorie (che invece darebbero vita ad una rete sequenziale asincrona), e che i registri abbiano tutti lo stesso clock. Ci possono essere senza alcun
problema, invece, anelli che abbiano registri al loro interno, in quanto questo non crea alcun problema.

 Una rete sequenziale sincronizzata è, in prima approssimazione, una collezione di registri e di reti combinatorie, montati in qualunque modo. Ci possono essere anelli di
reti combinatorie ma i registri devono avere tutti lo stesso clock. Ci possono essere anche anelli che abbiano registri al loro interno, in quanto questo non crea alcun
problema.

05.  Riportare la temporizzazione di una generica rete sequenziale sincronizzata

06.  Definizione di rete sequenziale sincronizzata e principali regole di progetto

07.  Differenze fra le reti sequenziali asincrone e quelle sincronizzate

08.  Disegnare lo schema generale di una rete sequenziale sincronizzata e discutere le regole di pilotaggio
Lezione 019
01.  Le specifiche di un registro contatore debbono quindi includere:

 La base b in cui il numero verrà espresso, il numero N delle sue cifre e il suo tipo (numero naturale o numero intero con o senza virgola ).

 La base b in cui il numero verrà espresso e il numero N delle sue cifre

 La base b in cui il numero verrà espresso, il numero N delle sue cifre, Il numero di bit su cui rappresentare il valore che viene incrementato o decrementato e il suo tipo
(numero naturale o numero intero con o senza virgola ).

 Il numero di bit su cui rappresentare il valore che viene incrementato o decrementato

02. L'immagine mostrata è lo schema circuitale di:

 Un decoder

 Un multiplexer

 Un demultiplexer

 Nessuna delle altre opzioni

03.  Che cosa è un registro contatore?

 Nessuna delle altre opzioni

 Un registro contatore è una rete sequenziale sincronizzata il cui stato di uscita può essere interpretato come un numero che, all'arrivo di ogni segnale di sincronizzazione
viene:
- incrementato (contatore up) o
- decrementato (contatore down) o
- incrementato o decrementato in dipendenza del valore di un'opportuna variabile di comando (contatore up/down )

 Un registro contatore è una rete sequenziale asincrona il cui stato di uscita può essere interpretato come un numero che, quando cambia l'ingresso viene:

- incrementato (contatore up) o


- decrementato (contatore down) o
- incrementato o decrementato in dipendenza del valore di un'opportuna variabile di comando (contatore up/down )

 Un registro contatore è una rete sequenziale sincronizzata il cui stato di uscita può essere interpretato come un numero che viene:

- incrementato (contatore up) o


- decrementato (contatore down) o
- incrementato o decrementato in dipendenza del valore di un'opportuna variabile di comando (contatore up/down )
04. L'immagine mostrata è lo schema circuitale di:

 Un multiplexer

 Un demultiplexer

 Nessuna delle altre opzioni

 Un registro funzionale

05.  Fare un esempio pratico di registro multifunzionale

06.  Disegnare un registro contatore

07.  Riportare la sintesi del full adder in base 2

08.  Disegnare lo schema base di un registro multifunzionale


Lezione 020

01.   L'immagine

mostrata è il modello strutturale di:

 Una rete sequenziale sincronizzata di Mealy

 Nessuna delle altre opzioni

 Una rete sequenziale asincrona con elementi di ritardo

 Una rete sequenziale asincrona di Moore

02. L'immagine mostrata è il modello strutturale di:

 Nessuna delle altre opzioni RETE SEQUENZIALE SINCRONIZZATA DI MOORE


 Una rete sequenziale sincronizzata di Mealy

 Una rete sequenziale asincrona di Mealy Ritardato

 Una rete sequenziale asincrona con elementi di ritardo


03.   L'immagine mostrata è

il modello strutturale di:

 Una rete sequenziale asincrona con elementi di ritardo

 Nessuna delle altre opzioni RETE DI MEALY CON RITARDO


 Una rete sequenziale asincrona di Moore

 Una rete sequenziale sincronizzata di Mealy

04.  Nelle reti sequenziali sincronizzate:

 Ci possono essere alee essenziali, ma non problemi di corse critiche. Stati interni consecutivi possono essere arbitrariamente distanti

 Nessuna delle altre opzioni

 Non ci sono alee essenziali, né problemi di corse critiche. Stati interni consecutivi possono essere arbitrariamente distanti

 Non ci sono alee essenziali, né problemi di corse critiche. Stati interni consecutivi devono essere adiacenti

05.  Disegnare la temporizzazione che garantisce il corretto pilotaggio dei una rete di Moore

06.  Riportare la sintesi del flip flop JK

07.  Discutere i vantaggi del modello di Mealy rispetto al modello di Moore


Lezione 021
01.  Nelle reti sequenziali sincronizzate complesse le miscro istruzioni:

 In un linguaggio Assembly fra registri sono assegnamenti al registro di stato

 In un linguaggio Assembly fra registri sono assegnamenti a registri operativi

 In un linguaggio di trasferimento fra registri sono assegnamenti a registri operativi

 In un linguaggio di trasferimento fra registri sono assegnamenti al registro di stato

02.  Una rete sequenziale sincronizzata complessa si può scomporre in:

 Parte Operativa e Parte Esecutiva

 Parte Operativa e Parte Istruttiva

 Nessuna delle altre opzioni PARTE OPERATIVA E PARTE DI CONTROLLO


 Parte Esecutiva e Parte Controllo

03.  Nelle reti sequenziali sincronizzate complesse i micro salti:

 In un linguaggio Assembly fra registri sono assegnamenti al registro di stato

 In un linguaggio Assembly fra registri sono assegnamenti a registri operativi

 In un linguaggio di trasferimento fra registri sono assegnamenti a registri operativi

 In un linguaggio di trasferimento fra registri sono assegnamenti al registro di stato

04.  Una rete sequenziale sincronizzata complessa si può scomporre in:

 Parte Operativa e Parte Esecutiva

 Parte Operativa e Parte Controllo

 Parte Operativa e Parte Istruttiva

 Parte Esecutiva e Parte Controllo

05.  Che tipo di circuito logico è il processore?

 Una rete combinatoria complessa

 Nessuna delle altre opzioni

 Una rete sequenziale asincrona complessa

 Una rete sequenziale sincronizzata complessa

06.  Disegnare e discutere la struttura di una rete sequenziale sincronizzata complessa

07.  Riportare la descrizione generale con pseudo-linguaggio di trasferimento fra registri di una rete sequenziale sincronizzata complessa

08.  Disegnare lo schema generale del modello di rete sequenziale sincronizzata complessa scomposta in Parte Operativa e Parte Controllo
Lezione 022
01.  Perché il linguaggio Assembly è di basso livello?

 Nessuna delle altre opzioni

 Perché non ci sono i cicli for e while

 Perché le istruzioni scritte vengono direttamente eseguite dal processore

 Perché è difficile da utilizzare

02.  Identificare l'affermazione corretta:

 La ALU è in grado di eseguire operazioni logiche (AND, OR, NOT, etc.) ed operazioni aritmetiche, interpretando le stringhe di bit che maneggia come numeri naturali in
base 2, o come numeri interi rappresentati in complemento a 2.

 La ALU esegue operazioni sui numeri reali (o, per essere precisi, su un sottoinsieme di numeri razionali, visto che su un calcolatore si possono rappresentare soltanto
numeri con un numero finito di cifre, che sono appunto razionali).

 La FPU è in grado di eseguire operazioni logiche (AND, OR, NOT, etc.) ed operazioni aritmetiche, interpretando le stringhe di bit che maneggia come numeri naturali in
base 2, o come numeri interi rappresentati in complemento a 2.

 La ALU è in grado di eseguire operazioni logiche (AND, OR, NOT, etc.) ed operazioni aritmetiche, interpretando le stringhe di bit che maneggia come numeri reali in
base 2, o come numeri irrazionali rappresentati in complemento a 2.

03.  Identificare l'affermazione corretta relativa al linguaggio Assembly:

 Consente di passare facilmente il codice da un processore ad un altro basta che si usi lo stesso sistema operativo

 I programmi vengono compilati molto velocemente

 Essendo a basso livello garantisce un elevato livello di portabilità

 Nessuna delle altre opzioni

04.  Identificare l'affermazione corretta:

 Nella programmazione in Assembly, il programmatore deve specificare quali sono le istruzioni che devono essere eseguite dalla ALU e quali sono quelle che devono
essere eseguite dalla FPU

 Nella programmazione in Assembly, il programmatore deve specificare solo quali sono le istruzioni che devono essere eseguite dalla ALU

 Nella programmazione in Assembly, il programmatore deve specificare solo quali sono le istruzioni che devono essere eseguite dalla FPU

 Nessuna delle altre opzioni

05.  Come si possono rappresentare i numeri interi all'interno della ALU?

 Nessuna delle altre opzioni

 In base due

 In virgola mobile

 Modulo e segno, Complemento a due

06.  Discutere le differenze fra ALU ed FPU

07.  Discutere vantaggi e svantaggi del linguaggio Assembly

08.  Discutere il sottosistema di ingresso e uscita di un calcolatore. Specificare a cosa servono le interfacce.
Lezione 023
01.  I registri generali di un processore PC sono

 Nessuna delle altre opzioni

 EAX, EBX, ECX, EDX, EBP, ESI, EDI e ESP ed hanno una capacità di 32 bit.

 EAX, EBX, ECX, EDX, EBP, ESI, EDI e ESP ed hanno una capacità di 16 bit.

 EAX, EBX, ECX, EDX, EBP, ESI, EDI e ESP ed hanno una capacità di 8 bit.

02.  Con riferimento all'organizzazione funzionale di un calcolatore basato su architetture Intel x86, indicare l'affermazione corretta:

 Mentre le locazioni di memoria sono strutturalmente identiche l'una all'altra, cioè posso scegliere se mettere un dato in una qualunque cella di memoria, esistono dei casi
in cui le porte di I/O non lo sono

 Le locazioni di memoria e le porte di I/O sono strutturalmente identiche l'una all'altra, cioè posso scegliere se scrivere o leggere un dato in una qualunque cella di
memoria o porta

 Mentre le locazioni di memoria sono strutturalmente identiche l'una all'altra, cioè posso scegliere se mettere un dato in una qualunque cella di memoria, le porte di I/O
non lo sono

 Nessuna delle altre opzioni

03.  Con riferimento all'organizzazione funzionale di un calcolatore basato su architetture Intel x86, indicare l'affermazione corretta:

 Se il processore accede ad una locazione doppia o quadrupla, allora esso utilizzerà come indirizzo quello della prima delle locazioni interessate

 Se il processore accede ad una locazione doppia o quadrupla, allora esso utilizzerà come indirizzo quello dell'ultima delle locazioni interessate

 Se il processore accede ad una locazione doppia o quadrupla, allora esso utilizzerà come indirizzo quello della prima e dell'ultima delle locazioni interessate, in modo da
specificare un intervallo valido

 Nessuna delle altre opzioni

04.  Il registro EIP (Instruction Pointer register, a volte anche chiamato program counter) contiene:

 L'indirizzo della locazione a partire dalla quale sarà prelevata la prossima istruzione da eseguire

 L'indirizzo della locazione dell'istruzione la cui esecuzione si è appena conclusa

 Nessuna delle altre opzioni

 L'indirizzo della locazione dell'istruzione che il processore sta eseguendo

05.  Con riferimento all'organizzazione funzionale di un calcolatore basato su architetture Intel x86, indicare l'affermazione corretta:

 Se una doppia o quadrupla locazione contiene un numero, la locazione di indirizzo più grande contiene gli 8 bit meno significativi del numero e così via fino alla
locazione di indirizzo più piccolo che contiene gli 8 bit più significativi

 Se una doppia o quadrupla locazione contiene un numero, la locazione di indirizzo più piccolo contiene gli 8 bit meno significativi del numero e così via fino alla
locazione di indirizzo più grande che contiene gli 8 bit più significativi

 Se una doppia o quadrupla locazione contiene un numero, la locazione di indirizzo più piccolo contiene gli 8 bit più significativi del numero e così via fino alla locazione
di indirizzo più grande che contiene gli 8 bit meno significativi

 Nessuna delle altre opzioni

06.  Discutere la condizione di reset del calcolatore.

07.  Quali sono e a cosa servono i FLAG significativi del registro EF?

08.  Disegnare lo schema funzionale di un semplice ma completo calcolatore basato su architettura x86-32.

09.  Discutere l'organizzazione logica dello spazio di I/O vista dal programmatore Assembly.
Lezione 024
01.  La seguente istruzione: MOV %EAX, 0x01F4E39A

 Dice al processore di spostare il contenuto del registro EAX nella porta di I/O il cui indirizzo è 0x01F4E39A

 Dice al processore di spostare il contenuto del registro EAX nella linea di memoria il cui indirizzo della locazione meno significativo è 0x01F4E39A

 Dice al processore di spostare il contenuto della linea di memoria, il cui indirizzo della locazione meno significativo è 0x01F4E39A, nel registro EAX

 Nessuna delle altre opzioni

02.  La seguente istruzione: MOV %EAX, 0x01F4E39A

 E' scritta in linguaggio macchina

 E' scritta in linguaggio assembly

 Nessuna delle altre opzioni

 E' scritta in linguaggio mnemonico

03.  La seguente istruzione: MOV %EAX, 0x01F4E39A

 Dice al processore di spostare il contenuto del registro EAX nella linea di memoria il cui indirizzo della locazione meno significativo è 0x01F4E39A

 Dice al processore di spostare il contenuto della linea di memoria, il cui indirizzo della locazione meno significativo è 0x01F4E39A, nel registro EAX

 Dice al processore di spostare il valore 0x01F4E39A nel registro EAX

 Dice al processore di spostare il contenuto del registro EAX nella porta di I/O il cui indirizzo è 0x01F4E39A

04.  La seguente istruzione: MOV %EAX, pippo

 E' scritta in linguaggio assembly

 E' scritta in linguaggio mnemonico

 Nessuna delle altre opzioni

 E' scritta in linguaggio macchina

05.  Discutere la differenza fra set di istruzioni RISC e CISC.

06.  Come sono relazionati linguaggio macchina, linguaggio mnemonico e assembly?

07.  Cosa si intende per linguaggio mnemonico?


Lezione 025
01.  La seguente istruzione in linguaggio mnemonico MOV $0x2000,(%EDI):

 Sposta il valore 0x2000 nella locazione di memoria puntata dal contenuto di EDI

 Sposta il contenuto della locazione di memoria con indirizzo 0x2000 nel registro EDI

 Sposta il valore 0x2000 nel registro EDI

 Sposta il contenuto della locazione di memoria con indirizzo 0x2000 nella locazione di memoria puntata dal contenuto di EDI

02.  Quale delle seguenti affermazioni è vera?

 Nel linguaggio mnemonico, uno o entrambi gli operandi, possono trovarsi in memoria. In tal caso, per riferirli bisogna specificarne l'indirizzo a 8 bit

 Nel linguaggio mnemonico, uno degli operandi, sia esso sorgente o destinatario, ma mai entrambi, può trovarsi in memoria. In tal caso, per riferirlo bisogna specificarne
l'indirizzo a 32 bit

 Nel linguaggio mnemonico, uno o entrambi gli operandi, possono trovarsi in memoria. In tal caso, per riferirli bisogna specificarne l'indirizzo a 32 bit

 Nel linguaggio mnemonico, uno degli operandi, sia esso sorgente o destinatario, ma mai entrambi, può trovarsi in memoria. In tal caso, per riferirlo bisogna specificarne
l'indirizzo a 8 bit

03.  Quali sono i campi di una tipica istruzione in linguaggio mnemonico (quello presentato durante il corso)?

 OPCODEsize destination, source

 OPCODEsize source, destination, value

 Nessuna delle altre opzioni

 OPCODEsize source, destination, address

04.  La seguente pseudo istruzione in linguaggio mnemonico OPCODE $0x5683A20B,%ECX rappresenta:

 Un esempio di indirizzamento immediato per l'operando sorgente

 Un esempio di indirizzamento per registro per l'operando sorgente

 Un esempio di indirizzamento con registro puntatore per l'operando sorgente

 Nessuna delle altre opzioni

05.  Discutere come avviene l'indirizzamento di memoria e come viene calcolato l'indirizzo.

06.  Discutere come avviene l'indirizzamento delle porte di I/O. Quanto si può effettuare l'indirizzamento diretto e come avviene quello indiretto?

07.  Discutere come avviene l'indirizzamento di registro e fornire un esempio.

08.  Fornire un esempio di indirizzamento delle porte di I/O.


Lezione 026
01.  Con riferimento al linguaggio Assembly, cosa sono le istruzioni di controllo?

 Sono istruzioni che si occupano di:

- gestione di sotto programmi


- salti

 Sono istruzioni che si occupano di:


>
- trasferimento dati
- operazioni aritmetiche
- operazioni di traslazione/rotazione
- operazioni logiche

 Sono istruzioni che si occupano di:

- gestione di sotto programmi


- salti
- trasferimento dati

 Nessuna delle altre opzioni

02.  Con riferimento al linguaggio Assembly, cosa sono le istruzioni operative?

 Sono istruzioni che si occupano di:

- trasferimento dati
- operazioni aritmetiche
- operazioni di traslazione/rotazione
- operazioni logiche

 Sono istruzioni che si occupano di:


>
- gestione di sotto programmi
- salti

 Sono istruzioni che si occupano di:

- gestione di sotto programmi


- salti
- trasferimento dati

 Nessuna delle altre opzioni

03.  Quali delle seguenti affermazioni relative alla gestione della pila in Assembly è vera?

 Nessuna delle altre opzioni

- il registro ESP va inizializzato con l'indirizzo della locazione immediatamente successiva a quella di testa;
- l'immissione di un'informazione nella pila (operazione push) va effettuata decrementando prima l'indirizzo contenuto nel registro ESP ed utilizzando poi tale indirizzo come
indirizzo per un'operazione di scrittura in memoria;
- il prelievo di un'informazione della pila (operazione pop) va effettuato utilizzando prima il contenuto del registro ESP come indirizzo per un'operazione di lettura dalla
memoria e poi incrementando tale indirizzo.

- il registro ESP va inizializzato con l'indirizzo della locazione immediatamente successiva a quella di fondo;
- l'immissione di un'informazione nella pila (operazione push) va effettuata decrementando prima l'indirizzo contenuto nel registro ESP ed utilizzando poi tale indirizzo come
indirizzo per un'operazione di scrittura in memoria;
- il prelievo di un'informazione della pila (operazione pop) va effettuato utilizzando prima il contenuto del registro ESP come indirizzo per un'operazione di lettura dalla
memoria e poi incrementando tale indirizzo.

- il registro ESP va inizializzato con l'indirizzo della locazione immediatamente successiva a quella di fondo;
- l'immissione di un'informazione nella pila (operazione push) va effettuata incrementando prima l'indirizzo contenuto nel registro ESP ed utilizzando poi tale indirizzo come
indirizzo per un'operazione di scrittura in memoria;
- il prelievo di un'informazione della pila (operazione pop) va effettuato utilizzando prima il contenuto del registro ESP come indirizzo per un'operazione di lettura dalla
memoria e poi decrementando tale indirizzo.

04.  Quali sono i registri utilizzati per la gestione della pila in linguaggio Assembly?

 I registri ESP ed EBP

 I registri push e pop

 Nessuna delle altre opzioni

 I registri ESP ed EIP

05.  Cosa è una pila?

06.  Perché la pila è importante per il corretto funzionamento del processore e del calcolatore in generale?

07.  Discutere come viene gestite la pila a livello del processore, in particolare come si realizza, quali sono le istruzioni principali e come si implementano.
Lezione 027
01.  L'istruzione

- SAL destination

 Effettua uno shift a destra dei bit che costituiscono l'operando destinatario. Il bit meno significativo del destinatario va a finire nel CF, mentre il bit più significativo viene
posto a uno

 Effettua uno shift a destra dei bit che costituiscono l'operando destinatario. Il bit meno significativo del destinatario va a finire nel CF, mentre il bit più significativo viene
posto a zero

 Effettua uno shift a sinistra dei bit che costituiscono l'operando destinatario. Il bit più significativo del destinatario va a finire nel CF, mentre il bit meno significativo
viene posto a zero

 Effettua uno shift a sinistra dei bit che costituiscono l'operando destinatario. Il bit più significativo del destinatario va a finire nel CF, mentre il bit meno significativo
viene posto a uno

02.  L'istruzione

- SHR destination

 Effettua uno shift a destra dei bit che costituiscono l'operando destinatario. Il bit meno significativo del destinatario va a finire nel CF, mentre il bit più significativo viene
posto a zero

 Effettua uno shift a sinistra dei bit che costituiscono l'operando destinatario. Il bit più significativo del destinatario va a finire nel CF, mentre il bit meno significativo
viene posto a uno

 Effettua uno shift a destra dei bit che costituiscono l'operando destinatario. Il bit meno significativo del destinatario va a finire nel CF, mentre il bit più significativo viene
posto a uno

 Effettua uno shift a sinistra dei bit che costituiscono l'operando destinatario. Il bit più significativo del destinatario va a finire nel CF, mentre il bit meno significativo
viene posto a zero

03.  L'istruzione

- ADD source, destination

 Non modifica nessun flag

 Modifica tutti i flag

 Modifica solo l'overflow flag (OF)

 Modifica solo il Carry Flag (CF)

04.  L'istruzione

- CMP source, destination

 Modifica solo l'overflow flag (OF)

 Modifica tutti i flag

 Modifica solo il Carry Flag (CF)

 Non modifica nessun flag


Lezione 028
01.  Cosa fa l'istruzione Assembly HLT?

 Attende che l'utente inserisca un messaggio di stop da tastiera

 Attende che la prossima istruzione sia eseguita

 Nessuna delle altre opzioni Provoca la cessazione di ogni attività del processore

 Blocca temporaneamente l'esecuzione del programma

02.  Con riferimento alle istruzioni di Salto Condizionato del linguaggio Assembly, indicare quale delle seguenti affermazioni è quella vera:

 Le condizioni dipendono dal valore dei flag e i flag vengono modificati

 Le condizioni non dipendono dal valore dei flag e i flag vengono modificati

 Le condizioni non dipendono dal valore dei flag e i flag non vengono modificati

 Le condizioni dipendono dal valore dei flag e i flag non vengono modificati

03.  Con riferimento alle istruzioni di Salto del linguaggio Assembly, indicare quale delle seguenti affermazioni è quella vera (si consideri che la condizione di salto
sia verificata):

 Nessuna delle altre opzioni

 Esse aggiornano il valore di EIP

 Esse non modificano il valore di alcun registro

 Esse aggiornano il valore di ESP

04.  Quale delle seguenti affermazioni è vera?

- Le istruzioni con codice operativo CALL salvano nella pila l'indirizzo dell'istruzione di rientro.
- Quelle con codice operativo RET rintracciano nella pila l'indirizzo dell'istruzione di rientro e lo utilizzano come indirizzo di salto.

- Le istruzioni con codice operativo CALL salvano nella pila l'indirizzo della prima istruzione del sottoprogramma da eseguire.
- Quelle con codice operativo RET rintracciano nella pila l'indirizzo dell'istruzione di rientro e lo utilizzano come indirizzo di salto.

- Le istruzioni con codice operativo CALL salvano nella pila l'indirizzo della prima istruzione del sottoprogramma da eseguire.
- Quelle con codice operativo RET rintracciano nello spazio di I/O l'indirizzo dell'istruzione di rientro e lo utilizzano come indirizzo di salto.

- Le istruzioni con codice operativo CALL salvano nella pila l'indirizzo dell'istruzione di rientro.
- Quelle con codice operativo RET rintracciano nello spazio di I/O l'indirizzo dell'istruzione di rientro e lo utilizzano come indirizzo di salto.
Lezione 029

01.   Il programma mostrato in figura:

 Conta il numero di occorrenze a uno in una parola

 Conta il numero di occorrenze a zero in una doppia parola

 Conta il numero di occorrenze a zero in una parola

 Conta il numero di occorrenze a uno in una doppia parola


02.   Dato il programma mostrato in figura, il contenuto (in

decimale) del registro CL alla fine dell'esecuzione è:

 8

 2

 4

 10

03.  In assembly GAS le righe di un programma sono:

 Indicazioni ed istruzioni

 Nessuna delle altre opzioni

 Direttive ed indicazioni

 Direttive ed istruzioni

04.  In Assembly GAS le seguenti stringe:

- .GLOBAL _main;
- .data;
- .text sono:

 Delle specificazioni

 Nessuna delle altre opzioni Sono delle direttive


 Delle istruzioni

 Delle indicazioni

05.  Scrivere un programma in Assembly GAS che conti il numero di occorrenze ad uno in una doppia parola

06.  Scrivere un programma in Assembly GAS che conti il numero di occorrenze a zero in una doppia parola
Lezione 030

01. Dato il programma mostrato in figura, il contenuto (in decimale) del registro CL alla fine dell'esecuzione è:

 9

 7

 8

 Nessuna delle altre opzioni

02. Il programma mostrato in figura:

 Conta il numero di occorrenze della lettera è

 Nessuna delle altre opzioni Numero occorrenza lettera e


 Conta il numero di occorrenze delle lettere che non sono la e

 Conta il numero di occorrenze della lettera e come iniziale


03. Dato il programma mostrato in figura, il contenuto (in decimale) del registro CL alla fine dell'esecuzione è:

 9

 Nessuna delle altre opzioni

 8

 7

04. Il programma mostrato in figura:

 Conta il numero di occorrenze delle lettere che non sono la e

 Nessuna delle altre opzioni

 Conta il numero di occorrenze della lettera e

 Conta il numero di occorrenze della lettera e come iniziale

05.  Scrivere un programma Assembly GAS che conta il numero di occorrenze della lettera e in una stringa specificata come parametro
Lezione 031

01.   Dato il programma

mostrato in figura, il contenuto (in decimale) della variabile risultato alla fine dell'esecuzione è:

 362880

 81

 54231231

 27
02.   Dato il programma

mostrato in figura, il contenuto (in decimale) della variabile risultato alla fine dell'esecuzione è:

 125

 120

 1000

 25
03.   Dato il programma mostrato in figura, il contenuto (in

decimale) della variabile risultato alla fine dell'esecuzione è:

 0

 2

 4

 1
04.   Dato il programma mostrato in figura, il

contenuto (in decimale) della variabile risultato alla fine dell'esecuzione è:

 1

 2

 0

 4

05.  Si scriva un programma in Assembly GAS che calcola il fattoriale di un numero naturale (da 1 a 9)
Lezione 032
01.  Con riferimento al linguaggio Assembly GAS, quali delle seguenti affermazioni è falsa?

 Tutte le variabili (cioè la memoria indirizzabile) sono globali.

 Non esistono regole di scopo.

 Non esiste il concetto di variabile locale ad un sottoprogramma.

 La memoria non è accessibile da qualunque sottoprogramma, in qualunque punto.

Lezione 033
01.  Il programmatore che utilizza Assembly GAS, per gestire l'I/O:

 Può usare nel programma Assembly direttamente le funzioni di I/O del C/C++

 Può utilizzare le istruzioni IN e OUT

 Non può fare niente

 Deve utilizzare dei sottoprogrammi di utilità

02.  Scrivere un programma che accetta in ingresso una stringa di caratteri esclusivamente minuscoli terminata da ritorno carrello e li stampa in maiuscolo a
video

Lezione 034
01.  I piedini di indirizzo di un semplice processore sono:

 La direzione dipende dalle attività che di volta il volta il processore deve svolgere

 In ingresso al processore

 In uscita dal processore

 Bidirezionali

02.  Il piedino di reset di un semplice processore:

 E' in uscita e serve a resettare la memoria e lo spazio di I/O

 Nessuna delle altre opzioni E' un ingresso e porta le memoriedel processore nello stato iniziale
 E' in uscita e serve a resettare la memoria

 E' in uscita e serve a resettare lo spazio di I/O

03.  I piedini dei blocchi funzionali che costituiscono un calcolatore elettronico servono per:

 Comandare il calcolatore

 Per alimentare i blocchi

 Nessuna delle altre opzioni

 Per comunicare con il mondo esterno

04.  I piedini per il trasferimento dati di un semplice processore sono:

 Bidirezionali

 In uscita dal processore

 La direzione dipende dalle attività che di volta il volta il processore deve svolgere

 In ingresso al processore

05.  I pedini di comando di un semplice processore (/MRD, /MWR, /IOR,/IOWR) sono:

 Bidirezionali

 In ingresso al processore

 In uscita dal processore

 La direzione dipende dalle attività che di volta il volta il processore deve svolgere

06.  Disegnare e discutere il diagramma temporale di un ciclo di lettura in memoria (oppure in I/O) di un semplice processore a 8 bit.

07.  Disegnare e discutere il diagramma temporale di un ciclo di scrittura in memoria (oppure in I/O) di un semplice processore a 8 bit.
Lezione 035

01. Si consideri l'immagine in figura:

 Nessuna delle altre opzioni

 Essa mostra la realizzazione di un banco di memoria da due mega locazioni da 8 bit, utilizzando due banchi di memoria da un mega locazioni da 8 bit

 Essa mostra la realizzazione di un banco di memoria da un mega locazioni da 8 bit, utilizzando due banchi di memoria da un mega locazioni da 4 bit

 Essa mostra la realizzazione di un banco di memoria da un mega locazioni da 8 bit, utilizzando due banchi di memoria da mezzo mega locazioni da 8 bit
02.   Si consideri

l'immagine in figura:

 Nessuna delle altre opzioni

 Essa mostra la realizzazione di un banco di memoria da un mega locazioni da 8 bit, utilizzando due banchi di memoria da mezzo mega locazioni da 8 bit

 Essa mostra la realizzazione di un banco di memoria da un mega locazioni da 8 bit, utilizzando due banchi di memoria da un mega locazioni da 4 bit

 Essa mostra la realizzazione di un banco di memoria da due mega locazioni da 8 bit, utilizzando due banchi di memoria da un mega locazioni da 8 bit

03.  Con riferimento ad una semplice architettura di calcolatore, Indicare quale delle seguenti affermazioni è quella corretta:

 Il bus di comunicazione è costituito dai fili per lo scambio dei dati

 Il bus di comunicazione è costituito dai fili per la trasmissione degli indirizzi e lo scambio dei dati

 Nessuna delle altre opzioni

 Il bus di comunicazione è costituito dai fili per la trasmissione degli indirizzi

04.  Con riferimento ad una semplice architettura di calcolatore, Indicare quale delle seguenti affermazioni è quella corretta:

 Per gestire la mutua esclusione i piedini collegati al bus dati di ciascun blocco funzionale sono supportati da un registro

 Per gestire la mutua esclusione i piedini collegati al bus dati di ciascun blocco funzionale sono supportati da un registro la cui uscita è comandata da una porta 3-state.

 Per gestire la mutua esclusione i piedini collegati al bus dati di ciascun blocco funzionale sono supportati da una porta 3-state.

 Nessuna delle altre opzioni

05.  Si consideri un semplice processore a 8 bit, spazio di memoria da 1GB e spazio di I/O da 64 KB. Indicare la descrizione corretta:

 Esso utilizza 8 piedini per i dati, 30 piedini per gli indirizzi di cui i 16 meno significativi si utilizzano quando viene indirizzato lo spazio di I/O

 Esso utilizza 8 piedini per i dati, 32 piedini per gli indirizzi e 16 piedini per lo spazio di I/O

 Esso utilizza 8 piedini per i dati, 32 piedini per gli indirizzi di cui i 16 meno significativi si utilizzano quando viene indirizzato lo spazio di I/O

 Esso utilizza 8 piedini di indirizzo e 32 piedini per i dati

06.  Discutere come una interfaccia con tre registri da un byte può essere montato nello spazio di I/O. Disegnare lo schema corretto di montaggio.

07.  Discutere come un banco di memoria da 1Mx8 può essere montato nello spazio di memoria. Disegnare lo schema corretto di montaggio.
Lezione 036
01.  Nel Processore PC a 32 bit, i piedini byte enable (/BE3-/BE0) servono per:

 Nessuna delle altre opzioni

 Identificare un byte nello spazio di memoria

 Selezionare i byte da trasferire nella linea indirizzata

 Selezionare le linee da trasferire nei byte indirizzati

02.  In un calcolatore con spazio di memoria di 4 GB organizzato in linee, il numero di piedini di indirizzo è pari a:

 30

 31

 32

 29

03.  Il processore PC vede il suo spazio esterno:

 Come un insieme contiguo di linee da 4 byte consecutivi, il primo dei quali ha indirizzo multiplo di 4. Tale indirizzo prende il nome di indirizzo di linea.

 Come un insieme contiguo di linee da 32 byte consecutivi, il primo dei quali ha indirizzo multiplo di 4. Tale indirizzo prende il nome di indirizzo di linea

 Come un insieme contiguo di linee da 4 byte, il primo dei quali ha indirizzo multiplo di 4. Tale indirizzo prende il nome di indirizzo di linea

 Nessuna delle altre opzioni

04.  In un calcolatore basato su processore PC a 32 bit:

 Il processore comanda i piedini /re e ready per l'inizio e la fine del ciclo di bus

 Il piedino ready è comandato dal processore per cominciare un ciclo di bus. Il piedino /re viene comandato dall'esterno per notificare che il ciclo di bus si può concludere

 Il piedino /re è comandato dal processore per cominciare un ciclo di bus. Il piedino ready viene comandato dall'esterno per notificare che il ciclo di bus si può concludere

 Nessuna delle altre opzioni

05.  Il processore PC è costituito dalla seguenti unità fondamentali:

 Nessuna delle altre opzioni

 Bus Unit (BU), Prefetch Unit (PU), Arithmetic and Logic Unit (ALU), Floating point Unit (FPU), Memory Management Unit (MMU)

 Local Bus Unit (LU), Control Bus Unit (CU), Arithmetic and Logic Unit (ALU), Floating point Unit (FPU), Memory Management Unit (MMU)

 Local Bus Unit (LU), Control Bus Unit (CU), Prefetch Unit (PU), Arithmetic and Logic Unit (ALU), Floating point Unit (FPU)

06.  Il processore PC è a 32 bit in quanto:

 E' in grado di trasferire, in 4 cicli di bus, 4 byte

 E' in grado di trasferire, in un unico ciclo di bus, fino a 4 byte

 Nessuna delle altre opzioni

 E' in grado di trasferire, in un unico ciclo di bus, 4 byte

07.  Perché il processore PC ha solo 30 piedini di indirizzo (A31-A2) pur indirizzando uno spazio di memoria da 4GB?

08.  Disegnare lo schema dei piedini del processore PC e discuterlo.


Lezione 037

01.   Si

consideri l'immagine in figura:

 Mostra un latch utilizzato per il pilotaggio del bus dati

 Mostra un transceiver utilizzato per il pilotaggio del bus dati

 Mostra un latch utilizzato per il pilotaggio del bus indirizzi

 Mostra un transceiver utilizzato per il pilotaggio del bus indirizzi

02.   Si

consideri l'immagine in figura:

 Mostra un transceiver utilizzato per il pilotaggio del bus indirizzi

 Mostra un transceiver utilizzato per il pilotaggio del bus dati

 Mostra un latch utilizzato per il pilotaggio del bus dati

 Mostra un latch utilizzato per il pilotaggio del bus indirizzi


03. Si consideri l'immagine in figura:

 Mostra il montaggio di una RAM da 1 GB organizzata per colonne

 Mostra il montaggio di una RAM da 1 MB organizzata per linee

 Mostra il montaggio di una RAM da 1 GB organizzata per linee

 Mostra il montaggio di una RAM da 1 MB organizzata per colonne


04.   Si consideri l'immagine in

figura:

 Nessuna delle altre opzioni Mostra un circuito di comando


 Mostra un transceiver utilizzato per il pilotaggio del bus indirizzi

 Mostra un latch utilizzato per il pilotaggio del bus indirizzi

 Mostra un transceiver utilizzato per il pilotaggio del bus dati

05.  Disegnare come il controllore del bus locale si collega al processore. Specificare quali sono i piedini che formano effettivamente il bus.

06.  Come viene vista una interfaccia nello spazio di I/O organizzato a linee a 32 bit. C'è differenza nel montaggio e nella visione logica al variare della dimensione
dei registri interni?
Lezione 038

01.  

Si consideri l'immagine in figura:

 Nessuna delle altre opzioni

 Mostra un circuito di controllo per un bus dati a 8 bit

 Mostra un circuito di abilitazione per un bus dati a 8 bit

 Mostra un circuito di pilotaggio per un bus dati a 8 bit


02.   Si consideri l'immagine in figura:

 Mostra uno spazio esterno visto dal processore organizzato in linee da 4 byte

 Mostra uno spazio esterno visto dal processore organizzato in byte da 2 linee

 Nessuna delle altre opzioni

 Mostra uno spazio esterno visto dal processore organizzato in linee da 2 byte

03.  In un calcolatore basato su processore PC a 32 bit in grado di gestire uno spazio di memoria a 32 bit e uno spazio di I/O con interfacce a 32, 16 e 8 bit:

 Il bus dati potrebbe essere unico, mentre il bus indirizzi potrebbe essere unico o formato da 3 bus fisicamente distinti

 Il bus indirizzi potrebbe essere unico, mentre il bus dati potrebbe essere unico o formato da 3 bus fisicamente distinti

 Il bus indirizzi, cosi come il bus dati, deve essere unico

 Nessuna delle altre opzioni

04.  Come si può progettare il bus locale di un calcolatore che debba gestire uno spazio di memoria a 32 bit e uno spazio di I/O a 32, 16 e 8 bit?

05.  Disegnare lo schema dello specifico circuito di pilotaggio di un bus dati a 16 bit.
Lezione 039
01.  Con riferimento alla programmazione mista, il livello dinamico è:

 Il numero di istanze non ancora terminate di una funzione o di altre funzioni, a partire dal livello dinamico 0 associato alla funzione main().

 Il numero di istanze terminate di una funzione o di altre funzioni, a partire dal livello dinamico 0 associato alla funzione main().

 Il numero di istanze di una funzione o di altre funzioni, a partire dal livello dinamico 0 associato alla funzione main().

 Nessuna delle altre opzioni

02.  Come viene distrutto il record di attivazione alla fine dell'istanza di un sottoprogramma?

 Comincia il chiamante che rimuove dalla pila lo spazio per i parametri attuali. Successivamente, il chiamato rimuove dalla pila: 1) lo spazio per le variabili locali, 2) il
link dinamico, 3) l'indirizzo di ritorno (tramite la RET).

 Comincia il chiamato che rimuove dalla pila: 1) lo spazio per le variabili locali, 2) il link dinamico, 3) l'indirizzo di ritorno (tramite la RET).Successivamente, il
chiamante rimuove dalla pila lo spazio per i parametri attuali

 In contemporanea il chiamato rimuove dalla pila: 1) lo spazio per le variabili locali, 2) il link dinamico, 3) l'indirizzo di ritorno (tramite la RET); il chiamante rimuove
dalla pila lo spazio per i parametri attuali

 Nessuna delle altre opzioni

03.  Con riferimento alla programmazine mista, nella formazione del record di attivazione, il sottoprogramma chiamato inserisce nella pila:

1) I parametri attuali (in ordine inverso rispetto a cui essi sono forniti alla funzione), 2)L'indirizzo di ritorno (il valore attuale di EIP, tramite la CALL)

1) L'indirizzo dello stack per programma chiamante (link dinamico, opzionale), 2) Lo spazio per le variabili locali

1) I parametri formali (in ordine inverso rispetto a cui essi sono forniti alla funzione), 2)L'indirizzo di chiamata

1) I parametri formali (in ordine inverso rispetto a cui essi sono forniti alla funzione), 2)L'indirizzo di ritorno (il valore attuale di EIP, tramite la CALL)

04.  Con riferimento alla programmazine mista, nella formazione del record di attivazione, il sottoprogramma chiamante (il main o un'altra funzione) inserisce
nella pila:

1) I parametri formali (in ordine inverso rispetto a cui essi sono forniti alla funzione), 2)L'indirizzo di ritorno (il valore attuale di EIP, tramite la CALL)

1) I parametri formali (in ordine inverso rispetto a cui essi sono forniti alla funzione), 2)L'indirizzo di chiamata

1) I parametri attuali (in ordine inverso rispetto a cui essi sono forniti alla funzione), 2)L'indirizzo di ritorno (il valore attuale di EIP, tramite la CALL)

1) L'indirizzo dello stack per programma chiamante (link dinamico, opzionale), 2) Lo spazio per le variabili locali

05.  Mostrare il codice Assembly del sottoprogramma di lettura (di scrittura) di un byte da una interfaccia e come esso potrebbe essere richiamato da un main()
scritto in C/C++.

06.  Cosa si intende per programmazione mista? Discutere brevemente il paradigma di programmazione ad essa associato.
Lezione 040
01.  Con riferimento ad una semplice interfaccia della tastiera, il make code è:

 Un codice che si genera quando viene rilasciato un tasto sulla testiera: è un byte corrispondente al codice di scansione

 Un codice che si genera quando viene premuto un tasto sulla testiera: si genera una sequenza di byte corrispondente al codice di scansione

 Nessuna delle altre opzioni

 Un codice che si genera quando viene premuto un tasto sulla testiera: è un byte corrispondente al codice di scansione

02.  Una semplice interfaccia per la gestione della tastiera ha in genere al suo interno:

 Due registri che fungono da: buffer di ingresso/uscita, registro di stato/comando

 Due registri che fungono da: buffer di ingresso/uscita, registro di lettura/scrittura

 Quattro registri che fungono da: buffer di ingresso, buffer di uscita, registro di stato e registro di comando

 Quattro registri che fungono da: buffer di ingresso, buffer di uscita, registro di lettura e registro di scrittura

03.  Il controllore video VGA (Video Graphics Array) è formato da:

 Due registri e da una memoria video che fa direttamente riferimento allo schermo.

 Due porte e da una memoria video che fa direttamente riferimento allo schermo.

 Nessuna delle altre opzioni

 Un insieme di registri e da una memoria video che fa direttamente riferimento allo schermo.

04.  Con riferimento al Il controllore video VGA (Video Graphics Array): "

 Quando esso è in modalità testo esso gestisce 2000 posizioni: a ciascuna posizione sono associati due byte: un byte per l'attributo colore e uno per l'informazione

 Quando esso è in modalità video esso gestisce 2000 posizioni: a ciascuna posizione sono associati due byte: un byte per l'attributo colore e uno per l'informazione

 Nessuna delle altre opzioni

 Quando esso è in modalità testo si specifica in AX parametro (modo) e si richiama una funzione del BIOS di inizializzazione.

05.  Discutere la differenza fra modalità testo e modalità grafica nella gestione dello schermo

06.  Discutere a parole o con codice o pseudo codice come un programmatore può scrivere una funzione che preleva dati dall'interfaccia collegata alla tastiera
Lezione 041
01.  Il gate delle interruzioni:

 Esso è formato da 8 byte che contengono l'indirizzo della routine di interruzione e un byte di accesso (importanti i bit P e TI)

 Nessuna delle altre opzioni

 Esso è formato da 4 byte che contengono l'indirizzo della routine di interruzione e un byte di accesso (importanti i bit P e TI)

 Esso è formato da 8 bit che contengono l'indirizzo della routine di interruzione e un byte di accesso (importanti i bit P e TI)

02.  Nel contesto del meccanismo delle interruzioni, indicare quale delle seguenti affermazioni è quella vera:

 Per interruzioni esterne mascherabili (arrivano tramite /INTR) il tipo viene prelevato tramite il bus di interruzione. Infatti, ogni richiesta è sempre accompagnata dalla
specifica di uno dei 256 tipo

 Le eccezioni del processore hanno tipo esplicito assegnato dalla routine di interruzione che è legato alla causa che determina le interruzioni.

 Nessuna delle altre opzioni

 Le interruzioni esterne sono sincrone rispetto al programma in esecuzione.

03.  Nel contesto del meccanismo delle interruzioni, indicare quale delle seguente affermazioni è quella vera:

 Le interruzioni servono solo per la gestione del trasferimento dati da e per le interfacce

 Non possono essere generate a controllo di programma

 Il processore riceve una richiesta tramite un piedino specifico. Tale richiesta viene analizzata: per gestirla il processore interrompe temporaneamente il programma in
esecuzione e provvede all'esecuzione di una apposita routine che ha l'obiettivo di gestire la situzione che ha generato la richiesta di interruzione

 Non sono mai generate in caso di anomalie circuitali

04.  La tabella delle interruzioni:

 Essa è formato da 8 bit che contengono l'indirizzo della routine di interruzione e un byte di accesso (importanti i bit P e TI)

 Essa è formato da 4 byte che contengono l'indirizzo della routine di interruzione e un byte di accesso (importanti i bit P e TI)

 Nessuna delle altre opzioni Porzione di memoria che contiene 256 entrate che prendono il nome di gate
 Essa è formato da 8 byte che contengono l'indirizzo della routine di interruzione e un byte di accesso (importanti i bit P e TI)

05.  Nel contesto del meccanismo delle interruzioni, indicare quale delle seguente affermazioni è quella vera:

 Le interruzioni prodotte dall'istruzione INT e quelle single step trap sono sincrone: esse producono l'interruzione di nessuna istruzione

 Le eccezioni del processore non sospendono mai l'esecuzione dell'istruzione in corso che ha generato l'anomalia

 Le interruzioni esterne sono asincrone rispetto al programma in esecuzione: esse possono giungere in qualsiasi momento, ma il processore termina la fase di esecuzione
dell'istruzione corrente e poi esamina eventuali richieste di interruzione. Questo tipo di interruzione non può interrompere nel bel mezzo l'esecuzione di una istruzione

 Nessuna delle altre opzioni

06.  Le eccezioni del processore si dividono in:

 Interruzioni mascherabili, non mascherabili e generate dall'istruzione INT

 Eccezioni sincrone ed asincrone

 Trap, fault e abort

 Nessuna delle altre opzioni

07.  Perché il meccanismo delle interruzioni si dice vettorizzato?

08.  Descrivere la tabella delle interruzioni e la struttura dei gate (o descrittori).

09.  Le eccezioni e gli altri tipo di interruzioni vengono gestite alla stessa maniera?
Lezione 042
01.  Con riferimento al controllore APIC per le interruzioni, indicare quale delle seguenti affermazioni è quella vera:

 Il controllore può essere gestito dal programmatore che lo vede come una interfaccia montata nello spazio di memoria. Ci sono solo 3 registri direttamente accessibili a
32 bit

 Il controllore può essere gestito dal programmatore che lo vede come una interfaccia montata nello spazio di memoria. Ci sono 3 registri direttamente accessibili a 32 bit
e 64 registri nascosti (accessibili tramite porte).

 Il controllore può essere gestito dal programmatore che lo vede come una interfaccia montata nello spazio di I/O. Ci sono 3 registri direttamente accessibili a 32 bit e 64
registri nascosti (accessibili tramite porte).

 Il controllore può essere gestito dal programmatore che lo vede come una interfaccia montata nello spazio di I/O. Ci sono solo 3 registri direttamente accessibili a 32 bit

02.  Con riferimento al controllore APIC per le interruzioni, indicare quale delle seguenti affermazioni è quella vera:

 Il controllore APIC è collegato al bus locale a 32 bit del processore tramite i classici piedini di indirizzo, dati e di controllo (piedini di ingresso nella parte LOCAL APIC)

 Nessuna delle altre opzioni

 Il controllore APIC è collegato al bus locale a 8 bit del processore tramite i classici piedini di indirizzo, dati e di controllo (piedini di ingresso nella parte LOCAL APIC)

 Il controllore APIC è collegato al bus locale a 16 bit del processore tramite i classici piedini di indirizzo, dati e di controllo (piedini di ingresso nella parte LOCAL APIC)

03.  Con riferimento al controllore APIC per le interruzioni, indicare quale delle seguenti affermazioni è quella vera:

 Nessuna delle altre opzioni

 Il controllore riceve le richieste di interruzione tramite il piedino di ingresso /INTR e le invia al processore tramite uno dei 24 piedini di uscita (IR0-IR23)

 Il controllore riceve le richieste di interruzione tramite 24 piedini di ingresso (IR0-IR23). Invia al processore la richiesta effettiva di interruzione tramite il piedino di
uscita /INTR

 Il controllore riceve le richieste di interruzione tramite il piedino di ingresso /INTa e le invia al processore tramite uno dei 24 piedini di uscita (IR0-IR23)

04.  Il bus speciale che consente al processore di comunicare con il controllore delle interruzioni APIC è formato da:

 I file collegati ai piedini: 1) /INTR , 2) /INTA 3) IR0-IR23

 Nessuna delle altre opzioni

 I fili collegati ai piedini: 1) a31-a2, 2)d31-d0, /be3-/be0

 I file collegati ai piedini: 1) /INTR , 2) /INTA 3) TP

05.  Elencare i passi che il controllore APIC effettua per la gestione del meccanismo delle interruzioni

06.  Disegnare lo schema della circuiteria del controllore di interruzione APIC.


Lezione 043
01.  Con riferimento alla gestione delle interfacce mediante meccanismo delle interruzioni, indicare quale delle seguenti affermazioni è falsa:

 Nella gestione della richiesta di interruzione occorre effettuare accessi aggiuntivi in memoria per salvare il valore dell'EIP corrente e impostare quello dell'EIP del driver

 La gestione di una interfaccia ad interruzione di programma comporta una maggiore perdita di tempo per il trasferimento del singolo dato.

 Nessuna delle altre opzioni

 Rispetto a quando l'interfaccia viene gestita a controllo di programma (si legge o scrive direttamente nei registri con delle istruzioni Assembly), il meccanismo delle
interruzioni comporta dei passi aggiuntivi

02.  Si consideri una semplice interfaccia gestita tramte il meccanismo delle interruzioni. Essa comunica con il controllore delle interruzioni tramite:

- Il piedino INTO: è collegato a IR4 e invia una richiesta di interruzione quando il buffer di ingresso diviene pieno. Questo accade quando il registro RBR contiene un nuovo
byte prelevato dal dispositivo esterno.
- Il piedino INTI: è collegato a IR5 invia una richiesta di interruzione quando il buffer di uscita diviene vuoto e un nuovo dato può essere messo all'interno del registro TBR.
TBR diviene vuoto quando il suo contenuto viene trasferito al trasduttore associato all'interfaccia.

- Il piedino INTI: è collegato a IR4 e invia una richiesta di interruzione quando il buffer di ingresso diviene pieno. Questo accade quando il registro TBR contiene un nuovo
byte prelevato dal dispositivo esterno.
- Il piedino INTO: è collegato a IR5 invia una richiesta di interruzione quando il buffer di uscita diviene vuoto e un nuovo dato può essere messo all'interno del registro RBR.
RBR diviene vuoto quando il suo contenuto viene trasferito al trasduttore associato all'interfaccia.

- Il piedino INTI: è collegato a IR4 e invia una richiesta di interruzione quando il buffer di ingresso diviene pieno. Questo accade quando il registro RBR contiene un nuovo
byte prelevato dal dispositivo esterno.
- Il piedino INTO: è collegato a IR5 invia una richiesta di interruzione quando il buffer di uscita diviene vuoto e un nuovo dato può essere messo all'interno del registro TBR.
TBR diviene vuoto quando il suo contenuto viene trasferito al trasduttore associato all'interfaccia.

 Nessuna delle altre opzioni

03.  Con riferimento al controllore APIC per le interruzioni, indicare quale delle seguenti affermazioni è quella vera:

 Occorre inizializzare la tabella delle interruzioni, cioè scrivere per ogni tipo di interruzione utilizzato un gate di interrupt che contenga l'indirizzo della routine che
gestisce l'interruzione stessa. Inoltre, essa si modifica e si aggiorna automaticamente mentre vengono inviate e gestite le richieste di interruzione

 Nessuna delle altre opzioni

 Occorre inizializzare la tabella delle interruzioni, cioè scrivere per ogni tipo di interruzione utilizzato un gate di interrupt che contenga l'indirizzo della routine che
gestisce l'interruzione stessa

 La tabella delle interruzioni non ha bisogno di essere inizializzata: essa si modifica e si aggiorna automaticamente mentre vengono inviate e gestite le richieste di
interruzione

04.  Per cosa sono dedicati, in genere, i piedini IR0 o IR2 del controllore APIC per le interruzioni?

 Per inviare richieste da parte del controllore VGA

 Per inviare richieste da parte del controllore della memoria cache

 Nessuna delle altre opzioni Interfaccia di conteggio che invia una interruzione ad intervalli regolari
 Per inviare richieste da parte del controllore della tastiera

05.  Disegnare lo schema di collegamento, di una interfaccia gestita ad interruzione di programma, al bus e al controllore di interruzione.

06.  Discutere a parole cosa fa il driver che gestisce l'interruzione inviata da una interfaccia.

07.  Disegnare e discutere lo schema di una interfaccia e dei suoi registri che può essere gestita ad interruzione di programma.
Lezione 044
01.  Indicare fra le seguenti tipologia di memoria quali sono le più veloci:

 Dischetto Magnetico

 Hard Disk

 Memorie statiche

 Memorie Dinamiche

02.  Il collo di bottiglia nella comunicazione fra CPU e memoria sta:

 Nella memoria centrale

 Nella comunicazione tramite Bus

 Nessuna delle altre opzioni

 Nella memoria cache

03.  Quali sono i dispositivi di memorizzazione più veloci che si possono trovare in un calcolatore?

 Registri della CPU e code di pre-fetch

 Memorie statiche

 Memorie Dinamiche

 Memorie di massa

04.  I piedini /CAS e /RAS delle memorie RAM dinamiche servono, rispettivamente, per:

 Specificare che si sta selezionando la scrittura o la lettura

 Specificare che si sta selezionando la cache o la memoria centrale

 Specificare che si sta selezionando la colonna o la riga

 Nessuna delle altre opzioni

05.  Le memorie di RAM dinamiche sono fatte con:

 Flip Flop D Latch

 Flip Flop SR

 Flip Flop D positive edge triggered

 Nessuna delle altre opzioni Condensatori

06.  Una memoria Ram dinamica da 1 Mega bit, quanti piedini di indirizzo ha:

 30

 Nessuna delle altre opzioni

 20

 10

07.  Disegnare lo schema di una memoria DRAM e discutere i suoi piedini.

08.  Elencare i passi che si effettuano per la scrittura in una memoria DRAM.

09.  Esistono memorie interne al processore? Quali sono le loro caratteristiche?


Lezione 045
01.  La località di può classificare in:

 Temporale, Intenzionale, Algoritmica

 Temporale, Spaziale, Intenzionale

 Nessuna delle altre opzioni Temporale, spaziale, sequenziale


 Temporale, Spaziale, Algoritmica

02.  Nell'organizzazione di una memoria cache, il campo spiazzamento dell'indizzo serve per:

 Identificare una locazione nella cache

 Nessuna delle altre opzioni

 Identificare un gruppo nella cache

 identificare una locazione nel blocco dati del gruppo selezionato nella cache

03.  Nell'organizzazione di una memoria cache, il campo etichetta dell'indizzo serve per:

 Nessuna delle altre opzioni Verificare che il gruppo trovato corrisponda con quello deisiderato
 identificare una locazione nel blocco dati del gruppo selezionato nella cache

 Identificare una locazione nella cache

 Identificare un gruppo nella cache

04.  Le memorie cache sono realizzate con:

 Un unico banco di memoria SRAM

 Un banco di memoria SRAM ed un banco di memoria DRAM

 Un unico banco di memoria DRAM

 Nessuna delle altre opzioni Due banchi di memoria SRAM

05.  Indicare quali delle seguenti affermazioni è quella sbagliata:

 Località temporale: quando viene riferita una locazione di memoria, è probabile che nel giro di poco tempo venga riferita la stessa locazione.

 Località Sequenziale: quando viene riferita una locazione di memoria o un blocco di locazioni è molto probabile che negli istanti temporali successivi venga riferita la
locazione di memoria o il gruppo di locazioni sequenzialmente successive.

 Località spaziale: quando viene riferita una locazione di memoria, è probabile che le locazioni vicine vengano anch'esse riferite (in questo tipo di località può essere
compresa la località sequenziale)

 Nessuna delle altre opzioni

06.  Nell'organizzazione di una memoria cache, il campo indice dell'indizzo serve per:

 Nessuna delle altre opzioni

 Identificare una locazione nella cache

 Identificare un gruppo nella cache

 identificare una locazione nel blocco dati del gruppo selezionato nella cache

07.  Discutere la differenza fra gestione della scrittura in write through e in write back in una memoria cache.

08.  Disegnare e discutere lo schema dell'organizzazione di una memoria cache.

09.  Cosa succede quando il processore effettua una operazione di scrittura in presenza di memoria cache?
Lezione 046

01. L'immagine mostrata in figura rappresenta:

 Una memoria dinamica associativa ad insiemi

 Una memoria cache associativa per parti

 Una memoria cache associativa ad insiemi

 Una memoria dinamica associativa per parti


02.  Il controllore della memoria cache si occupa di:

- gestire le operazioni di lettura/scrittura comandate dal processore


- effettuare tutte le operazioni sulla memoria cache e memoria centrale

- gestire le operazioni di lettura/scrittura comandate dal processore


- effettuare tutte le operazioni sulla memoria cache

- gestire le operazioni di lettura/scrittura comandate dalla memoria centrale


- effettuare tutte le operazioni sulla memoria cache e memoria centrale

 Nessuna delle altre opzioni

03.  Il controllore della memoria cache è visto da programmatore come:

 Una interfaccia nello spazio di I/O

 Una interfaccia nello spazio di memoria

 Una periferica

 Nessuna delle altre opzioni

04.  Nelle memoria associative ad insiemi l'algoritmo di rimpiazzamento più utilizzato è:

 MRU

 SRU

 LRU

 Nessuna delle altre opzioni

05.  Disegnare e discutere lo schema del controllore della memoria cache (discutere come vengono utilizzati i vari piedini).

06.  A cosa serve il campo R in una cache associativa ad insiemi?

07.  Disegnare e discutere lo schema di una cache associativa ad insiemi.


Lezione 047
01.  Con riferimento ad una architettura con bus PCI, specificare quale delle seguenti affermazioni è quella vera:

 Nessuna delle altre opzioni

- Le transazioni sono tutte le operazioni che vengono svolte sul bus PCI.
- L'iniziatore è il dispositivo che inizia la transazione sul bus PCI (master del bus).
- L'obiettivo è il dispositivo che viene indirizzato dalla transazione (slave del bus).
- In transazioni diverse, un dispositivo può svolgere sia il ruolo di iniziatore sia il ruolo di obiettivo.
- Un tipico esempio di iniziatore è il ponte Ospite-PCI che si occupa di trasferire dati fra CPU e periferiche.

- Le transazioni sono tutte le operazioni che vengono svolte sul bus PCI.
- L'iniziatore è il dispositivo che inizia la transazione sul bus PCI (master del bus).
- L'obiettivo è il dispositivo che viene indirizzato dalla transazione (slave del bus).
- Nella stessa transazione, un dispositivo può svolgere sia il ruolo di iniziatore sia il ruolo di obiettivo.
- Un tipico esempio di iniziatore è il ponte Ospite-PCI che si occupa di trasferire dati fra CPU e periferiche.

- Le transazioni sono tutte le operazioni che vengono svolte sul Ponte Ospite-PCI.
- L'iniziatore è il dispositivo che inizia la transazione sul bus PCI (master del bus).
- L'obiettivo è il dispositivo che viene indirizzato dalla transazione (slave del bus).
- In transazioni diverse, un dispositivo può svolgere sia il ruolo di iniziatore sia il ruolo di obiettivo.
- Un tipico esempio di iniziatore è il ponte Ospite-PCI che si occupa di trasferire dati fra CPU e periferiche.

02.  Le principali linee del bus PCI sono:

- il clock di sistema (linea CLK), che è in ingresso a tutti i dispositivi (tutte le altre linee sono campionate sul fronte di salita di CLK);
- trenta linee AD29-AD0 (Address oppure Data), di ingresso/uscita per tutti i dispositivi;
- quattro linee C/BE3-C/BE0 (Command oppure Byte Enable), di uscita per i dispositivi iniziatori e di ingresso per i dispositivi obiettivo;
- una linea /FRAME e una linea /IRDY (Initiator Ready), di uscita per gli iniziatori e di ingresso per gli obiettivi;
- una linea /TRDY (Target Ready) e una linea /DEVSEL (Device Select), di uscita per i dispositivi obiettivi e di ingresso per i dispositivi iniziatori.

- il clock di sistema (linea CLK), che è in ingresso a tutti i dispositivi (tutte le altre linee sono campionate sul fronte di salita di CLK);
- trentadue linee AD31-AD0 (Address oppure Data), di ingresso/uscita per tutti i dispositivi;
- quattro linee C/BE3-C/BE0 (Command oppure Byte Enable), di uscita per i dispositivi iniziatori e di ingresso per i dispositivi obiettivo;
- una linea /FRAME e una linea /IRDY (Initiator Ready), di uscita per gli iniziatori e di ingresso per gli obiettivi;
- una linea /TRDY (Target Ready) e una linea /DEVSEL (Device Select), di uscita per i dispositivi obiettivi e di ingresso per i dispositivi iniziatori.

- il clock di sistema (linea CLK), che è in ingresso a tutti i dispositivi (tutte le altre linee sono campionate sul fronte di salita di CLK);
- trentadue linee AD31-AD0 (Address oppure Data), di ingresso/uscita per tutti i dispositivi;
- quattro linee C/BE3-C/BE0 (Command oppure Byte Enable), di ingresso per i dispositivi iniziatori e di uscita per i dispositivi obiettivo;
- una linea /FRAME e una linea /IRDY (Initiator Ready), di uscita per gli iniziatori e di ingresso per gli obiettivi;
- una linea /TRDY (Target Ready) e una linea /DEVSEL (Device Select), di uscita per i dispositivi obiettivi e di ingresso per i dispositivi iniziatori.

- il clock di sistema (linea CLK), che è in ingresso a tutti i dispositivi e al processore (tutte le altre linee sono campionate sul fronte di salita di CLK);
- trentadue linee AD31-AD0 (Address oppure Data), di ingresso/uscita per tutti i dispositivi;
- quattro linee C/BE3-C/BE0 (Command oppure Byte Enable), di uscita per i dispositivi iniziatori e di ingresso per i dispositivi obiettivo;
- una linea /FRAME e una linea /IRDY (Initiator Ready), di uscita per gli iniziatori e di ingresso per gli obiettivi;
- una linea /TRDY (Target Ready) e una linea /DEVSEL (Device Select), di uscita per i dispositivi obiettivi e di ingresso per i dispositivi iniziatori.

03.  Con riferimento ad una architettura con bus PCI, come si specifica l'indirizzo di un registro nello spazio di configurazione?

 Numero del bus, numero della funzione, indirizzo del registro nello spazio pubblico

 Numero del bus, numero del dispositivo, indirizzo del registro nello spazio privato

 Nessuna delle altre opzioni

 Numero del bus, numero del dispositivo, indirizzo del registro nello spazio pubblico

04.  Con riferimento ad una architettura con bus PCI, specificare quale delle seguenti affermazioni è quella vera:

 Il processore e le periferiche sono collegati sullo stesso bus PCI, la memoria è collegata sul bus locale

 Nessuna delle altre opzioni

 Il processore e la memoria sono collegati sullo stesso bus locale

 Il processore e la memoria sono collegati sullo stesso bus PCI

05.  Illustrare le fasi di una transazione sul bus PCI.

06.  Cosa è l'arbitro del bus PCI e quali azioni svolge?

07.  Disegnare e discutere un esempio di architettura di un calcolatore con bus PCI.


Lezione 048
01.  Con riferimento ad una architettura con bus PCI, specificare quale delle seguenti affermazioni è quella vera:

 Per la gestione delle transazioni di configurazione, il ponte Ospite-PCI possiede quattro registri da 32 bit posizionati nello spazio di I/O

 Per la gestione delle transazioni di configurazione, il ponte Ospite-PCI possiede due registri da 32 bit posizionati nello spazio di I/O

 Nessuna delle altre opzioni

 Per la gestione delle transazioni di configurazione, il ponte Ospite-PCI possiede sei registri da 32 bit posizionati nello spazio di I/O

02.   L'immagine mostrata in figura rappresenta:

 I principali registri obbligatori di una funzione implementata da un dispositivo su bus PCI

 Nessuna delle altre opzioni

 I principali registri obbligatori di un dispositivo su bus PCI

 I principali registri di una funzione implementata da un dispositivo su bus PCI


03.  Con riferimento ad una architettura con bus PCI, le transazioni nello spazio di configurazione vengono effettuate:

 Tramite il ponte Ospite-PCI

 Direttamente dal processore

 Dai dispositivi collegati sul bus PCI

 Nessuna delle altre opzioni

04.  Con riferimento ad una architettura con bus PCI, specificare quale delle seguenti affermazioni è quella vera:

- Ogni dispositivo montato sul bus PCI può realizzare una sola funzione.
- A tale scopo, ciascuna funzione deve implementare nello spazio di configurazione del dispositivo un insieme di registri.
- Alcuni di questi registri sono obbligatori altri sono specifici di ciascuna funzione messa a disposizione dal dispositivo.
- Tutti i registri di configurazione sono costituiti da uno o più byte consecutivi appartenenti alla stessa parola lunga.

 Nessuna delle altre opzioni

- Ogni dispositivo montato sul bus PCI può realizzare differenti funzioni.
- A tale scopo, ciascuna funzione deve implementare nello spazio di configurazione del dispositivo un insieme di registri.
- Alcuni di questi registri sono obbligatori altri sono specifici di ciascuna funzione messa a disposizione dal dispositivo.
- Tutti i registri di configurazione sono costituiti da uno o più byte

- Ogni dispositivo montato sul bus PCI può realizzare differenti funzioni.
- A tale scopo, ciascuna funzione deve implementare nello spazio di configurazione del dispositivo un insieme di registri.
- Alcuni di questi registri sono obbligatori altri sono specifici di ciascuna funzione messa a disposizione dal dispositivo.
- Tutti i registri di configurazione sono costituiti da uno o più byte consecutivi appartenenti alla stessa parola lunga.

05.  Cosa sono i registri base e i comparatori delle funzioni di un dispositivo PCI?

06.  Discutere come avviene una transazione di configurazione per un dispositivo PCI.

07.  A cosa servono i registri CAP e CDP del ponte OSPITE-PCI?


Lezione 049
01.  Con riferimento ad una architettura con bus PCI, è possibile che più funzioni di uno stesso dispositivo PCI effettuino richieste di interruzione tramite lo stesso
piedino?

 Si, ci sono sempre più funzioni gestite dal dispositivo che usano lo stesso piedino per inviare la richeista di interruzione.

 A volte

 Nessuna delle altre opzioni

 No, non ci sono mai più funzioni gestite dal dispositivo che usano lo stesso piedino per inviare la richeista di interruzione.

02.  Con riferimento ad una architettura con bus PCI, quanti piedini per inviare richieste di interruzione ha ciascun dispositivo collegato?

 Nessuna delle altre opzioni

 Da 1 a 4

 4

 1

03.  Alcune delle motivazioni più importanti che hanno portato all'introduzione del bus PCI express sono:

 E' piuttosto ingombrante ed è associato a grossi consumi energetici

 Fornisce una banda limitata per alcune categorie di dispositivi e di dispositivi PCI sono pittosto ingombranti.

 Nessuna delle altre opzioni

 Non garantisce la compatibilità con vecchi dispositivi

04.  Nell'architettura con bus PCI express la trasmissione dei dati avviene:

 In maniera seriale

 A blocchi per linee

 In maniera parallela

 Nessuna delle altre opzioni

05.  Nell'architettura con bus PCI express, quale è il dispositivo che assuma una particolare importanza?

 Nessuna delle altre opzioni

 Lo switch

 Il bridge

 Il ponte ospie-PCI

06.  Discutere come vengono gestite le interruzioni con dispositivi connessi al bus PCI.

07.  Come si garantisce la compatibilità del controllore APIC con le vecchie interfacce connesse al bus locale?

08.  Disegnare e discutere l'architettura di un calcolatore basato su bus PCI express.

09.  Quali sono i vantaggi introdotti dal PCI express?


Lezione 050
01.  Dove viene montato il controllore DMA in una architettura con solo bus locale?

 A monte dei circuiti di pilotaggio del bus locale nello spazio di I/O

 A monte dei circuiti di pilotaggio del bus locale nello spazio di memoria

 A valle dei circuiti di pilotaggio del bus locale nello spazio di memoria

 A valle dei circuiti di pilotaggio del bus locale nello spazio di I/O

02.  Cosa si intende per accesso diretto alla memoria (DMA)

 Nessuna delle altre opzioni

 Si tratta di una tecnica che consente al processore il trasferimento dei dati da e verso le interfacce, senza accedere alla memoria centrale

 Si tratta di una tecnica che consente il trasferimento dei dati fra memoria e le interfacce senza l'intervento continuo del processore

 Si tratta di una tecnica che consente al processore il trasferimento dei dati da e verso memoria direttamente

03.  Quanti e quali registri utilizza il controllore del DMA in una architettura con solo bus locale?

 MAR, IOAR, TCR e MODER a 16 bit

 MAR, IOAR, ADDR e MODER a 16 bit

 MAR, IOAR, TCR e MODER a 32 bit

 MAR, IOAR, ADDR e MODER a 32 bit

04.  I modi previsti per il trasferimento in DMA su bus locale sono:

 Nessuna delle altre opzioni

 Singolo e Continuo

 Seriale e parallelo

 Seriale e parallelo, Singolo e Continuo

05.  Che cosa è il bus mastering?

 Un tipico esempio di utilizzo del DMA tramite bus PCI

 Un tipico esempio di utilizzo del meccanismo delle interruzioni tramite bus PCI

 Un tipico esempio di utilizzo del meccanismo delle cache tramite bus PCI

 Nessuna delle altre opzioni

06.  Disegnare e discutere lo schema di un controllore DMA.

07.  Discutere come una interfaccia effettua il trasferimento dati in DMA.

08.  Discutere i passi che effettua il controllore DMA per il trasferimento di dati.

Lezione 051
01.  Per il trasferimento in DMA tramite bus mastering deve essere predisposta in memoria, per ogni funzione interessata:

 Una tabella di buffer

 Nessuna delle altre opzioni Una tabella di descrittori di buffer


 Una tabella di funzioni

 Una tabella di descrittori di funzione

02.  Cosa succede nel bus mastering in presenza di memoria cache?

 Nessuna delle altre opzioni

 I piedini /HOLD e /HOLDA, tramite cui viene gestita la richiesta del bus locale, sono collegati direttamente al controllore della cache.

 I piedini /HOLD e /HOLDA, tramite cui viene gestita la richiesta del bus locale, sono collegati direttamente al controllore della cache. Il piedino /HOLD del processore
resta sempre disattivo.

 I piedini /HOLD e /HOLDA, tramite cui viene gestita la richiesta del bus locale, sono collegati direttamente al controllore della cache. Il piedino /HOLD del processore
resta sempre attivo
03. L'immagine mostrata in figura rappresenta:

 L'architettura di un calcolatore con Bus PCI

 L'architettura di un calcolatore con Bus Locale e accesso in DMA

 Nessuna delle altre opzioni architettura di un calcolatore con bus mastering per DMA
 L'architettura di un calcolatore con Bus PCI e accesso in DMA

04.  Dove viene montato il controllore DMA in una architettura con bus PCI

 A monte dei circuiti di pilotaggio del bus locale nello spazio di I/O

 A valle dei circuiti di pilotaggio del bus locale nello spazio di I/O

 Nessuna delle altre opzioni

 A monte dei circuiti di pilotaggio del bus locale nello spazio di memoria

05.  Con riferimento al bus mastering, quali delle seguenti affermazioni è falsa?

 Nessuna delle altre opzioni

 Una qualsiasi interfaccia sul bus PCI può richiedere di iniziare una transazione scegliendo il ponte Ospite-PCI come arbitro

 Tutti i dispositivi collegati al bus PCI possono essere iniziatori di transazione

 Un qualsivoglia dispositivo collegato al bus PCI può essere scelto come obiettivo della transazione

06.  Quali sono i passi di una scrittura in memoria in bus mastering?

07.  Come si programma una funzione PCI per poterla utilizzare in modalità bus mastering?

08.  Chi gestisce in mutua esclusione il bus locale in presenza di trasferimento in DMA con bus mastering? Discutere tutti i passi per la richiesta di utilizzo del bus
locale.

09.  Cosa è la tabella dei descrittori di buffer e cosa contiene?


Lezione 052
01.  Quali sono le fasi di esecuzione delle e-istruzioni del processore PC

 Prelievo, Decodifica, Lettura degli operandi, Esecuzione vera e propria, Scrittura del Risultato

 Prefetch, Prelievo, Decodifica, Lettura degli operandi, Esecuzione vera e propria

 Nessuna delle altre opzioni

 Prefetch, Prelivevo, Lettura degli operandi, Esecuzione vera e propria, Scrittura del risultato

02.  Il risultato finale dell'utilizzo della tecnica del pipeline è:

 Nessuna delle altre opzioni

 L'esecuzione di fasi diverse di istruzioni simili in parallelo

 L'esecuzione di più istruzioni in parallelo

 L'esecuzione di fasi diverse di istruzioni diverse in parallelo

03.  Con riferimento alla tecnica del pipeline, come si possono risolvere le alee sul controllo?

 Pilotando il pipeline in maniera fondamentale

 Facendo una previsione sul risultato del controllo della condizione e continuando a prelevare la e-istruzione prevista

 Nessuna delle altre opzioni

 Non esistono questi tipi di alee

04.  Come si classificano le e-istruzioni in cui possono essere scomposte le istruzioni del processore PC?

 Esse si dividono in: operative, di memoria e di salto

 Esse si dividono in : operative, di controllo e di verifica.

 Esse si dividono in : operative, di salto e di verifica.

 Esse si dividono in : di memoria, di salto e di I/O

05.  Quale è il formato delle e-istruzioni operative?

 op dest, src1, src2

 op src1, src2

 Nessuna delle altre opzioni

 op dest, src1

06.  Disegnare e discutere lo schema di un pipeline a 5 stadi.

07.  Mostrare e discutere il diagramma temporale delle esecuzione di e-istruzioni in un pipeline a 5 stadi.

Lezione 053
01.  Nella tecnica di esecuzione fuori ordine:

 Le e-istruzioni possono sempre essere eseguite in ordine diverso rispetto a quello in cui sono state scritte solo se non ci sono delle dipendenze

 Le e-istruzioni possono sempre essere eseguite in ordine diverso rispetto a quello in cui sono state scritte solo se non ci sono delle incoerenze

 Le e-istruzioni possono sempre essere eseguite in ordine diverso rispetto a quello in cui sono state scritte

 Le e-istruzioni possono sempre essere eseguite in ordine diverso rispetto a quello in cui sono state scritte solo se ci sono le risorse hardware a disposizione

02.  Nella tecnica di esecuzione fuori ordine le dipendenze ci possono essere:

 Sui dati, sul codice e sul controllo

 Sul codice, sui nomi e sui salti

 Sui nomi, sui salti e sul controllo

 Sui dati, sui nomi e sul controllo

03.  Cosa sono le stazioni di prenotazione?

 Nessuna delle altre opzioni

 Nella tecnica di pipeline gestita con esecuzione fuori ordine, rappresentano quelle circuiterie in cui le e-istruzioni vengono emesse

 Nella tecnica di pipeline gestita con esecuzione fuori ordine, rappresentano quelle circuiterie in cui le e-istruzioni vengono eseguite

 Nella tecnica di pipeline gestita con esecuzione fuori ordine, rappresentano quelle circuiterie da cui le e-istruzioni vengono prelevate
04. L'immagine mostrata in figura rappresenta:

 La circuiteria per la gestione della pipeline con esecuzione speculativa

 La circuiteria per la gestione della pipeline con esecuzione fuori ordine

 Nessuna delle altre opzioni

 La circuiteria per la gestione della pipeline

05.  Quali sono le condizioni per l'emissione di una e-istruzione?

06.  Cosa accade quando una e-istruzione viene emessa? E quando viene completata?

07.  Spiegare se e come sia possibile l'esecuzione fuori ordine e/o in parallelo delle istruzioni.

08.  Discutere i concetti di dipendenza sui dati, sui nomi e sul controllo.
Lezione 054
01.  Cosa è e dove si usa il buffer di riordino?

 Nessuna delle altre opzioni

 Si usa nella tecnica di esecuzione fuori ordine nello stadio di ritiro. Si tratta di una struttura dati organizzata come una coda che contiene dei descrittori di e-istruzioni.

 Si usa nella tecnica di esecuzione speculativa nello stadio di ritiro. Si tratta di una struttura dati organizzata come una coda che contiene dei descrittori di e-istruzioni.

 Si usa nella tecnica di esecuzione speculativa nello stadio di prenotazione. Si tratta di una struttura dati organizzata come una coda che contiene dei descrittori di
e-istruzioni.

02.  La tecnica dell'esecuzione speculativa, nel pipeline che contempla l'esecuzione fuori ordine:

 Consente di eseguire nel pipeline anche e-istruzioni non parallelizzabili

 Nessuna delle altre opzioni

 Consente di eseguire nel pipeline anche e-istruzioni con un formato non uniforme

 Consente di eseguire nel pipeline anche e-istruzioni dipendenti da e-istruzioni di salto non ancora risolte

03.  La tecnica dell'esecuzione speculativa, nel pipeline che contempla l'esecuzione fuori ordine:

 Prevede l'aggiunta dello stadio di prenotazione

 Prevede l'aggiunta dello stadio di ritiro

 Nessuna delle altre opzioni

 Non prevede l'aggiunta di nessuno stadio aggiuntivo

04.  La tecnica dell'esecuzione speculativa, nel pipeline che contempla l'esecuzione fuori ordine:

 Prevede l'eliminazione della dipendenza sui nomi tramite la rinomina dei registri

 Prevede l'eliminazione della dipendenza sui nomi tramite la rinomina dei nomi delle variabili

 Nessuna delle altre opzioni

 Prevede l'eliminazione della dipendenza sui salti tramite la rinomina dei registri

05.  A cosa serve e come avviene la rinomina dei registri?

06.  Discutere come avviene l'emissione, il completamento e il ritiro di una e-istruzione di controllo in caso di esecuzione speculativa.

07.  Disegnare e discutere la struttura dati (a puntatori) utilizzata per la rinomina dei registri. Fare riferimento alla struttura con corrispondenza speculativa e
non speculativa.

08.  Discutere quando e come avviene lo svuotamento del ROB.


Lezione 056
01.  Quali delle seguenti affermazioni è falsa?

 Nessuna delle altre opzioni

 Nelle GPU le unità di controllo sono più di una ma sono molto semplici. Esse servono a gestire i thread (programmi) paralleli e massimizzare il numero di programmi in
esecuzione

 Nelle GPU Le memorie sono di dimensione ridotta, ma cercano di superare il problema delle latenze di accesso sfruttando il fatto che si utilizzano multi thread in
esecuzione parallela

 Nelle CPU c'è una sola sofisticata unità di controllo che serve a sfruttare le unità di calcolo per ottimizzare i codici dei programmi sequenziali.

02.  Nelle architetture di calcolo che utilizzano le GPU, come vengono organizzati i thread?

 Sono tutti indipendenti fra loro, ma c'e' una organizzazione strutturata in griglia

 Sono tutti indipendenti fra loro, ma non c'e' una organizzazione strutturata

 Nessuna delle altre opzioni

 Sono organizzati gerarchicamente

03.  Cosa sono i Thread Processing Clusters (TPC) ?

 Sono presenti nelle architetture basata su GPU e gruppi di Streaming Multiprocessor che condividono anche altre circuiterie che servono per applicazioni grafiche e in
genere non visibili al programmatore

 Sono presenti nelle architetture basata su GPU e sono dei gruppi di thread organizzati gerarchicamente

 Sono presenti nelle architetture basata su GPU e gruppi di Streaming Multiprocessor che non condividono anche altre circuiterie fra loro e che servono per applicazioni
grafiche e in genere non visibili al programmatore

 Sono presenti nelle architetture basata su GPU e sono dei gruppi di processi organizzati gerarchicamente

04.  Quali tipologie di memorie sono presenti nelle architetture basata su GPU?

 Memorie Globali e Memorie per le costanti

 Nessuna delle altre opzioni Memoria globale, Texture memory, constant memory, tre livelli di cache istruzioni

 Solo memorie cache

 Memorie cache e memorie texture

05.  Possono esistere calcolatori basati solo su GPU?

 Si, l'importante che ci siano le unità di calcolo e le GPU lo sono.

 No, è sempre necessaria la presenza di una CPU.

 Nessuna delle altre opzioni

 In alcuni casi particolari si. Si tratta dei casi un cui alcune GPU possono anche organizzare la distribuzione dei task sulle altre GPU.

06.  Quale è la differenza fra architetture multicore e architetture manycore?

07.  Quanti tipi di memorie esistono nelle GPU?

08.  Disegnare e discutere lo schema a blocchi dell'architettura di una GPU.

09.  Cosa sono le GPU e quale è la filosofia progettuale delle GPU?


Lezione 057
01.  In un sistema operativo multiprogrammato:

 Più processi indipendenti possono essere gestiti in contemporaneamente

 Più processi indipendenti possono andare in esecuzione contemporaneamente

 Più utenti possono contemporaneamente gestire processi indipendenti

 Nessuna delle altre opzioni

02.  In un sistema operativo su sistema multielaborazione:

 Più processi indipendenti possono andare in esecuzione contemporaneamente

 Nessuna delle altre opzioni

 Più utenti possono contemporaneamente gestire processi indipendenti

 Più processi indipendenti possono essere gestiti in contemporaneamente

03.  Che cosa è un sistema operativo

 Un insieme di software che ha l'obiettivo di rendere più semplice ed efficace lo sviluppo dei programmi e realizzare politiche di gestione delle risorse Hardware

 Nessuna delle altre opzioni

 Una componente della memoria che ha l'obiettivo di rendere più semplice ed efficace lo sviluppo dei programmi e realizzare politiche di gestione delle risorse Hardware

 Una componente del processore che ha l'obiettivo di rendere più semplice ed efficace lo sviluppo dei programmi e realizzare politiche di gestione delle risorse Hardware

04.  Con riferimento ai sistemi operativi, specificare quale delle seguenti affermazioni è quella falsa:

 Ogni sistema operativo deve essere utilizzato per uno scopo specifico

 Non esistono sistemi operativi per la gestione di sistemi real time

 I sistemi operativi monoprogrammati gestiscono i programmi in maniera sequenziale, uno alla volta.

 Nessuna delle altre opzioni

05.  Come si possono classificare i sistemi operativi in base al tipo di utilizzo?

06.  Quali sono i principali compiti del sistema operativo?

07.  Differenza fra multiprogrammazione e multi elaborazione?

08.  Quali sono i due obiettivi che un sistema operativo deve perseguire?
Lezione 058
01.  Cosa sono i Mainframe?

 Sono calcolatori elettronici di grosse dimensioni su cui giravano sistemi operativi di tipo batch

 Sono la componente principale di un sistema operativo batch

 Sono gli attuali cluster e sistemi cloud

 Nessuna delle altre opzioni

02.  Cosa sono i sistemi operativi interattivi?

 Nessuna delle altre opzioni

 Sono una variante dei sistemi operativi time sharing

 Sono una variante dei sistemi operativi general purpose

 Sono una variante dei sistemi operativi real time

03.  Cosa è lo spooling?

 Nessuna delle altre opzioni

 E' una tecnica che consente l'utilizzo contemporaneo della memoria

 E' una tecnica che consente l'utilizzo contemporaneo dei programmi

 E' una tecnica che consente l'utilizzo contemporaneo delle risorse

04.  Con riferimento ai sistemi operativi Batch, specificare quale fra le seguenti affermazioni è quella falsa:

 Non si dovevano prendere decisioni su come allocare le risorse

 Non occorreva scegliere il successivo programma da eseguire

 Non c'era interazione fra programma e utente

 Nessuna delle altre opzioni

05.  Discutere i sistemi interattivi e timesharing.

06.  Che caratteristiche devono avere i sistemi operativi che gestiscono sistemi multiprogrammati, interattivi e timesharing?

07.  Discutere la tecnica dello spooling e mostrare il diagramma del pipeline di esecuzione dei processi con lo spooling.
Lezione 059
01.  In una smart TV che tipo di sistema operativo gira?

 Un sistema embedded

 Un sistema batch

 Un sistema real time

 Un sistema monoprogrammato

02.  Con riferimento ai sistemi operativi real time, indicare quale fra le seguenti affermazioni è falsa
 Si possono classificare in soft, medium e hard real time

 I sistemi di elaborazione in real-time tempo reale si usano quando è necessario fissare rigidi vincoli di tempo per le operazioni della CPU o per il flusso di dati

 Se le elaborazioni non vengono eseguite entro il limite massimo temporale i risultati non sono più attendibili

 Nessuna delle altre opzioni

03.  I sistemi operativi distribuiti su quali architetture si utilizzano?

 Architetture monoprocessore

 Nessuna delle altre opzioni

 Architetture multiprocessore

 Cluster

04.  Quali sono i principali vantaggi dei sistemi paralleli?

 Efficienza, Velocità, Disponibilità

 Efficienza, Affidabilità, Disponibilità

 Nessuna delle altre opzioni

 Efficienza, Affidabilità, Velocità

05.  Come possono essere suddivisi i sistemi paralleli?

06.  Discutere le differenze fra le caratteristiche che devono avere i sistemi operativi hard real-time e soft real-time.

07.  Cosa sono le reti di calcolatori e quali sono le differenze con i sistemi paralleli?
Lezione 060
01.  L'allocazione delle risorse da parte del sistema operativo è gestita da funzioni:

 Non visibili all'utente

 Nessuna delle altre opzioni

 Visibili all'utente

 Gestite dall'utente

02.  Con riferimento alle chiamate di sistema di un sistema operativo, quele fra le seguenti affermazioni è quella falsa?

 Una parte delle funzioni svolte dal sistema operativo possono essere disponibili ai programmi scritti dagli utenti attraverso chiamate di sistema

 Non possono essere scritte in linguaggi come l'Assembly e il C/C++

 Nessuna delle altre opzioni

 Esse costituiscono l'interfaccia tra un processo e il sistema operativo.

03.  Fra le funzioni non visibili all'utente di un sistema operativo quali delle seguenti ne fanno parte?

 Tutte quelle che realizzano il criterio di convenienza

 Tutte quelle che realizzano il criterio di efficienza

 Nessuna delle altre opzioni

 Tutte quelle che realizzano il criterio di cooperazione

04.  Fra le funzioni visibili all'utente di un sistema operativo quali delle seguenti ne fanno parte?

 Tutte quelle che realizzano il criterio di cooperazione

 Nessuna delle altre opzioni

 Tutte quelle che realizzano il criterio di convenienza

 Tutte quelle che realizzano il criterio di efficienza

05.  Cosa sono le system call e in che categorie si possono classificare?

06.  Discutere le principali funzioni di un sistema operativo non visibili all'utente.

07.  Discutere le principali funzioni di un sistema operativo visibili all'utente.


Lezione 061
01.  La struttura di base di un sistema operativo stratificato è costituita da:

 Livello Driver Dispositivi, Livello Sistema, Livello dei Sotto Sistemi, Livello API, Livello Applicazione

 Livello Driver Dispositivi, Livello Nucleo Livello di Procedura, Livello API, Livello Applicazione

 Livello Driver Dispositivi, Livello Sistema, Livello di Procedura, Livello API, Livello Applicazione

 Livello Driver Dispositivi, Livello Nucleo, Livello dei Sotto Sistemi, Livello API, Livello Applicazione

02.  La struttura di base di un sistema operativo monolitico è costituita da:

 Programma principale, procedure di servizio, procedure di utilità

 Programma principale, procedure di servizio e programma utente

 Programma utente, procedure di servizio e procedure di utlità

 Nessuna delle altre opzioni

03.  Le macchine virtuali sono:

 Nessuna delle altre opzioni

 Sistemi client-server

 Sistemi strutturati a livelli

 Sistemi strutturati in maniera monolitica

04.  I sistemi cliente-server sono:

 Nessuna delle altre opzioni

 Sistemi orientati al kernel distrubuito

 Sistemi monilitici

 Sistemi orientati al microkernel

05.  La struttura di base di un sistema operativo stratificato è costituita da:

 Programma utente, procedure di servizio e procedure di utlità

 Programma principale, procedure di servizio e programma utente

 Nessuna delle altre opzioni Livello Driver Dispositivi Livello Nucleo Livello dei Sotto Sistemi Livello API Livello Applicazione
 Programma principale, procedure di servizio, procedure di utilità

06.  Illustrare i vantaggi e le problematiche dei sistemi stratificati.

07.  Cosa è il monitor della macchina virtuale e di cosa si occupa?

08.  Discutere vantaggi e svantaggi dei sistemi client-server.

09.  Disegnare lo schema dell'architettura di un sistema stratificato e discuterla.

10.  Illustrare le caratteristiche dei sistemi client-server e disegnare lo schema architetturale.


Lezione 062
01.  Quali fra le seguenti attività relative ai processi non viene gestita dal sistema operativo

 Nessuna delle altre opzioni

 Creazione e cancellazione

 Scheduling dei processi

 Meccanismi di sincronizzazione ed interruzione

02.  Quali sono gli stati in cui si può trovare un processo?

 New, Read, Running, Waiting, Terminate

 New, Ready, Running, Waiting, Terminate

 Nessuna delle altre opzioni

 New, Read, Running, Speeding, Terminate

03.  Quale fra i seguenti elementi non fa parte dell'istanza di un processo:

 Il codice oggetto caricato in memoria

 Il codice sorgente caricato in memoria

 Valore dei Registri della CPU

 La pila e lo heap

04.  Il passaggio dallo stato ready allo stato running di un processo viene effettuato da:

 Scheduler

 Registro EIP

 Processore

 Dispatcher

05.  Quando un processo può passare dallo stato waiting allo stato running?

 Quando si verifica un particolare evento

 Nessuna delle altre opzioni

 Quando si conclude il completamento di un I/O

 Quando lo decide lo scheduler

06.  Quando viene allocata la memoria ad un processo?

 Quando passa nello stato running

 Quanto entra nello stato new

 Quando passa nello stato ready

 Nessuna delle altre opzioni

07.  Che cosa è un processo?

 E' un programma scritto in un linguaggio ad alto livello

 E' un programma in codice oggetto

 E' un programma in esecuzione in memoria

 Nessuna delle altre opzioni Il processo è l’istanza di un programma in esecuzione su una CPU.

08.  Che cosa è il descrittore di processo?

 Nessuna delle altre opzioni

 E' una struttura dati gestita a livello di sistema operativo che contiene tutte le informazioni che descrivono l'istanza del processo

 E' un metodo del processo in esecuzione che contiene tutte le informazioni che descrivono l'istanza del processo

 E' una struttura dati del processo in esecuzione che contiene tutte le informazioni che descrivono l'istanza del processo

09.  Disegnare e discutere il diagramma degli stati di un processo.

10.  Discutere i campi che formano il descrittore di processo.

11.  Quando viene allocata la memoria ad un processo?


Lezione 063
01.  In generale, nel contesto dei sistemi operativi, quali fra le seguenti code di processi non esiste?

 La coda dei processi in attesa di allocare memoria

 La coda dei processi in attesa che termini una richiesta di I/O

 La coda dei processi in attesa di essere eseguiti

 La coda dei processi terminati

02.  Con riferimento allo scheduling dei processi, indicare quale fra le seguenti descrizioni è quella falsa:

 Nessuna delle altre opzioni

 Ogni processo si può caratterizzare come avente una prevalenza di I/O o una prevalenza di elaborazione. Si distinguono: �processi I/O bound, processi che fanno poche
richieste di I/O; processi CPU bound, processi che richiedono maggior tempi di calcolo e fanno poche richieste di I/O

 Ogni processo si può caratterizzare come avente una prevalenza di I/O o una prevalenza di elaborazione. Si distinguono: �processi I/O bound, processi che fanno molte
richieste di I/O; processi CPU bound, processi che richiedono minori tempi di calcolo e fanno poche richieste di I/O"

 Ogni processo si può caratterizzare come avente una prevalenza di I/O o una prevalenza di elaborazione. Si distinguono: �processi I/O bound, processi che fanno molte
richieste di I/O; processi CPU bound, processi che richiedono maggior tempi di calcolo e fanno poche richieste di I/O

03.  Con riferimento allo scheduling dei processi, indicare quale fra le seguenti descrizioni è quella falsa:

- Lo scheduler a lungo termine si differenzia da quello a breve termine principalmente per la frequenza con la quale sono essi entrano in azione.
- Lo scheduler a breve termine seleziona poco frequentemente un nuovo processo a cui assegnare la CPU, per questo motivo deve essere molto veloce per ottimizzare le
prestazioni del sistema.
- Lo scheduler a lungo termine viene eseguito più frequentemente e a causa del maggior intervallo che intercorre tra le esecuzioni dei processi, dispone di meno tempo per
scegliere un processo per l'esecuzione.

- Lo scheduler a medio termine non è presente in tutti i sistemi operativi;


- Questo scheduler rimuove i processi già in memoria da troppo tempo per ridurre il grado di multiprogrammazione (swap out) per poi reintrodurli successivamente e far
riprendere la loro esecuzione dal punto in cui era stata abbandonata (swap in).

- Lo scheduler a lungo termine si differenzia da quello a breve termine principalmente per la frequenza con la quale sono essi entrano in azione.
- Lo scheduler a breve termine seleziona frequentemente un nuovo processo a cui assegnare la CPU, per questo motivo deve essere molto veloce per ottimizzare le
prestazioni del sistema.
- Lo scheduler a lungo termine viene eseguito più raramente e a causa del maggior intervallo che intercorre tra le esecuzioni dei processi, dispone di più tempo per scegliere
un processo per l'esecuzione.

 Esistono tre tipologie di scheduler: a breve termine, a lungo termine a medio termine

04.  Nei sistemi operativi multiprogrammati si hanno le seguenti code dei processi:

 Waiting queue, ready queue

 Running queue, waiting queue

 Job queue, ready queue, waiting queue

 Job queue, running queue, waiting queue

05.  Discutere la differenza fra lo stato ready e waiting

06.  Disegnare e discutere lo schema di cambiamento di contesto che interessa due processi generici P0 e P1 in un sistema timesharing

07.  Disegnare e discutere il diagramma di accodamento dei processi.

08.  Che cosa si intende per cambiamento di contesto?

09.  Cosa è la coda dei descrittori liberi e a cosa serve?


Lezione 064
01.  In ambiente UNIX cosa è il processo init()?

 Nessuna delle altre opzioni

 Esso è il padre di tutti i processi, gestisce il lancio di tutti i programmi per rendere attivo il sistema operativo. Il suo PID è sempre uno e gestisce i processi orfani

 E' il processo di PID zero che si occupa di gestire i processi orfani e la loro terminazione

 E' il processo di PID uno che si occupa di organizzare tutti i processi che finiscono la loro esecuzione

02.  Con riferimento alla creazione dei processi (processo padre che genera un processo figlio), indicare quale delle seguenti affermazioni è quella falsa:

 Spazio di indirizzamento del nuovo processo: se lo spazio di indirizzamento è uguale, allora il figlio è una copia identica del padre; se è diverso il figlio esegue un
programma diverso.

 Condivisione delle risorse: un figlio ottiene le proprie risorse direttamente ed esclusivamente dal sistema operativo.

 Nessuna delle altre opzioni

 Modello di esecuzione: il processo padre e i processi figlio possono essere eseguiti in modo concorrente ognuno per conto suo, oppure in modo sequenziale (il padre si
ferma in attesa che i figli terminino la loro esecuzione). L'implementazione dipende dalle scelte del programmatore.

03.  Con riferimento alla creazione dei processi (processo padre che genera un processo figlio), indicare quale delle seguenti descrizioni è quella falsa:

 Il processo figlio generato con la primitiva fork() è composto di una copia dello spazio degli indirizzi del processo genitore. In questa maniera i due processi possono
comunicare senza difficoltà.

 Entrambi i processi (genitore e figlio) continuano l'esecuzione all'istruzione successiva alla chiamata di sistema fork( ): la chiamata di sistema fork ( ) riporta il valore del
proprio PID nel nuovo processo (il figlio) e riporta l'identificatore del processo figlio nel processo genitore.

 Nel sistema operativo UNIX, si può creare un nuovo processo per mezzo della chiamata di sistema fork( ).

 Nessuna delle altre opzioni

04.  Nel sistema operativo UNIX la terminazione di un processo può avvenire:

 Normalmente, in maniera anomala, per volonta dello scheduler

 Normalmente, in maniera anomala, per volonta dei un altro processo

 Nessuna delle altre opzioni

 Normalmente, in maniera anomala, per volonta del sistema operativo

05.  Discutere le differenze fra la primitiva fork() e la primitiva clone().

06.  Cosa è il PID di un processo? In ambiente UNIX che primitiva si invoca per recuperare il PID di un processo?

07.  Scrivere un esempio di codice C in cui si crea un processo con la primitiva fork().

08.  Quale è il tipico layout di memoria di un processo in ambiente UNIX?


Lezione 065
01.  Queli fra i seguenti vantaggi non è tipico della programmazione multi-thread?

 Aumento del gradi di parallelismo

 Ottimizzazione della condivizione delle risorse

 Nessuna delle altre opzioni

 Tempi di risposta più rapidi

02.  Che cosa è un thread?

 Un thread è l'unità di base d'uso della CPU e comprende un identificatore di thread (ID), un contatore di programma, un insieme di registri, una pila (stack) e il codice
oggetto

 Un thread è l'unità di base d'uso della CPU e comprende un identificatore di thread (ID), un contatore di programma, un insieme di registri, e una pila (stack).

 Un thread è l'unità di base d'uso della CPU e comprende un identificatore di thread (ID), un contatore di programma e una pila (stack).

 Un thread è l'unità di base d'uso della CPU e comprende un identificatore di thread (ID), un insieme di registri, e una pila (stack).

03.  La gestione dei thread a livello utente prevede la mappatura sul sistema operativo secondo quale modello?

 Nessuna delle altre opzioni

 Uno ad uno

 Molti a molti

 Molti a uno

04.  Cosa condividono i thread di uno stesso processo?

 Codice, registri e dati

 Registri e pila

 Codice, dati e file

 Codice, dati, file, registri e pila

05.  La gestione dei thread a livello kernel prevede la mappatura sul sistema operativo secondo quale modello?

 Molti a uno

 Molti a molti

 Nessuna delle altre opzioni Può esser mappato molti a molti od uno ad uno
 Uno ad uno

06.  Cosa si intende per gestione dei thread a livello kernel?

07.  Quali sono in vantaggi della programmazione multi-thread?

08.  Discutere i vantaggi e gli svantaggi della gestione dei thread a livello utente.

09.  Discutere la differenza fra programmazione a singolo thread e multi-thread.


Lezione 066
01.  Cosa si intende per troughput?

 Nessuna delle altre opzioni

 Il numero di processi che hanno prodotto risultati nell'unità di tempo

 Il numero di processi che completano la loro esecuzione per unità di tempo

 Il numero di processi che sono andati in esecuzioni nell'unità di tempo

02.  in generale, quale può essere considerato come migliore indice per valutare le prestazioni degli algoritmi di scheduling?

 L'indice di produttività

 Il tempo di completamento

 Il tempo di attesa nella coda dei processi pronti

 Il tempo di utilizzo della CPU, che dovrebbe essere portato al 100%

03.  Di cosa si occupa il dispacher?

 Effettua il cambio di contesto, passa alla modalità utente e salta nella posizione giusta del programma utente per riavviarne l'esecuzione

 Decide quale processo mandare in esecuzione fra quelli nella coda dei processi pronti

 Nessuna delle altre opzioni

 Passa alla modalità sistema, effettua il cambio di contesto e salta nella posizione giusta del programma utente per riavviarne l'esecuzione

04.  In quali circostanze non parte lo scheduler della CPU?

 Nessuna delle altre opzioni

 Quando un processo passa da stato running a stato ready

 Quando un processo passa da stato running a stato waiting

 Quando un processo passa da stato waiting a stato ready

05.  Elencare e discutere i principali criteri di scheduling.

06.  Discutere la differenza fra scheduler e dispacher.

07.  Discutere la differenza fra scheduling con e senza prelazione.


Lezione 067
01.  Cosa significa che l'algoritmo di scheduling della CPU Shortest Job Firs può essere preemptive?

 Se arriva un processo nella coda con lunghezza di CPU burst inferiore a quella rimasta da eseguire al processo nello stato running, il sistema operativo esegue un context
switch tra i due processi

 il processo che è nello stato running continua la sua esecuzione finché non la interrompe volontariamente. Tutti i processi che arrivano durante la sua esecuzione vengono
inseriti in coda in base alla lunghezza del loro CPU burst

 il processo che è nello stato running continua la sua esecuzione finché non la interrompe volontariamente. Tutti i processi che arrivano durante la sua esecuzione vengono
inseriti in coda indipendentemente dalla lunghezza del loro CPU burst

 Nessuna delle altre opzioni

02.  Con riferimento allo scheduling della CPU, l'algoritmo Shortest Job First quale politica segue?

 Il primo processo ad essere eseguito è quello con minor tempo di esecuzione, cioè quello con CPU burst più breve

 Il primo processo che si trova nella coda dei processi pronti da più tempo viene servito

 Il primo processo ad essere eseguito è quello con minor tempo di attesa

 Il primo processo che si trova nella coda dei processi bloccati da più tempo viene servito

03.  Con riferimento allo scheduling della CPU, l'algoritmo First-Come First-Served quale politica segue?

 Il primo processo che si trova nella coda dei processi bloccati da più tempo viene servito

 Il primo processo che si trova nella coda dei processi pronti da più tempo viene servito

 Il primo processo ad essere eseguito è quello con minor tempo di esecuzione, cioè quello con CPU burst più breve

 Il primo processo ad essere eseguito è quello con minor tempo di attesa

04.  Con riferimento allo scheduling della CPU, l'algoritmo Round Robin quale politica segue?

 Il primo processo che si trova nella coda dei processi pronti da più tempo viene servito

 I processi vengono eseguiti per un intervallo di tempo definito dal sistema. Dopo tale intervallo il processo viene inserito in testa alla coda dei processi pronti e la CPU
viene assegnata al prossimo processo prelevato dalla testa della coda.

 I processi vengono eseguiti per un intervallo di tempo definito dal sistema. Dopo tale intervallo il processo viene inserito in fondo alla coda dei processi pronti e la CPU
viene assegnata al prossimo processo prelevato dalla testa della coda.

 Il primo processo ad essere eseguito è quello con minor tempo di esecuzione, cioè quello con CPU burst più breve

05.  Come funzionano gli algoritmi di scheduling con code multiple con retroazione?

06.  Discutere quali sono i limiti dell'algoritmo di scheduling SJF e come si cerca di superarli

07.  Come si assegnano le priorità negli algoritmi di scheduling a priorità?

08.  Come avviene lo scheduling dei processi nei sistemi real-time?


Lezione 068
01.  Con riferimento al concetto di cooperazione fra processi, indicare quale delle seguenti affermazioni è quella falsa:

 Consente la condivisione delle informazioni tra i processi cooperanti; per esempio se due utenti devono condividere codice o dati i processi devono cooperare.

 Aumenta il grado di parallelismo; esistono attività non sequenziali ma costituite da sotto attività che possono essere svolte concorrentemente (per esempio scrittura,
stampa e compilazione) e per questo devono cooperare e sincronizzarsi.

 Può avvenire solo tramite meccanismi basati sulla condivisione di risorse

 Modularizza il sistema; l'organizzazione a moduli semplifica il sistema. Ogni modulo può corrispondere a un processo o un tread, l'insieme dei quali costituisce un unico
programma.

02.  Il sistema produttore consumatore è un esempio di cooperazione dei processi secondo il modello a:

 Condivisione di memoria

 Scambio di messaggi e condivisione di memoria

 Nessuna delle altre opzioni

 Scambio di messaggi

03.  Con riferimento al modello di cooperazione dei processi a scambio di messaggi, indicare quale fra le seguenti affermazioni è quella falsa:

 Si basa su due operazioni fondamentali: send(message) e receive(message)

 Nessuna delle altre opzioni

 La comunicazione puà avvenire in maniera diretta o in maniera indiretta

 Consente anche la condivisione della memoria

04.  Come può avvenire la cooperazione fra processi?

 Nessuna delle altre opzioni

 Tramite la condivisione della memoria e di risorse hardware

 Tramite lo scambio di messaggi o la condivisione della memoria

 Tramite lo scambio di messaggi e la condivisione di risorse hardware

05.  Cosa si intende per buffering?

06.  Discutere le caratteristiche del canale di comunicazione nel modello a comunicazione diretta e nel modello a comunicazione indiretta.

07.  Discutere la differenza fra scambio di messaggi sincrono e asincrono.

08.  Scrivere le strutture dati e il codice (in C/C++ o pseudo codice) che implementano il paradigma produttore/consumatore nel modello a memoria condivisa.

09.  Cosa si intende per mailbox condivisa e dedicata?


Lezione 069
01.  Come si garantisce l'atomicità delle operazioni nelle sezioni critiche nei sistemi monoprocessore?

 Disabilitando le interruzioni

 Lanciando una richiesta di interruzione

 Usando un processo kernel

 Abilitando le interruzioni mascherabili

02.  Cosa è la race condition?

 Si parla di race condition quando più processi accedono e manipolano dati diversi ed indipendenti e l'esito varia a seconda dell'ordine con il quale avvengono gli accessi.

 Si parla di race condition quando più processi accedono e manipolano gli stessi dati concorrentemente e l'esito varia a seconda dell'ordine con il quale avvengono gli
accessi.

 Si parla di race condition quando più processi accedono e manipolano dati diversi ed indipendenti e l'esito non varia a seconda dell'ordine con il quale avvengono gli
accessi.

 Nessuna delle altre opzioni

03.  La sezione critica di un programma deve essere eseguita:

 In maniera totalmente esclusiva

 Nessuna delle altre opzioni

 In maniera mutuamente inclusiva

 In maniera mutuamente esclusiva

04.  Cosa è la sezione critica?

 E' la parte di codice di un programma in cui il corrispondente processo può accedere a risorse comuni o modificare dati comuni ad altri processi.

 E' la parte di codice di un programma in cui il corrispondente processo non sa come procedere se non riceve degli input esterno

 E' la parte di codice di un programma in cui il corrispondente processo attende il risultato di una operazione esterna

 Nessuna delle altre opzioni

05.  Come si realizza la mutua esclusione?

06.  Quali sono le più importanti strutture del kernel che devono essere gestite in mutua esclusione?

07.  Cosa sono e quando si usano le entry e le exit section? Che requisiti devono soddisfare?
Lezione 070
01.  Con riferimento ai semafori, indicare quale è il codice che implementa correttamente la funzione signal():

 void signal (sem s){ s++; }

 void signal (sem s){while (s ≤ 0) {} s++; }

 void signal (sem s){ s--; }

 Nessuna delle altre opzioni

02.  Con riferimento ai semafori, indicare quale è il codice che implementa correttamente la funzione wait():

 void wait (sem s){ while (s > 0) {} s++; }

 void wait (sem s){ while (s > 0) {} s--; }

 void wait (sem s){ while (s ≤ 0) {} s--; }

 void wait (sem s){ while (s ≤ 0) {} s++; }

03.  Come si realizza la signal nella gestione dei semafori con processi bloccanti?

signal(semaforo *s){ s->valore--; if (s->valore ≤ 0) then { /* rimuove un processo p dalla coda del semaforo */ wakeup(p); } }

 signal(semaforo *s){ wakeup(p); s->valore--; if (s->valore ≤ 0) then { /* rimuove un processo p dalla coda del semaforo */ ; } }

signal(semaforo *s){ s->valore++; if (s->valore < 0) then { /* rimuove un processo p dalla coda del semaforo */ wakeup(p); } }

 signal(semaforo *s){ s->valore++; if (s->valore ≤ 0) then { /* rimuove un processo p dalla coda del semaforo */ wakeup(p); } }

04.  Con riferimento ai semafori mutex, indicare quale è il codice che implementa correttamente una sezione critica:

 sem mutex = 0; do { signal(mutex); // entry section <sezione critica> wait(mutex); // exit section <sezione non critica> }

 sem mutex = 1; do { signal(mutex); // entry section <sezione critica> wait(mutex); // exit section <sezione non critica> }

 sem mutex = 1; do { wait(mutex); // entry section <sezione critica> signal(mutex); // exit section <sezione non critica> }

 sem mutex = 0; do { wait(mutex); // entry section <sezione critica> signal(mutex); // exit section <sezione non critica> }

05.  Che cosa si intende per deadlock? Mostrare un esempio di deadlock che coinvolga due processi.

06.  Che cosa è la starvation? Come si può evitare?

07.  Cosa si intende per busy waiting?

08.  Discutere la differenza fra deadlock e starvation.


Lezione 071
01.  Con riferimento ai monitor, indicare quale fra le seguenti descrizioni è quela vera:

 Il vantaggio nell'utilizzo del monitor deriva dal fatto che si devono codificare esplicitamente meccanismi per realizzare la mutua esclusione, giacché il monitor permette
che più processi siano attivi al suo interno.

 Il vantaggio nell'utilizzo del monitor deriva dal fatto che non si deve codificare esplicitamente alcun meccanismo per realizzare la mutua esclusione, giacché il monitor
permette che più processi siano attivi al suo interno.

 Nessuna delle altre opzioni

 Il vantaggio nell'utilizzo del monitor deriva dal fatto che non si deve codificare esplicitamente alcun meccanismo per realizzare la mutua esclusione, giacché il monitor
permette che un solo processo sia attivo al suo interno

02.  E' possibile realizzare i monitor utilizzando i semafori?

 No

 Si, utilizzando un semaforo mutex inizializzato a uno

 Si, utilizzando un semaforo mutex inizializzato a zero

 Nessuna delle altre opzioni

03.  Con riferimento ai monitor, indicare quale fra le seguenti descrizioni è quela vera:

 I metodi del monitor consentono avere come argomento i dati condivisi da più processi e le operazioni definite su di loro sono contraddistinti dalla mutua esclusione

 I metodi del monitor consentono avere come argomento i dati pubblici di un processo e le operazioni definite su di loro sono contraddistinti dalla mutua esclusione.

 Nessuna delle altre opzioni

 I metodi del monitor consentono avere come argomento i dati condivisi da più processi e le operazioni definite su di loro sono contraddistinti dalla semplicità di accesso

04.  Con riferimento ai monitor, indicare quale fra le seguenti descrizioni è quela vera:

 Nessuna delle altre opzioni

 Si tratta di un tipo di dato astratto che al suo interno incapsula dati privati. L'accesso a tali dati avviene solo attraverso metodi pubblici

 Si tratta di un tipo di dato astratto che al suo interno incapsula dati pubblici. L'accesso a tali dati avviene solo attraverso metodi privati

 Si tratta di un tipo di dato astratto che al suo interno incapsula dati pubblici L'accesso a tali dati avviene solo attraverso metodi pubblici

05.  Cosa sono i monitor e a cosa servono?

06.  Discutere le principali differenze fra monitor e semafori.

07.  Mostrare un esempio di sintassi tipica di definizione di monitor.

08.  Come si realizza la sincronizzazione con i monitor?


Lezione 072
01.  Come si può risolvere il problema dei cinque filosofi con i semafori?

 Una possibile soluzione prevede che ogni bacchetta sia rappresentata con un semaforo. Quando un filosofo vuole afferrare una bacchetta, esegue una operazione wait()
sul corrispondente semaforo. Quando ha finito di utilizzarla esegue una signal() sul semaforo corrispondente. Quindi, i dati condivisi sono si gestiscono con un semaforo
inizializzato con il valore 5.

 Una possibile soluzione prevede che ogni bacchetta sia rappresentata con un semaforo. Quando un filosofo vuole afferrare una bacchetta, esegue una operazione wait()
sul corrispondente semaforo. Quando ha finito di utilizzarla esegue una signal() sul semaforo corrispondente. Quindi, i dati condivisi sono un vettore di cinque elementi di
semafori, dove ogni elemento è inizializzato ad uno.

 Nessuna delle altre opzioni

 Una possibile soluzione prevede che ogni bacchetta sia rappresentata con un semaforo. Quando un filosofo vuole afferrare una bacchetta, esegue una operazione signal()
sul corrispondente semaforo. Quando ha finito di utilizzarla esegue una waitl() sul semaforo corrispondente. Quindi, i dati condivisi sono un vettore di cinque elementi di
semafori, dove ogni elemento è inizializzato a zero.

02.  Indicare quale è l'implementazione corretta del processo produttore utilizzando i semafori:

 sem mutex = 0; sem full = 1; sem empty = n; void producer(void) { ..... do { <produce un elemento in nextp> wait(empty); //se il buffer è pieno aspetta wait(mutex);
//blocca la risorsa <inserimento nextp nel buffer> signal(mutex); signal(full); } while (1); }

 sem mutex = 1; sem full = 0; sem empty = n; void producer(void) { ..... do { <produce un elemento in nextp> wait(empty); //se il buffer è pieno aspetta wait(mutex);
//blocca la risorsa <inserimento nextp nel buffer> signal(mutex); signal(full); } while (1); }

 sem mutex = 1; sem full = 0; sem empty = 0; void producer(void) { ..... do { <produce un elemento in nextp> wait(empty); //se il buffer è pieno aspetta wait(mutex);
//blocca la risorsa <inserimento nextp nel buffer> signal(mutex); signal(full); } while (1); }

 Nessuna delle altre opzioni

03.  Indicare quale è l'implementazione corretta del processo consumatore utilizzando i semafori:

 Nessuna delle altre opzioni

 void consumer(void) { sem mutex = 1; sem full = 0; sem empty = n; do { wait(full); //se il buffer è vuoto aspetta wait(mutex); <rimuove un elemento dal buffer e lo
mette in nextc> signal(mutex); signal(empty); <utilizza l'elemento contenuto in nextc> } while (1); }

 void consumer(void) { sem mutex = 1; sem full = 0; sem empty = 0; do { wait(full); //se il buffer è vuoto aspetta wait(mutex); <rimuove un elemento dal buffer e lo
mette in nextc> signal(mutex); signal(empty); <utilizza l'elemento contenuto in nextc> } while (1); }

 void consumer(void) { sem mutex = 0; sem full = 0; sem empty = n; do { wait(full); //se il buffer è vuoto aspetta wait(mutex); <rimuove un elemento dal buffer e lo
mette in nextc> signal(mutex); signal(empty); <utilizza l'elemento contenuto in nextc> } while (1); }

04.  È possibile risolvere il problema produttore-consumatore con i monitor? Se si, mostrare un esempio di implementazione.

05.  Si può risolvere il problema dei cinque filosofi con i semafori? Se si, mostrare una semplice implementazione.

06.  Descrivere il problema dei cinque filosofi e discutere perché è importante nel campo della sincronizzazione dei processi
Lezione 073
01.  Il sistemi operativi UNIX-based seguono il paradigma a:

 Scambio di messaggi

 Scambio di memoria

 Condivisione di messaggi

 Condivisione di memoria

02.  Cosa è un account e come si gestisce in un sistema operativo UNIX?

03.  A cosa serve la I/O Standard Library?

04.  Quali sono le principali modalità in cui si possono aprire i file? Cosa accade quando viene aperto un file in UNIX?

05.  Quale è la differenza fra full pathname e relative path name?

Lezione 074
01.  In ambiente UNIX la la syscall _exit(), o la library call exit() servono per:

 Iniziare esplicitamento un nuovo processo dopo l'uscita da un processo

 Nessuna delle altre opzioni

 Terminare esplicitamente un processo

 Terminare implicitamente un processo

02.  In un sistema operativo UNIX come si può creare un nuovo processo?

 Utilizzando la primitiva GenerateChild()

 Utilizzando la primitiva fork()

 Nessuna delle altre opzioni

 Utilizzando la primitiva GenerateProcess()

03.  Discutere il concetto di rilocazione dinamica.

04.  Mostrare un semplice esempio di utilizzo della primitiva fork().

05.  Come funziona la primitiva wait() in UNIX?

06.  A cosa servono le funzioni della famiglia exec() in UNIX?


Lezione 075
01.  Cosa si intende per indirizzi fisici?

 Nessuna delle altre opzioni

 Sono quelli caricati nel registro EBP

 Sono quelli generati da un programma in esecuzione sulla CPU

 Sono quelli gestiti dalla MMU (Main Memory Unit) e caricati nel registro MAR (memory address register)

02.  Cosa si intende per indirizzi virtuali?

 Sono quelli caricati nel registro EBP

 Sono gli indirizzi logici gestiti nei sistemi che realizzano l'associazione fra spazio degli indirizzi logici e spazio degli indirizzi fisici in fase di esecuzione

 Nessuna delle altre opzioni

 Sono quelli gestiti dalla MMU (Main Memory Unit) e caricati nel registro MAR (memory address register)

03.  Cosa è lo swapping dei processi?

 Si tratta del procedimento di avvicendamento dei processi dalla CPU alla coda dei processi pronti

 Si tratta del procedimento di avvicendamento dei processi dalla memoria centrale alla memoria di massa

 Si tratta del procedimento di avvicendamento dei processi dalla CPU alla coda dei processi bloccati

 Nessuna delle altre opzioni

04.  Quando il codice oggetto di un programma si dice rilocabile?

 Quando il sistema operativo sa già in fase di compilazione dove risiederà il programma in memoria

 Quando il sistema operativo sa già in fase di scrittura del codice dove risiederà il programma in memoria

 Quando il sistema operativo sa già in fase di caricamento dove risiederà il programma in memoria

 Nessuna delle altre opzioni

05.  Cosa si intende per indirizzi logici?

 Sono quelli visti dalla MMU (Main Memory Unit) e caricati nel registro MAR (memory address register)

 Sono quelli caricati nel registro EBP

 Sono quelli generati da un programma in esecuzione sulla CPU

 Nessuna delle altre opzioni

06.  Un processo in esecuzione può essere scaricato dalla memoria al disco prima che sia terminato? Discutere la risposta.

07.  Quale è la differenza fra caricamento e collegamento dinamico?

08.  Discutere la differenza fra indirizzi logici e indirizzi fisici.


Lezione 076
01.  Come si può implementare un meccanismo di protezione della memoria in sistemi mono programmati?

 Utilizzando il registro indice e il registro base

 Utilizzando il registro base e il registro limite

 Nessuna delle altre opzioni

 Utilizzando il registro indice e il registro limite

02.  Nei sistemi operativi multi programmati la memoria come può essere gestita?

 Solo con partizioni variabili

 Solo con partizioni fisse

 Nessuna delle altre opzioni

 Con partizioni fisse o con partizioni variabili

03.  Quali dei seguenti algoritmi non è classicamente utilizzato per l'allocazione di memoria in sistemi multi programmati?

 Worst Fit

 Random Fit

 First Fit

 Best Fit

04.  Differenza fra l'allocazione di memoria con partizioni fisse e con partizioni variabili.

05.  Come si gestisce l'allocazione della memoria quando si utilizzano partizioni variabili?

06.  Discutere la differenza fra code di ingresso multiple e coda di ingresso singola.
Lezione 077
01.  Cosa si intende per frammentazione esterna della memoria?

 E' il tipico problema in cui la memoria allocata ad un processo è leggermente maggiore della memoria richiesta. La memoria in più allocata non viene impiegata ma non
può essere allocata a nessun altro processo

 E' il problema tipico il cui è disponibile lo spazio totale per soddisfare una richiesta di allocazione di memoria ad un processo, ma non è contiguo

 E' il tipico problema in cui non c'e' abbastanza memoria a disposizione da allocare ad un processo. La sua memoria viene quindi frammentata

 Nessuna delle altre opzioni

02.  Cosa si intende per frammentazione interna della memoria?

 E' il problema tipico il cui è disponibile lo spazio totale per soddisfare una richiesta di allocazione di memoria ad un processo, ma non è contiguo

 Nessuna delle altre opzioni

 E' il tipico problema in cui non c'e' abbastanza memoria a disposizione da allocare ad un processo. La sua memoria viene quindi frammentata

 E' il tipico problema in cui la memoria allocata ad un processo è leggermente maggiore della memoria richiesta. La memoria in più allocata non viene impiegata ma non
può essere allocata a nessun altro processo

03.  Che cosa è la tabella delle pagine?

 Una struttura dati implementata in hardware la tabella delle pagine, che consente di mappare pagine fisiche in pagine logiche

 Nessuna delle altre opzioni

 Una struttura dati implementata in software la tabella delle pagine, che consente di mappare pagine logiche in pagine fisiche

 Una struttura dati implementata in hardware la tabella delle pagine, che consente di mappare pagine logiche in pagine fisiche

04.  In una architettura che utilizza il meccanismo di paginazione come si genera l'indirizzo fisico da quello logico?

 Nessuna delle altre opzioni

 Si usa la parte più significativa (selettore) dell'indirizzo logico per identificare la base dell'indirizzo fisico dalla tabella delle pagine. La parte più significativa
dell'indirizzo fisico è rappresentato dall'offset dell'indirizzo logico e la parte meno significativa dalla base estratta dalla tabella delle pagine

 Si usa la parte più significativa (selettore) dell'indirizzo logico per identificare la base dell'indirizzo fisico dalla tabella delle pagine. La parte più significativa
dell'indirizzo fisico è rappresentato dalla base e la parte meno significativa dall'offset dell'indirizzo logico

 Si usa la parte meno significativa (selettore) dell'indirizzo logico per identificare la base dell'indirizzo fisico dalla tabella delle pagine. La parte più significativa
dell'indirizzo fisico è rappresentato dalla base e la parte meno significativa dall'offset dell'indirizzo logico

05.  Quale è il principale responsabile della frammentazione interna della memoria?

 Nessuna delle altre opzioni

 La multiprogrammazione

 Meccanismi di allocazione di blocchi di memoria di dimensioni prefissate

 Lo swapping dei processi che richiedono memoria di dimensione diversa

06.  Che cosa sono i frame?

 Blocchi di memoria logica tutti della stessa dimensione prefissata

 Blocchi di memoria fisica di dimensioni diverse

 Blocchi di memoria fisica tutti della stessa dimensione prefissata

 Nessuna delle altre opzioni

07.  Che cosa sono le pagine di memoria?

 Nessuna delle altre opzioni

 Blocchi di memoria logica tutti della stessa dimensione prefissata

 Blocchi di memoria fisica tutti della stessa dimensione prefissata

 Blocchi di memoria fisica di dimensioni diverse

08.  Quale è il principale responsabile della frammentazione esterna della memoria?

 La multiprogrammazione

 Meccanismi di allocazione di blocchi di memoria di dimensioni prefissate

 Nessuna delle altre opzioni

 Lo swapping dei processi che richiedono memoria di dimensione diversa

09.  Discutere la differenza fra la tabella delle pagine e la tabella dei frame.

10.  Cosa è la paginazione?

11.  Disegnare l'architettura hardware per la gestione della paginazione.


Lezione 078
01.  Nel contesto della memoria paginata, a cosa serve il bit di protezione?

 Per determinare su una pagina si può leggere e scrivere oppure soltando leggere

 Nessuna delle altre opzioni

 Per determinare se una pagina appartiene a più processi

 Per determinare se una pagina è legale

02.  Cosa è la TLB (translation look–aside buffer )?

 Si utilizza nello scheduling della per cercare velocemente la memoria da allocare ai processi. Essa è una memoria associativa ad alta velocità.

 Si utilizza per velocizzare la ricerca nella tabelle delle pagine. Essa è una memoria associativa ad alta velocità.

 Nessuna delle altre opzioni

 Si utilizza nello scheduling dei processi per cercare velocemente i processi da mandare in esecuzione. Essa è una memoria associativa ad alta velocità.

03.  Cosa succede al contentuto di una TLB (translation look–aside buffer ) quando c'è un cambiamento di contesto?

 Il suo contenuto deve essere invalidato

 Se ne aggiorna il contenuto

 Il suo contenuto viene salvato nel PCB

 Nessuna delle altre opzioni

04.  Mostrare graficamente come si realizza la traduzione degli indirizzi logici in indirizzi fisici nella paginazione gerarchica.

05.  Cosa sono i registri PTBR e PRLR utilizzati per la gestione della tabelle delle pagine? Quali sono i limiti dell'organizzazione della tabella delle pagine con tali
registri?

06.  Discutere i concetti principali della paginazione gerarchica.

07.  Mostrare e discutere lo schema architetturale della paginazione con TLB.

Lezione 079
01.  Con riferimento alla segmentazione della memoria, indicare quale fra le seguenti descrizioni è quella falsa:

 Nessuna delle altre opzioni

 Per ciascun segmento, viene specificata una coppia ordinata di valori: la base del segmento (specifica l'indirizzo in memoria fisica dove comincia il segmento) e il limite
del segmento (specifica la lunghezza del segmento).

 Il meccanismo di segmentazione non consente la condivisione di porzioni di memoria da parte di processi diversi

 Per la realizzazione della segmentazione si utilizzano due registri della CPU: 1) Il registro Segment–Table Base Register (STBR), che punta alla locazione in memoria
della tabella dei segmenti, 2)bIl registro Segment–Table Length Register (STLR), che indica il numero di segmenti utilizzati dal programma

02.  Che tipo di problema consente di risolvere la segmentazione?

 Frammentazione Interna ed Esterna

 Allocazione dinamica dei processi

 Frammentazione della memoria secondaria

 Nessuna delle altre opzioni

03.  Che cosa è la segmentazione della memoria?

 Nessuna delle altre opzioni

 La segmentazione è un meccanismo predisposto a livello architetturale per suddividere l’intero spazio di memoria lineare in sottospazi protetti e di dimensioni ridotte
chiamati segmenti.

 La segmentazione è un meccanismo predisposto a livello architetturale per suddividere l’intero spazio di memoria lineare in sottospazi protetti e della stessa dimensione
chiamati segmenti.

 La segmentazione è un meccanismo predisposto a livello software per suddividere l’intero spazio di memoria lineare in sottospazi protetti e di dimensioni ridotte chiamati
segmenti.

04.  Mostrare graficamente l'architettura per la traduzione degli indirizzi con memoria segmentata.

05.  Mostrare un esempio di come si realizza la condivisione di codice utilizzando la segmentazione.

06.  Quali sono le caratteristiche principali delle segmentazione.

07.  Discutere brevemente il concetto di memoria segmentata con paginazione e mostrare lo schema architetturale di traduzione degli indirizzi.

08.  Come è fatta e a cosa serve la tabella dei segmenti?


Lezione 080
01.  Che cosa è il page fault trap?

 Nessuna delle altre opzioni

 E' una eccezione che viene inviata al processore quando un processo tenta l'accesso ad una pagina non condivisa

 E' una eccezione che viene inviata al processore quando un processo tenta l'accesso ad una pagina non caricata in memoria centrale

 E' una eccezione che viene inviata al processore quando un processo tenta l'accesso ad una pagina non autorizzata

02.  Che cosa è il paginatore?

 E' un modulo del sistema operativo che si occupa della paginazione su richiesta e si occupa del passaggio delle pagine dalla memoria principale alla memoria di massa e
viceversa

 E' un modulo del sistema operativo che si occupa di implementare il meccanismo di paginazione

 Nessuna delle altre opzioni

 E' un modulo del sistema operativo che si occupa di gestire la tabella delle pagine

03.  Con riferimento alla memoria virtuale, quale delle seguenti descrizioni è falsa?

 Usando la memoria virtuale diminuiscono i tempi di caricamento dei programmi in memoria

 Usando la memoria virtuale non si separa la memoria logica, vista dall'utente, dalla memoria fisica: gli indirizzi logici corrispondono agli indirizzi fisici

 SI aumenta il parallelismo delle esecuzioni, con una conseguente crescita della produttività della CPU; poiché ogni singolo processo occupa meno memoria fisica, più
programmi possono essere eseguiti contemporaneamente

 La programmazione non è più vincolata dalla quantità di memoria fisica disponibile; si possono scrivere programmi per uno spazio di indirizzi virtuali molto grande

04.  Quale è la filosofia alla base della memoria virtuale?

 Tale meccanismo consente l'esecuzione di processi non contenuti interamente nella memoria

 Consente di usare la memoria secondaria per eseguire i processi, effettuando il fetch delle istruzioni direttamente dal disco

 Consente di usare lo spazio di I/O come uno spazio di memoria

 Nessuna delle altre opzioni

05.  Come si realizza a livello architetturale la paginazione su richiesta?

06.  Mostrare graficamente l'idea di base della memoria virtuale (mostrare gli elementi principali)

07.  Discutere con un esempio il concetto di lazy swapping e il ruolo svolto dal paginatore.

08.  Discutere brevemente i concetti base della paginazione su richiesta?


Lezione 081
01.  Quando si verifica un page fault trap occorre sempre effettuare un trasferimento di pagine dalla memoria di massa alla memoria fisica.

 Vero

 Nessuna delle altre opzioni

 Dipende dal valore del bit dirty nella tabella delle pagine in corrispondenza del riferimento di pagina considerato

 Dipende dal valore del bit di validità nella tabella delle pagine in corrispondenza del riferimento di pagina considerato

02.  Cosa succede nell'ultimo passo di gestione del page fault trap?

 Il processo che è stato bloccato dall'eccezione riprende il controllo della CPU e riparte riavviando l'istruzione interrotta. A questo punto il processo può accedere alla
pagina direttamente nella memoria secondaria

 Il processo che è stato bloccato dall'eccezione riprende il controllo della CPU e riparte riavviando l'istruzione interrotta. A questo punto il processo può accedere alla
pagina come se questa fosse già presente in memoria

 Nessuna delle altre opzioni

 Il processo che è stato bloccato dall'eccezione riprende il controllo della CPU e riparte dalla istruzione successiva rispetto a quella che è stata interrotta. A questo punto il
processo può accedere alla pagina come se questa fosse già presente in memoria

03.  Che cosa è la paginazione su richiesta pura?

 Nessuna delle altre opzioni

 Si parla di paginazione su richiesta pura quando un processo che viene mandato in esecuzione non carica al principio alcuna pagina in memoria centrale

 Si parla di paginazione su richiesta pura quando un processo che viene mandato in esecuzione carica al principio solo una pagina in memoria centrale (quella del codice)

 Si parla di paginazione su richiesta pura quando un processo che viene mandato in esecuzione carica al principio solo due pagine in memoria centrale (quella dei dati e
quella del codice)

04.  Discutere la strategie di gestione dell'algoritmo FIFO per il rimpiazzamento delle pagine.

05.  Come si può ridurre l'overhead introdotto dal rimpiazzamento delle pagine?

Lezione 082
01.  Quale è l'idea che sta alla base dell'algoritmo ottimo di rimpiazzamento delle pagine di memoria?

 Tale algoritmo si prefigge di sostituire la pagina che non sarà utilizzata per più tempo

 Nessuna delle altre opzioni

 Tale algoritmo il sistema interpreta il futuro sulla base delle informazioni passate e seleziona la pagina non utilizzata da più lungo tempo, supponendo che non sia più
utile

 Tale algoritmo di prefigge di rimpiazzare sempre l'ultima pagina riferita

02.  Quale è l'idea che sta alla base dell'algoritmo LRU di rimpiazzamento delle pagine di memoria?

 Tale algoritmo di prefigge di rimpiazzare sempre l'ultima pagina riferita

 Tale algoritmo si prefigge di sostituire la pagina che non sarà utilizzata per più tempo

 Nessuna delle altre opzioni

 Tale algoritmo il sistema interpreta il futuro sulla base delle informazioni passate e seleziona la pagina non utilizzata da più lungo tempo, supponendo che non sia più
utile

03.  Cosa significa che l'algoritmo ottimale di rimpiazzamento delle pagine è un algoritmo ideale? E' da considerarsi un algoritmo inutile?

04.  Discutere l'implementazione con la pila dell'algoritmo LRU e mostrare un esempio di utilizzo

05.  Quali potrebbero essere gli aspetti negativi dell'algoritmo LRU?


Lezione 083
01.  Con riferimento all'algoritmo di rimpiazzamento delle pagine seconda chance, quale fra le seguenti affermazioni è quella vera?

 E' una approssimazione alquanto rozza dell'LRU

 Nessuna delle altre opzioni

 Rappresenta un deciso miglioramento dell'algoritmo FIFO

 Non è implementabile ma utile come indice di confronto e valutazione

02.  Con riferimento all'algoritmo ottimale di rimpiazzamento delle pagine, quale fra le seguenti affermazioni è quella vera?

 Eccellente, ma difficile da implementare con precisione

 E' una approssimazione alquanto rozza dell'LRU

 Non è implementabile ma utile come indice di confronto e valutazione

 Nessuna delle altre opzioni

03.  Con riferimento all'algoritmo di rimpiazzamento delle pagine NRU, quale fra le seguenti affermazioni è quella vera?

 Nessuna delle altre opzioni

 Eccellente, ma difficile da implementare con precisione

 E' una approssimazione alquanto rozza dell'LRU

 Non è implementabile ma utile come indice di confronto e valutazione

04.  Discutere le principali caratteristiche dell'algoritmo con bit di riferimento a seconda chance.

05.  Discutere le principali caratteristiche dell'algoritmo con bit supplementare di riferimento per il rimpiazzamento delle pagine.

06.  A cosa servono i registri a scorrimento nell'algoritmo con bit supplementare di riferimento?

Lezione 084
01.  Quali sono i principali meccanismi di rimpiazzamento delle pagine al variare del tipo di allocazione dei frame?

 Nessuna delle altre opzioni

 Statico e dinamico

 Locale e Globale

 Uniforme e proporzionata alle esigenze

02.  Quali sono i metodi di allocazione dei frame della memoria da parte del sistema operativo?

 Uniforme e proporzionata alle esigenze

 Statica e dinamica

 Locale e Globale

 Nessuna delle altre opzioni

03.  Quali sono gli schemi di allocazione dei frame della memoria da parte del sistema operativo?

 Uniforme e proporzionata alle esigenze

 Nessuna delle altre opzioni

 Statica e dinamica

 Locale e Globale

04.  Come si può ridurre il fenomeno del thrashing?

05.  Quali sono i problemi che si possono incontrare nel monitoraggio di frequenza del page fault?

06.  Cosa è e a cosa serve il modello del working set nell'allocazione dei frame?
Lezione 085
01.  Che cosa è il buffer gestito dal sotto sistema di I/O?

 E' una area dello spazio di I/O in cui vengono memorizzati i dati trasferiti tra due dispositivi, o tra un'applicazione e un dispositivo

 E' un dispositivo ad hoc in cui vengono memorizzati i dati trasferiti tra due dispositivi, o tra un'applicazione e un dispositivo

 Nessuna delle altre opzioni

 E' una area della memoria in cui vengono memorizzati i dati trasferiti tra due dispositivi, o tra un'applicazione e un dispositivo

02.  Il sotto sistema di I/O gestisce le differenze effettive fra i vari dispositivi di I/O per mezzo di:

 Nessuna delle altre opzioni

 Interfacce specifiche

 Driver specifici

 Trasduttori specifici

03.  Quale fra i seguenti è un compito svolto da un controllore di dispositivo di I/O?

 effettuare la correzione degli errori se necessario

 rendere i byte disponibili per essere copiati in RAM


Sono tutte corrette
 Nessuna delle altre opzioni

 convertire un flusso (stream) seriale di bit in blocchi di byte

04.  Quali sono i principali compiti del sistema operativo nella gestione dell'I/O?

05.  Discutere brevemente le caratteristiche dello scheduler di I/O.

06.  Come di possono caratterizzare i dispositivi di I/O riguardo ai trasferimenti dei dati?

Lezione 086
01.  Da chi viene sbloccata l'esecuzione di un diver di dispositivo?

 L'esecuzione del driver viene sbloccata dal controllore del dispositivo

 Da una richiesta di interruzione

 Nessuna delle altre opzioni

 Dal sistema operativo

02.  Da chi viene bloccata l'esecuzione di un diver di dispositivo?

 Nessuna delle altre opzioni

 Da una richiesta di interruzione

 Dal sistema operativo

 L'esecuzione del driver si blocca in attesa che il controllore del dispositivo faccia il suo lavoro

03.  Quali sono i livelli del software di I/O?

 Software a livello utente, Software a livello dispositivi, Driver dei dispositivi, Driver delle interruzioni

 Nessuna delle altre opzioni

 Software a livello utente, Software indipendente dai dispositivi, Driver dei dispositivi, Driver delle interruzioni

 Software a livello utente, Software a livello sistema, Driver dei dispositivi, Driver delle interruzioni

04.  Quali sono le principali funzioni svolte dal software di I/O indipendente dai dispositivi?

05.  Discutere i principali servizi offerti dal software di I/O a livello utente.

06.  Discutere come si realizza il buffering a livello di software di I/O indipendente dai dispositivi. Perché si preferisce al buffering realizzato a livello utente?
Lezione 087
01.  Da quali parti è costituito il settore di un disco

 Preambolo, dati, traccia

 Preambolo, traccia, ECC

 Nessuna delle altre opzioni

 Preambolo, dati, ECC

02.  Cosa accade durante la formattazione ad alto livello di un disco?

 Nessuna delle altre opzioni

 In questa fase avviene la creazione delle partizioni del disco. Il sistema operativo suddivide il disco in gruppi di cilindri (le partizioni) e tratta ogni gruppo come una unità
a disco a se stante

 In questa fase vengono scritti i settori all'interno delle tracce del disco. La formattazione a basso livello dà un formato al disco (da qui deriva il termine "formattazione")
in modo che il controllore possa leggere o scrivere sul disco.

 In questa fase viene inserito un file system all'interno delle partizioni del disco.

03.  Cosa accade durante la formattazione a basso livello di un disco?

 In questa fase viene inserito un file system all'interno delle partizioni del disco.

 In questa fase vengono scritti i settori all'interno delle tracce del disco. La formattazione a basso livello dà un formato al disco (da qui deriva il termine "formattazione")
in modo che il controllore possa leggere o scrivere sul disco.

 Nessuna delle altre opzioni

 In questa fase avviene la creazione delle partizioni del disco. Il sistema operativo suddivide il disco in gruppi di cilindri (le partizioni) e tratta ogni gruppo come una unità
a disco a se stante

04.  Da chi sono gestiti gli errori del disco dovuti a settori corrotti?

 Dal controllore o dal sistema operativo

 Dal file system

 Dal driver del disco

 Nessuna delle altre opzioni

05.  Quali sono gli aspetti positivi e negativi dell'algoritmo di scheduling del disco SSTF?

06.  Discutere le differenze fra l'algoritmo di scheduling del disco SCAN (C-SCAN) e LOOK (C-LOOK).

07.  Quali sono i compiti del controllore del disco?

08.  Quali parametri deve specificare un processo che vuole accedere ad un disco?
Lezione 088
01.  Che cosa è il file system?

 E' l'insieme di tutti i file e le cartelle gestiti dal sistema operativo

 E' quell parte del sistema operativo che interagisce direttamente con l'utente e consente di gestire e memorizzare i dati utilizzando file e cartelle

 E' quell parte del processore che interagisce direttamente con l'utente e consente di gestire e memorizzare i dati utilizzando file e cartelle

 Nessuna delle altre opzioni

02.  Quale fra le seguenti modalità non rientra fra quelle utilizzate per accedere ai file

 Accesso diretto

 Nessuna delle altre opzioni

 Accesso sequenziale

 Accesso sincronizzato

03.  Quali fra le seguenti strutture non rientra fra quelle utilizzate per rappresentare i file:

 Struttura forte, albero di record non necessariamente della stessa dimensione

 Nessuna struttura, semplice sequenza di byte

 Nessuna delle altre opzioni

 Struttura minima, sequenza di record di lunghezza fissa

04.  Che cosa è il file system?

05.  Quali sono le principali operazioni che possono essere fatte sui file?

06.  Che cosa è un file e come può essere rappresentato?

Lezione 089
01.  Quali sono le principali proprietà che la gestione delle directory deve assicurare?

 Efficienza, Velocità. Raggruppamento Logico dei file

 Efficienza, Nominazione, Raggruppamento Logico dei file

 Efficacia, Nominazione, Raggruppamento Logico dei file

 Nessuna delle altre opzioni

02.  Quali sono le classi di operazioni consentite sui file nei sistemi operativi UNIX?

 Lettura, scrittura, modifica

 Lettura, scritura, upload

 Lettura, scrittura, download

 Lettura, scrittura, esecuzione

03.  Quali fra le seguenti strutture non rientra fra quelle utilizzate per l'organizzazione delle directory

 Struttura a singolo livello

 Struttura a due livelli

 Struttura ad albero

 Struttura sequenziale

04.  Discutere la struttura a due livelli delle directory?

05.  Discutere la struttura ad albero generico delle directory?

06.  Discutere le principali differenze fra file e directory?

07.  Quali sono le principali operazioni che si possono eseguire su una directory?
Lezione 090
01.  Cosa si intende per file system logico?

 E' il livello del file system in cui di smistano i comandi, ricevuti dal modulo per l'organizzazione dei file, agli opportuni driver, più precisamente all'I/O control

 E' il livello dei file system in cui viene implementata le astrazioni dei file e delle cartelle

 Nessuna delle altre opzioni

 E' il livello dei file system in cui si traducono i blocchi logici nei corrispondenti indirizzi fisici

02.  Quanti sono i livelli in cui è tipicamente organizzato un file system?

 Due

 Uno

 Sei

 Dieci

03.  Quali fra le seguenti strutture dati non sono utilizzate dal sistema operativo per l'implementazione del file system?

 Tabella globale dei file aperti dal processo

 Tabella delle partizioni

 Tabella globale dei file aperti

 Tabella delle pagine

04.  Discutere la struttura di una partizione.

05.  In quanti e quali modo possono essere rappresentate le directory nella struttura del file system?

06.  Cosa sono e a cosa servono le partizioni del disco?

07.  Disegnare e discutere lo schema di organizzazione a livelli del file system.

Lezione 091
01.  Quali fra le seguenti coppie di strategie sono in genere utilizzate per la l'implementazione della struttura delle directory?

 Realizzazione a vettore satico e realizzazione ad albero binario

 Realizzazione a lista lineare e realizzazione ad albero binario

 Realizzazione a lista lineare e realizzazione ad hash table

 Nessuna delle altre opzioni

02.  Cosa descrive l'inode del VFS?

 Nessuna delle altre opzioni

 L'indirizzo virtuale della prima locazione del file system

 La locazione di ciascun file, directory o link all'interno di ogni file system disponibile

 L'indirizzo fisico della prima locazione del file system

03.  Quali sono le principali strategie per la condivisione dei file in un sistema operativo?

04.  Discutere pregi e difetti della implementazione delle directory come tabella hash.

05.  Discutere pregi e difetti della implementazione delle directory come lista lineare.
Lezione 092
01.  Come si ottiene l'allocazione dei file su disco a lista concatenata?

 Concatenando blocchi contigui del disco

 Utilizzando l'extend con dimensione del blocco pari ad uno

 Concatenando file diversi ma contigui

 Nessuna delle altre opzioni Utilizzando l'extent con dimensioni pari ad un blocco o cluster di blocchi

02.  Quale è il principale problema della allocazione contigua dei file nel disco?

 La frammentazione interna

 La frammentazione esterna

 Nessuna delle altre opzioni

 La velocità di accesso

03.  Cosa è l'extend nell'allocazione dei file?

 E' una strategia che consente di allocare file vuoti

 E' una strategia che consente di allocare nei dischi porzioni di file,anche di dimensioni diverse ma costituite da blocchi contigui, in qualsiasi parte del disco.

 E' una strategia che consente di allocare file di dimensioni fisse

 Nessuna delle altre opzioni

04.  In quante e quali maniera possono essere allocati i file all'interno del disco?

05.  Discutere come funziona la tabella FAT, evidenziando i vantaggi assicurati per l'allocazione dei file sul disco.

06.  Come avviene l'allocazione dei file a lista concatenata a singoli blocchi?

Lezione 093
01.  Che cosa è l'i-node, nel contesto dell'allocazione con indice dei file su disco ?

 E' il blocco in cui sono allocati tutti i puntatori ai blocchi contigui allocati ad uno specifico file

 E' il blocco in cui sono allocati tutti i blocchi contigui allocati ad uno specifico file

 E' il blocco in cui sono allocati tutti i puntatori ai blocchi allocati ad uno specifico file

 Nessuna delle altre opzioni

02.  Quale fra le seguenti tecniche non viene utilizzata per ottimizzare le operazioni gestite dal file system?

 Scheduling

 Prefetching

 Dispatching

 Caching

03.  Quale fra le seguenti varianti di allocazione con indice dei file non è reale

 Indice allineato

 Nessuna delle altre opzioni

 Indice multilivello

 Indice concatenato

04.  Come avviene la gestione dello spazio libero sul disco con struttura a raggruppamento?

05.  Disegnare e discutere lo schema implementativo dello schema combinato per l'allocazione indicizzata dei file sul disco.

06.  Discutere la differenza fra la gestione dello spazio libero sul disco a mappa di bit e la gestione a lista concatenata.
Lezione 094
01.  Cosa è un diritto di accesso?

 E' una coppia <nome-oggetto, insieme-processi> dove insieme-processi è un sottoinsieme di tutti i processi che possono lavorare sull'oggetto

 Nessuna delle altre opzioni

 E' una coppia <nome-oggetto, insieme-diritti> dove insieme-diritti è un sottoinsieme di tutte le operazioni che possono essere eseguite da un processo sull’oggetto

 E' una coppia <nome-processo insieme-diritti> dove insieme-diritti è un sottoinsieme di tutte le operazioni che possono essere eseguite da un processo

02.  Cosa è un dominio di protezione?

 Rappresenta l'insieme di operazioni che possono essere effettuate da un processo su un oggetto e determina le risorse a cui esso può accedere

 Nessuna delle altre opzioni

 Rappresenta l'insieme di processi che può lavorare su una risorsa

 Rappresenta l'insieme di risorse che può essere utilizzato da un processo

03.  A cosa servono le matrici di accesso?

 Per la gestione dei domini di protezione

 Per la gestione della sicurezza

 Nessuna delle altre opzioni

 Per la gestione degli accessi

04.  Discutere le differenze fra le liste di controllo di accesso e le liste delle abilitazioni.

05.  Quali sono i pro e i contro delle liste di controllo di accesso e le liste delle abilitazioni?

06.  Discutere la principale differenza fra protezione e sicurezza.

Lezione 095
01.  Quale è il problema principale della crittografia a chiave simmetrica?

 Il problema è lo scambio sicuro della chiave segreta tra mittente e destinatario

 Il problema è la scelta sicura della chiave segreta tra mittente e destinatario

 Nessuna delle altre opzioni

 Non ci sono problemi, il meccanismo è ben rodato ed assicura elevati standard di sicurezza

02.  Cosa si intende per non ripudio nella sicurezza informatica?

 Nessuna delle altre opzioni

 Il non ripudio garantisce che un utente sia autorizzato ad utilizzare le sue risorse

 Il non ripudio impedisce che un evento o documento possa essere disconosciuto dal suo autore

 Il non ripudio garantisce che eventi, documenti e messaggi vengano attribuiti con certezza al legittimo autore e a nessun altro

03.  Gli algoritmi di sicurezza a chiave pubblica sono:

 Sincroni

 Asincroni

 Asimmetrici

 Simmetrici

04.  Quali obiettivi persegue la sicurezza informatica?

 Nessuna delle altre opzioni

 Garantire la disponibilità, la compattezza, la riservatezza, l'autenticità e il non ripudio

 Garantire la protezione, l'integrità, la riservatezza, l'autenticità e il non ripudio

 Garantire la disponibilità, l'integrità, la riservatezza, l'autenticità e il non ripudio

05.  Cosa è l'autenticazione?

06.  Discutere la differenza fra crittografia simmetriche ed asimmetrica, analizzando i pro e i contro di ciascuna tecnica.

07.  Fornire una semplice definizione di crittografia.

08.  Cosa sono le chiavi e il cifrario?


lOMoARcPSD|8254953

Calcolatori elettronici e sistemi operativi - Risposte aperte

Calcolatori Elettronici e Sistemi Operativi (Università telematica e-Campus)

StuDocu is not sponsored or endorsed by any college or university


Downloaded by Volcane Amps (volcaneamps@gmail.com)
lOMoARcPSD|8254953

7. Lezione
Descrivere una rete logica a livello funzionale.
Una rete logica è caratterizzata da:
- Un insieme di N variabili in ingresso, l’insieme dei valori assunti (2𝑁) si chiama stato di ingresso. -
Un insieme di M variabili in uscita, l’insieme dei valori assunti (2𝑀) si chiama stato di uscita.
Inoltre, una rete logica è caratterizzata da una legge di evoluzione nel tempo che descrive come
le uscite evolvono in funzione degli ingressi.
Come si classificano le reti logiche?
Le reti logiche si classificano:
- In base alla presenza/assenza di memoria
o Reti combinatorie, lo stato di uscita dipende solo dallo stato di ingresso
o Reti sequenziali, lo stato di uscita dipende anche dalla storia degli stati di ingresso
precedenti
- In base alla temporizzazione della legge di evoluzione
o Reti asincrone, lo stato di uscita varia al variare dello stato di ingresso
o Reti sincrone, lo stato di uscita varia al variare dello stato di ingresso on momenti separati
nel tempo
Quale è la differenza fra reti sincrone e asincrone?
Le reti asincrone aggiornano continuamente lo stato di uscita ad ogni variazione dello stato di
ingresso, quelle sincronizzate aggiornano lo stato di uscita in momenti separati nel tempo.
Cosa è la fascia di indeterminazione del segnale?
La fascia di indeterminazione del segnale è quella fascia di tempo necessaria al modello fisico per
passare da una tensione alta ad una bassa o viceversa. Il modello astratto prevede che una variabile
cambi istantaneamente.
Cosa significa settare e resettare una variabile logica?
Settare una variabile logica significa effettuare la transizione a 1, viceversa si resetta quando transisce a 0
Descrivere il problema della contemporaneità.
Non si può garantire che due grandezze fisiche varino contemporaneamente. Se, quindi, si basa un
ragionamento sull’ipotesi che due variabili di ingresso varino contemporaneamente, poi non si potrà mai
costruire un sistema fisico che verifichi questa ipotesi. Pertanto, bisogna evitare di supporre che due variabili
di ingresso varino contemporaneamente. Non è possibile che in una realizzazione fisica di un sistema si
presentino in sequenza due stati di ingresso che differiscono tra loro per più di un bit. Se prima dell’istante t1
è presente lo stato di ingresso (10), e dopo è presente lo stato di ingresso (01), vuol dire necessariamente
che, per un certo intervallo di tempo, la rete ha visto in ingresso uno stato di ingresso intermedio (11 o 00).
Dovremo preoccuparci del fatto che gli stati di ingresso siano vincolati a cambiare un bit alla volta. In altre
parole si dovrà sempre supporre che stati di ingresso consecutivi siano adiacenti

8. Lezione
Cosa si intende per tempo di attraversamento?
Il tempo di attraversamento è il tempo che intercorre tra quando l’ingresso cambia stato e l’istante in
cui l’uscita cambia stato in accordo alla legge che regola la rete.
Quando una rete combinatoria si dice a regime?
La rete logica si dice a regime dopo il tempo di attraversamento, quando cioè l’uscita ha variato lo stato
in accordo all’ingresso
Cosa significa rete combinatoria pilotata in modo fondamentale?
La rete è pilotata in modo fondamentale quando ad ogni cambiamento in ingresso c’è il corrispettivo
cambiamento in uscita. La rete che riesce ad andare a regime per ogni cambiamento dello stato di
ingresso si dice pilotata in modo fondamentale.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

9. Lezione
Dimostrare (tramite un opportuno esempio) che connettendo ad albero porte NAND
(oppure NOR) a due ingressi non si ottiene una generalizzazione della funzione logica
descritta per porte a due ingressi
Tramite la tabella della verità si può osservare che la connessione delle tabelle a due ingressi fornisce
un risultato diverso della funzione a 4 ingressi che sarebbe esattamente l’opposto.

𝒙𝟎 𝒙𝟏 𝒂 𝒙𝟐 𝒙𝟑 𝒃 𝒂 𝒃 z
0 0 1 0 0 1 1 1 0
0 1 0 0 1 0 0 0 1
1 0 0 1 0 0 0 0 1
1 1 0 1 1 0 0 0 1
Descrizione funzionale e tabella di verità di una porta logica elementare Or:
Si effettua su due o più variabili, l’uscita assume lo stato logico 1 se almeno una variabile di ingresso è allo stato logico 1. Nel
caso di due variabili di ingresso A e B, detta Y la variabile di uscita, si scrive: Y = A + B e si legge A or B.
Descrizione funzionale e tabella di verità di una porta logica elementare Nand:
Si effettua su due o più variabili, l’uscita assume lo stato logico 0 se tutte le variabili di ingresso sono allo stato logico 1. In tutti
gli altri casi Y=1. Corrisponde ad una AND con in cascata una NOT. La funzione logica si scrive: Y = A·B e si legge A nand B.
Descrizione funzionale e tabella di verità di una porta logica elementare XOR:
La funzione logica XOR fornisce un'uscita "vera" solo quando i due ingressi presentano le condizioni logiche opposte. Analogamente,
una porta logica XOR fornisce un livello logico "1" solo quando i due ingressi presentano livelli logici opposti.

PORTA OR: PORTA NAND: PORTA XOR:


ABY ABY ABY
000 0 0 1 0 0 0
011 0 1 1 0 1 1
101 1 0 1 1 0 1
111 1 1 0 1 1 0

10. Lezione
Definizione e sintesi circuitale di un decoder 2 to 4
𝑥0 𝑥1 𝑧0 𝑧1 𝑧2 𝑧3 Ogni uscita riconosce uno ed un solo stato di ingresso.
0 0 1 0 0 0 In particolare l’uscita J-esima riconosce lo stato di
0 1 0 1 0 0 ingresso i cui bit sono la codifica di j in base 2.
1 0 0 0 1 0
1 1 0 0 0 1

Che differenza c'è fra un decoder con enabler e un demultiplexer?


Nessuna differenza, si tratta di due modi diversi di chiamare la stessa rete.

Cosa significa che un multiplexer è una rete combinatoria universale?


𝑗 𝑏2 𝑏1 𝑏0 𝑧 Un multiplexer si realizza con porte AND,
0 0 0 0 0 OR e NOT ed è una rete a 2 livelli di logica,
1 0 0 1 1 può realizzare una qualunque rete combinatoria
2 0 1 0 0
3 0 1 1 0
ad una uscita e può essere messo in parallelo
4 1 0 0 1 per realizzare una rete combinatoria a più
5 1 0 1 1 uscite. Per questi motivi il multiplexer è una
6 1 1 0 1 rete combinatoria universale.
7 1 1 1 0
Downloaded by Volcane Amps (volcaneamps@gmail.com)
lOMoARcPSD|8254953

11. Lezione
Cosa sono i sottocubi?
I sottocubi sono raggruppamenti di celle adiacenti all’interno di una mappa di Karnaugh. I
raggruppamenti devono essere considerati sempre per potenze del 2.

12. Lezione
Perché porte NAND e NOR sono dette universali?
Ogni funzione logica può essere rappresentata con sole porte NAND (oppure con sole porte NOR).
Esempio di sintesi a porte NAND (NOR) da sintesi SP (PS).
Per trasformare a porte NAND una rete logica SP (Somme di Prodotti) si eseguono i seguenti passaggi:
- Trasformazione delle AND in NAND (utilizziamo il teorema di idempotenza sulla complementazione)
- Applicazione di una delle leggi di De Morgan per trasformare gli OR in NAND
Per trasformare a porte NOR una rete logica PS (Prodotti di Somme) si eseguono i seguenti passaggi:
- Trasformazione delle OR in NOR (idempotenza sulla complementazione)
- Applicazione della seconda legge di De Morgan per trasformare le AND in NOR
Differenza fra sintesi SP e PS
Dal punto di vista algebrico una espressione a porte NAND si ottiene partendo da una SP (somma di
prodotti) complementandola 2 volte (idempotenza) ed applicando De Morgan una volta.
L’espressione a porte NOR si ottiene partendo da una PS (prodotto di somme) complementandola 2
volte (idempotenza) per sostituire le OR in NOR ed applicando la seconda legge di De Morgan per
trasformare le AND in NOR.

13. Lezione
Cosa si intende per stabilità di una rete sequenziale asincrona?
Si dice che una rete sequenziale asincrona è stabile quando non evolve, quando cioè non cambia stato
per un certo ingresso (arco ad orecchio nel grafo di flusso o cerchio intorno allo stato stabile nella tabella
di flusso).
Disegnare il diagramma di temporizzazione del flip-flop SR.
Si nota che la rete evolve in
uscita con un certo ritardo
rispetto al cambio dei valori in
ingresso. Questo dipende, oltre
che dai tempi di
attraversamento, dalla legge di
evoluzione che andrà
implementata e che introdurrà
comunque un ritardo.
Descrivere un riconoscitore di sequenza con il suo diagramma (oppure tabella) di flusso.
Un riconoscitore di sequenza è una rete che ha N ingressi (in questo caso N=2, sequenze di 2 bit), ed
una uscita, la legge di evoluzione è: L’uscita è ad 1 quando si presenta la sequenza di ingresso
desiderata (01, 11, 10), rimane a 0 altrimenti.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

14. Lezione
Descrivere il modello strutturale con ritardo per la sintesi delle reti sequenziali asincrone
(Schema grafico e discussione di ciascun componente)
La legge B può essere impostata con una rete
combinatoria con W ingressi ed M uscite, la legge
A con una rete combinatoria di N+W ingressi e W
uscite. Nel mezzo un meccanismo di marcatura
che per il momento consideriamo come un
ritardo. Codifichiamo differentemente le variabili
che codificano:
- Lo stato interno presente 𝑦0, … , 𝑦𝑤−1
- Lo stato interno da marcare 𝑎0, … , 𝑎𝑤−1 (che diventa stato presente dopo un ritardo pari a delta).

Sintesi completa di un riconoscitore di sequenza 01, 11, 10


Per sintetizzare un riconoscitore di
sequenza è necessario un percorso
di ordine 4, vanno codificati 4 stati
interni in modo adiacente. Si
supponga di utilizzare S0=00, S1=01,
S2=11, S3=10 che ci permette di
rispettare la regola che vuole stati
adiacenti che differiscono di un solo bit. È ben visibile il salto necessario per il passaggio dallo stato S3
allo stato S0.

15. Lezione
Sintetizzare un FF-SR considerando il modello strutturale ad elementi di ritardo (considerare la presenza
dell'uscita affermata e negata).
Le versioni commerciali del FF-SR offrono in uscita anche la variabile negata. È realizzato con
elementi neutri di ritardo come meccanismo di marcatura nel modo seguente:
- La rete CN2 è un corto circuito
- Si codificano gli stati interni a 2 bit con valore alle uscite: S0=01,
S1=10
la codifica a 2 bit è ridondate e crea problemi di corse tra le variabili di stato ma la sua sintesi
risulta semplice e produce una rete molto veloce e robusta. Per gli stati non adiacenti è necessario
guidare le corse con uno stato ponte, le transizioni S0-S1 e S1-S0 passeranno per lo stato ponte.

Disegnare la sintesi a porte NAND del FF-SR. Si possono eliminare i ritardi di marcatura? Perché’?

Si possono eliminare i ritardi di marcatura perché le variabili di stato non rientrano in


zone interessate a transizioni di ingresso. Infatti se cambia s, q rientra sull’altra NAND,
che è a regime. Dato che non servono i ritatrdi, la rete è più veloce.

Temporizzazione del FF D-latch.

Per memorizzare correttamente l'ultimo valore di d prima che


passi da 1 a 0, occorre che il valore di d rimanga costante per
qualche tempo prima (Tsetup) e per qualche tempo dopo (Thold) il
verificarsi dell'evento.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

16. Lezione
Sintesi del riconoscitore di sequenza 01 11 10 usando il modello strutturale con FF-SR.

Utilizziamo la tabella degli stati


interni accanto, la tabella delle
transizioni non descrive più le uscite
di CN1 ma specifica se il nuovo
valore delle variabili di stato 𝑦1𝑜 𝑦0
(quello che si legge dentro la cella) è
uguale o meno al vecchio (che si
legge sulla riga corrispondente).

Sintesi del FF D-latch usando il modello strutturale con FF-SR.


Il FF D-latch memorizza l’ingresso d quando p=1.
Quando p=0 conserva l’informazione
memorizzata. A fianco la tabella di flusso. Le
regole di pilotaggio stabiliscono che si debba
tenere costante d a cavallo della transizione di p
da 1 a 0. I tempi in cui deve essere costante sono
𝑇𝑠𝑒𝑡𝑢𝑝 𝑒 𝑇ℎ𝑜𝑙𝑑 e servono a garantire che la rete
non veda transizioni multiple di ingresso e che si
stabilizzi in modo prevedibile.

Sintesi del Flip Flop D-positive-edge-triggered (FF-DET) usando il modello strutturale con FF-SR
Si realizza con due sottoreti: la prima è il campionatore sul fronte di salita di p, la seconda è un FF-SR
che seve ad inserire il ritardo e garantire che l’uscita sia aggiornata solo dopo 𝑇𝑝𝑟𝑜𝑝𝑎𝑔𝑎𝑡𝑖𝑜𝑛 > 𝑇ℎ𝑜𝑙𝑑.
- La rete campionatore dovrà conservare il valore campionato sul fronte di salita. Sarà essa a pilotare
il FF-SR con comandi di conservazione, set e reset. Si sintetizza come una rete
sequenziale asincrona a tre stati interni.
- S0: per p=0 la rete è in conservazione,
l’uscita del campionatore vale 00, non è
sensibile a d; quando p va ad 1 può
succedere di resettare il ritardatore (se
d=0) o settarlo (se d=1). Visto che le
uscite del campionatore sono diverse si
devono prevedere 2 stati interni distinti,
per settare o resettare il ritardatore. S1 ed S2
- S1: si arriva se d=0 quando p transita a 1. Si ordina al ritardatore di resettare e si rimane in S1. In
S1 la rete deve essere stabile, non ascolta d. Unica transizione di stato se p transita a 0 si torna a S0 in
attesa di un nuovo fronte di salita di p.
- S2: come S1 con l’unica differenza nel comando al ritardatore che viene settato con 10 in
ingresso.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

17. Lezione
Disegnare lo schema realizzativo di una RAM con D latch.

Una RAM statica è una matrice di D-Latch. Una riga è una locazione con bit 0 a destra e bit 3 a sinistra.
Per la lettura, le uscite dei D-Latch devono essere selezionate da un multiplexer in cui gli ingressi sono le
uscite del D-Latch e le variabili di comando sono i fili di indirizzo. Le uscite sono bloccate da porte tri-state
che saranno abilitate quando si sta leggendo dalla memoria (per la gestione si utilizza la rete combinatoria
“C” come funzione di /s, /mr, /mw).
Per la scrittura, ciascuna riga, avrà l’ingresso p prodotto da un demultiplexer comandato dai fili di
indirizzo, in questo modo commuterà la scrittura sulla riga giusta ed anche se i fili dati sono in ingresso a
tutti i D-Latch soltanto una riga li sentirà. Il comando di scrittura è prodotto dalla rete combinatoria “C”
come funzione di /s, /mr, /mw).

Montaggio di una RAM in serie. Spiegare anche a cosa serve?


Il montaggio in serie serve per raddoppiare il numero di locazioni mantenendo fissa la loro dimensione.
Per poter indirizzare banchi da 256Kx8 usando banchi da 128Kx8, è necessario avere un filo di indirizzi in
più che, attraverso il valore trasportato, indirizza alla “parte alta” o alla “parte bassa”, generando un
segnale di select per i due blocchi (si combinano /s e 𝑎17). Tutto il resto dei fili è portato in parallelo sui
due blocchi.

Montaggio di una RAM in parallelo. Spiegare anche a cosa serve?


Montare le RAM in parallelo, significa raddoppiare la dimensione della memoria. Per ottenere un il
montaggio basta collegare i fili in parallelo, soltanto i bus dati sono affiancati per costituire
l’informazione completa; i dati utilizzeranno lo stesso indirizzo.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

18. Lezione
Differenze fra le reti sequenziali asincrone e quelle sincronizzate
Le reti sequenziali asincrone campionano continuamente gli ingressi e forniscono gli stati in uscita con il
solo ritardo di attraversamento. Le reti sequenziali sincronizzate campionano lo stato di ingresso all’arrivo
del clock e non ha alcuna importanza di cosa succeda tra due clock. Le RSS evolvono sul fronte di risalita
del clock e non quando cambiano gli ingressi.

Definizione di rete sequenziale sincronizzata e principali regole di progetto (cosa si può fare e
cosa non si può fare nella realizzazione di tali reti).
Si definisce rete sequenziale sincronizzata, una collezione di registri e reti combinatorie montati in
qualsiasi modo. È fondamentale che non ci siano anelli di reti combinatorie (formerebbero una RSA) e che
i registri abbiano tutti lo stesso clock.

Disegnare lo schema generale di una rete sequenziale sincronizzata e discutere le regole di


pilotaggio

Il clock deve permettere di produrre un nuovo stato di ingresso


attraverso le reti combinatorie e di farlo arrivare, attraverso le
reti combinatorie, in ingresso ai registri.

Temporizzazione di una generica rete sequenziale sincronizzata (con spiegazione dei tempi
considerati).
Si definiscono i seguenti ritardi:
 𝑇𝑖𝑛−𝑡𝑜−𝑟𝑒𝑔−𝑚𝑎𝑥 : il tempo di attraversamento della più lunga catena fatta di sole reti combinatorie
che si trovi tra una variabile di ingresso della rete fino all’ingresso di un registro
 𝑇𝑟𝑒𝑔−𝑡𝑜−𝑟𝑒𝑔−𝑚𝑎𝑥 : il tempo di attraversamento della più lunga catena fatta di sole reti combinatorie
che si trovi tra l’uscita di un registro e l’ingresso di un registro
 𝑇𝑖𝑛−𝑡𝑜−𝑜𝑢𝑡−𝑚𝑎𝑥 : il tempo di attraversamento della più lunga catena fatta di sole reti combinatorie
che si trovi tra una variabile di ingresso della rete ed una variabile di uscita della rete
 𝑇𝑟𝑒𝑔−𝑡𝑜−𝑜𝑢𝑡−𝑚𝑎𝑥 : il tempo di attraversamento della più lunga catena fatta di sole reti combinatorie
che si trovi tra l’uscita di un registro ed una variabile di uscita della rete

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

19. Lezione
Disegnare un registro contatore
Si può realizzare un contatore up con un
modulo sommatore ed un registro. Il
sommatore sarà una rete combinatoria in
base β capace di sommare due numeri a N
cifre. Visto che si incrementa sempre di
uno, è possibile mantenere uno degli
ingressi a 0 ed il riporto entrante uguale ad
1. Il numero W degli elementi del registro è
uguale a N*NumeroBitCodificaDiUnaCifra

Sintesi del full adder in base 2


Il full adder in base 2 è un circuito che fa somme di una cifra in base 2, con riporto.
Si tratta di una rete combinatoria con 3 ingressi e 2 uscite.
Per sintetizzare il full adder in base 2, si noti che il riporto uscente può essere fatto
in forma SP con 3 AND ed una OR; inoltre si osservi che, la produzione della
somma 𝑠𝑖sarà uguale ad 1 solo se il numero di 1 in ingresso è dispari.

Disegnare lo schema base di un registro multifunzionale

Il registro multifunzionale si realizza con


un multiplexer a K ingressi, alcune reti
combinatorie ed un registro.
In realtà si hanno M multiplexer a K
ingressi in parallelo.
Al registro si associa il nome OUTR
(output register)

Fare un esempio pratico di registro multifunzionale


Si consideri un registro da 4 bit e due funzioni così definite:
• Caricamento parallelo: all’arrivo del segnale di clock nel registro si
memorizza lo stato della variabile in ingresso.
• Traslazione a sinistra: all’arrivo del clock nel registro si memorizza il
vecchio contenuto traslato a sinistra di una posizione e con
inserzione del bit 0 nella posizione meno significativa.
• La funzione caricamento è eseguita se all’arrivo del segnale di
sincronizzazione la variabile di comando 𝑏0 = 0
• La funzione traslazione è eseguita se all’arrivo del segnale di
sincronizzazione la variabile di comando 𝑏0 = 1

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

20. Lezione
Disegnare la temporizzazione che garantisce il corretto pilotaggio dei una rete di Moore

Lo stato interno marcato rientra quando il registro non è più sensibile, nessun problema di alee
essenziali né problemi di corse critiche. Stati interni consecutivi possono essere distanti.
Eventuali alee presenti in 𝑅𝐶𝐴 non danno problemi se l’uscita 𝐶𝑁1 è stabile in
[𝑡𝑖 − 𝑇𝑠𝑒𝑡𝑢𝑝, 𝑡𝑖 + 𝑇ℎ𝑜𝑙𝑑]

Vantaggi del modello di Mealy rispetto al modello di Moore


Al variare dell’ingresso posso produrre un nuovo stato di uscita senza aspettare un nuovo fronte del clock.
Nelle reti di Moore l’uscita varia quando varia il clock nelle reti di Mealy varia anche al variare dello stato di
ingresso. Nelle reti Moore l’uscita è un clock indietro rispetto all’ingresso che l’ha generata, nelle reti
Mealy dipende anche dall’ingresso che l’ha generata. In genere, con la rete di Mealy si riescono a risolvere
gli stessi problemi con un numero minore di stati interni.

Descrizione e sintesi di un FF JK
Il FF JK è una rete sequenziale sincronizzata che, all’arrivo del clock j k 𝒂𝒛𝒊𝒐𝒏𝒆 𝒊𝒏 𝒖𝒔𝒄𝒊𝒕𝒂
valuta gli ingressi j e k e svolge le azioni come da tabella a fianco. 0 0 Conserva
Nel caso di reti sequenziali sincronizzate, se correttamente 1 0 Setta
pilotate, tutti gli stati sono stabili per un periodo di clock. Ad ogni 0 1 Resetta
clock si ha una nuova transizione, in alcuni casi può essere la 1 1 Commuta
marcatura dello stesso stato che si aveva in precedenza.

Il FF JK può essere sintetizzato secondo il


modello Moore nell’mmagine, il registro STAR
ha un solo bit di stato e la rete 𝑅𝐶𝑍 è in corto
circuito.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

21. Lezione
Disegnare e discutere la struttura di una rete sequenziale sincronizzata complessa
Poiché i registri sono non trasparenti possono essere
accoppiati a reti combinatorie a formare reti sequenziali
sincronizzate complesse. Le varie reti combinatorie
possono essere connesse in qualsiasi modo, purché nel
loro insieme costituiscano ancora una rete combinatoria
cioè non ci siano anelli che diano luogo a reti sequenziali
asincrone che possano creare problemi

Descrizione generale con pseudo-linguaggio di trasferimento fra registri di una rete


sequenziale sincronizzata complessa
Si supponga di voler gestire una rete con Q registri operativi (𝑅0, … , 𝑅𝑄−1) e K stati che può assumere il
registro STAR. Il numero di bit dei registri operativi lo sceglie il progettista, mentre quello del registro
STAR è pari a log2 .
Module ReteComplessa(VarUscita, VarIngresso, clock, reset_) {
Dichiarazione delle variabili e dei registri;
codifica degli stati di STAR(S0, … , Sk−1);
VarUscita=sottoInsiemeDeiRegistriOperativi;
all’arrivo del fronte di salita del clock o del fronte di discesa del reset_
{ if (reset_==0) {STAR<- stato_iniziale; [R0, … , RQ−1]<-stato_iniziale; }
else

switch(STAR
) STAR=S0
{RQ−1<- espressione0,Q−1(VarIngresso, [R0, … , RQ−1] }
…..
{R0<- espressione0,0(VarIngresso, [R0, … , RQ−1] }
….
STAR=Sk−1
{RQ−1<- espressionek−1,Q−1(VarIngresso, [R0, … , RQ−1] }
…..
{R0<- espressionek−1,0(VarIngresso, [R0, … , RQ−1] }
}
}

Disegnare lo schema generale del modello a Parte Operativa e Parte Controllo

Si hanno due RSS interconnesse, però non si ha mai una catena chiusa di reti combinatorie, perché
una delle due (la parte controllo) è di Moore.
La parte operativa si implementa in maniera euristica, utilizzando il più possibile delle reti standard ed
eliminando ridondanze sia nelle variabili di comando sia nelle variabili di condizionamento

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

22 Lezione
Vantaggi e svantaggi del linguaggio Assembly.
Vantaggi Svantaggi
Prestazionale – si riescono a scrivere pezzi di Portabilità – Se scrivere a stretto contatto con
codice che occupano poco spazio e sono eseguiti l’hardware aumenta le prestazioni, cambiando
velocemente. Il codice risulta altamente l’hardware è impossibile che i programmi
efficiente continuino a funzionare.
Difficoltà di codifica - Non esiste il concetto di tipo
di variabili, i meccanismi di controllo di flusso sono
molto primitivi. Tutto è a carico del
programmatore.
Discutere il sottosistema di ingresso e uscita di un calcolatore. Specificare a cosa servono
le interfacce.
Il sottosistema di ingresso e uscita del calcolatore, si occupa, attraverso le interfacce ed i dispositivi, di
permettere l’ingresso dall’esterno delle informazioni, sotto forma di movimenti e impulsi elettrici, e
restituire i risultati delle elaborazioni sotto forma di suoni, immagini ecc. I più comuni dispositivi di input
sono la tastiera ed il mouse, per l’output il monitor, la stampante. Ci sono inoltre dispositivi di I/O quali
le memorie di massa dove risiedono i programmi ed i dati prima che vengano richiamati per
l’esecuzione.

Differenze fra ALU ed FPU.


La Aritmetic Logic Unit (ALU) si occupa di esegue le istruzioni a virgola fissa e logiche, la Floating Point Unit
(FPU) esegue le istruzioni a virgola mobile. È selezionata in automatico in base al prefisso dell’istruzione
da eseguire.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

23 Lezione
Disegnare lo schema funzionale di un semplice ma
completo calcolatore basato su architettura x86-32.

Quali sono e a cosa servono i FLAG significativi del registro EF?


Le funzioni di ciascuno dei 4 Flag sono:

• OF (Overflow Flag): quando contiene 1 indica che durante l’esecuzione dell’ultima istruzione si è avuto un
traboccamento: se l’istruzione operava su numeri interi, questa situazione indica che il risultato dell’operazione
aritmetica realizzata dall’istruzione non è rappresentabile.

• SF (Sign Flag): quando contiene 1 indica che l’ultima istruzione eseguita ha generato un risultato con il bit più
significativo uguale ad 1: se l’istruzione operava su numeri interi, questa situazione indica che il risultato è un
numero negativo.

• ZF (Zero Flag): quando contiene 1 indica che l’ultima istruzione eseguita ha generato un risultato con tutti i
bit a 0.

• CF (Carry Flag): quando contiene 1 indica che durante l’esecuzione dell’ultima istruzione si è generato un riporto
o si è richiesto un prestito: se l’istruzione operava su numeri naturali, questa situazione indica che il risultato
dell’operazione aritmetica realizzata dall’istruzione non è rappresentabile.

Discutere l’organizzazione logica dello spazio di I/O vista dal programmatore Assembly.
Lo spazio di I/O è costituito da 64K locazioni o porte. Ogni porta ha capacità di un byte ed è indirizzabile
attraverso un indirizzo a 16 bit. Il processore accede allo spazio di I/O per leggere o scrivere sulle porte.
Anche in questo caso l’accesso può essere effettuato in doppia o quadrupla porta.

Discutere la condizione di reset del calcolatore.


Al reset (quando viene accesso il calcolatore o viene premuto il pulsante di reset) il processore inizializza
automaticamente il contenuto registro EIP al valore 0xFFFF0000. Questa locazione, la prima ad essere
eseguita) e le successive sono fra quelle che debbono contenere indelebilmente il programma di bootstrap.
Pertanto la memoria non può essere costruita con sola tecnologia RAM. Una parte di essa, quella a partire
dall’indirizzo sopra citato, deve essere implementata con tecnologia non volatile (ad esempio, EPROM).

24 Lezione
Cosa si intende per linguaggio mnemonico?
Il linguaggio mnemonico è una traduzione uno-a-uno delle istruzioni in codici comprensibili al programmatore.
Come sono relazionati linguaggio macchina, linguaggio mnemonico e assembly?
Il linguaggio mnemonico ha una corrispondenza biunivoca con le istruzioni in linguaggio macchina.
L’assemblatore è il programma che si occuperà della traduzione.

Differenza fra set di istruzioni RISC e CISC.


• RISC – Reduced Istruction Set Computer – contiene istruzioni semplici e veloci con abbondanza di
registri
• CISC – Complex Istruction Set Computer – mette a disposizione del programmatore istruzioni più
complesse

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

25 Lezione
Discutere come avviene l’indirizzamento di registro e fornire un esempio.
Visto che i registri hanno una dimensione nota, quando c’è di mezzo un indirizzamento di registro non è
mai necessario specificare con un suffisso la lunghezza degli operandi. L’indirizzamento di registro si
applica ad uno degli operandi o ad entrambi.

Discutere come avviene l’indirizzamento di memoria e come viene calcolato l’indirizzo.


Uno degli operandi, sia esso sorgente o destinatario, ma mai entrambi, può trovarsi in memoria. In tal caso,
per riferirlo bisogna specificarne l’indirizzo a 32 bit.
Nel caso più generale l’indirizzo di un operando in memoria può essere ottenuto combinando, in
accordo alla relazione che segue, quattro numeri naturali a 32 bit, detti rispettivamente base,
indice, scala e displacement. L’indirizzo viene calcolato come segue:

𝑖𝑛𝑑𝑖𝑟𝑖𝑧𝑧𝑜 = |𝑏𝑎𝑠𝑒 + 𝑖𝑛𝑑𝑖𝑐𝑒 ∗ 𝑠𝑐𝑎𝑙𝑎 ± 𝑑𝑖𝑠𝑝𝑙𝑎𝑐𝑒𝑚𝑒𝑛𝑡|𝑚𝑜𝑑𝑢𝑙𝑜32

Discutere come avviene l’indirizzamento delle porte di I/O. Quanto si può effettuare
l’indirizzamento diretto e come avviene quello indiretto? Fornire un esempio di
indirizzamento delle porte di I/O.
Uno degli operandi (non entrambi) può trovarsi nello spazio di I/O, per riferirlo occorre utilizzare l’indirizzo
a 16 bit della porta che lo contiene. È possibile utilizzare, come per la memoria, indirizzamento diretto (se
la porta ha indirizzo inferiore a 256), indiretto tramite registro puntatore (utilizzando esclusivamente il
registro DX). Es.: IN (%DX),%AX – prende in input il contenuto della porta individuata in %DX e lo
salva in AX

26 Lezione
Cosa è una pila?
La pila è una porzione di memoria in cui immettere informazioni regolate dalla disciplina LIFO (Last In
First Out); l’ultima cosa che si inserisce è la prima che si estrae.

Perché la pila è importante per il corretto funzionamento del processore e del calcolatore
in generale?
Perché permette di memorizzare le chiamate ai sottoprogrammi salvando la situazione dei registri prima
di cambiare il flusso. Al rientro dal sottoprogramma viene ripristinata la situazione precedente (se nel
frattempo non è cambiata) e si continua l’esecuzione con l’istruzione successiva alla chiamata del
sottoprogramma.

Discutere come viene gestite la pila a livello del processore, in particolare come si realizza,
quali sono le istruzioni principali e come si implementano
EBP è il registro che in genere contiene l’indirizzo di base della pila Il registro ESP (Stack Pointer register)
del processore contiene ad ogni istante l’indirizzo del top della pila, cioè l’indirizzo della locazione riempita
per ultima. In particolare:
• Il registro ESP è inizializzato con la locazione successiva a quella di fondo
• L’immissione di una informazione nella pila (push) deve prevedere il decremento del registro ESP e
la scrittura in memoria all’indirizzo decrementato
• Il prelievo di una informazione dalla pila (pop) va effettuato utilizzando il contenuto del registro ESP
con indirizzo per la lettura e poi incrementando il registro stesso.
Il processore, nel set di istruzioni, prevede le operazioni di pop e push. È possibile trasferire dalla/nella
pila una word o un long (non il byte) per cui avremo incrementi/decrementi di 2 o 4 byte.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

29 Lezione
Scrivere un programma in Assembly GAS che conti il numero di occorrenze ad uno in una doppia
parola

Scrivere un programma in Assembly GAS che conti il numero di occorrenze a zero in una doppia parola

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

30 Lezione
Scrivere un programma Assembly GAS che conta il numero di occorrenze della lettera e in una
stringa specificata come parametro

3ϭLezione
Si scriva un programma in Assembly GAS che calcola il fattoriale di un numero naturale (da 1 a 9)

33 Lezione
Scrivere un programma che accetta in ingresso una stringa di caratteri esclusivamente minuscoli
terminata da ritorno carrello e li stampa in maiuscolo a video

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

34 Lezione
Disegnare e discutere il diagramma temporale di un ciclo di lettura in memoria
(oppure in I/O) di un semplice processore a 8 bit.
La lettura può avvenire in memoria, in
questo caso il processore, sui piedini A31-
A0 specifica l’indirizzo della locazione di
memoria. Si genera quindi un impulso di
lettura attraverso il piedino /MRD sul fronte
di salita si memorizza il byte depositato dal
banco di memoria sui piedini D7-D0.
Durante la lettura, i piedini /MWR, /IORD
e /IOWR restano inattivi.
È possibile leggere anche da una periferica (sullo spazio di I/O). In questo caso, del tutto analogo al
precedente, l’indirizzo va specificato su 16 bit e quindi si utilizza la parte meno significativa dei bit
di indirizzo. Ovviamente la lettura è fatta tramite il piedino /IORD.
Disegnare e discutere il diagramma temporale di un ciclo di scrittura in memoria
(oppure in I/O) di un semplice processore a 8 bit.
La scrittura dalla memoria, in questo
caso, il processore specifica attraverso
A31-A0 l’indirizzo della locazione
interessata. Contemporaneamente
mettere a disposizione il byte da scrivere
sui piedini D7-D0. Successivamente viene
generato un impulso di scrittura, di una
durata di alcune decide di nano secondi,
attraverso il piedino /MWR.
Sul fronte in salita dell’impulso, viene il banco di memoria interessato deve prelevare il byte a
disposizione su D7-D0. Durante il ciclo di lettura, i piedini /MRD, /IORD e /IOWR restano inattivi. Per
scrivere su una porta di I/O, avviene in maniera analoga alla precedente, con l’unica differenza che
l’indirizzo va specificato su 16 bit e quindi si utilizza solo la parte meno significativa dei bit di indirizzo
(A15-A0, mentre gli altri restano a zero). Ovviamente, l’impulso di scrittura viene mandato sul piedino /
IOWR.

35 Lezione
Discutere come un banco di memoria da 1Mx8 (interfaccia) può essere montato nello
spazio di memoria (di I/O). Disegnare lo schema corretto di montaggio.
Una interfaccia appare al
programmatore come una piccola
memoria costituita da registri di un
byte. Per indirizzare lo spazio di I/O si
utilizzerà l’indirizzo interno del
registro cui si somma l’indirizzo base
riconosciuto dalla maschera con i 14
bit più significativi.

Discutere come una interfaccia con tre registri da un byte può essere montato nello spazio di I/
O. Disegnare lo schema corretto di montaggio.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

36 Lezione

Disegnare lo schema dei piedini del processore PC e discuterlo.

Simbolo Tipo Nome e Funzione


Address (3-state) – supportano l’indirizzo di una linea durante il ciclo
A31-A2 Uscita
di bus
Bus enable (3-state) – abilita singolarmente le locazioni delle 4 parti
/BE3-/BE0 Uscita
del bus dati (D31-D24, D23-D16, D15-D8, D7-D0)
D31-D0 Bidirezionali Data (3-state) – supportano i dati durante i cicli bus
/RE Uscita Request (3-state) – specifica che un ciclo di bus ha inizio
W/R Uscita Write/Read (3-state) – specifica se il ciclo di bus è in scrittura o lettura
Memory/Input-Output (3-state) – specifica se il ciclo è verso la memoria
M/IO Uscita
o verso lo spazio di I/O
READY – indica al processore che il ciclo di bus è concluso e può
/READY Ingresso
essere terminato
Non Maskable Interrupt request – indica al processore una richiesta
/NMI Ingresso
di interrupt non mascherabile
Interrupt request – indica al processore la presenza di una richiesta
/INTR Ingresso
di interrupt mascherabile
Interrupt Acknowledge – indica l’accettazione di una richiesta di
/INTA Uscita
interrupt mascherabile
TP Ingresso Interrupt type – riceve serialmente il tipo di un’interruzione mascherabile
/HOLD Ingresso Hold – è la richiesta di utilizzo del bus da parte di un blocco
/HOLDA Uscita Hold Acknowledge – è l’accettazione di una richiesta di utilizzo del bus
CD Uscita Cache disable – serve a disabilitare la memoria cache
Write Through – forza questa regola di funzionamento sulla
WT Uscita
memoria cache
CLK Ingresso Clock – clock del processore
Reset Ingresso Reset del processore

Perché il processore PC ha solo 30 piedini di indirizzo (A31-A2) pur indirizzando


uno spazio di memoria da 4GB?
Oltre ai 30 (A31-A2) piedini del bus di indirizzo, sono utilizzati i 4 (/BE3-/BE0) piedini di bus-enable; i
primi indirizzano alla riga, i secondi selezionano la locazione o le locazioni da prendere in considerazione.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

37 Lezione
Disegnare come il controllore del bus locale si collega al processore.
Il latch per il pilotaggio degli indirizzi, il
transceiver per il pilotaggio dei dati, il circuito
di abilitazione che produce l’abilitazione per i
circuiti precedenti ed il circuito di comando che
invia i comandi veri e propri costituiscono il
controllore del bus. A sinistra abbiamo i
collegamenti con i piedini del processore ed a
destra il bus vero e proprio.

Come viene vista una interfaccia nello spazio di I/O organizzato a linee a 32 bit. C'è differenza
nel montaggio e nella visione logica al variare della dimensione dei registri interni?
Le interfacce sono viste come delle piccole memorie con registri. I registri possono essere a 8, 16 o 32 bit. In
base alla dimensione dei registri, una interfaccia è collegata a tutto il bus (registro 32 bit), ai 16 bit (registro a
16 bit) o agli 8 bit (registro a 8 bit) meno significativi. I registri delle interfacce stanno su parti corrispondenti a
linee consecutive.
Quanto detto significa che una interfaccia con registro a 32 bit occupa una intera linea, un registro a 16 bit
occupa le prime due locazioni meno significative di una linea e un registro a 8 bit la locazione meno significativa
di una linea. Gli indirizzi di tali registri sono sempre multipli di 4.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

38. Lezione
Disegnare lo schema dello specifico circuito di pilotaggio di un bus dati a 16 bit.
A sinistra abbiamo i piedini del processore che immagina di avere uno spazio
esterno a 32 bit. In questo spazio ogni linea è vista come due sotto linea
individuate dal valore del bit A1: per A1=1 si individua la semilinea alta, per A1=0 si
individua la semilinea bassa. Le porte OR abilitano in modo mutuamente esclusivo
uno dei due transceiver in base al bit A1 ed al segnale /E16 (abilitazione del bus a
16 bit).
Se si abilita il transceiver superiore il contenuto del bus a 16 bit viene trasferito al
processore tramite la semilinea alta (A1=1), altrimenti il contenuto trasferito
tramite la semilinea bassa (A1=0).
Per selezionare il singolo byte dal bus a 16 bit si utilizzano i segnali /BHE (Bus High
Enable) e /BLE (Bus Low Enable) generati dalla tabella:

/BE3 /BE2 /BE1 /BE0 /BHE /BLE = A0


- - 1 0 1 0
- - 0 1 0 1 Notare che /BLE coincide con A0
- - 0 0 0 0
1 0 1 1 1 0
0 1 1 1 0 1
0 0 1 1 0 0

Come si può progettare il bus locale di un calcolatore che debba gestire uno spazio di memoria a 32 bit e
uno spazio di I/O a 32, 16 e 8 bit?
Il bus indirizzi può essere unico, deve comprendere una rete in grado di produrre i valori A1-A0 e di /BHE partendo da /BE3-/BE0
secondo le tabelle:
/BE3 /BE2 /BE1 /BE0 A1 A0 /BE3 /BE2 /BE1 /BE0 /BHE /BLE = A0
- - 1 0 1 0 - - 1 0 1 0
- - 0 1 0 1 - - 0 1 0 1
- - 0 0 0 0 - - 0 0 0 0
1 0 1 1 1 0 1 0 1 1 1 0
0 1 1 1 0 1 0 1 1 1 0 1
0 0 1 1 0 0 0 0 1 1 0 0

Anche il bus comandi può funzionare in maniera univoca.

Per quanto riguarda il bus dati, potrebbe essere:


• Unico: in questo caso i piedini D31-D0 del processore sono connessi ai tre circuiti di pilotaggio, è necessario un circuito che
generi in maniera mutuamente esclusiva i segnali /EN, /E16 o /E8 in modo da attivare correttamente tutto il bus, i 16 bit
meno significativi oppure gli 8 bit meno significativi
• Formato da 3 bus fisicamente distinti: con i bus a 16 e 8 bit esistano soltanto per lo spazio di I/O ed ogni bus è pilotato dal
suo specifico circuito.

Nell’immagine a fianco il pilotaggio del bus dati unico


con il circuito R che produce i segnali A1, A0 e BHE da /
BE3-/BE0 per selezionare correttamente la parte di bus
dati da utilizzare.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

39. Lezione
Cosa si intende per programmazione mista? Discutere brevemente il paradigma
di programmazione ad essa associato.
I programmi scritti in linguaggi più ad alto livello, non possono accedere direttamente allo spazio di I/O.
per questo motivo si scrivono sottoprogrammi in assembly che possono essere richiamate da funzioni
scritte in linguaggi evoluti.

Mostrare il codice Assembly del sottoprogramma di lettura (di scrittura) di un byte da


una interfaccia e come esso potrebbe essere richiamato da un main() scritto in C/C++.

40. Lezione
Differenza fra modalità testo e modalità grafica nella gestione dello schermo.
Lo schermo appare suddiviso in righe e colonne, quelle di indice zero sono in alto a sinistra. Il punto di
incrocio è la posizione sullo schermo. In modalità testo ogni posizione è un carattere, in modalità grafica
ad ogni posizione si associa un pixel. Il numero di righe e colonne dipende dalla modalità di
funzionamento.

Discutere a parole o con codice o pseudo codice come un programmatore può scrivere una
funzione che preleva dati dall'interfaccia collegata alla tastiera

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

41. Lezione
Descrivere la tabella delle interruzioni e la struttura dei gate (o descrittori).
La tabella delle interruzioni è una porzione di memoria che contiene 256
entrate che prendono il nome di descrittore o gate. L’indirizzo base è
contenuto nel registro IDTR (Interrupt Descriptor Table Register). È formato
da 8 byte che contengono l’indirizzo della routine di interruzione e da un
byte di accesso (importanti i bit P e TI)

Perché il meccanismo delle interruzioni si dice vettorizzato?


Ogni interruzione ha associato un tipo che determina l’accesso ad una specifica entrata della tabella delle interruzioni,
l’esecuzione di una routine dipende dal tipo dell’interruzione.
Le eccezioni e gli altri tipo di interruzioni vengono gestite alla stessa maniera?
No, per tutte le interruzioni, tranne le eccezione del processore, il valore di EIP salvato nella pila è l’indirizzo della
prossima istruzione da eseguire; l’istruzione corrente non è mai bloccata, si aspetta alla fine l’aggiornamento di EIP. Le
eccezioni del processore bloccano l’esecuzione dell’istruzione corrente, possono essere di tre tipi:

• Trap: vengono gestiti come le altre interruzioni alla fine dell’esecuzione dell’istruzione corrente. Un esempio di trap
è l’overflow durante l’istruzione INTO
• Fault: si ha quando si incontrano anomalie nella fase di esecuzione di un’istruzione. Questa viene bloccata. Nella
pila si memorizza l’indirizzo dell’istruzione che ha sollevato l’eccezione. Anche quando un gate non è presente il
programma viene terminato
• Abort: comporta la terminazione forzata dell’istruzione. In genere un abort si utilizza per problemi nelle circuiterie.

42. Lezione
Disegnare lo schema della circuiteria del controllore di interruzione APIC.
Un controllore APIC (Advanced
Programmable Interrupt Controller)
consente la gestione avanza di richieste
multiple di interrupt da diverse
interfacce nel calcolatore. Sui 24
piedini (IR0-IR23) di ingresso riceve le
richieste dalle interfacce e le comunica
al processore tramite /INTR. Ogni
piedino IR supporta più sorgenti di
interruzioni, in questo caso le richieste
devono arrivare tramite segnali attivi
bassi. È collegato al bus locale a 32 bit
tramite i classici piedini di indirizzo, di
dati e di controllo.
Ci sono 3 registri direttamente accessibili a 32 bit e 64 registri nascosti (accessibili tramite porte). Può essere gestito
dal programmatore come una interfaccio montata nello spazio di memoria.

Elencare i passi che il controllore APIC effettua per la gestione del meccanismo delle interruzioni.
Il controllore APIC ad ogni nuova richiesta sui piedini di ingresso pone a 1 il bit di IRR corrispondente al tipo.
Per la gestione delle interruzioni, il controllore ripete ciclicamente:
• Attende che il bit più significativo di IRR con valore 1 abbia una priorità maggiore del bit più
significativo di ISR con valore 1
• Attiva il piedino /INTR
• Attende la risposta sul piedino /INTA e quando la riceve
o Considera il bit più significativo di IRR (j-mo)
o Pone a 0 il j-mo bit più significativo di IRR ed a 1 il j-mo bit più significativo di ISR
o Invia j (tipo dell’interruzione) al processore sul piedino TP
o Rimuove la richiesta di interruzione al processore disattivando /INTR
Ogni volta che via software riceve End Of Interrupt, azzera il bit più significativo di ISR di valore 1.
In sostanza il controllore permette la gestione delle richieste di interruzione annidate, un driver può essere
interrotto da una richiesta con priorità maggiore ma non da richieste di stessa o minore priorità.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

43. Lezione
Disegnare e discutere lo schema di una interfaccia e dei suoi registri che può
essere gestita ad interruzione di programma.
Grazie al meccanismo delle interruzioni è
possibile far svolgere al processore altre
attività mentre si attende che un dato sia
disponibile nei registri di un’interfaccia o che
il registro di uscita sia stato svuotato. L’invio
di una richiesta, tramite un piedino specifico
al controllore delle interruzioni comporta che:
• Il programma in esecuzione si blocchi
• Il driver prenda il controllo del processore per gestire l’ingresso o l’uscita dei dati per soddisfare le
richieste delle interfacce.

Disegnare lo schema di collegamento, di una interfaccia gestita ad interruzione di


programma, al bus e al controllore di interruzione.

Come si evince dall’immagine l’interfaccia del


controllore di interruzione, è collegata al bus
locale con i piedini:
• D7-D0 – Bidirezionali per il trasporto del dato
• /RD /W – in ingresso

Discutere a parole cosa fa il driver che gestisce l’interruzione inviata da una interfaccia.
Il driver, prende il controllo dopo che il programma in esecuzione è stato interrotto, ed effettua la lettura
(scrittura) in RBR (TBR) in modo da soddisfare le richieste da parte dell’interfaccia che rimuove la
richiesta di interruzione e può iniziare un altro trasferimento. Per abilitare (disabilitare) l’interfaccia ad
inviare richieste di interruzione, occorre scrivere 1 (0 per disabilitare) nel bit meno significativo dei
registri CTRI (per dati in ingresso) o CTRO (per dati in uscita)

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

44. Lezione
Esistono memorie interne al processore? Quali sono le loro caratteristiche?
Esistono memorie interne al processore, sono i registri formati da circuiterie di tipo Flip flop, con
dimensioni ridotte (decine di byte) e velocemente accessibili (qualche nanosecondo). Da qualche
decennio è stata introdotta la memoria cache, una memoria statica (SRAM) di primo livello molto veloce.
Le memorie interne sono caratterizzate oltre che per la velocità di accesso da un elevato costo.

Disegnare lo schema di una memoria DRAM e discutere i suoi piedini.


I piedini DO e DI servono per trasferire il bit in ingresso
(in caso di scrittura) e il bit in uscita (in caso di lettura).
Abitualmente in alta impedenza.

A0-A9 sono i piedini di indirizzo, sono soltanto la metà


perché la memoria viene indirizzata prima con l’indirizzo
di riga e poi con quello della colonna

Il bit W/R seleziona la memoria in scrittura (se vale 1) o


di lettura (se vale 0)

Sono presenti i piedini di alimentazione (Vcc) e di


terra (GND)

Elencare i passi che si effettuano per la scrittura in una memoria DRAM.


• Si valorizza il piedino W/R=1
• Si specifica l’indirizzo di riga
• Si attiva il segnale /RAS (si seleziona l’intera riga di bit)
• Si specifica l’indirizzo di colonna
• Si attiva il segnale /CAS
• Nella cella selezionata si scrive il valore presente sul piedino DI
• Le altre celle della riga subiscono il refresh

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

45. Lezione
Disegnare e discutere lo schema dell’organizzazione di una memoria cache.

La cache è costituita da un
insieme di gruppi composti da:
• Bit di validità (V)
• Campo Etichetta (Ev)
• Blocco di locazioni (Bv)
I campi V ed Ev formano il Tag
della cache

Cosa succede quando il processore effettua una operazione di scrittura in presenza di


memoria cache?
Un accesso in lettura al gruppo della memoria individuato tramite l’indice e successivamente il confronto
del bit di validità e l’etichetta del gruppo selezionato. Se il confronto ha esito positivo (hit V=1 e le
etichette coincidono) l’informazione viene memorizzata sulla cache e sulla memoria centrale; in caso di
fallimento
(miss) l’informazione è memorizzata sulla memoria centrale, si accede in scrittura al blocco della memoria
cache individuato dalla componente I dell’indirizzo, si aggiorna il tag e si trasferisce il blocco della memoria
centrale appena modificato.

Differenza fra gestione della scrittura in write through e in write back.


In modalità write through, in scrittura non c’è alcun vantaggio rispetto al non avere la memoria cache. I
vantaggi, sempre in scrittura, si hanno in modalità write back. In quest’ultima modalità, in caso di
successo, si scrive solo sulla cache, in caso di fallimento, sia in lettura che in scrittura, il blocco che deve
essere rimpiazzato è prima scritto in memoria centrale e poi aggiornato.
In questo modo la memoria centrale si aggiorna solo in caso di fallimento.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

46. Lezione
Disegnare e discutere lo schema del controllore della memoria cache (discutere
come vengono utilizzati i vari piedini).
Il controllore di memoria cache si occupa di gestire le
operazioni di lettura/scrittura richieste dal processore ed
effettua la corretta gestione della memoria cache (verifica
della presenza in cache del blocco corretto, aggiornamento
della memoria centrale e della cache in base ai principi della
località). Tramite il piedino WT si forza l’utilizzo della cache
di tipo Write Through (fa perdere i vantaggi di avere la cache
in scrittura). Il piedino /READY in uscita verso il processore è
utilizzato per comunicare che le operazioni si stanno
compiendo in memoria principale o in cache e bisogna
allungare il ciclo di lettura/scrittura. Durante i cicli di I/O o
durante l’accesso allo spazio di bootstrap, il piedino /DIS
disabilita la memoria cache.

Disegnare e discutere lo schema di una cache associativa ad insiemi.

Si tratta di un tipo particolare di memoria


cache che consente di memorizzare
blocchi diversi identificati dallo stesso
indice. Una memoria cache associativa
con cardinalità n è formata da n parti
uguali. Per gestire correttamente il
rimpiazzamento si utilizza un ulteriore
campo R.

A cosa serve il campo R in una cache associativa ad insiemi?


Il campo R specifica quale dei blocchi dell’insieme deve essere rimpiazzato. In realtà è significativo se tutti
i campi V di tutti i blocchi valgono 1 altrimenti si rimpiazza soltanto quello con V=0

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

47. Lezione
Disegnare e discutere un esempio di architettura di un calcolatore con bus PCI.
Per garantire l’indipendenza dalla CPU Il collegamento
non è diretto ma avviene tramite un dispositivo detto
ponte Ospite-CPU. Qualora ci fossero più bus PCI
sarebbero collegati tramite ponti PCI-PCI e numerati da
0 (quello collegato alla CPU) a 255. Ad ogni bus si
possono collegare fino a 32 dispositivi (da 0 a 31) ed
ogni dispositivo può implementare un massimo di 8
funzioni (da 0 a 7). Il numero del bus è stabilito al
bootstrap, quello del dispositivo dipende dallo slot
fisico cui è collegato, quello della funzione è deciso dal
costruttore del dispositivo.

Cosa è l’arbitro del bus PCI e quali azioni svolge?


Quando un dispositivo vuole iniziare una nuova transazione attiva la sua linea /REQ, l’arbitro risponde
attivando la linea /GNT. L’iniziatore può iniziare la transazione dopo che /FRAME e /IRDY sono
entrambi disattivi (nessuna altra transazione è attiva sul bus PCI)

Illustrare le fasi di una transazione sul bus PCI.


• Arbitraggio
o Quando un dispositivo vuole iniziare una transazione invia una richiesta all’arbitro
attivando /REQ, attende la risposta su /GNT e che tutte le transazioni eventualmente attive
siano terminate (/FRAME e /IRD disattivati).
• Indirizzamento
o L’iniziatore pilota le linee di indirizzamento AD e C/BE, attiva la linea /FRAME ed attende la
risposta su /DEVSEL entro 6 cicli di clock (senza, la transazione termina con errore)
• Fase dati (intermedia)
o L’iniziatore mantiene /FRAME attivo e pilota C/BE. In caso di scrittura pilota pure AD,
attiva /IRDY ed attende il target su /TRDY. In caso di lettura appena i dati sono disponibili,
l’obiettivo pilota AD e attiva /TRDY. La fase si conclude quando /IRDY e /TRDY sono attivi.
• Fase dati (finale)
o Si svolge come la precedente ma l’iniziatore non mantiene /FRAME attivo.

48. Lezione
Cosa sono i registri base e i comparatori delle funzioni di un dispositivo PCI?
Il registro base contiene l’indirizzo del primo byte del blocco gestito dalla funzione, nella fase di
indirizzamento di una generica funzione, il comparatore confronterà il contenuto di tale registro con i
corrispondenti bit dell’indirizzo presenti sulle linee AD del bus PCI. Se l’indirizzo è riconosciuto, la
funzione risulterà selezionata per la transazione i bit di AD non utilizzati per la comparazione
selezioneranno i byte all’interno del blocco

A cosa servono i registri CAP e CDP del ponte OSPITE-PCI?


Per la gestione delle transazioni di configurazione, il ponte Ospite-PCI dispone di due registri a 32 bit nello
spazio di I/O: il registro CAP (Configuration Address Port) ed il registro CDP (Configuration Data Port)

Discutere come avviene una transazione di configurazione per un dispositivo PCI.


Il processore genera una transazione di configurazione scrivendo una parola lunga nel registro CAP che
contiene tutte le informazioni per indirizzare una parola lunga nello spazio di configurazione di una data
funzione in un dato dispositivo e trasferendo i dati dal/nel registro CDP.
Downloaded by Volcane Amps (volcaneamps@gmail.com)
lOMoARcPSD|8254953

49. Lezione
Discutere come vengono gestite le interruzioni con dispositivi connessi al bus PCI.
Ciascun dispositivo PCI può essere dotato da uno a quattro piedini per le richieste di interruzione, queste
arrivano al controllore APIC tramite i piedini /INTA … /INTD su cui possono essere collegati più dispositivi
PCI sfruttando il fatto che si tratta di piedini “open collector”.
Il tipo di funzione così come il numero di piedini di interrupt utilizzati è stabilito dal costruttore, per ogni
funzione è previsto un registro in cui è specificato il codice del piedino da utilizzare, i codici disponibili
sono:
• 0 – nessun collegamento
• 1 – collegamento al piedino /INTA
• 2 – collegamento al piedino /INTB
• 3 – collegamento al piedino /INTC
• 4 – collegamento al piedino /INTD
Come si garantisce la compatibilità del controllore APIC con le vecchie interfacce connesse
al bus locale?
Per garantire la compatibilità con le vecchie interfacce, i piedini 0-15 del controllore APIC non sono
utilizzati dal bus PCI, su questi piedini si collegano le vecchie interfacce allo stesso modo con cui erano
collegati ai vecchi controllori PIC ed utilizzare gli stessi driver.

Disegnare e discutere l’architettura di un calcolatore basato su bus PCI express.


PCI-Express è di fatto la rottura al bus parallelo
(quello ISA, EISA, PCI), basandosi sull’idea che
un calcolatore è un insieme di CPU e chip
controllori di I/O che devono comunicare tra
loro, PCI-Express fornisce un commutatore di
uso generale per connettere i chip mediante
collegamenti seriali punto-a-punto ad alta
velocità. Inoltre, le connessioni seriale sono
fisicamente molto più piccole dei connettori
PCI e permettono di realizzare dispositivi e
calcolatori di dimensioni ridotte. PCI-Express è
senza alcun dubbio una deviazione importante
dal vecchio bus PCI. Allo switch, in caso di
necessità, è possibile collegare altri switch per
espandere le capacità del calcolatore.

Quali sono i vantaggi introdotti dal PCI express?


• La presenza di un commutatore centralizzato.
• L’utilizzo di connessioni seriali ad alta velocità, ogni dispositivo è connesso punto-a-punto con il
commutatore la comunicazione avviene tramite una coppia di canali unidirezionali.
• Il modello PCI-Express è quello di un dispositivo che invia un pacchetto di dati ad un altro
dispositivo.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

50. Lezione
Disegnare e discutere lo schema di un controllore DMA.
Il controllore DMA gestisce fino a 8
interfacce, 8 identici canali DMA. Per
ogni canale sono previsti: 4 registri a 32
bit; 3 piedini di connessione con la
specifica interfaccia gestita in DMA.

Può operare in modalità:


• Slave quando in fase di inizializzazione
si comporta come una interfaccia ed è
acceduta dal processore per i settaggi
• Master quando interagisce con le
interfacce per i trasferimenti.

Discutere i passi che effettua il controllore DMA per il trasferimento di dati.


• Esamina il contenuto del registro DR (DMA Request), se diverso da 0 pone HOLD=1 e richiede
l’utilizzo del bus
• Attende che HOLDA sia uguale ad 1 e seleziona fra le richieste in DR quella a più alta priorità. Pone
il DR corrispondente uguale a 0
• Decrementa il contenuto di TCRi. Se questo passa da 0x0000 0000 a 0xFFFF FFFF pone a 1 il bit i-
esimo di EO ed emette un impulso sul piedino /EODi per indicare che il prossimo trasferimento sarà
l’ultimo
• Comanda il trasferimento di un dato tra la locazione di memoria e l’interfaccia. Durante il
trasferimento emette un impulso sul piedino /DACKi per indicare all’interfaccia che il dato è
disponibile
• Incrementa opportunamente il contenuto di MARi controlla l’i-esimo bit di EO e la modalità di
trasferimento scelta.

Discutere come una interfaccia effettua il trasferimento dati in DMA.


I passi che una interfaccia effettua durante un’operazione di trasferimento dati sono:
• Preleva un dato dal trasduttore esterno e lo immette nel buffer RBR
• Attiva DREQi per richiedere il servizio
• Attende la risposta su /DACK mentre il controllore preleva il dato da RBR e lo porta in memoria
• Attende che /DACKi sia disattivato e, quindi si chiuda il colloquio con DREQi disattivo; se
l’operazione non è conclusa (impulso su /EODI), ricomincia
• Se è stato ricevuto un impulso su /EODI si disabilita e pone a 1 il flag di fine operazione di ingresso
del registro STR. Se l’interfaccia è abilitata invia una richiesta di interruzione tramite /INTI quando
l’operazione di ingresso è terminata.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

51. Lezione
Chi gestisce in mutua esclusione il bus locale in presenza di trasferimento in DMA con
bus mastering? Discutere tutti i passi per la richiesta di utilizzo del bus locale.
La gestione in mutua esclusione del bus locale è effettuata dal processore e dal ponte Ospite-PCI tramite il
piedino /HOLD il ponte Ospite-PCI richiede l’accesso ed il processore, dopo aver completato i cicli in corso,
risponde sul piedino /HOLDA (i due piedini sono disattivati nella condizione normale in cui il processore ha
l’accesso al bus). Il ponte prende possesso del bus ed effettua le operazioni di trasferimento in DMA. Alla
fine il ponte disattiva /HOLD e si disconnette dal bus. Successivamente il processore disattiva /HOLDA e
riprende il controllo del bus.

Cosa è la tabella dei descrittori di buffer e cosa contiene?


Si tratta di una tabella, necessaria per il trasferimento in DMA tramite bus mastering. Deve contenere un
descrittore di 8 byte per ogni funzione interessata. Contiene l’indirizzo del buffer di memoria (32 bit), la
dimensione in byte (16 bit) della porzione da utilizzare come buffer ed il flag EOT (End Of Table) che
indica, se vale 1, che il descrittore in considerazione è l’ultimo della tabella.

Come si programma una funzione PCI per poterla utilizzare in modalità bus mastering?
La funzione deve essere opportunamente programmata:
• Impostare il bit 2 del BMCMD per abilitarla al trasferimento in bus mastering
• Predisporre in memoria centrale i buffer dati e la tabella dei descrittori di buffer
• Scrivere l’indirizzo della tabella dei descrittori di buffer in BMDTPR
• Impostare il valore opportuno in BMCMD per specificare il verso del trasferimento

Quali sono i passi di una scrittura in memoria in bus mastering?


I passi ciclicamente effettuati per la scrittura in memoria sono:
• Si memorizza in un buffer interno il numero N (multiplo di 4) di dati disponibili
• Si effettua una transazione PCI di scrittura in memoria all’indirizzo specificato in BUF
• Per ogni fase vengono trasferiti 4 byte, successivamente si decrementa N e DIM di 4 e si incrementa
BUF. La transazione termina, per passare al punto successivo, se N o DIM sono nulli
• Se DIM è diverso da zero si torna all’inizio altrimenti si scrive nel registro BMSTR e si invia richiesta
di interruzione

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

52. Lezione
Disegnare e discutere lo schema di un pipeline a 5 stadi.
La tecnica del pipeline consente di parallelizzare le diverse fasi di esecuzione, si basa sul principio che le
fasi delle e-istruzioni possono essere eseguite da unità fisicamente distinte del processore; le fasi sono:
• Prelievo
• Decodifica
• Lettura degli operandi
• Esecuzione vera e propria
• Scrittura del risultato
In buona sostanza, mentre una certa e-istruzione i si trova in una data fase della sua esecuzione e
sta usando una certa circuiteria del processore, altre e-istruzioni possono utilizzare le circuiterie
non utilizzata dalla e-istruzione i.

Fra uno stadio e l’altro ci sono dei registri di appoggio, detti registri di pipeline.
Ogni stadio elabora il contenuto del registro dello stadio che lo precede e aggiorna il contenuto
del registro dello stadio che lo segue.

Mostrare e discutere il diagramma temporale delle esecuzione di e-istruzioni in un pipeline


a 5 stadi.
L’esecuzione di una istruzione e
di una e-istruzione richiede più di
un ciclo di clock, se ogni fase
richiede un ciclo, per una e-
istruzione necessitano 5 cicli.

La tecnica di pipeline permette di


completare una e-istruzione per
ogni ciclo di clock dato che si
sovrappongono le varie fasi di
una e-istruzione con quella delle
e-istruzioni che seguono.

Considerando che il periodo del


clock è fissato in base allo stadio più
lento, la tecnica risulta tanto più
efficace quanto sono simili i tempi di
esecuzione delle singole e-istruzioni.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

53. Lezione
Cosa accade quando una e-istruzione viene emessa? E quando viene completata?
Quando la e-istruzione viene emessa è incrementato il campo CONT relativi ai registri sorgenti, è posto a 1
il flag W associato al registro destinatario.
Quando una e-istruzione è completata, si decrementano i campi CONT dei registri sorgenti ed si pone a 0 il
flag W del registro destinatario

Discutere i concetti di dipendenza sui dati, sui nomi e sul controllo.


Una e-istruzione dipende per i dati da una e-istruzione precedente se utilizza un dato fornito come risultato
dalla e-istruzione precedente.
C’è dipendenza per i nomi se le due istruzioni scrivono nello sterro registro o locazione di memoria oppure
se la seconda legge un registro o locazione di memoria scritta dalla precedente.
Abbiamo le dipendenze sul controllo da una precedente istruzione di salto condizionale quando non è
ancora stabilito se la e-istruzione successiva deve essere eseguita oppure no.

Quali sono le condizioni per l’emissione di una e-istruzione?


La e-istruzione per essere emessa non deve avere come destinatario un registro che deve essere letto o
scritto da altre e-istruzioni non completate (W=0 e CONT=0 per lo specifico registro); nessuna e-istruzione
di salto risulta emessa ma non completata.

Spiegare se e come sia possibile l’esecuzione fuori ordine e/o in parallelo delle istruzioni.

Poniamo come esempio la figura a lato. L’istruzione SUB ha come operando il


contenuto di R1 è quindi necessario
aspettare che l’istruzione MUL lo valorizzi. Le due istruzioni ADD non hanno alcuna
dipendenza e possono quindi essere eseguite in parallelo se il processore ha a
disposizione più di un sommatore tra interi.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

54. Lezione
A cosa serve e come avviene la rinomina dei registri?
Per risolvere le dipendenze sui nomi si effettua la rinomina dei registri. Distinguiamo i registri in: Registri
logici, quelli originali prima della rinomina e Registri fisici, quelli implementati nel processore. La rinomina
si effettua allo stadio di emissione del pipeline che consente l’esecuzione fuori ordine. Si utilizza
un’apposita struttura di puntatori per creare una corrispondenza tra registro logico e registro fisico (quello
che conterrà il suo valore).

Disegnare e discutere la struttura dati (a puntatori) utilizzata per la rinomina dei registri.
Fare riferimento alla struttura con corrispondenza speculativa e non speculativa.
In figura la struttura dati per la
corrispondenza fra registri logici e
registri fisici capace di rendere effettivi o
annullare gli effetti delle e-istruzioni
completate. Ogni registro logico
possiede una doppia corrispondenza con
i registri fisici.

• Corrispondenza non speculativa: indica


quale registro contiene il valore
calcolato dall’ultima e-istruzione ritirata
• Corrispondenza speculativa: indica
quale registro contiene, o conterrà,
il valore corrente.

Discutere come avviene l’emissione, il completamento e il ritiro di una e-istruzione di


controllo in caso di esecuzione speculativa.
Emissione – Per ogni registro logico sorgente si incrementa CONT del relativo registro fisico.

Completamento – Si decrementa CONT del registro logico sorgente.

Ritiro – Se la previsione di salto è risultata corretta non si effettua nessuna azione, altrimenti è
necessario svuotare il ROB.

Discutere quando e come avviene lo svuotamento del ROB.


Per lo svuotamento del ROB distinguiamo i casi di annullamento effetti per e-istruzione:
• Operativa non completata
o Decremento di CONT relativo ad ogni registro fisico sorgente
o Azzeramento di W relativo al registro fisico destinatario
o Azzeramento di C relativo al registro fisico destinatario (potrebbe essere già zero)
o Copia del valore del puntatore non speculativo sul valore del puntatore speculativo
• Operativa completata
o Azzeramento di C relativo al registro fisico destinatario (potrebbe essere già zero)
o Copia del valore del puntatore non speculativo sul valore del puntatore speculativo
• Controllo
o Azzeramento di C relativo al registro fisico destinatario (potrebbe essere già zero)
o Copia del valore del puntatore non speculativo sul valore del puntatore speculativo

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

56. Lezione
Cosa sono le GPU e quale è la filosofia progettuale delle GPU?
Si tratta di un processore ottimizzato per la grafica 2D/3D e per la visualizzazione a video di immagini di
particolare complessità. È un’architettura parallela costituita da un insieme di processori multi-thread
ottimizzata per il calcolo grafico. Le GPU sono utilizzate come processore grafico programmabile o
come piattaforma per il calcolo parallelo scalabile.

Quale è la differenza fra architetture multicore e architetture manycore?


Multicore (CPU) Manycore (GPU)
Ci sono solo pochi core Ci sono centinaia di core
Una sola, sofisticata unità di controllo per Molte, semplici, unità di controllo per la
ottimizzare lo sfruttamento delle unità di gestione dei thread paralleli e massimizzare il
calcolo per programmi sequenziali numero di programmi in esecuzione.
Grandi memorie cache necessarie per ridurre Memorie di dimensione ridotta ma problema di
i tempi di latenza per l’accesso ai dati latenza superato dall’esecuzione parallela di
multi thread.

Disegnare e discutere lo schema a blocchi dell’architettura di una GPU.


L’intera GPU è costituita da un certo
numero di TCP (Thread Processing Cluster
gruppi di Streaming Multiprocessor che
condividono circuiterie necessarie per le
applicazioni grafiche) collegati tra loro
con una rete di interconnessione che
condividono blocchi di memoria ed i
controllori di memoria.

Quanti tipi di memorie esistono nelle GPU?


Nelle GPU distinguiamo i seguenti 4 tipi di memorie:
• Global memory – accessibile da tutti i thread anche se appartenenti a blocchi diversi
• Texture memory – è una memoria di tipo cache tipica dell’elaborazione grafica
• Constant memory – costituita da segmenti, uno accessibile all’utente l’altro utilizzato per le
costanti generate dal compilatore
• Tre livelli di cache istruzioni
o L1 – 4KB in ogni singolo Streaming Multiprocessor
o L2 – 8KB allocata a livello di TPC
o L3 - globale

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

57. Lezione
Quali sono i due obiettivi che un sistema operativo deve perseguire? (Risposta:
Convenienza ed efficienza). Discutere la risposta fornite.
I principali obiettivi del sistema operativo sono: Convenienza ed efficienza, entrambi si riferiscono
all’allocazione ed uso delle risorse.
Convenienza – sono i sistemi progettati per unico utente magari non esperto che richiede facilità d’uso
Efficienza – sono sistemi progettati per utenti esperti in modo da massimizzare le prestazioni (es. mainframe)
Quali sono i principali compiti del sistema operativo?
Il S.O. deve regolamentare l’uso delle periferiche evitando conflitti di accesso, scegliere i criteri con cui
assegnare una risorsa a fronte di più richieste contemporanee (dovuto alla disponibilità limitata di risorse),
nascondere i dettagli hardware dei vari dispositivi agli utenti.
Differenza fra multiprogrammazione e multi elaborazione?
Multiprogrammazione – quando sono caricati ed eseguiti più programmi contemporaneamente mettendo in
attesa un programma mentre se ne esegue un altro. La scelta del programma dipende dalla priorità.
Multielaborazione – quando più CPU o più elaboratori cooperano nell’esecuzione, è richiesta una speciale
architettura dei sistemi di elaborazione. È l’attuale tecnologia dei calcolatori.
Come si possono classificare i sistemi operativi in base al tipo di utilizzo?
I sistemi operativi in base al tipo di utilizzo si classificano in: utilizzo generale, utilizzo batch (non presidiato),
utilizzo interattivo (time sharing), utilizzo dedicato (sistemi in tempo reale), sistemi transazionali (Data base),
sistemi operativi distribuiti (GRID, Cluster …)

58. Lezione
Discutere la tecnica dello spooling e mostrare il diagramma del pipeline di esecuzione dei
processi con lo spooling.
La tecnica dello spooling (Symultaneus
peripheral operation on line) è una
caratteristica molto importante dei sistemi
batch multi programmati.
Quando un calcolatore esegue un
programma, il sistema utilizza il lettore di
schede perforate per leggere il programma
successivo per memorizzarlo su disco.
Quando l’esecuzione del primo programma è completata il calcolatore provvede a caricare il successivo
programma dal disco per mandarlo in esecuzione (l’accesso al disco è più veloce del lettore di schede).
Discorso analogo si fa per la stampante, mentre un programma effettua la stampa il successivo viene
eseguito.
Discutere i sistemi interattivi e timesharing.
Nei sistemi timesharing, si commuta la CPU tra i diversi programmi per un quanto di tempo T. ogni
programma viene eseguito per un tempo uguale o inferiore a T prima di passare il controllo al programma
successivo. Il tempo impiegato per trasferire il controllo è definito overhead e deve essere il più limitato
possibile. La scelta di T dipende dal numero di programmi in esecuzione, se T è piccolo, l’utente non nota il
cambiamento di esecuzione, per contro aumenta il tempo impiegato nei trasferimenti di controllo.

Che caratteristiche devono avere i sistemi operativi che gestiscono sistemi multiprogrammati,
interattivi e timesharing?
I sistemi operativi che permettono di gestire le modalità di multi programmazione, il timesharing e
l’interattività con l’utente risultano molto più complessi dei sistemi batch.
Devono essere in grado di gestire un algoritmo per la scelta del programma da mandare in esecuzione, una
funzione che effettua il cambio di esecuzione, un meccanismo di allocazione della memoria e le funzioni per
la gestione dei conflitti nell’accesso alle risorse condivise. Inoltre nasce la necessità dell’introduzione di
tecniche per la protezione dei dati inutile sui sistemi mono programmati e/o mono utente.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

59. Lezione
Come possono essere suddivisi i sistemi paralleli?
I sistemi paralleli sono dotati di più unità di elaborazione (detti anche multiprocessore), possono
essere suddivisi in: asimmetrici (il master esegue il SO lo Slave i processi utente) e simmetrici (tutte le
CPU eseguono i processi utente ed il sistema condiviso).
Cosa sono le reti di calcolatori e quali sono le differenze con i sistemi paralleli?
Le reti di calcolatori sono sistemi costituiti da più processori dislocati in calcolatori diversi ma in
comunicazione tra loro attraverso specifici canali. A differenza dei sistemi paralleli, dove la memoria è
condivisa tra i calcolatori, nelle reti di calcolatori i nodi sono indipendenti e possono lavorare da soli.
Differenze fra le caratteristiche che devono avere i sistemi operativi hard real-time
e soft real-time.
Nei sistemi hard real-time tutto deve essere programmato in modo scrupoloso, non si usano tecniche di
virtualizzazione che renderebbero il sistema casuale, il tempo di ogni operazione deve essere ben definito
a priori perché non ci siano problemi fisici per il rispetto dei parametri.
Nei sistemi operativi soft real-time, i processi in tempo reale sono critici ed hanno priorità di esecuzione
sugli altri. La realizzazione di questi sistemi risulta più semplice, è possibile utilizzare sistemi operativi
general purpose con supporti per il real-time. Gli algoritmi di scheduling utilizzati hanno due componenti:
una per il trattamento delle operazioni non in real-time ed una realizzata con scheduling a priorità. Prima
sono eseguite le operazioni che richiedono real-time poi le altre.

60. Lezione
Discutere le principali funzioni di un sistema operativo visibili all’utente.
Le funzioni visibili all’utente rendono possibile l’esecuzione dei programmi da parte dell’utente, assicurano
la disponibilità dei dispositivi di I/O svolgendo anche un compito di coordinamento delle operazioni con le
richieste che arrivano da più programmi, inoltre gestiscono il file system, la comunicazione tra programmi
e gli errori temporanei o permanenti nella CPU.
Discutere le principali funzioni di un sistema operativo non visibili all’utente.
Le principali funzioni non visibili all’utente utilizzate dal SO sono quelle per allocare le risorse in modo
efficiente, contabilizzare l’uso delle risorse tenendo traccia dell’utilizzo e le funzioni per la gestione
della protezione e sicurezza verificando che l’accesso alle risorse sia controllato.
Cosa sono le system call e in che categorie si possono classificare?
Le system call sono un’interfaccia tra un processo ed il SO. Una parte dei comandi del SO sono disponibili
al programmatore attraverso chiamate di sistema sotto forma di funzioni in C/C++ o, per compiti più a
basso livello, in Assembly. Le chiamate possono essere classificate in chiamate per:
• Controllo dei processi – svolgono operazioni sui processi
• Gestione dei file – fornisce l’astrazione dal dispositivo attraverso l’introduzione dell’unità di
memorizzazione logica.
• Gestione dei dispositivi di I/O – fornisce delle astrazioni logiche semplificate evitando che il
programma colloqui direttamente con il dispositivo
• Gestione delle informazioni – poco significative per l’utente riguardano informazioni del tipo data e
ora, numero di utenti collegati ecc.
• Comunicazione con altri processi – il SO gestisce la comunicazione tra processi fornendo le system
call per apertura/chiusura collegamenti l’invio/ricezione di informazioni tra processi.
Generalmente le library call disponibili nei vari linguaggi mettono a disposizioni interfacce più semplici
e potenti rispetto alle chiamate di sistema.
Le chiamate di sistema sono eseguite in modalità Kernel.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

61. Lezione
Disegnare lo schema dell’architettura di un sistema stratificato e discuterla.
Ogni livello rappresenta la realizzazione di un
Applicazione Applicazione Applicazione oggetto astratto composto da strutture dati e
procedure. Le procedure possono essere
Interfaccia per la programmazione di applicazioni (API) chiamate dal livello superiore ed effettuare
operazioni sul livello inferiore. Risulta
Sottosistema Sottosistema Sottosistema
semplificata la progettazione, i singoli livelli
sono verificati al momento della creazione.
Nucleo del sistema Per contro, la struttura tende ad essere meno
efficiente perché le itruzioni devono scorrere
Livelli

Driver di dispositivo Driver di dispositivo Driver di dispositivo tanti livelli.

Illustrare i vantaggi e le problematiche dei sistemi stratificati


I vantaggi dei sistemi stratificati sono nella semplificazione della fase progettuale e nella gestione dei
sistemi. Un livello, è verificato al momento della realizzazione e da quel momento fornisce servizi al
livello superiore. Per contro il dover richiedere servizi agli strati inferiori è un limite all’efficienza del
sistema. Per questo la progettazione si orienta verso sistemi basati su numero minore di livelli ognuno
con più funzionalità.

Cosa è il monitor della macchina virtuale e di cosa si occupa?


Il monitor della macchina virtuale gira direttamente sull’hardware e fornisce al livello superiore un
insieme di macchine virtuali tutte uguali. Le macchine virtuali sono copie dell’hardware che includono le
modalità kernel/utente, il sistema di I/O e le interruzioni. Un esempio di monitor della virtual machine è
VMware o KVM (Kernel-based Virtual Machine)

Illustrare le caratteristiche dei sistemi Client-Server e disegnare lo schema architetturale.


Nel kernel si sviluppano soltanto le funzioni essenziali ottenendo una considerevole riduzione del sistema
(micro-kernel). Per tutte le altre funzioni si realizzano processi utente detti processi client, sono questi che
chiedono servizi ai processi server tramite scambio di messaggi. Il kernel include i dati che descrivono il
processo, realizza i meccanismi di comunicazione; i processi server realizzano le politiche di gestione delle
risorse.

Discutere vantaggi e svantaggi dei sistemi Client-Server.


Le funzioni del SO hanno dimensioni ridotte, i nuovi servizi si aggiungono allo spazio utente e non
modificano il nucleo, il SO si adatta a diverse architetture con poche modifiche. La sicurezza e l’affidabilità
del sistema sono garantite dall’esecuzione dei processi in modalità utente. È possibile adottarlo ai sistemi
distribuiti il client richiede servizi tramite messaggi, indipendentemente se il server è locale o se si trova
su macchina remota.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

62. Lezione
Discutere i campi che formano il descrittore di processo.
Il PCB (Process Control Block) è una struttura dati che memorizza le
informazioni che descrivono il processo e servono per tenere traccia dei
processi. In particolare il PCB contiene:
• Stato del processo – può essere new, ready, running, waiting, terminate
• Numero del processo – un identificatore univoco del processo, il PID
• Program counter – contiene l’indirizzo della successiva istruzione da eseguire
• Registri della CPU – i valori che devono essere salvati (con il program counter)
per riprendere l’esecuzione in caso di interruzione
• Informazioni sullo scheduling di CPU – comprende la priorità, i puntatori alle
code ed altri parametri importanti per lo scheduling
• Informazioni sulla gestione della memoria – tabelle delle pagine o dei segmenti
• Informazioni sullo stato di I/O – le liste dei dispositivi di I/O allocati ad un
processo, elenco dei file aperti
• Informazioni di contabilizzazione delle risorse – tempo CPU, tempo reale di
utilizzo della CPU, numero job

Disegnare e discutere il diagramma degli stati di un processo.

Si noti che il cambiamento di stato è


dovuto alla nomale evoluzione del
processo oppure a particolari eventi.

Quando viene allocata la memoria ad un processo?


La memoria del processo viene allocata nel momento in cui è selezionato dalla coda dei processi new e
passa allo stato ready. Appena nel nuovo stato, l’unità di elaborazione provvede ad allocare la memoria
ed a modificare il descrittore del processo con il nuovo stato e con gli indirizzi di memoria allocati.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

63. Lezione
Cosa è la coda dei descrittori liberi e a cosa serve?
Si tratta dei descrittori non ancora utilizzati o il cui utilizzo è terminato e rimangono in attesa di essere
allocato da altro processo. Quando si crea un processo gli viene associato un descrittore, creandolo nuovo
se la coda dei descrittori liberi è vuota, altrimenti gli si associa un descrittore presente in coda
(togliendolo dalla coda perché non più libero). Quando il processo termina il descrittore torna libero e
viene reinserito nella coda dei liberi in attesa di essere riallocato.
Disegnare e discutere il diagramma di accodamento dei processi.
Un nuovo processo si colloca nella job
queue (in stato new) in attesa che gli venga
allocata la memoria. Passa quindi alla
ready queue ed attende di essere eseguito.
Il SO selezionerà dalla ready queue il
processo da eseguire facendolo passare
allo stato running, dalla fase di esecuzione
(stato running) può passare alla coda del
dispositivo in stato wait (se richiede I/O),
alla coda ready (alla fine del suo quanto di
tempo) oppure nello stato terminate se
l’elaborazione è conclusa. Dallo stato wait torna allo stato ready al termine delle operazioni di I/O.

Che cosa si intende per cambiamento di contesto?


Il cambiamento di contesto è curato dal dispatcher, l’attività necessaria, dispatching, per sospendere un
processo (per qualsiasi motivo si faccia) ed eseguirne un altro. Il dispatcher provvederà a salvare nei PCB
il contenuto dei registri della CPU, in valore delle variabili locali e globali, il puntamento alla prossima
istruzione da eseguire fotografato al momento del passaggio. Sempre il dispatcher si occuperà di
recuperare i dati dal PCB salvato in precedenza relativo al processo che sta andando in esecuzione.

Discutere la differenza fra lo stato ready e waiting


Reading - Quando un processo che si trova nello stato iniziale viene scelto dallo schedulatore, gli viene
associata la memoria e passa nello stato ready. In questo stato, il processo è in attesa di essere
assegnato ad una unità di elaborazione (il processo viene inserito nella lista dei processi pronti). Nel
descrittore si inseriscono anche le informazioni sulla memoria allocata. Il processo è pronto per essere
mandato in esecuzione.
Waiting - Quando i processi richiedono operazioni che non coinvolgono l’utilizzo della CPU (per esempio
una operazione di I/O) vengono messi nello stato waiting. In questo stato, i processi sono in attesa che
l’operazione termini (intanto la CPU passa ad eseguire un altro processo); quando le operazioni sono
completate, il processo passa dallo stato waiting allo stato quindi torna in ready. Una volta nello stato
ready, il processo deve attendere il suo turno per entrare in possesso di una CPU e ritornare in
esecuzione.
Disegnare e discutere lo schema di cambiamento di contesto che interessa due processi
generici P1 e P2 in un sistema time sharing (risposta nelle slide 9 e 10 della presentazione
sullo scheduler e cambiamento di contesto).

• I registri della CPU contengono i dati relativi a P1 (program counter,


stack pointer, PID, stato ,…)
• La CPU passa in modalità sistema e salva il contenuto dei registri nel
PCB1
• La CPU carica nei registri il contenuto del PCB2 e passa in modalità
utente
• La CPU ha il controllo di P2

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

64. Lezione
Scrivere un esempio di codice C in cui si crea un processo con la primitiva fork().

La direttiva #include <unistd.h> rende disponibile


l’accesso alle API nei sistemi Unix-like e fornisce
la possibilità di effettuare chiamate di sistema
come fork, pipe e primitive I/O per la lettura e
scrittura.

Cosa è il PID di un processo? In ambiente UNIX che primitiva si invoca per recuperare
il PID di un processo?
Il PID è il Process ID, un numero che identifica in maniera univoca il processo in esecuzione. In
ambiente Unix-like si utilizza il comando pidof nomeprocesso per farsi restituire il PID.
Differenze fra la primitiva fork() e la primitiva clone().
La primitiva fork() crea un nuovo processo con il PCB da inizializzare, la primitiva clone() crea una
copia esatta del processo padre. È possibile utilizzare alcuni parametri per chiedere alla primitiva
fork() di inizializzare parzialmente con i dati del processo padre il PCB del processo figlio. Copiando
tutti i dati la primitiva fork() funziona come la primitiva clone()
Quale è il tipico layout di memoria di un processo in ambiente UNIX?
Ogni processo ha uno spazio di indirizzamento non visibile all’esterno. Due processi non possono alla
stessa zona di memoria. Nella zona di memoria troviamo:
• Una zona di memoria TEXT che contiene il codice del programma
• Un segmento di dati inizializzati
• Un segmento di dati non inizializzati, di solito il loader si incarica di inizializzare a zero
• Un segmento a comune fra lo stack e lo heap (in quest’ultimo sono allocate le zone di memoria
dinamiche)

65. Lezione
Discutere la differenza fra programmazione a singolo thread e multithread.
Nella programmazione a singolo thread il processo è visto come un unico flusso. La mappatura thread
processo è di tipo “1 a 1” non dà alcun vantaggio nell’utilizzo dei thread, è uguale alla programmazione
su processi. Nella programmazione multi-thread ogni processo è composto da un insieme di thread
ciascun thread è eseguito per attività concorrente.
Quali sono in vantaggi della programmazione multi-thread?
I tempi di cambio di contesto si riducono notevolmente, soltanto i registri e lo stack sono oggetto di
scambio, il codice, i dati ed i file sono in comune. Si ottengono quindi tempi di risposta più brevi, aumento
delle elaborazioni in parallelo nelle architetture multi-processore e minori tempi di cambio contesto.

Discutere i vantaggi e gli svantaggi della gestione dei thread a livello utente.
L’esecuzione risulta più efficiente, le chiamate sono fatte tramite l’utilizzo di librerie, la programmazione è
più flessibile e l’utente decide come realizzarli. Per contro, il SO vede un solo processo e in caso di
richiesta di I/O si ferma tutto rendendo inefficiente l’applicazione.
Cosa si intende per gestione dei thread a livello kernel?
Sono i thread gestiti direttamente dal sistema operativo. Praticamente tutti i sistemi moderni utilizzano
thread a livello kernel. Sono tutti visibili al SO e, in caso di richieste di I/O si ferma solo il thread
interessato, tutti gli altri continuano l’esecuzione. Il sistema risulta comunque appesantito per la gestione
dei thread di sistema; alcuni mettono un limite ai thread da gestire

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

66. Lezione
Discutere la differenza fra scheduling con e senza prelazione.
Nei casi in cui un processo si interrompe (per richiesta di I/O oppure per terminare) gli algoritmi di scheduling della
CPU sono non-preemptive (senza prelazione). Nei casi di interruzione perché il quanto di tempo è terminato oppure
quando l’I/O ha risposto, intervengono algoritmi preemptive (con prelazione) l’esecuzione è interrotta per passare il
controllo ad altro processo.
Elencare e discutere i principali criteri di scheduling.
• Scheduling in ordine di arrivo – (First-come, first-served FCFS) si tratta del più semplice algoritmo di scheduling,
la CPU è assegnata al processo che la richiede per primo.
• Scheduling per brevità – (Shortest-job-first) associa ad ogni processo la lunghezza della successiva sequenza di
CPU, quando è disponibile si assegna la CPU al processo che ha la sequenza più breve da elaborare. Se due
processi hanno identica lunghezza di passa all’algoritmo FCFS tra i due.
• Scheduling circolare – (Round Robin RR) simile allo scheduling FCFS ha la capacita di commutazione dei processi.
Ciascun processo riceve un quanto o porzione di tempo, lo scheduler scorre la coda assegnando la CPU.
Discutere la differenza fra scheduler e dispatcher.
Il dispacher è la componente del SO che si occupa di commutare i processi effettuando il cambio di contesto, passa
alla modalità utente e riavvia l’esecuzione del programma partendo dall’istruzione indicata nel PCB. La latenza di
dispatch è il tempo che il sistema impiega per fermare un processo ed avviarne un altro.

67. Lezione
Discutere quali sono i limiti dell’algoritmo di scheduling SJF e come si cerca di superarli
L’algoritmo SJF è ottimale perché rende minimo il tempo di attesa ma non è realizzabile perché non è nota a priori
la durata della successiva richiesta di CPU da parte del singolo processo.
Si cerca quindi di approssimare con algoritmi che lo rendono simile a quello ideale distinguendo:
• Scheduling a lungo termine: Per un dato processo si approssima la durata del prossimo CPU Burst
considerando il tempo limite per lo specifico processo. Si utilizza soprattutto nei sistemi batch con il limite
specificato dall’utente.
• Scheduling a breve termine Si calcola sulla predizione basata sulla lunghezza passata del CPU Burst e si
sceglie il processo più breve. La lunghezza si calcola sulla media esponenziale delle precedenti sequenze
di operazioni, così definita: 𝑙𝑛+1 = 𝑎𝑡𝑛 + (1 − 𝑎)𝑙𝑛 𝑑ove 𝑡𝑛 è la lunghezza dell’n-esimo CPU Burst, 𝑙𝑛 è la
storia passata ed 𝑙𝑛+1 è il valore previsto per il successivo CPU Burst

Come si assegnano le priorità negli algoritmi di scheduling a priorità?


Le priorità possono essere assegnate:
• Internamente – usano una o più quantità misurabili (limiti di tempo, requisiti di memoria, numero di file
aperti) per calcolare la priorità del processo
• Esternamente – si definiscono in base a criteri del sistema operativo come l’importanza del processo, il
tipo e la quantità di fondi pagati per l’utilizzo del calcolatore, il dipartimento ed altri fattori di ordine
politico.
Come funzionano gli algoritmi di scheduling con code multiple con retroazione?
Per gestire al meglio lo scheduling di processi che hanno caratteristiche di esecuzioni molto diverse si utilizza lo scheduling a
code multiple. Ogni coda può essere ulteriormente suddivisa in sottocode che applicano algoritmi differenti. Un esempio di
coda multipla è la suddivisione in background (generalmente eseguiti in FCFS) e foreground (selezionati con Round Robin). Per
la gestione iniziale delle code generalmente si usa impostare diversi quanti di tempo alle code (80% a quella di foreground ed
il restante 20% a quella di background) in modo da non incorrere in problemi di starvation. Inoltre la multilevel feedback
queue sposta i processi che occupano troppo la CPU nella coda con priorità più bassa e quelli con elevati tempi di attesa nella
coda con priorità più elevata in modo da evitare attese indefinite.
Come avviene lo scheduling dei processi nei sistemi real-time?
Il sistema adotta politiche di schedulazione diversi per i sistemi hard real time e i sistemi soft real time.
Nei sistemi hard real time occorre un hardware speciale per conoscere esattamente i tempi di esecuzione di ogni operazione. In questi
sistemi esiste il problema della gestione delle risorse, realizzata dal sistema operativo tramite il meccanismo della prenotazione. Il
processo deve prenotare la risorsa ed il gestore controlla se è in grado di garantire il rispetto dei vincoli imposti dal sistema hard real
time. In caso positivo accetta la richiesta e concede la risorsa al processo.
Nei sistemi soft real time le politiche di scheduling si limitano a chiedere che i processi critici abbiano maggiore priorità dei processi
ordinari. Per questo si utilizzano meccanismi tradizionali per controllare che il ritardo medio sia breve e la varianza non troppo elevata.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

68. Lezione
Scrivere le strutture dati e il codice (in C/C++ o pseudo codice) che implementano il
paradigma produttore/consumatore nel modello a memoria condivisa.
Dichiarazioni Processo Produttore Processo Consumatore
const int BUFFER_SIZE=n ; item next_produced; item next_consumed;
struct item { …}; while (1) { while (1) {
while(((in + 1) %BUFFER_SIZE)==out) while (in == out)
item buffer[BUFFER_SIZE]; { /* Buffer pieno, aspetta */} { /* Buffer vuoto, aspetta */}
int in = 0; buffer[in]= next_produced; next_consumed =buffer[out];
int out=0; in =(in+1) % BUFFER_SIZE; out = (out+1) %BUFFER_SIZE;
} }
Nell’esempio abbiamo l’attesa attiva, nessuna interruzione del processo tramite system call il processo
produttore, se il buffer è pieno, aspetta che venga svuotato solo allora inserisce il nuovo elemento
(next_produced). Il processo consumatore se il buffer è vuoto aspetta che un nuovo elemento sia inserito
dal processo produttore per poterlo leggere ed utilizzarlo come next_consumed.
Discutere le caratteristiche del canale di comunicazione nel modello a comunicazione
diretta e nel modello a comunicazione indiretta.
Nel modello a comunicazione diretta il canale di comunicazione è creato automaticamente tra una coppia
di processi, questi devono conoscere la loro reciproca identità, la comunicazione può essere
unidirezionale o, più spesso bidirezionale. Nel modello di comunicazione indiretta, due processi possono
comunicare solo se hanno una mailbox in comune, una stessa mailbox può essere associata a più di due
processi e tra ogni coppia di processi possiamo avere più canali (ciascuno corrispondente a una porta).

Cosa si intende per mailbox condivisa e dedicata?


Abbiamo la mailbox dedicata quando un processo può ricevere messaggi esclusivamente dalla propria
mailbox alla quale tutti gli altri processi possono solo inviare messaggi.
La mailbox condivisa è associata a due soli processi e soltanto quelli possono usarla per comunicare.
Ad ogni processo è però possibile associare più mailbox.
Cosa si intende per buffering?
Si indica con buffering, in un sistema a scambio di messaggi, il numero dei messaggi che possono
risiedere all’interno del sistema; abbiamo:
 Capacità zero – il canale non può avere messaggi in attesa. I processi devono sincronizzarsi per
poter inviare/ricevere un messaggio. Sincronizzazione rendez-vous.
 Capacità limitata – il canale ha capacità limitata ed il trasmettitore deve aspettare se è pieno.
 Capacità illimitata – il canale non ha limiti ed il trasmettitore non deve aspettare.

Discutere la differenza fra scambio di messaggi sincrono e asincrono.


Con lo scambio sincrono il processo che invia il messaggio si blocca in attesa che il ricevente lo riceva, anche
il processo ricevente si blocca nell’attesa che il messaggio arrivi.
Con lo scambio asincrono il processo che invia il messaggio continua la normale esecuzione senza bloccarsi,
il processo ricevente riceve un messaggio valido oppure un valore nullo.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

69. Lezione
Come si realizza la mutua esclusione?
Ogni processo, per eseguire la propria sezione critica, deve chiedere il permesso tramite un protocollo
realizzato per permettere la cooperazione. Tramite la entry section il processo chiede di poter eseguire
la propria sezione critica al termine della quale avverte che è uscito tramite la exit section.

Cosa sono e quando si usano le entry e le exit section? Che requisiti devono soddisfare?
La entry section e la exit section si usano per chiedere il permesso di manipolare i dati condivisi con altri
processi eseguendo il codice della sezione critica e comunicare la fine dell’attività all’uscita. Le due
sezioni devono soddisfare i seguenti requisiti:
 Garantiscono la mutua esclusione – non permettono ad altri processi l’accesso alla sezione critica
 Progresso – permettere ai processi che fanno richiesta l’accesso alla sezione critica in tempi
ragionevolmente brevi.
Quali sono le più importanti strutture del kernel che devono essere gestite in
mutua esclusione?
Le più importanti strutture del kernel da gestire in mutua esclusione sono: la lista dei file aperti, le
strutture dati per l’allocazione della memoria, la gestione delle interruzioni e le code dei processi.

70. Lezione
Cosa si intende per busy waiting?
Un processo in attesa del signal per poter accedere alla sezione critica si blocca eseguendo il ciclo
while (s<=0) {} sprecando tempo CPU
Che cosa si intende per deadlock? Mostrare un esempio di deadlock che coinvolga
due processi.
Il deadlock è problema di stallo dei processi, si verifica quando ciascuno dei processi in un insieme
attende indefinitamente un evento. Si supponga di avere i processi P1 e P2 e che il processo P2 sia fermo
in attesa per un signal da parte di P1, se nel corso dell’elaborazione, prima di produrre lo sblocco di P2, il
processo P1 si ferma per attendere un signal da P2, abbiamo una situazione di stallo.
Che cosa è la starvation? Come si può evitare?
La starvation è la situazione in cui un processo, a causa delle politiche di scheduling, non riesce ad accedere
alla coda dei running perché si accoda continuamente a processi con priorità più elevata. Un modo per
evitare questo fenomeno è quello di incrementare progressivamente la priorità dei processi da più tempo
in coda in modo da far guadagnare posizioni.
Abbiamo una situazione di starvation anche se la gestione della coda di un semaforo dei processi in attesa
è gestita in modalità LIFO. Per ovviare a questo inconveniente basta adottare una più opportuna politica di
assegnamento della priorità.

Discutere la differenza fra deadlock e starvation.


Il deadlock è una situazione di stallo causata dall’attesa reciproca di risorse tra due processi, il processo
P1 è fermo in attesa di un signal dal processo P2 mentre a sua volta il processo P2 si ferma in attesa del
signal da parte del processo P1.
La starvation è una situazione di attesa indefinita dei processi nella coda di un semaforo che si verifica ad
esempio se per la gestione della coda è in modalità LIFO.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

71. Lezione
Cosa sono i monitor e a cosa servono?
I monitor sono costrutti che permettono di utilizzare i dati condivisi senza dover esplicitamente
codificare un meccanismo per realizzare la mutua esclusione. Il monitor permette che un solo processo
sia attivo al suo interno.
Mostrare un esempio di sintassi tipica di definizione di monitor.
monitor nome_del_monitor {
/* spazio per la dichiarazione delle variabili condivise */

procedure nome_della_procedura_1 (parametro_1, ..., parametro_N) {


/* codice del corpo della procedura */
}
...
procedure nome_della_procedura_N (parametro_1, ..., parametro_N) {
/* codice del corpo della procedura */
}

{
/* codice del blocco d'inizializzazione */
}
}

Come si realizza la sincronizzazione con i monitor?


Per poter realizzare meccanismi di sincronizzazione dei processi con l’utilizzo del costrutto monitor è
necessario aggiungere delle variabili condizionali. Queste, sono di tipo condition ed hanno definite solo le
operazioni wait e signal.
Al momento dell’utilizzo, richiamando l’operazione wait, il processo si blocca in attesa del corrispondente
signal e viene accodato nella tra i processi da risvegliare della variabile. Richiamando l’operazione signal,
il processo sarà risvegliato e potrà continuare l’elaborazione.

Discutere le principali differenze fra monitor e semafori.


Il monitor è un costrutto che incapsula dati privati raggiungibili soltanto attraverso metodi pubblici. I
metodi del monitor possono avere come argomento dati condivisi da più processi, la cui manipolazione è
contraddistinta dalla mutua esclusione. Utilizzando il monitor, non si deve codificare alcun meccanismo
per la mutua esclusione; il monitor permette che un solo processo sia attivo al suo interno.
Il semaforo invece è una modalità per controllare che l’accesso alla sezione critica avvenga con la mutua
esclusione. È tutto da codificare e per questo soggetto ad errori che possono provocare situazioni di stallo
(deadlock) difficili da individuare in quanto si manifestano in circostanze particolari.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

72. Lezione
È possibile risolvere il probema produttore-consumatore con i monitor? Se sì, mostrare un
esempio di implementazione
L’implementazione del problema produttore-consumatore con l’utilizzo dei monitor è più semplice in
quanto non è necessario gestire la mutua esclusione (di fatto garantita dal monitor stesso). Saranno
utilizzate due variabili condition per le situazioni di buffer pieno e buffer vuoto ed una variabile intera per
il conto degli elementi all’interno del buffer.

Descrivere il problema dei cinque filosofi e discutere perché è importante nel campo della
sincronizzazione dei processi
Si considerino 5 filosofi che trascorrono la loro esistenza pensando e mangiando. I filosofi sono seduti
intorno ad un tavolo rotondo. Al centro del tavolo una zuppiera di riso. La tavola è apparecchiata con
soltanto 5 bacchette (ne occorrono 2 per poter mangiare). Quindi:
 Ogni filosofo alterna periodi in cui mangia a periodi in cui pensa
 Per mangiare, il filosofo, ha bisogno di 2 bacchette
 Le bacchette sono prese una per volta
Dopo aver preso le bacchette, il filosofo mangia per un po’, poi lascia le bacchette e ricomincia a pensare.
Problema: Trovare una regola che impedisca lo stallo (deadlock) o la morte di inedia (starvation).
Il deadlock si verifica quando il filosofo F1 ha in mano una bacchetta e non riesce a prendere l’altra perché
è in mano al filosofo F2 che a sua volta aspetta quella che ha in mano F3 ecc.
La starvation può verificarsi, indipendentemente dal deadlock, se uno dei filosofi non riesce a prendere
mai le due bacchette. Finché i 5 filosofi non si metteranno d’accordo sulla sequenza di utilizzo delle
bacchette, prima o poi, il sistema entrerà in stallo e si bloccherà.

Si può risolvere il problema dei cinque filosofi con i semafori? Se si, mostrare una
semplice implementazione.

Il filosofo aspetta per entrambe le


bacchette, quando sono disponibili mangia
e dopo le rende nuovamente disponibili

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

73. Lezione
Cosa è un account e come si gestisce in un sistema operativo UNIX?
Sono genericamente dette account, tutte le risorse assegnate ad ogni utente del sistema. Un account
è identificato da:
 ID – intero non negativo unico nel sistema, l’utente con ID=0 è il super user del sistema
 Login name – stringa di caratteri, unica nel sistema, il login name del super user è root
 Password – stringa non necessariamente unica (diversi utenti possono avere stessa password),
assieme al login name permette il riconoscimento dell’utente e l’accesso al sistema
 Group ID – identifica il gruppo cui appartiene l’utente e permette di abilitare permessi.
 Home directory – è la directory privata dell’utente.
 Shell – è l’interprete di comandi mandato in esecuzione all’accesso dopo la procedura di login

Quale è la differenza fra full path name e relative path name?


Il full path name è il percorso assoluto a partire dalla directory radice (“/”) il relative path name è il
percorso a partire dalla directory corrente. Il full path name comincia sempre con l’indicazione della
radice /home/<nomeutente>/src è il percorso, a partire dalla radice della directory src. Presupponendo di
trovarsi nella home directory, src sarebbe il percorso relativo alla directory.

Quali sono le principali modalità in cui si possono aprire i file? Cosa accade quando viene
aperto un file in UNIX?
Le principali modalità di apertura sono: in lettura; in scrittura, in aggiornamento.
All’apertura di un file si crea un record nella tabella dei descrittori del processo su questo record è
presente il puntatore alla tabella dei file aperti. Quest’ultima contiene i flag di stato del file, il puntatore di
posizione all’interno del file (cursore) ed il puntatore al v-node (il file stesso che contiene le informazioni
del file).

A cosa serve la I/O Standard Library?


La libreria di I/O standard è la libreria che rende disponibile le chiamate di sistema per le funzioni di input/
output. Le funzioni della standard library utilizzano tutte una struttura chiamata FILE. L’accesso a questa
struttura avviene sempre tramite puntatore e utilizzando le funzioni appropriate: l’utente non dovrebbe
mai accedere direttamente ai suoi campi (tipo di dati chiamato “opaco”).

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

74. Lezione
Discutere il concetto di rilocazione dinamica
Il mapping a tempo di esecuzione degli indirizzi virtuali sugli indirizzi fisici viene fatto dalla Memory
Management Unit (MMU).
Il metodo più semplice fa uso di un registro di rilocazione: il valore di tale registro viene sommato ad ogni
indirizzo generato da un processo utente nel momento in cui viene inviato in memoria.
Il programma utente non considera mai gli indirizzi reali: quando esso crea un puntatore ad una certa
locazione di memoria, ci lavora normalmente come se fosse un semplice numero (memorizza, modifica,
confronta). Quando tale numero assume il ruolo di indirizzo, e deve quindi essere effettuato un accesso
in memoria, allora esso viene rilocato sommando il valore contenuto nel registro di locazione ed
ottenendo l’indirizzo fisico. In questo tipo di rilocazione, esistono due spazi di indirizzamento a cui sono
associati due distinti intervalli di indirizzi:
- Intervallo degli indirizzi logici: da 0 a Max (massimo indirizzo logico del programma)
- Intervallo degli indirizzi fisici: da R a R+Max, dove R è il valore contenuto nel registro di rilocazione.

Mostrare un semplice esempio di utilizzo della primitiva fork().


pid_t = res;
res=fork();
if (res < 0) {
perror(“fork failed”);
exit(-1);
}
If (res ==0) {
<corpo_figlio>
exit(1);
}
If (res>0) {
<corpo_padre>
}

Come funziona la primitiva wait() in UNIX?


La primitiva wait() permette ad un processo di attendere la terminazione dei suoi processi figli
recuperando il valore di uscita della funzione exit(). Se il processo chiamante non ha figli, la syscall fallisce e
restituisce un valore negativo; se il processo chiamate ha creato figli con la primitiva fork restituisce il PID
del primo figlio terminato (rimane in attesa se nessun figlio è terminato).
A cosa servono le funzioni della famiglia exec()?
Le funzioni exec rendono possibile il caricamento in memoria e l’esecuzione di un nuovo programma dopo
la creazione di un processo tramite la primitiva fork(). Questa famiglia di funzioni si occupa di sovrascrivere
i dati, il segmento BSS ed il codice di un processo con un’immagine prelevata da disco.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

75. Lezione
Discutere la differenza fra indirizzi logici e indirizzi fisici.
Gli indirizzi generati dalla CPU sono indirizzi logici mentre gli indirizzi su cui opera la Memory Management
Unit (MMU) sono indirizzi fisici. L’insieme degli indirizzi logici generati da un programma forma lo spazio
degli indirizzi logici mentre l’insieme degli indirizzi fisici corrispondente forma lo spazio degli indirizzi fisici.
Se l’associazione degli indirizzi avviene in fase di compilazione o caricamento gli indirizzi fisici e logici
coincidono. Se l’associazione avviene in fase di esecuzione gli spazi sono differenti, il programma è
rilocabile e gli indirizzi logici prendono il nome di indirizzi virtuali.
Quale è la differenza fra caricamento e collegamento dinamico?
Il caricamento dinamico è un meccanismo di ottimizzazione nella gestione della memoria. Tutte le
procedure del programma in esecuzione, rimangono in memoria secondaria e sono caricate in memoria
centrale al momento dell’utilizzo. In memoria si carica soltanto il programma principale e quando una
procedura è caricata si aggiornano le tabelle degli indirizzi del programma.
Il collegamento dinamico, prevede il caricamento in memoria del programma completo, anche se la fase
di collegamento di una procedura avviene soltanto al momento dell’utilizzo. Per il collegamento dinamico
è prevista assistenza del sistema operativo (le librerie di sistema)
Un processo in esecuzione può essere scaricato dalla memoria al disco prima che sia
terminato? Discutere la risposta.
Un processo può essere trasferito temporaneamente in memoria secondaria (sul disco) prima di essere terminato, da
cui si riporta in memoria centrale nel momento in cui deve riprenderne l’esecuzione.
Si consideri, per esempio, un ambiente di multiprogrammazione con un algoritmo circolare (round-robin) per lo
scheduling della CPU. Trascorso un quanto di tempo, il gestore di memoria scarica dalla memoria il processo
appena terminato e carica un altro processo nello spazio di memoria appena liberato. Questo procedimento di
avvicendamento prende il nome di swapping di processi. L’operazione mediante la quale il sistema trasferisce il
processo dal disco alla memoria è definita swap-in, l’operazione contraria è definita swap-out. Nel frattempo lo
scheduler della CPU assegna un quanto di tempo a un altro processo pronto e presente in memoria. Quando un
processo esaurisce il suo quanto di tempo, esso viene scambiato con un altro processo. Il gestore della memoria
può avvicendare i processi in modo sufficientemente rapido da far sì che alcuni siano presenti in memoria, pronti
per essere eseguiti, quando lo scheduler della CPU voglia riassegnare la CPU stessa.

76. Lezione
Discutere la differenza fra code di ingresso multiple e coda di ingresso singola.
In caso di partizioni fisse con code di ingresso separate ogni processo, è inserito nella coda relativa alla
partizione più piccola utilizzabile. Questa gestione può causare spreco di risorse quando molti processi
sono in coda per una partizione piccola mentre la coda per una partizione più grande è libera.
L’utilizzo di una singola coda prevede una sola coda per tutte le partizioni. Essendo le partizioni fisse, tutto
lo spazio non utilizzato dal processo è sprecato. È possibile modificare la strategia di schedulazione
scegliendo, al posto del primo processo in coda quello più grande che può occupare la partizione.
Come si gestisce l’allocazione della memoria quando si utilizzano partizioni variabili?
Quando si gestiscono partizioni variabili, i processi hanno a disposizione l’intera memoria libera. Lo spazio
non utilizzato è subito rilasciato al processo successivo che a sua volta occupa lo spazio necessario e
rilascia quello non utilizzato. Quando un processo è caricato, il sistema operativo cerca un buco di
memoria sufficientemente grande da allocare. Se non c’è sufficiente memoria per un processo, il sistema
operativo può mettere in attesa il processo e ne seleziona uno più piccolo da mandare in esecuzione.

Differenza fra l’allocazione di memoria con partizioni fisse e con partizioni variabili.
Nell’allocazione con partizioni fisse, lo spazio di memoria è suddiviso in partizioni ed al momento del
caricamento di un processo, il sistema assegna la più piccola partizione che può contenerlo. Lo spazio non
utilizzato è sprecato.
L’allocazione con partizioni variabili, il sistema operativo gestisce in due strutture dati, una per la gestione
delle partizioni allocate e l’altra per lo spazio libero da allocare ai nuovi processi. Il sistema, al
caricamento di un processo, cerca un sosttospazio di memoria libero (un buco di memoria) abbastanza
grande da contenerlo.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

77. Lezione
Cosa è la paginazione?
La paginazione è il meccanismo che permette di allocare lo spazio libero ovunque si trovi. Prevede la
suddivisione della memoria logica in blocchi di dimensione fissa. Ogni blocco ha la dimensione di una
potenza del 2, da 512 a 8192 ed è speculare ai blocchi in cui è suddivisa la memoria fisica. Con
l’utilizzo della paginazione eliminiamo il problema della frammentazione esterna e limitiamo quello
della frammentazione interna limitato all’ultimo frame.

Disegnare l’architettura hardware per la gestione della paginazione.

La CPU genera un indirizzo logico composto dal selettore e da un offset. Tramite il selettore il sistema
seleziona un ingresso alla tabella delle pagine che unito all’offset permette l’indirizzo fisico. Questo
meccanismo è l’allocazione della memoria con rilocazione dinamica degli indirizzi.

Discutere la differenza fra la tabella delle pagine e la tabella dei frame.


La tabella delle pagine è una struttura composta da tante entrate per quante sono le pagine logiche in cui
è stato diviso lo spazio logico. Ogni processo ha una propria tabella delle pagine memorizzata nel
descrittore. La tabella dei frame è la lista dei frame liberi che il possono essere allocati da un nuovo
processo.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

78. Lezione
Cosa sono i registri PTBR e PRLR utilizzati per la gestione della tabelle delle pagine? Quali
sono i limiti dell’organizzazione della tabella delle pagine con tali registri?
I registri PTBR (Page-Table Base register) e PTLR (Page-Table Length Register) sono puntatori alla tabella
delle pagine quando questa è definita in memoria (nelle recenti configurazioni è impensabile utilizzare
costosi registri per tutta la tabella delle pagine). Questo tipo di configurazione obbliga a due accessi alla
memoria, uno per individuare la tabella ed uno per il dato/istruzione.

Mostrare e discutere lo schema architetturale della paginazione con TLB.


La TLB (Translation Look-aside Buffer) è un meccanismo che, attraverso l’utilizzo di registri forma una
memoria associativa ad alta velocità, effettua una ricerca parallela ad alta velocità. Tecnicamente è
composto da due campi, una key e un valore. Quando la CPU genera un indirizzo, per prima è ricercata la
corrispondenza in TLB, la memoria associativa lo confronta contemporaneamente con tutte le key, se
trova la corrispondenza restituisce il valore, altrimenti si deve consultare il resto della tabella delle pagine.

Discutere i concetti principali della paginazione gerarchica.


La paginazione, nel caso sempre più frequente di spazio di indirizzi logici grande, può essere a sua
volta divisa gerarchicamente in una tabella che punta ad uno spazio contenete la tabella con il
riferimento desiderato.

Mostrare graficamente come si realizza la traduzione degli indirizzi logici in indirizzi


fisici nella paginazione gerarchica.

Ciascun livello è memorizzato come una tabella


separata in memoria, la traduzione da indirizzo
logico in fisico richiede tre accessi in memoria.
Le prestazioni rimangono ragionevoli grazie alla
presenza della cache.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

79. Lezione
Come è fatta e a cosa serve la tabella dei segmenti?
La tabella dei segmenti è una struttura dati che ha una entrata per ogni segmento. Ogni entrata contiene
una coppia ordinata di valori: la base del segmento (l’indirizzo di memoria dove comincia il segmento) e
il limite del segmento (la lunghezza).

Mostrare graficamente l’architettura per la traduzione degli indirizzi con memoria segmentata.

Per ogni indirizzo generato dalla CPU,


nelle componenti s (numero del
segmento) e d (scostamento nel
segmento), si verifica la validità di s, sulla
tabella dei segmenti, generando
l’eventuale errore di protezione. Se la
componente s è valida, per ottenere
l’indirizzo fisico si somma il valore di d alla
base.
Poiché ogni programma ha il suo spazio di
indirizzamento, esiste una tabella dei
segmenti per ogni processo.

Quali sono le caratteristiche principali delle segmentazione.


Alcune caratteristiche della segmentazioni sono:
 Rilocazione dinamica con tabella dei segmenti
 Condivisione di segmenti puntando allo stesso numero
 Allocazione First fit/Best fit che riduce la frammentazione interna ma non mette al riparo da quella
esterna
 Protezione, associando ad ogni elemento della tabella dei segmenti
o Bit di validità (0 implica segmento illegale)
o Privilegi di read/write/execute
Mostrare un esempio di come si realizza la condivisione di codice utilizzando la segmentazione.

Il segmento condiviso è quello relativo al


codice dell’editor.
L’editor utilizza per i due processi lo
stesso segmento mentre i dati “data 1” e
“data 2” di diversa dimensione sono
allocati in altro segmento della memoria
fisica.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

Discutere brevemente il concetto di memoria segmentata con paginazione e mostrare lo


scoema arcoitetturale di tradszione degli indirizzi.

È possibile paginare la memoria


segmentata per risolvere le
problematiche della
frammentazione esterna. Il sistema
operativo MULTICS effettua la
paginazione dei segmenti. Questa
tecnica, differisce dalla
segmentazione pura in quanto gli
elementi della tabella dei segmenti
non contengono l’indirizzo base del
segmento ma l’indirizzo base della
tabella delle pagine relativa al
segmento.

80. Lezione
Mostrare graficamente l’idea di base della memoria virtuale (mostrare gli elementi principali)
L’idea base della memoria virtuale è quella di utilizzare
più memoria possibile per i processi attivi. È stata
effettuata la scelta di mettere in memoria secondaria
le parti di codice, relative a funzioni o procedure, non
utilizzate o utilizzare poco in modo da liberare spazio
in memoria centrale e avere la possibilità di caricare
altri processi. Le parti che risiedono in memoria
virtuale sono caricate all’occorrenza. Il principale
vantaggio di questo meccanismo è la possibilità, da
parte del programmatore, di utilizzare spazi di
memoria molto grandi, nonostante una diminuzione
dei tempi di caricamento (di fatto le parti caricate
sono di meno) ed il conseguente aumento del
parallelismo (il singolo processo occupa meno spazio
ed è possibile eseguire più processi).
Discutere brevemente i concetti base della paginazione su richiesta?
Un programma in esecuzione deve essere caricato in memoria principale, in realtà è sufficiente che in
memoria siano caricata soltanto le pagine che servono realmente. Questa strategia permette che
pagine che non vengono mai accedute non occupino spazio in memoria.
Discutere con un esempio il concetto di lazy swapping e il ruolo svolto dal paginatore
La strategia di paginazione a richiesta prevede che in memoria siano caricate soltanto le pagine che
realmente servono per l’esecuzione del programma. Quindi, invece di scambiare tra la memoria
principale e quella secondaria interi processi, si si scambiano soltanto singole pagine. La sostituzione delle
pagine è demandata ad un modulo del sistema operativo, il paginatore (pager)
Come si realizza a livello architetturale la paginazione su richiesta?
Quando un programma è mandato in esecuzione, il pager decide quali pagine deve caricare in memoria
principale lasciando il resto in memoria non volatile. Per la corretta esecuzione è quindi importante sapere
quali pagine sono state caricate. Per questo si utilizza il bit di validità della tabella delle pagine. Se il bit è
impostato come valido la pagina è la pagina è stata caricata altrimenti è possibile che la pagina non sia
stata caricata oppure che si sia violato lo spazio degli indirizzi logici.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

81. Lezione
Come si può ridurre l’overhead introdotto dal rimpiazzamento delle pagine?
Per rendere più efficiente il trattamento del page fault in caso di sovrallocazione si introduce, per
ogni elemento della tabella delle pagine un bit di modifica (dirty bit). L’algoritmo di sostituzione
prende in considerazione per lo swap-out solo le pagine con il dirty bit che vale 1 (significa che la
pagina è stata aggiornata da quando è stata caricata in memoria).
Discutere la strategie di gestione dell’algoritmo FIFO per il rimpiazzamento delle pagine
La gestione del rimpiazzamento comporta una perdita di tempo notevole. È buona pratica agire sul
numero di frame a disposizione dei processi per minimizzare la frequenza del page fault. È comunque
fondamentale utilizzare algoritmi di sostituzione efficienti. Con l’algoritmo FIFO (First In First Out) il
sistema ha due modi per riferire le pagine: mantiene un timer e scegliendo la pagina più vecchia oppure
utilizzare una lista in cui le pagine sono inserite in coda e prelevate in testa.

82. Lezione
Cosa significa che l’algoritmo ottimale è un algoritmo ideale? E’ da considerarsi un
algoritmo inutile?
È un algoritmo ideale perché, spostando le pagine che non saranno utilizzate per più tempo, realizza la
frequenza di page fault minima. L’algoritmo non è realizzabile ma non è da considerare inutile, serve
come rifermento per valutare le prestazioni di algoritmi realizzabili.
Discutere l’implementazione con la pila dell’algoritmo LRU e mostrare un esempio di utilizzo.
L’algoritmo LRU può essere implementato con una pila, ogni volta che si fa riferimento ad una pagina la si
estrae e la si pone in testa. In questo modo avremo in testa alla pila la pagina riferita più di recente
mentre in fondo alla pila ci va la pagina usata meno recentemente. Alcuni elementi devono essere estratti
dal centro della pila, per la realizzazione è opportuno utilizzare una pila doppiamente concatenata, con un
puntatore all’elemento in testa ed uno a quello finale.
70120304230321201701

7 0 3 0 4 2 3 0 3 2 1 2 0 1
7 0 1
0 7 0 3 0 4 2 3 0 3 2 1 2 0
1 7 0
1 1 7 7 3 0 4 2 2 0 3 3 1 2
0 1 7
2 2 1 1 7 3 0 4 4 4 0 0 3 3
2 2 2

Quali potrebbero essere gli aspetti negativi dell’algoritmo LRU?


L’algoritmo LRU è efficace tuttavia è necessario considerare alcuni inconvenienti:
 Devono essere aggiunte informazioni sulla tabella delle pagine
 È necessaria la scansione dell’intera tabella per individuare la pagina da rimpiazzare
 Deve essere prevista una soluzione anche se il campo è inizializzato a 0
 Occorre stabilire un opportuno numero di bit per contenere il valore del contatore e per non
appesantire troppo la tabella.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

83. Lezione
Discutere le principali caratteristiche dell’algoritmo con bit supplementare di riferimento
per il rimpiazzamento delle pagine.
Quando si verifica un page-fault l’algoritmo seleziona la pagina non riferita da più tempo. Per farlo, questo
algoritmo, utilizza un campo RB (Reference Bit) nella tabella delle pagine, con altre informazioni per
tenere traccia della frequenza con cui vengono riferite le pagine. Il bit RB è posto ad 1 ogni volta che la
pagina è riferita, il sistema operativo lo riporta a 0 al momento opportuno.
A cosa servono i registri a scorrimento nell’algoritmo con bit supplementare di riferimento?
Il sistema operativo mantiene, per ogni pagina, un registro a scorrimento con funzioni da contatore.
Periodicamente una routine trasla il contenuto del registro scartando il bit meno significativo ed inserendo
il contenuto di RB nel bit più significativo. Al verificarsi di un page-fault si sostituisce la pagina con
contatore più basso. Tra le eventuali pagine con lo stesso valore nel registro di traslazione, si sceglie con
criterio FIFO
Discutere le principali caratteristiche dell’algoritmo con bit di riferimento a seconda chance.
Ad ogni pagina è associato un bit RB (Reference Bit) che indica se la pagina è stata riferita di recente. Al
page-fault il sistema da una seconda chance alle pagine riferite da poco. Ogni volta che trova una
pagina con RB=1 lo reimposta a 0 e continua la scansione. Se trova un RB=0 opera la sostituzione
altrimenti continua fino a ricominciare e sostituisce la prima pagina con il bit RB azzerato in precedenza.

84. Lezione
Come si può ridurre il fenomeno del thrashing?
Per ridurre il fenomeno del thrashing si usano tecniche per stimare i frame necessari ad ogni processo.
Per determinare il numero minimo di frame il sistema usa il principio della località spaziale e temporale
considerando che l’insieme attivo di pagine varia durante l’esecuzione. Esistono due diversi modi di
operare: il modello del Working set ed il monitoraggio di frequenza del page fault
Cosa è e a cosa serve il modello del working set nell’allocazione dei frame?
Èuna delle soluzioni per evitare il fenomeno del thrashing. Attraverso la definizione di un working set ed al
numero di pagine referenziate nel più recente Δ (variabile nel tempo) è possibile ipotizzare il numero di
frame richiesti D. se D > m (numero totale dei frame) si verifica il fenomeno del thrashing e si rende
necessaria la sospensione di uno o più processi per evitare che il sistema degeneri.

Quali sono i problemi che si possono incontrare nel monitoraggio di frequenza del page fault?
Se un processo ha frequenza di page-fault maggiore della soglia massima e non esistono frame liberi
da allocare, il sistema è sovraccarico. Si provvede quindi a diminuire il numero dei processi in
esecuzione secondo la politica di scheduling per riassegnare i frame agli altri processi.
Quando la situazione si riequilibra, il sistema fa ripartire il processo sospeso in precedenza e per
sapere quanti frame allocare il miglior metodo da utilizzare è il working set che ricorda quanti ne aveva
allocati prima dell’interruzione.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

85. Lezione
Quali sono i principali compiti del sistema operativo nella gestione dell’I/O?
Il sistema operativo si deve occupare della gestione dell’I/O trattando i comandi destinati ai dispositivi
fisici, le condizioni di errore e risolvendo i problemi dovuti alla varietà ed alle caratteristiche dei dispositivi.
A tal scopo fornisce una interfaccia comune posta tra i dispositivi fisici ed il sistema stesso: il sottosistema
di I/O.
Come si possono caratterizzare i dispositivi di I/O riguardo ai trasferimenti dei dati?
Riguardo ai trasferimenti dati possiamo avere dispositivi con:
 Trasferimento a blocchi o a stringhe di caratteri
o I primi memorizzano i dati in blocchi di lunghezza fissa, con un proprio indirizzo e che
possono essere acceduti in maniera indipendente
o I secondi operano su flussi di caratteri
 Trasferimento seriale o parallelo
o Seriale ricevono un bit alla volta
o Parallelo trasferiscono più bit contemporaneamente
 Trasferimento sincrono o asincrono
o Sincrono è con tempi di risposta prevedibili
o Asincrono ha tempi di risposta non prevedibili
 Trasferimento lettura, scrittura o lettura/scrittura
o Le operazioni avvengono comunque a seconda del tipo di dispositivo

Discutere brevemente le caratteristiche dello scheduler di I/O.


Occorre gestire in maniera opportuna le risorse cui possono pervenire contemporaneamente più
richieste. Il sistema operativo tramite lo scheduling di I/O fornisce un ordine di esecuzione. Per ogni
dispositivo è gestita una coda delle richieste; quando un processo effettua una system call di I/O è inserito
nella coda. È lo scheduler di I/O che organizza la coda per migliorare le prestazioni ed offrire un minore
tempo medio di attesa delle applicazioni.

86. Lezione
Quali sono le principali funzioni svolte dal software di I/O indipendente dai dispositivi?
Le principali funzioni dal software indipendente dei dispositivi sono:
 Write / Read di un carattere per i dispositivi che trasferiscono caratteri
 Write / Read di un blocco per i dispositivi che trasferiscono blocchi
In sintesi, il livello del software di I/O invia le funzioni al driver del dispositivo che ha il compito di gestirle
opportunamente.
Discutere come si realizza il buffering a livello di software di I/O indipendente dai
dispositivi. Perché si preferisce al buffering realizzato a livello utente?
Il livello del software indipendente rende disponibili dei buffer per la memorizzazione temporanea per
conto dei processi utente. Queste aree sono utilizzate per evitare che il processo si blocchi ogni volta che
arriva un dato. Il sottosistema mette a disposizione un buffer e quando è pieno lo consegna all’utente. Si
preferisce al buffering a livello utente per evitare problemi nella gestione delle pagine di memoria che
contengono il buffer, dovremmo avere pagine non rimpiazzabili. La scelta di lasciare il buffer nell’area
del sistema operativo comporta perdita di tempo non trascurabile per copiare più volte i dati nelle
diverse zone.
Discutere i principali servizi offerti dal software di I/O a livello utente.
I servizi forniti all’utente sono costituiti da funzioni di libreria che traducono il software in chiamate di
sistema. Le funzioni chiamano le system call passando i parametri rendono trasparente il sistema
operativo. Rientrano in questa categoria i sistemi di spool.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

87. Lezione
Quali sono i compiti del controllore del disco?
Il controllore del disco è l’elettronica che gestisce il trasferimento dei dati dal disco fisso alla RAM ed alla
CPU. Gestisce gli accessi al disco attraverso la coda delle richieste pendenti, quindi esegue le operazioni
di traduzione per attivare le opportune funzioni di trasferimento dei dati. I dischi sono dispositivi lenti, la
durata delle operazioni di lettura e scrittura dipende da diversi fattori.

Quali parametri deve specificare un processo che vuole accedere ad un disco?


Il tipo di operazione (lettura o scrittura), indirizzo nel disco al quale fare riferimento, indirizzo in memoria
rispetto al quale fare riferimento ed il numero di byte da trasferire. Se il disco non è disponibile le
richieste sono messe in coda per essere elaborate secondo la strategia di scheduling.
Discutere le differenze fra l’algoritmo di scheduling del disco SCAN (CSCAN) e LOOK (C-LOOK).
Con l’algoritmo SCAN il sistema effettua la scansione dell’intera superficie partendo da un estremo fino
all’altro e selezionando le richieste che incontra sui cilindri. Arrivato all’altro estremo, si inverte la direzione
e continua a servire le richieste lungo il tragitto. La soluzione elimina la starvation ma offre prestazioni
peggiori del SSTF. Una ottimizzazione dello SCAN è il CSCAN, una sorta di scansione circolare. Come per lo
SCAN la testina va da un estremo all’altro del disco senza servire le richieste durante il ritorno. Altre
varianti per lo SCAN e per il CSCAN sono il LOOK (per lo SCAN) e il C-LOOK (per il C-SCAN). Le ottimizzazioni
in questi casi la testina si sposta finché trova richieste da servire per poi ricominciare il ritorno.

Quali sono gli aspetti positivi e negativi dell’algoritmo di scheduling del disco SSTF?
L’algoritmo SSTF (Shortest Seek Time First) minimizza i tempi di ricerca ma introduce la possibilità di
starvation. Il sistema serve le richieste in base alla posizione della testina, seleziona per prima la
richiesta che in quel momento sta più vicina alla testina. Per fare questo deve scorrere l’intera lista.

88. Lezione
Che cosa è il file system?
Il file system è la parte del sistema che interagisce con l’utente. Consiste in due parti, un insieme di file,
contenente dati correlati e una struttura della directory che organizza tutti i file del sistema e fornisce
le informazioni relative.
Che cosa è un file e come può essere rappresentato?
Il sistema operativo rende disponibile all’utente una unità di informazione logica, il file. L’utente
interagisce con il file system e non si preoccupa di come sono memorizzate le informazioni all’interno del
file. La rappresentazione del file può essere:
 Senza struttura – una sequenza non strutturata di byte
 Con una struttura minima – una sequenza di record con lunghezza fissa con una struttura interna
 Con una struttura più forte – un albero di record a lunghezza variabile.
Quali sono le principali operazioni che possono essere fatte sui file?
Le operazioni sui file sono eseguite tramite system call. È possibile eseguire le seguenti operazioni:
 Create – alloca un elemento nella struttura di directory, individua lo spazio opportuno ed assegna
agli attributi i valori opportuni; in particolare la posizione di partenza sul disco nell’attributo
locazione.
 Delete – cancella il file e dealloca lo spazio
 Open – apre il file, restituisce un identificatore utilizzato nelle successive operazioni sul file
 Close – chiude il file
 Write – scrive dati nel file, ha come parametri il nome del file e le informazioni da scrivere
 Read – legge i dati dal file. Ha come parametri il nome e la locazione di memoria da leggere
 Seek – posiziona il puntatore alla posizione corrente
 Truncate – elimina una quantità di dati dal file.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

89. Lezione
Discutere le principali differenze fra file e directory?
Le directory sono rappresentate come contenitori di file, Unix tratta la directory come un file con un
contrassegno che indica che si tratta di directory, in Windows invece la directory è una classe diversa
rispetto al file. In Unix, è possibile effettuare le stesse operazioni sia sui file che sulle directory; in
Windows è necessario utilizzare apposite system call che fanno riferimento alla directory.
Quali sono le principali operazioni che si possono eseguire su una directory?
Il modo di trattare le directory nel sistema Unix permette di effettuare le stesse operazioni possibili sui
file. In Windows le directory sono trattate in modo diverso dai file e per questo sono necessarie apposite
system call che fanno riferimento alle directory.
Oltre alla creazione della struttura, le operazioni possibili sono:
 Creazione/cancellazione di file
 Ricerca di un file attraverso lo scorrimento della directory
 Ridenominazione di un file
 Listare tutti i file contenuti nella directory
Discutere la struttura a due livelli delle directory
La struttura a doppio livello è più gestibile rispetto a quella a singolo livello rispetto agli utenti ma,
all’interno del secondo livello i file sono raggruppati in una singola directory. Esiste un problema di
doppio scorrimento, per trovare il file di un utente è necessario trovare l’utente e poi il file. Il primo
scorrimento può essere ottimizzato con il caricamento in cache della directory dell’utente.

U1 U2 ... UN directory principale

descritt. descritt. descritt. descritt. descritt. descritt. descritt.


... sottodirectory
f1 f2 f5 f7 f8 f3 f4

f1 f2 f5 f7 f8 f3 f4 file

Discutere la struttura ad albero generico delle directory


È una generalizzazione della struttura a due livelli. Il primo elemento è sempre la radice, il successivo
è composto dagli utenti e, per finire ogni utente può prevedere più directory a formare un albero.
Questa struttura soddisfa le richieste dell’utente: la gestione dei nomi è semplificata e
l’organizzazione logica è avvantaggiata dal fatto che ogni utente può riorganizzare le directory come
vuole.

/ directory radice

U1 U2 ... UN directory utente

PROG ALTRO PROG GIOCHI DOC sottodirectory utente

C++ JAVA C++ PERL WORD EXCEL sottodirectory utente

f2.cpp f7.cpp fA.txt f4.xls file utente

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

90. Lezione
Disegnare e discutere lo schema di organizzazione a livelli del file system.
I livelli del file system sono mostrati in figura; il livello più alto è
quello delle applicazioni in cui si trovano gli utenti e i loro
programmi. Sotto, il file system logico implementa l’astrazione dei
file e delle directory mette a disposizione le system call per le
operazioni sui file tutte le funzioni a livello di file system logico. Il
modulo per l’organizzazione dei file traduce i blocchi logici nei
corrispondenti indirizzi fisici. Il file system di base smista i comandi
per l’organizzazione dei file all’I/O control. L’I/O control traduce i
comandi e invia il risultato ai registri del controllore, cioè traduce le
richieste di alto livello (sistema operativo) in richieste a basso livello
(dispositivi). Infine le richieste arrivano al livello dei dispositivi fisici.
I dispositivi colloquiano con la CPU tramite registri di controllo.

Cosa sono e a cosa servono le partizioni del disco?


Le partizioni del disco sono suddivisioni logiche anche se esistono partizioni che occupano più dischi.
In generale esistono diverse partizioni per separare informazioni dai programmi.
Discutere la struttura di una partizione
La prima partizione è particolare, il primo blocco contiene il MBR (Master Boot Record) utilizzato per
l’avvio della macchina. Il secondo blocco contiene la tabella delle partizioni che memorizza le partizioni
dell’hard disk, per ogni partizione è indicato l’inizio e la fine. All’interno della tabella una partizione è
contrassegnata attiva, è la partizione che contiene il sistema operativo.

In quanti e quali modo possono essere rappresentate le directory nella struttura del file system?
Esistono 2 diverse modalità per rappresentare le directory che differiscono dal modo con cui
sono memorizzati gli attributi dei file contenuti.
 Memorizzazione di tutte le informazioni relative ai file contenuti – è composta da una lista di
elementi di cui ognuno contiene la struttura degli attributi ed il puntatore alla posizione del file
 Memorizzazione delle informazioni minime necessarie ad individuare univocamente un file –
l’elemento risulta più piccolo e contiene solo il nome del file ed il puntatore alla posizione nel disco
degli attributi del file

91. Lezione
Discutere pregi e difetti della implementazione delle directory come lista lineare.
Si tratta di uno dei due modi per implementare la struttura di una directory (l’altro è la tabella hash). È la
struttura più semplice, permette di aggiungere o togliere elementi con facilità. La ricerca è lineare ed è
necessario scorrere la directory, in caso di dimensioni notevoli la ricerca risulta lenta. Si può ottimizzare
ordinando la lista, la ricerca migliora ma peggiorano i tempi per organizzare la struttura.
Discutere pregi e difetti della implementazione delle directory come tabella hash.
Si tratta di uno dei due modi per implementare la struttura della directory (l’altro è la tabella lineare). La
struttura è una tabella di descrittori cui ad ogni entrata corrisponde ad un elemento di directory. La tabella
hash riceve un valore calcolato dal nome del file e restituisce il puntatore al nome del file nella lista lineare.
Se più file condividono la stessa funzione hash, si gestisce la tabella in modo che ad ogni singola entry
corrisponda una lista di descrittori. I tempi di accesso agli elementi peggiorano ma risultano comunque
inferiori all’organizzazione a lista lineare.
Quali sono le principali strategie per la condivisione dei file in un sistema operativo?
Si evita la duplicazione del file per non generare problemi di spazio e sincronismo delle copie. Si
preferisce memorizzare attributi in più per ogni file. Il sistema mantiene per ogni file il proprietario ed un
contatore che indica in quante directory è presente il file. Nei sistemi Unix, in cui le directory contengono
solo le informazioni minime per individuare un file, è gestito un particolare settore del disco (i-node) in
cui risiedono, tra gli attributi anche il proprietario e il contatore. Alla creazione del file il proprietario è
valorizzato con la directory che contiene il file e il contatore è posto a 1.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

92. Lezione
In quante e quali maniera possono essere allocati i file all’interno del disco?
Per allocare un file all’interno del disco il sistema può implementare:
• Allocazione contigua
o Il file è memorizzato in blocchi fisici contigui, nella struttura della directory, oltre al nome, va
memorizzato anche l’indirizzo fisico del primo blocco (start) e il numero di blocchi allocati
(size).
• Allocazione a lista concatenata
o Non è più richiesta la contiguità dei singoli blocchi, sono allocati i blocchi liberi ovunque si
trovino, sono collegati tramite l’utilizzo di puntatori. I blocchi possono essere allocati a cluster
o a blocchi singoli.
• Allocazione con indice
o Raggruppa i puntatori in una sola locazione del disco formando il blocco indice (i-node). Il
primo blocco allocato ad un file è il blocco indice che contiene un array che memorizza
l’indirizzo del blocco fisico a cui corrisponde il blocco logico. La struttura della directory
conterrà l’indirizzo del blocco indice, informazione sufficiente a individuare tutti i blocchi fisici
del file.

Come avviene l’allocazione dei file a lista concatenata a singoli blocchi?


Corrisponde all’allocazione contigua con EXTENT di dimensione pari ad un blocco. Il sistema mantiene una
lista concatenata dei blocchi allocati, alla fine di ogni blocco il puntatore al successivo, l’ultimo blocco ha
puntatore NULL.

Discutere come funziona la tabella FAT, evidenziando i vantaggi assicurati per l’allocazione
dei file sul disco.
La File Allocation Table è una tabella di descrittori dei file presente all’inizio di ogni partizione con un
numero di entrate pari al numero dei blocchi presenti sul disco. È indirizzata tramite il numero del primo
blocco che si estrae dalla struttura della directory, ogni entrata contiene l’indirizzo del blocco successivo
che compone il file. Il valore NULL o EOF indicano che si tratta dell’ultimo blocco del file mentre in
corrispondenza dei blocchi liberi troviamo ZERO.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

93. Lezione
Disegnare e discutere lo schema implementativo dello schema combinato per l’allocazione
indicizzata dei file sul disco.
Lo schema combinato, prevede un blocco indice
che, nella parte iniziale, contenga tutti gli
attributi del file escluso il nome,
successivamente un array di 15 elementi in cui:
 I primi dodici elementi puntano
direttamente a pagine dati
 Il tredicesimo punta a un blocco indice
che punta a dati (indicizzazione a 2 livelli)
 Il quattordicesimo punta a blocchi
indice che puntano a ad altri blocchi
indice che puntano ai dati (indicizzazione
a 3 livelli)
 Il quindicesimo arriva a 4 livelli di indicizzazione.
Questo schema è ottimizzato, per l’accesso diretto, sia su file di piccole dimensioni che su quelli di grandi
dimensioni. Non abbiamo frammentazione esterna mentre quella interna è limitata all’ultimo blocco.
Inoltre l’overhead è limitato.
Discutere la differenza fra la gestione dello spazio libero sul disco a mappa di bit e la
gestione a lista concatenata.
Nella gestione a mappa di bit ogni blocco del disco è rappresentato in un vettore di bit dove se il valore è 0
il blocco è occupato. Per individuare i blocchi liberi il gestore dello spazio scorre il vettore a parole da 32
bit fino a quando non ne trova una diversa da 0. Quindi individua il blocco libero (con il bit a 1) all’interno
della parola. Il vettore di bit è allocato in memoria, realizzabile solo per dischi di dimensioni limitate.
La gestione a lista concatenata prevede che tutti i blocchi liberi siano collegati tramite un puntatore, ogni
blocco punta al successivo. In memoria è mantenuto l’indirizzo del primo ed all’ultimo blocco libero, per
facilitare l’inserimento dei blocchi in fondo alla lista. I blocchi sono estratti dalla testa della lista.
Come avviene la gestione dello spazio libero sul disco con struttura a raggruppamento?
La gestione con struttura di raggruppamento prevede la memorizzazione di una lista di blocchi, nel
primo blocco libero sono memorizzati gli indirizzi di n blocchi liberi. Solo n-1 sono effettivamente liberi
l’ultimo contiene gli indirizzi di altri n blocchi liberi e così via. La gestione è più efficiente.

94. Lezione
Discutere la principale differenza fra protezione e sicurezza.
Sicurezza – assicurarsi che i file (o in genere i dati utilizzati in un sistema informatico) non siano letti o
manomessi da persone non autorizzate; questo problema coinvolge aspetti tecnici, manageriali, legali e
politici, oltre che, ovviamente, di privacy;
Protezione – meccanismi e regole che il sistema operativo usa per salvaguardare la sicurezza delle
informazioni contenute nel computer.
Discutere le differenze fra le liste di controllo di accesso e le liste delle abilitazioni.
Esistono due modi per rappresentare / memorizzare le matrici di accesso (solitamente molto sparse):
 per colonne (memorizzando solo le celle non vuote) – ad ogni oggetto si associa una lista ordinata
dei domini a cui è consentito l’accesso e le operazioni lecite. La lista consiste in coppie ordinate
<dominio, diritti> che prendono il nome Access Control List (ACL)
 per righe (memorizzando solo le celle non vuote) – ad ogni dominio si associa una lista di oggetti
con le relative operazioni consentite. Ogni elemento della lista prende il nome di capability e la lista
è la lista di abilitazioni.
Quali sono i pro e i contro delle liste di controllo di accesso e le liste delle abilitazioni?
Per quanto riguarda le liste di accesso, corrispondono alle necessità degli utenti, alla creazione di un
oggetto si specifica quali domini abbiano accesso; per contro non è facile stabilire l’insieme dei diritti di un
singolo dominio. Le liste d’abilitazione rendono facile la localizzazione delle informazioni del singolo
processo; per contro è difficoltosa, al limite dell’inefficienza, la revoca delle abilitazioni.

Downloaded by Volcane Amps (volcaneamps@gmail.com)


lOMoARcPSD|8254953

95. Lezione
Fornire una semplice definizione di crittografia.
È la scienza che studia algoritmi reversibili per trasformare il contenuto di un documento o un messaggio
in modo da nascondere il significato. La trasformazione diretta è indicata come operazione di cifratura
(codifica) quella inversa di decifratura (decodifica). Effettuare le due operazioni deve risultare talmente
laborioso da essere praticamente impossibile.

Cosa sono le chiavi e il cifrario?


Gli obiettivi della cifratura sono permettere la codifica e decodifica dei dati in modo da renderli
interpretabili esclusivamente dal destinatario. I dati sono trasformati per mezzo di un cifrario, i cifrari
utilizzano le chiavi di cifratura/decifratura. Solitamente le keys sono stringhe binarie di lunghezza prefissata
per vengono passate in ingresso al cifrario. L’algoritmo di cifratura trasforma i dati in ingresso in dati cifrati.
Discutere la differenza fra crittografia simmetriche ed asimmetrica, analizzando i pro e i
contro di ciascuna tecnica.
Nella crittografia simmetrica, l’algoritmo usa la stessa chiave segreta per la cifratura e per la decifratura.
Il mittente codifica con una chiave e invia al destinatario, il destinatario decodifica con la stessa chiave. Il
problema è lo scambio sicuro della chiave di cifratura.
La crittografia asimmetrica, usa due chiavi differenti e non invertibili: una chiave pubblica che può essere
distribuita liberamente ed una chiave privata che deve essere tenuta segreta dal proprietario. La
proprietà fondamentale è che le due chiavi possono scambiarsi di ruolo, l’una consente l’inversione della
trasformazione ottenuta con l’altra e viceversa. Gli algoritmi asimmetrici possono essere utilizzati per il
calcolo delle firme elettroniche.

Cosa è l’autenticazione?
L’autenticazione è la procedura di identificazione di utenti e di azioni autorizzate alla base di un
sistema informatico sicuro. Un utente può essere identificato in vari modi ma tutti riconducono alle
seguenti categorie:
 Una cosa che sei – ossia tramite una caratteristica fisica (impronta digitale, scansione dell’iride)
 Una cosa che hai – possesso esclusivo di un oggetto (tesserino magnetico scheda di identificazione)
 Una cosa che conosci – conoscenza di informazioni riservate (PIN, password)
I metodi di autenticazione si dividono in:
 Basic Authentication – se usano un metodo di identificazione individuale
 Strong Authentication – per autenticazione a due fattori, quando si combinano più metodi tra loro

Downloaded by Volcane Amps (volcaneamps@gmail.com)

Potrebbero piacerti anche