Laboratorio Software: Novità

Quest'area è dedicata agli aggiornamenti relativi al corso di Laboratorio Software.

Risultati del compito del 02/07/2008

I risultati del compito di stamattina sono in bacheca al DEI. Tutti i voti sono fra il 18 e il 23.

Registro la settimana prossima.

Risultati del compito del 13/02/2008

Ho (finalmente!) corretto i compiti. Non sono andati bene. La media dei voti (senza contare quelli sotto il 18) e' attorno al 22, e ci sono solo un 30 e un 28. Trovate i voti, al solito, in bacheca (a partire da domani mattina).

Alcune note sugli errori piu' comuni:

  • Nel primo esercizio (tutto sommato quello andato meglio), molti non si sono accorti che, ad ogni ciclo, se sono in esecuzione i processi Pi, i>4, il Response Ratio di questi processi non cresce, quindi, trovato questo RR, basta risolvere RR = (Tw+Te)/Te per i processi di durata non unitaria rispetto a Tw per trovare il ciclo nel quale partira' il prossimo processo Pi con i< =4.
  • Molti non hanno svolto il secondo esercizio, nonostante si tratti di una costruzione molto semplice (al limite, basta un mutex, dato che non si chiedeva di implementare anche le condition variable).
  • Nel quarto esercizio, i soliti errori: eseguire exec nel processo principale, oppure in un thread figlio del processo principale, porta alla sostituzione del processo stesso, e quindi non e' piu' possibile tornare alla shell. Molti errori anche nell'uso della funzione strtok.

Visione compiti e soluzioni

Potete passare a vedere il compito giovedi' mattina (7/2).

Per quanto riguarda le soluzioni dei due esercizi:

  • Q1 chiede di partire da uno stato (potete verificare che e' safe), e verificare la soddisfacibilita' di due richieste. La prima non e' soddisfacibile (potete verificare che nessun processo puo' terminare), pertanto l'esecuzione di P1 viene sospesa, e lo stato rimane invariato. A questo punto, la seconda richiesta puo' essere soddisfatta.
  • Q4 e' una rivisitazione del noto problema dei fumatori di sigarette; notate che il testo chiedeva di risolvere il problema usando i processi (e di conseguenza i semafori System V).

Voti Appello 29/01/2008

Trovate in bacheca i voti del primo appello. Non è andato benissimo, ma tutto sommato il 77% dei partecipanti ha superato l'esame, con un voto medio pari a 20.

Domanda Media Massimo Rapporto
Q1 3.95 6 66%
Q2 4.3 5 86%
Q3 2.7 5 54%
Q4 7.4 16 46%

Come si vede dalla tabella, l'algoritmo del banchiere, nonostante compaia quasi sempre negli ultimi compiti, non è chiaro a molti. I monitor vanno anche peggio, probabilmente perchè sono stati poco presenti negli ultimi temi d'esame.

Si conferma il trend negativo dell'ultimo esercizio, nonostante fosse molto semplice. La grande maggioranza dei partecipanti ha ignorato il testo (che parlava di processi) ed ha implementato una soluzione basata su thread. In media, questo ha pesato per 4 punti su 16.

Molte soluzioni risultano inoltre inutilmente appesantite – ad esempio, nella generazione delle coppie casuali: nel caso in esame, bastava scegliere l'elemento escluso dalla coppia, invece di estrarne due e verificare che non si trattasse dello stesso.

· 2008/02/01 16:24 · Giovanni Agosta

Voti Preappello 12/12/2007

Ho finito la correzione del compito del 12/12. Trovate i voti nella bacheca I-M in dipartimento.

Non metto i voti su internet a causa di normative contraddittorie (non posso mettere i voti su internet associati a nomi e cognomi, e, d'altra parte, gli esami sono pubblici).

Chi volesse vedere il compito può passare da me giovedì (17/1) mattina dalle 10 alle 12.

Giudizio Sintetico

Su 54 compiti consegnati (ritirati esclusi) ce sono 15 sotto la soglia di sufficienza (17 – tutti i voti compresi fra 17 e 18 compaiono come 18). Nessuno di questi, peraltro, va oltre il 15,5.

I mezzi punti sono stati arrotondati all'intero superiore. La suddivisione dei punteggi per esercizio è stata la seguente:

  • Q1: 5
  • Q2: 5
  • Q3: 6
  • Q4: 16

La media dei voti sufficienti è circa 22. Le medie per esercizio sono distribuite in questo modo:

Esercizio MediaMaxRapporto
Q1 3.6 5 72%
Q2 4 5 81%
Q3 4.6 6 76%
Q4 6.3 16 39%

Ne possiamo concludere che, tutto sommato, la parte teorica è stata studiata, anche se non perfettamente compresa. Il risultato non perfetto della terza domanda è probabilmente da attribuirsi al fatto che molti non hanno studiato i dettagli delle primitive System V, o hanno risposto in modo troppo generale.

Nella parte pratica, invece, ci sono notevoli carenze. L'esercizio di per sè non era particolarmente complesso: si trattava di gestire la mutua esclusione nell'attribuzione delle piste. Le due varianti, molto simili, richiedevano un minimo di coordinamento, i.e., fare sì che i thread-aereo evitassero di mettersi in competizione in presenza di thread con priorità maggiore.

Principali errori

Ecco una lista dei principali errori riscontrati nella correzione:

  • Q1: la richiesta deve essere eseguita o rifiutata (il 72% della prima domanda è interamente dovuto ad un 50% di persone che hanno sbagliato questo punto).
  • Q2: nessuno in particolare, molti hanno omesso le 4 condizioni o l'esempio, oppure non hanno trattato la detection; tenete conto che la detection si può fare sia con l'analisi del grafo in sistemi con molteplicità 1 per ciascuna risorsa sia con metodi affini all'algoritmo del banchiere.
  • Q3: la richiesta era esplicitamente di trattare 2 fra semafori System V, memoria condivisa e message queue; trattandosi di una domanda relativa alle esercitazioni, sarebbe stato utile trattare anche i dettagli tecnici.
  • Q4: molti errori concettuali, fra cui:
    • Mischiare costrutti relativi a processi e thread;
    • Svolgere tutta la computazione in mutua esclusione;
    • Eseguire un'attesa (wait su semaforo) all'interno di una sezione critica;
    • Eseguire una attesa, ma non rilasciare la risorsa;
teaching/labsw/blog.txt · Last modified: 2007/09/13 16:49 by agosta
Recent changes RSS feed Creative Commons License Donate Driven by DokuWiki