The forum of the Computer Science students of the University of Pisa

Domande Orale Chessa

Raccolta delle domande degli orali dal vecchio forum:

2015:

Mi ha chiesto di parlare di lock,spinlock. Mi ha fatto fare una parte di un es. su wait e signal. Sullo stesso argomento mi ha chiesto quali differenze ci sono con i semafori, e come si può implementare una P ed una V su un semaforo. Mi ha chiesto inoltre di parlare un pò di tread e processi (differenze, livello utente, livello kernel, commutazione, e quant altro...).

2018:
Con me partì chiedendomi di descrivere il seguente codice:
Thread A
...
Top++
Stack[top]=y
...

Thread B
...
Z=Stack[top]
Top--
...

Quindi parlare di definizione di sezione critica. Per quale ragione potrebbe generarsi un errore semantico durante l'esecuzione etc.
Mi è stato quindi chiesto di scrivere un produttore consumatore che gestisse una sezione critica (utilizzando quindi lock e variabili di condizione).
Poi mi chiese di parlargli dello scheduling in generale, della differenza tra processi CPU-bound e I/O bound. Poi mi chiese quale algoritmo di scheduling fosse più indicato per un sistema batch.

In un altro orale mostrò la slide che conteneva la struttura di un inode e chiese di descrivere il FFS. E poi chiese la differenza tra FFS e FAT, quale dei due è migliore e perché.

-----

1) Spiegare il grafico "thread lifecycle" che prese dal file preparazione-orale disponibile sulla pagina e-learning del corso. Perchè è presente lo stato finale?
2) Parlami degli algoritmi di scheduling che conosci.

-----

Orale basato interamente sul problema dei filosofi a cena:

- Analizzare la soluzione "base", ovvero quella che fa semplicemente la lock dei bastoncini. Ho continuato mostrando una soluzione alternativa che elimina lo stallo ma, introducendo un'asimmetria, è poco efficiente (in un tavolo con 4 filosofi, teoricamente due filosofi non adiacenti possono mangiare contemporaneamente, ma con questa soluzione ci sono dei casi in cui solo uno può mangiare).
- Dopo ha esposto un'altra soluzione e mi ha chiesto di analizzarla.
Allego un pdf di qualche anno fa con una buona lista di domande (lo usa ancora molto spesso)

Mi ha un po' distrutto all'orale (ero poco preparato, e forse è più cattivo se non hai fatto i compitini ma non credo)
Domande particolarmente bloccanti:
- Scrivere produttore&consumatore con semafori, (ho sbagliato a mettere i lock sul buffer, già partito male)
- Perché la V non incrementa quando ci sono thread in attesa e differenze di design tra semafori e variabili di condizione
- Implementazione dei semafori con la spinlock, che istruzioni hardware vanno usate, cos'è "LOCK" gestito dall'hardware nel codice delle spinlock
- Cos'è la core map, differenza con la page table

Da telegram:

Save
a) spiegazione dettagliata della soluzione "too much milk", in particolare del perché è una soluzione peggiore dell'uso delle lock: motivazioni 1) il codice è asimmetrico quindi è diverso da un thread all'altro quando in realtà i due thread devono fare la stessa cosa
2) il compilatore potrebbe riordinare le istruzioni di too much milk, a differenza di quelle all'interno di lock
3)diventa molto più complicato con n thread (algoritmo di peterson)

b) funzionamento MFQ di windows, priorità, CPU/IO-bound e cosa significa, come si sale e scende di priorità e inversione di priorità

Allegati