47 | | === Varie ed eventuali === |
48 | | Prima di fare passeren si dovra' chiamare `dsp_markSleep(procCurr)` e poi `dispatcher()`. |
| 50 | === Butta'ti qui === |
| 51 | * Interval timer: doppio uso sia per preemption che per la chiamata di sistema |
| 52 | dello pseudo clock. |
| 53 | * come distinguere? il sistema di crediti risolve questo problema e al contempo |
| 54 | garantisce fairness nella lunghezza dei quanti; i crediti fanno parte della |
| 55 | interfaccia del dispatcher e lo scheduler ne e' informato. |
| 56 | * dsp_play/pause per l'accounting dei tempi di CPU |
| 57 | * modularita' dello scheduler/dispatcher, variabili interne protette dall'uso |
| 58 | diretto dall'esterno |
| 59 | * descrizione della specifica implementazione dei semafori, che modificano |
| 60 | l'intero solo in caso di necessita' |
| 61 | * passup ottimizzato: la discesa fra i gestori avviene in modo canonico, la |
| 62 | risalita e' immediata. l'aggiornamento del pc per permettere il corretto |
| 63 | ritorno viene eseguito all'interno dello stato |
| 64 | * modularizzazione dello scheduler, completamente indipendente dal dispatcher |
| 65 | e parametrizzato in modo tale da permettere cambi di politica e/o meccanismi |
| 66 | durante la compilazione |
| 67 | * Phase 2 non smanetta robe di Phase 1 |
| 68 | * descrivere le invarianti che assunte all'inizio dell'esecuzione di dispatcher: |
| 69 | procCurr == NULL -> nessuno in esecuzione |
| 70 | '-> crediti == 0 |
| 71 | procCurr non e' in ready queue |
| 72 | * interrupt handling: ACK anche per errori ragionevoli |
| 73 | * ... |