Changes between Version 11 and Version 12 of AppuntiPhase2


Ignore:
Timestamp:
Jun 29, 2006, 4:40:56 PM (18 years ago)
Author:
soujak
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AppuntiPhase2

    v11 v12  
    1 = Appunti sullo sviluppo di Phase 2 =
     1= Architecture =
     2
     3= Design =
    24== [Scheduler] ==
    35Si e' scelto di rendere il piu' modulare possibile lo scheduler, distinguendo la specifica azione di scheduling, intesa come il calcolo del nuovo processo da mandare in esecuzione e del relativo tempo da assegnargli, dalla piu' generica azione di dispatching, intendendo il complesso delle attivita' che sono invece proprie della struttura di Phase 2.
    46Si sono quindi definiti i confini della capsula che lo avvolge, oscurando i dettagli implementativi al suo interno e al contempo palesare l'interfaccia verso l'esterno, al fine di poter favorirne l'adattabilita'.
    5 
    6 Non sarebbe una cattiva idea confinare lo scheduler in un modulo tutto suo, magari spostando l'incarto che al momento lo avvolge all'interno del codice di gestione dell'interrupt 2.
     7Non sarebbe una cattiva idea confinare lo scheduler in un modulo tutto suo: fatto
    78
    89[TODO]: descrizione accurata delle interfacce
     10
     11= Hacks =
    912
    1013== [CPU Timing] ==
     
    4548}}}
    4649
    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 * ...