Question 1

Not yet answered
Not graded
Flag question

Question text

Dati studente

Inserisci qui i tuoi dati, compila subito questa parte.

Cognome
Nome
Matricola
email
Numero Computer
Ordinamento (509, 270, erasmus,ecc.)
Quanti CFU?

Question 2

Not yet answered
Not graded
Flag question

Question text

Memoria virtuale

Rispondi alle seguenti domande relative alle page tables.

  1. In una architettura con page table, qual'è la struttura degli indirizzi logici e di quelli fisici? Cosa puoi dire del numero di bit assegnati alle varie parti?
  2. Considera una MMU senza alcuna ottimizzazione. Mostra i passi per realizzare un singolo accesso ad un indirizzo logico. Quanti accessi a memoria fisica comporta?
  3. Descrivi il concetto di TLB e i suoi vantaggi.
  4. Descrivi i passi nella trasformazione di un indirizzo logico ad uno fisico nel caso di presenza di TLB.

Question 3

Not yet answered
Not graded
Flag question

Question text

Raid 10

Hai 4 array raid 1, ciascuno di due dischi, e li usi in raid 0 (nested raid 10). Considera i blocchi del disco logico risultante numerati progressivamente 1, 2, 3, ecc. Come sono sistemati tali blocchi nei dischi fisici? Compila lo schema seguente (gli array sono separati da doppia linea verticale). Indica la parità con "p" se necessario.

                   


Situazione A. Supponi che sia il secondo disco del primo array che il primo disco del secondo array siano in fault, cosa poi dire circa la condizione dell'array?

Dati:

Parte degradata:

Parte impegnata nel rebuilding

Situazione B. Supponi che sia il primo che il secondo disco del terzo array siano in fault, cosa poi dire circa la condizione dell'array?

Dati:

Parte degradata:

Parte impegnata nel rebuilding

Questa configurazione, nel caso più favorevole, può sopportare la rottura di quanti dischi ?

Spiega brevemente:  

Considera la situazione A. Supponi che la configurazione fosse dotata di 1 hot-spare, cosa poi dire circa la condizione dell'array?  

Dati:

Parte degradata:

Parte impegnata nel rebuilding

Spiega brevemente  

Considera la situazione B. Supponi che la configurazione fosse dotata di 2 hot-spare e che i fault siano molto vicini nel tempo, cosa poi dire circa la condizione dell'array complessivo?

Dati:

Parte degradata:

Parte impegnata nel rebuilding

Spiega brevemente   

 

Question 4

Not yet answered
Not graded
Flag question

Question text

Scheduling delle attività in kernel/user mode

In un sistema sono presenti tre processi: A, B, C.  La politica di scheduling è round robin con quanto q=30msinizialmente A è running, B è ready e C è in blocco. 

  • A è cpu-bound e genera un page fault ogni 10ms di esecuzione, ciascuno servito in 40ms. 
  • B è cpu-bound, nessun page fault.
  • C è inizialmente in blocco, per una lettura che verrà servita a t=20ms, poi continuerà come cpu-bound, nessun page fault.

Il processore esegue di volta in volta A, B, C, e inoltre, con tempi trascurabili, mode switching, dispatching, system call e interrupt handlers. Mostra schematicamente, nella seguente tabella, l'ordine con cui tali attività vengono eseguite (una sola croce per ciascuna colonna). Indica anche quali processi sono running, quali ready e quali bloccati in ciascun istante come indicato nell'esempio.

 


user mode
A  X A
B   B
C   C
mode switch   mode switch

kernel mode
sched./disp.   sched./disp.
system call   system call
interrupt handler per page fault   interrupt handler per page fault
interrupt handler per I/O   interrupt handler per I/O
interrupt handler per quanto scaduto   interrupt handler per quanto scaduto

stati processi
running

A







































running
ready
B







































ready
block C





































block
note tempi
altre note

Question 5

Not yet answered
Not graded
Flag question

Question text

Espressioni Regolari (grep/egrep)

Considera il file di testo di esempio indirizzi.txt. Assumi che in tale file certe righe contengano esclusivamente un indirizzo di posta elettronica nella forma account@dominio e che possano essere identificate dal fatto che contengano il carattere '@'. Fornire una linea di comando basata su grep o egrep per stampare tutte le righe che contengono indirizzi di posta elettronica tali che tutte le seguenti regole siano rispettate 

  • il dominio finisca con la stringa .org
  • l'account sia lungo 3 caratteri 
  • il primo carattere dell'account sia una lettera compresa tra 'a' e 'd' 
  • il secondo carattere dell'account sia un numero compreso tra '1' e '4'

Sul file d'esempio il comando deve stampare:

a3z@example.org
d10@example.org

Fai copia e incolla nella form del comando e del suo output

Question 6

Not yet answered
Not graded
Flag question

Question text

Si consideri il file passwords.txt in cui ogni riga segue il seguente schema:

User:*:UID:GID:USER_DESCRIPTION:Home_Directory:Shell

Si scriva uno script (o riga di comando) basato su awk che elabori tale file per produrre un output come nell'esempio in fondo. Per produrre tale output si seguano le seguenti regole

  • solo le righe da 2 a 6 del file passwords.txt sono considerate
  • solo i campi User, UID, GID, Home_Directory e Shell sono considerati
  • usa printf per l'output formattato (consulta man awk se necessario) e scegli tu la lunghezza dei campi 

Le statistiche in fondo devono mostrare

  • per i ogni GID quanti user che usano la shell "/usr/bin/false" hanno quel GID.

Ecco l'output che ci si aspetta.

 

------------------------------------------------------------------
User           UID     GID     Home Directory  Shell                         
------------------------------------------------------------------
root           0       0       /var/root       /bin/sh                       
daemon         1       1       /var/root       /usr/bin/false                
_uucp          4       4       /var/spool/uucp /usr/sbin/uucico              
_taskgated     13      13      /var/empty      /usr/bin/false                
_networkd      24      13      /var/networkd   /usr/bin/false                
------------------------------------------------------------------
GID: 13 with 2 users
GID: 1 with 1 users

 Fai copia e incolla nella form del comando e del suo output

Question 7

Not yet answered
Not graded
Flag question

Question text

Debugging

Si consideri il file fattoriale.c che contiene due funzioni che implementano il fattoriale di un numero sia nella versione ricorsiva che nella versione iterativa.

Si compili con il comando: gcc -Wall -g fattoriale.c -o fattoriale

Si esegua quindi: ./fattoriale 6

ottenendo: 

[6] ric: 720 iter: 1440

la versione iterativa non ritorna il risultato corretto poiché nella riga 12 di fattoriale.c la variabile r è inizializzata al valore 2. Far partire il debugging con gdb fattoriale ed eseguire quanto segue

1) imporre un breakpoint sulla riga 14
2) imporre un breakpoint sulla riga 16
3) imporre un breakpoint sulla riga 26
4) eseguire con l’input 6
5) stampare il valore della variabile n
6) continuare con l’esecuzione
7) stampare il valore della variabile r
8) continuare con l’esecuzione
9) stampare di nuovo il valore della variabile r
10) avanzare di uno step
11) avanzare di un altro step
12) stampare il valore della variabile k
13) continuare con l’esecuzione
14) mostrare breakpoint attivi
15) togliere il breakpoint sulla riga 14 indicando proprio il numero di riga del file fattoriale.c
16) continuare con l’esecuzione
17) mostrare informazioni sullo stack
18) mostrare breakpoint attivi
19) eliminare il breakpoint sulla riga 16 tramite il num. indicato dalle info dei breakpoint attivi
20) mostrare breakpoint attivi
21) continuare con l’esecuzione
22) rimuovere l’ultimo breakpoint attivo tramite il num. indicato dalle info dei breakpoint attivi
23) mostrare breakpoint attivi
24) uscire da gdb

Fai copia e incolla nella form dell'intera sessione di debugging (errori compresi!)