14 | | Chi si preoccupa di tenere traccia dell'uso diretto e' lo stesso dispatcher, che fara' un timestamp prima del caricamento del pcb, e, una volta reinvocato per la successiva ri-schedulazione, calcolera' la differenza. |
| 14 | Chi si preoccupa di tenere traccia dell'uso diretto e' lo stesso dispatcher, che fara' un timestamp prima del caricamento del pcb, e, una volta reinvocato per la successiva ri-schedulazione, calcolera' la differenza. Nel caso di uso indiretto, il compito e' ripartito fra i gestori delle eccezioni: essi addebiteranno il proprio tempo di esecuzione al processo chiamante (procCurr) nel caso di syscall, trap e breakpoint, oppure al processo realmente interessato nel caso di interrupt; in questo ultimo scenario l'identificazione dell'interessato avviene al momento di verhogen-are un semaforo. |
16 | | Nel caso di uso indiretto, il compito e' ripartito fra i gestori delle eccezioni: essi addebiteranno il proprio tempo di esecuzione al processo chiamante (procCurr) nel caso di syscall, trap e breakpoint, oppure al processo realmente interessato nel caso di interrupt; in questo ultimo scenario l'identificazione dell'interessato avviene al momento di verhogen-are un semaforo. |
| 16 | Problema: cosi' facendo l'uso diretto comprenderebbe anche la parte di uso indiretto relativo all'interrupt handling. |
| 17 | |
| 18 | Chi si fa carico del calcolo di accounting e' il dispatcher, |
| 19 | |
| 20 | |
| 21 | {{{ |
| 22 | Dispatcher Process1 Proces2 Syscall Interrupt |
| 23 | ___ |
| 24 | |> 1 |. . . . . . . |
| 25 | | |
| 26 | | |
| 27 | | |
| 28 | |. . . . . . . . . . . |
| 29 | | |
| 30 | | |
| 31 | | |
| 32 | || 1 wait I/O |
| 33 | |
| 34 | |. . . . . . . . . . . . . |
| 35 | |> 2 | |
| 36 | | |
| 37 | | |
| 38 | || 2 |. . . . . . . . . . . end I/O |
| 39 | |> 1 | |
| 40 | | |
| 41 | | |
| 42 | || 1 wait CPU |
| 43 | |
| 44 | |
| 45 | |
| 46 | |
| 47 | || CPUTIME += TOD - lastTOD |
| 48 | |
| 49 | |> lastTOD = TOD |
| 50 | |
| 51 | |
| 52 | }}} |