The present invention provides predictable scheduling of programs using a
repeating precomputed schedule. In a preferred embodiment, a scheduler
accesses an activity scheduling graph. The activity scheduling graph is
comprised of nodes each representing a recurring execution interval, and
has one root, one or more leaves, and at least one path from the root to
each leaf. Each node is on at least one path from the root to a leaf, and
the number of times the execution interval represented by each node occurs
during the traversal of the graph is equal to the number of paths from the
root to a leaf that the node is on. Each node has associated with it an
execution interval length, and is adapted to being dedicated to executing
the threads of a single activity. The scheduler first selects a current
node within the accessed scheduling graph. When the processor becomes
available to execute threads, the scheduler advances from the current node
to a new current node in accordance with a root-to-leaf traversal of the
scheduling graph. After advancing to the new current node, the scheduler
executes one or more threads of the activity to which the new current node
is dedicated for the execution interval length associated with the new
current node. In a further preferred embodiment, the scheduler allocates
specific iterations through specific nodes to satisfy the constraints
submitted by threads.
La presente invenzione fornisce la programmazione prevedibile dei programmi che usando ripetere precomputed il programma. In un metodo di realizzazione preferito, un programmatore accede ad un grafico di programmazione di attività. Il grafico di programmazione di attività è contenuto i nodi ciascuno che rappresenta un intervallo di ricorso di esecuzione ed ha una radice, uno o più fogli ed almeno un percorso dalla radice ad ogni foglio. Ogni nodo è almeno su un percorso dalla radice ad un foglio ed il numero di volte che l'intervallo di esecuzione rappresentato da ogni nodo si presenta durante il traversal del grafico è uguale al numero di percorsi dalla radice ad un foglio che il nodo è sopra. Ogni nodo ha associato con esso una lunghezza di intervallo di esecuzione ed è adattato alla dedicazione ad eseguire i filetti di singola attività. Il programmatore in primo luogo seleziona un nodo corrente all'interno del grafico di programmazione raggiunto. Quando il processor diventa disponibile per eseguire i filetti, il programmatore avanza dal nodo corrente ad un nuovo nodo corrente in conformità con un radice-$$$-FOGLIO traversal del grafico di programmazione. Dopo avere avanzato al nuovo nodo corrente, il programmatore esegue uno o più filetti dell'attività a cui il nuovo nodo corrente è dedicato per la lunghezza di intervallo di esecuzione connessa con il nuovo nodo corrente. In un metodo di realizzazione preferito più ancora, il programmatore assegna le ripetizioni specifiche con i nodi specifici per soddisfare i vincoli presentati dai filetti.