start a page to collect technical notes about Scheduler and Jobs (Backend)

Signed-off-by: Ichthyostega <prg@ichthyostega.de>
This commit is contained in:
Fischlurch 2011-05-22 00:50:23 +02:00
parent 7d66571e54
commit 51b3f0defa
2 changed files with 42 additions and 1 deletions

View file

@ -1,8 +1,9 @@
Technical Documentation: Backend
================================
Eventually, this will have technical documentation for the Backend.
Here we collect bits of technical documentation for the Backend.
For now, we have:
* link:ConfigLoader.html[Config Loader brainstorming from 2008]
* link:scheduler.html[Scheduler and Jobs]

View file

@ -0,0 +1,40 @@
Scheduler and Job handling
==========================
The purpose of the _Scheduler_ is to run small self contained _Jobs_
ordered by priority and observing specific timing constraints.
Scheduler implementation ideas
------------------------------
Use multiple priority queues
- background work
- foreground high-priority
- soft-realtime actions
About Jobs
----------
A job is a closure to run a small and limited action or operation, which
in itself _should not block_. Job may depend on each other and on resources
to be provided. A job may be conained in multiple queues and may be marked
as _canceled_ -- in which case the job function will never run and the job
will be discarded on occasion.
Job States
~~~~~~~~~~
[source,C]
--------------
enum job_state
{
done, // already done, nothing to do
running, // job is running
waiting, // waits for some resource (annother job)
rejected, // sorry, cant do that dave, time will run out
expired, // time expired
aborted // got aborted
}
--------------