Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lezione 007
01. Da punto di vista funzionale, una rete logica è caratterizzata da:
Asincrone
Sincronizzate
Transisce da 0 a 1
Resta sempre a 0
Transisce da 1 a 0
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
Quando oscilla
Lezione 009
01. Le porte logiche AND e OR:
Due Ingressi
Zero Ingressi
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
01. L'immagine in
Demultiplexed
Decoder
Decoder
Multiplexer
Demultiplexed
di un:
Demultiplexed
Multiplexer
Decoder
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
Servono per rappresentare le leggi combinatorie e solo per la sintesi di reti combinatorie solo a porte AND
Servono per rappresentare le leggi combinatorie e solo per la sintesi di reti combinatorie solo a porte OR
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
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).
Perché ogni porta logica può essere fatta usando esclusivamente porte NAND
03. E' possible realizzare una porta NOT con le porte universali?
No
Si suppone di avere una rete logica combinatoria già sintetizzata come Prodotto di Somme
Si suppone di avere una rete logica combinatoria già sintetizzata come Somma di Prodotti
Nessuna delle altre opzioni (Mantenuto ingresso alto per tutto il tempo che occorre alla rete per diventare stabile)
02. Quali sono le differenza fra le reti sequenziali asincrone e le reti combinatorie?
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
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
- 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
- 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
- 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
- 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.
Quando esistono delle transizioni fra stati interni identificati le cui codifiche non sono adiacenti
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
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
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
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?
3
2
4
1
04. Disegnare la sintesi a porte NAND del FF-SR. Si possono eliminare i ritardi di marcatura? Perché'?
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
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 supporto agli stati di ingresso
Si tratta di un modello in cui si utilizzano i flip-flop SR come supporto agli stati di uscita
03. Quali sono i vantaggi sella sintesi per reti sequenziali asincrone con modello strutturale con Flip-Flop SR?
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
04. Quale è la corretta descrizione a parole del Flip-Flop D-positive edge triggered?
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:
Matrici di Flip-Flop SR
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)
Reti combinatorie
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?
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.
E' falso
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 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.
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.
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
Un decoder
Un multiplexer
Un demultiplexer
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:
Un registro contatore è una rete sequenziale sincronizzata il cui stato di uscita può essere interpretato come un numero che viene:
Un multiplexer
Un demultiplexer
01. L'immagine
Ci possono essere alee essenziali, ma non problemi di corse critiche. Stati interni consecutivi possono essere arbitrariamente distanti
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
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?
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.
Consente di passare facilmente il codice da un processore ad un altro basta che si usi lo stesso sistema operativo
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
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
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
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
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
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
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
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 contenuto del registro EAX nella porta di I/O il cui indirizzo è 0x01F4E39A
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 contenuto della locazione di memoria con indirizzo 0x2000 nella locazione di memoria puntata dal contenuto di EDI
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)?
04. La seguente pseudo istruzione in linguaggio mnemonico OPCODE $0x5683A20B,%ECX rappresenta:
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?
- trasferimento dati
- operazioni aritmetiche
- operazioni di traslazione/rotazione
- operazioni logiche
03. Quali delle seguenti affermazioni relative alla gestione della pila in Assembly è vera?
- 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?
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
04. L'istruzione
Nessuna delle altre opzioni Provoca la cessazione di ogni attività del processore
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):
- 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
8
2
4
10
Indicazioni ed istruzioni
Direttive ed indicazioni
Direttive ed istruzioni
- .GLOBAL _main;
- .data;
- .text sono:
Delle specificazioni
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
9
8
7
05. Scrivere un programma Assembly GAS che conta il numero di occorrenze della lettera e in una stringa specificata come parametro
Lezione 031
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
0
2
4
1
04. Dato il programma mostrato in figura, il
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?
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++
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
Bidirezionali
Nessuna delle altre opzioni E' un ingresso e porta le memoriedel processore nello stato iniziale
E' in uscita e serve a resettare la memoria
03. I piedini dei blocchi funzionali che costituiscono un calcolatore elettronico servono per:
Comandare il calcolatore
Bidirezionali
La direzione dipende dalle attività che di volta il volta il processore deve svolgere
Bidirezionali
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
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:
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
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.
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
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:
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
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
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
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)
07. Perché il processore PC ha solo 30 piedini di indirizzo (A31-A2) pur indirizzando uno spazio di memoria da 4GB?
01. Si
02. Si
figura:
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.
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
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
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().
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
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
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:
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.
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
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)
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.
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
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
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
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)
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:
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:
05. Elencare i passi che il controllore APIC effettua per la gestione del meccanismo delle interruzioni
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.
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.
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
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?
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:
03. Quali sono i dispositivi di memorizzazione più veloci che si possono trovare in un calcolatore?
Memorie statiche
Memorie Dinamiche
Memorie di massa
04. I piedini /CAS e /RAS delle memorie RAM dinamiche servono, rispettivamente, per:
Flip Flop SR
06. Una memoria Ram dinamica da 1 Mega bit, quanti piedini di indirizzo ha:
30
20
10
08. Elencare i passi che si effettuano per la scrittura in una memoria DRAM.
02. Nell'organizzazione di una memoria cache, il campo spiazzamento dell'indizzo serve per:
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
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)
06. Nell'organizzazione di una memoria cache, il campo indice dell'indizzo serve per:
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.
09. Cosa succede quando il processore effettua una operazione di scrittura in presenza di memoria cache?
Lezione 046
Una periferica
MRU
SRU
LRU
05. Disegnare e discutere lo schema del controllore della memoria cache (discutere come vengono utilizzati i vari piedini).
- 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.
- 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
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
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
Per la gestione delle transazioni di configurazione, il ponte Ospite-PCI possiede sei registri da 32 bit posizionati nello spazio di I/O
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.
- 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.
Si, ci sono sempre più funzioni gestite dal dispositivo che usano lo stesso piedino per inviare la richeista di interruzione.
A volte
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?
Da 1 a 4
4
1
03. Alcune delle motivazioni più importanti che hanno portato all'introduzione del bus PCI express sono:
Fornisce una banda limitata per alcune categorie di dispositivi e di dispositivi PCI sono pittosto ingombranti.
04. Nell'architettura con bus PCI express la trasmissione dei dati avviene:
05. Nell'architettura con bus PCI express, quale è il dispositivo che assuma una particolare importanza?
Lo switch
Il bridge
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?
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
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?
Singolo e Continuo
Seriale e parallelo
Un tipico esempio di utilizzo del meccanismo delle interruzioni tramite bus PCI
Un tipico esempio di utilizzo del meccanismo delle cache tramite bus PCI
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:
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:
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
A monte dei circuiti di pilotaggio del bus locale nello spazio di memoria
05. Con riferimento al bus mastering, quali delle seguenti affermazioni è falsa?
Una qualsiasi interfaccia sul bus PCI può richiedere di iniziare una transazione scegliendo il ponte Ospite-PCI come arbitro
Un qualsivoglia dispositivo collegato al bus PCI può essere scelto come obiettivo della transazione
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.
Prelievo, Decodifica, Lettura degli operandi, Esecuzione vera e propria, Scrittura del Risultato
Prefetch, Prelivevo, Lettura degli operandi, Esecuzione vera e propria, Scrittura del risultato
03. Con riferimento alla tecnica del pipeline, come si possono risolvere le alee sul controllo?
Facendo una previsione sul risultato del controllo della condizione e continuando a prelevare la e-istruzione prevista
04. Come si classificano le e-istruzioni in cui possono essere scomposte le istruzioni del processore PC?
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
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 fuori ordine
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?
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 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:
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
Prevede l'eliminazione della dipendenza sui salti tramite 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.
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
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?
Nessuna delle altre opzioni Memoria globale, Texture memory, constant memory, tre livelli di cache istruzioni
In alcuni casi particolari si. Si tratta dei casi un cui alcune GPU possono anche organizzare la distribuzione dei task sulle altre GPU.
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
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
I sistemi operativi monoprogrammati gestiscono i programmi in maniera sequenziale, uno alla volta.
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
04. Con riferimento ai sistemi operativi Batch, specificare quale fra le seguenti affermazioni è quella falsa:
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?
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
Architetture monoprocessore
Architetture multiprocessore
Cluster
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:
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
03. Fra le funzioni non visibili all'utente di un sistema operativo quali delle seguenti ne fanno parte?
04. Fra le funzioni visibili all'utente di un sistema operativo quali delle seguenti ne fanno parte?
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
Sistemi client-server
Sistemi monilitici
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à
Creazione e cancellazione
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?
Nessuna delle altre opzioni Il processo è l’istanza di un programma in esecuzione su una CPU.
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
La coda dei processi in attesa che termini una richiesta di I/O
02. Con riferimento allo scheduling dei processi, indicare quale fra le seguenti descrizioni è quella falsa:
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 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:
06. Disegnare e discutere lo schema di cambiamento di contesto che interessa due processi generici P0 e P1 in un sistema timesharing
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.
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( ).
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().
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?
Uno ad uno
Molti a molti
Molti a uno
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
08. Discutere i vantaggi e gli svantaggi della gestione dei thread a livello utente.
Il numero di processi che completano la loro esecuzione per 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 utilizzo della CPU, che dovrebbe essere portato al 100%
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
Passa alla modalità sistema, effettua il cambio di contesto e salta nella posizione giusta del programma utente per riavviarne l'esecuzione
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
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
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.
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
03. Con riferimento al modello di cooperazione dei processi a scambio di messaggi, indicare quale fra le seguenti affermazioni è quella falsa:
06. Discutere le caratteristiche del canale di comunicazione nel modello a comunicazione diretta e nel modello a comunicazione indiretta.
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.
Disabilitando le interruzioni
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.
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
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():
02. Con riferimento ai semafori, indicare quale è il codice che implementa correttamente la funzione wait():
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.
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.
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
No
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.
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:
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
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.
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); }
03. Indicare quale è l'implementazione corretta del processo consumatore utilizzando i semafori:
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
04. Quali sono le principali modalità in cui si possono aprire i file? Cosa accade quando viene aperto un file in UNIX?
Lezione 074
01. In ambiente UNIX la la syscall _exit(), o la library call exit() servono per:
02. In un sistema operativo UNIX come si può creare un nuovo processo?
Sono quelli gestiti dalla MMU (Main Memory Unit) e caricati nel registro MAR (memory address register)
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
Sono quelli gestiti dalla MMU (Main Memory Unit) e caricati nel registro MAR (memory address register)
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
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
Sono quelli visti dalla MMU (Main Memory Unit) e caricati nel registro MAR (memory address register)
06. Un processo in esecuzione può essere scaricato dalla memoria al disco prima che sia terminato? Discutere la risposta.
02. Nei sistemi operativi multi programmati la memoria come può essere gestita?
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
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
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
Una struttura dati implementata in hardware la tabella delle pagine, che consente di mappare pagine fisiche in pagine logiche
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?
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
La multiprogrammazione
La multiprogrammazione
09. Discutere la differenza fra la tabella delle pagine e la tabella dei frame.
Per determinare su una pagina si può leggere e scrivere oppure soltando leggere
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à.
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 lookaside buffer ) quando c'è un cambiamento di contesto?
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?
Lezione 079
01. Con riferimento alla segmentazione della memoria, indicare quale fra le seguenti descrizioni è quella falsa:
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 SegmentTable Base Register (STBR), che punta alla locazione in memoria
della tabella dei segmenti, 2)bIl registro SegmentTable Length Register (STLR), che indica il numero di segmenti utilizzati dal programma
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.
07. Discutere brevemente il concetto di memoria segmentata con paginazione e mostrare lo schema architetturale di traduzione degli indirizzi.
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
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
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 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
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
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.
Vero
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
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
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
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
02. Quale è l'idea che sta alla base dell'algoritmo LRU di rimpiazzamento delle pagine di memoria?
Tale algoritmo si prefigge di sostituire la pagina che non sarà utilizzata per più tempo
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
02. Con riferimento all'algoritmo ottimale di rimpiazzamento delle pagine, quale fra le seguenti affermazioni è quella vera?
03. Con riferimento all'algoritmo di rimpiazzamento delle pagine NRU, quale fra le seguenti affermazioni è quella vera?
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?
Statico e dinamico
Locale e Globale
02. Quali sono i metodi di allocazione dei frame della memoria da parte del sistema operativo?
Statica e dinamica
Locale e Globale
03. Quali sono gli schemi di allocazione dei frame della memoria da parte del sistema operativo?
Statica e dinamica
Locale e Globale
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
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:
Interfacce specifiche
Driver specifici
Trasduttori specifici
04. Quali sono i principali compiti del sistema operativo nella gestione dell'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 si blocca in attesa che il controllore del dispositivo faccia il suo lavoro
Software a livello utente, Software a livello dispositivi, Driver dei dispositivi, Driver delle interruzioni
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
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.
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.
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?
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).
08. Quali parametri deve specificare un processo che vuole accedere ad un disco?
Lezione 088
01. Che cosa è il file system?
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
02. Quale fra le seguenti modalità non rientra fra quelle utilizzate per accedere ai file
Accesso diretto
Accesso sequenziale
Accesso sincronizzato
03. Quali fra le seguenti strutture non rientra fra quelle utilizzate per rappresentare i file:
05. Quali sono le principali operazioni che possono essere fatte sui file?
Lezione 089
01. Quali sono le principali proprietà che la gestione delle directory deve assicurare?
02. Quali sono le classi di operazioni consentite sui file nei sistemi operativi UNIX?
03. Quali fra le seguenti strutture non rientra fra quelle utilizzate per l'organizzazione delle directory
Struttura ad albero
Struttura sequenziale
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
E' il livello dei file system in cui si traducono i blocchi logici nei corrispondenti indirizzi fisici
Due
Uno
Sei
Dieci
03. Quali fra le seguenti strutture dati non sono utilizzate dal sistema operativo per l'implementazione del file system?
05. In quanti e quali modo possono essere rappresentate le directory nella struttura 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?
La locazione di ciascun file, directory o link all'interno di ogni file system disponibile
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?
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?
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.
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
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
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
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
Rappresenta l'insieme di operazioni che possono essere effettuate da un processo su un oggetto e determina le risorse a cui esso può accedere
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?
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
Non ci sono problemi, il meccanismo è ben rodato ed assicura elevati standard di sicurezza
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
Sincroni
Asincroni
Asimmetrici
Simmetrici
06. Discutere la differenza fra crittografia simmetriche ed asimmetrica, analizzando i pro e i contro di ciascuna tecnica.
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.
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.
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
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.
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).
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é’?
16. Lezione
Sintesi del riconoscitore di sequenza 01 11 10 usando il modello strutturale con FF-SR.
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.
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).
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.
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
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
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
[𝑡𝑖 − 𝑇𝑠𝑒𝑡𝑢𝑝, 𝑡𝑖 + 𝑇ℎ𝑜𝑙𝑑]
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.
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
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] }
}
}
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
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.
23 Lezione
Disegnare lo schema funzionale di un semplice ma
completo calcolatore basato su architettura x86-32.
• 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.
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.
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 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.
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
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
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.
36 Lezione
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.
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:
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
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.
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
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)
• 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à.
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.
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)
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.
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
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.
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.
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
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.
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.
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.
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
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.
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
Spiegare se e come sia possibile l’esecuzione fuori ordine e/o in parallelo delle istruzioni.
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.
Ritiro – Se la previsione di salto è risultata corretta non si effettua nessuna azione, altrimenti è
necessario svuotare il ROB.
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.
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.
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.
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
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
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.
64. Lezione
Scrivere un esempio di codice C in cui si crea un processo con la primitiva fork().
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
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
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).
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à.
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 */
{
/* codice del blocco d'inizializzazione */
}
}
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.
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
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).
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.
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.
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.
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.
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.
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.
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.
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
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.
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
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.
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 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.
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.
f1 f2 f5 f7 f8 f3 f4 file
/ directory radice
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.
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.
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.
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.
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.
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 è 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