Preview Compito dispari - turno 1 - 6 cfu

Question 1 Edit

Dati studente

Inserisci qui i tuoi dati, compila subito questa parte.

Quanti CFU?

Cognome
Nome

Matricola

email

Numero Computer

Ordinamento (509, 270, erasmus,ecc.)


Question 2 Edit

Memory management

Rispondi alle seguenti domande sugli allocatori di memoria.
  1. Immagina di dover realizzare, in un kernel, una struttura dati linkata. Puoi far affidamento sulla funzione standard malloc()? Spiega.
  2. All'interno di un sistema con molti processi quanti heap sono presenti? Spiega.
  3. Il kernel deve allocare memoria per le proprie strutture dati e per i processi. Che tecniche si usano nei due casi? perché?

Answer:
Path:
Editor shortcut keys
Question 3 Edit

I/O

Considera le operazioni read e write su disco. Compara le due operazioni rispetto ai seguenti aspetti:
  1. uso dei buffer
  2. possibilità per il processo chiamante di proseguire immediatamente
  3. impatto sullo stati del processo che esegue la richiesta.
  4. impatto rispetto alla fairness nei confronti di altri processi.
Answer:
Question 4 Edit

Sequenza degli eventi nel SO

In un sistema sono presenti tre processi: A, B, C. La politica di scheduling è preemtive con priorità (A>B>C).
  • A è inizialmente running, è I/O bound, ed esegue infinite letture bloccanti, ciascuna servita in 70ms.
  • B è inizialemente ready è cpu bound e genera major page faults ogni 30ms, ciascuno servito in 60ms.
  • C è inizialmente in blocco, a causa di un page fault che verrà servito a tempo t=20 ms, è cpu bound, non provoca altri page faults.
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



Edit

Scripting

Il file di testo ripe.db.aut-num.filtered.txt contiene un record per ciascun Internet Service Provider. Nel file ciascun record è separato da una linea vuota, i campi sono su linee distinte e hanno formato nome-campo: contenuto, alcuni campi possono comparire più volte. I campi occupano sempre la stessa posizione ma non sono sempre tutti presenti. Per svolgere l'esercizio non è necessario conoscere il significato di tutti i campi.

Question 5 Edit
Il campo org contiene un codice nella forma ORG-<lettere><cifre>-RIPE. Usa il comando "grep" per selezionare le righe relative a tale campo per cui la parte <lettere> inizia per 'C' o 'c', e per cui la parte cifre corrisponde ad un numero maggiore di 699 e multiplo di 10.
Answer:
Question 6 Edit
Il campo aut-num contiene un identificatore dell'Internet Service Provider, il campo mnt-by contiene il codice di un maintainer di quel record, i maintainer possono essere più di uno e quindi mnt-by può comparire più volte (ma anche zero volte).
Mostra una pipeline di comandi che fa uso di awk e grep per fornire una tabella che abbia nella prima colonna il contenuto del campo aut-num, nella seconda il numero di maintainer, e nella terza la lista dei maintainer separati da spazi.

Suggerimenti:
  • la variabile NF contiene il numero dei campi del record
  • $i permette di accedere all'i-esimo campo
  • il costrutto for(...) { ... } ha la sintassi identica a quella del C
  • per concatenare due stringhe in awk basta giustapporle (es. "il valore di x e' " x)
Answer:
Question 7 Edit
Marks: 1

Debugging

Considera il codice del seguente progetto prj3.tar.gz. Compila tutti i file con il comando

gcc -g *.c -lm -o fib

Considera una esecuzione di fib con parametro 22. Considera la trecentounesima volta in cui fib() è stata chiamata.
  • Mostra lo stack in quell'istante.
  • Conta quante volte fib() è ritornata fino a quell'istante.
  • nel contesto di init_list() mostra il penultimo elemento della lista L
  • Esprimi in una formula la relazione che lega il numero di frame relativi a fib() nello stack, le chiamate a fib(), e i ritorni da fib()
Answer:
Question 8 Edit

Pratica Unix

Il comando

find /usr/include -name '*.h'

elenca tutti i file in /usr/include che terminano per .h

Mostra una riga di comando che inserisce nella variabile di ambiente X tale elenco. Dai anche un comando che mostri il contenuto di X.
Answer:
Question 9 Edit

Windows vs. Uinux (solo per chi fa 6 cfu)

Rispondi alle seguenti domande che confrontano Windows e Unix.
  • In Unix gran parte delle informazioni di configurazioni sono in /etc, in Windows dove sono?
  • In Unix gran parte delle system call operano su file descriptor, descrivi il concetto che gioca lo stesso ruolo in Windows.
  • Unix organizza i processi ad albero, in Windows come sono organizzati i processi?

Answer: