| 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 | * ... |