Question 1

Not yet answered
Not graded
Flag question

Question text

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

Not yet answered
Not graded
Flag question

Question text

Memory management

Rispondibrevemente ma punto per puntoa ciascuna delle seguenti domande circa i page fault.

  1. Cosa succede al processo running quando si ha un major page fault?
  2. Elenca almeno 3 situazioni diverse in cui si può avere un page fault.
  3. Come fa la CPU a capire che una pagina è residente?
  4. Mostra come sia possibile che una istruzione macchina con un solo operando possa produrre 3 o più page fault quando la page table è ad un livello.

 

Question 3

Not yet answered
Not graded
Flag question

Question text

I/O

Considera la sequenza di eventi che avvengono dopo una system call di scrittura su disco (write) e rispondi brevemente ma punto per punto alle seguenti domande.

  1. Spesso diciamo che la write non è bloccante, ma in pratica esistono casi che rendono la write bloccante, descrivine uno.
  2. Supponi che una write non sia stata bloccante, descrivi gli eventi eventi che portano il disco ad effettuare realmente la scrittura.
  3. Nella situazione normale (read bloccanti, write non bloccanti), se in un sistema si generano tante read e tante write che tipo di problema sorge? che soluzioni ci sono?

 

Question 4

Not yet answered
Not graded
Flag question

Question text

Sequenza degli eventi nel SO

 

In un sistema sono presenti tre processi: A, B, C. La politica di scheduling è round robin con quanto di tempo q=30ms.

  • A è I/O bound, a t=0 in blocco per una lettura che verrà servita a t=40ms.
  • B è cpu bound, a t=0 running, nessun page fault .
  • C è 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   A
B  X 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

B







































running
ready
C







































ready
block A





































block
note tempi
altre note

Question 5

Not yet answered
Not graded
Flag question

Question text

SED

Nel file di testo passwd.txt i campi sono separati da : (duepunti). Scrivere un comando basato su sed che sostituisca, in tutte le righe in cui il quinto campo contiene "Service", la stringa "/var/empty" con "/home/empty". Non c'è bisogno di sostuituire nel file, basta inviare il risultato in output.

Question 6

Not yet answered
Not graded
Flag question

Question text

AWK

Si consideri il file di testo spese.txt i cui record hanno il seguente schema

nome_dipartimento ; spesa

I record di tale file rappresentano gli acquisti effettuati da vari dipartimenti.

Ad esempio

Ingegneria;650
Amministrazione;422
Amministrazione;820
Vendite;210
Amministrazione;102
Vendite;480

Ogni record è composto da due campi (separati dal simbolo ;). Il primo campo è il nome del dipartimento mentre il secondo campo è l'importo della spesa. Nel file possono ricorre più record con lo stesso nome di dipartimento (uno per ogni acquisto).

Scrivi uno script in awk  (anche su un file separato, se vuoi) che produca in output un report con la spese media di ciascun dipartimento e il valore massimo tra le medie calcolate, come mostrato di seguito. 

 

_____SPESE_____

 

Ingegneria: 650 euro
Amministrazione: 448 euro
Vendite: 345 euro

 

Max: 650 euro

 

____FINE_SPESE____

 

Question 7

Not yet answered
Not graded
Flag question

Question text

Debugging

Considera il codice del seguente file test.c e compila tale file con il comando

gcc -g -o test test.c


Non ci sono errori (solo alcuni warning) nella compilazione, ma eseguendo il programma con input "8 9" (otto spazio nove) l'esecuzione termina improvvisamente.

pizzonia@pisolo$ ./test
8 9
Floating point exception (core dumped)

Esegui il debugger tramite il comando

gdb test

ed esegui i seguenti passi nell'ambiente di debugging nell'ordine specificato

  • Inserisci un breakpoint su "main"
  • fai "single step" fino all'input e inserisci come input "8 9"
  • fai "single step" fino alla chiamata di "div" e entra dentro 
  • continua (senza single step!) finché il programma non dà errore
  • stampa i valori di x e y nel contesto di div
  • mostra lo stack
  • stampa i valori di x e y nel contesto di main