Scheduler
The management of the module address spaces is a key role of the kernel. The other key role is the scheduling
of the URI requests between components.
The scheduler is responsible for receiving, resolving and issuing requests against URI interfaces. Requests
may be synchronous or asynchronous. The scheduler assigns Java threads to execute a request in an Accessor.
It minimizes the total thread count necessary to perform complex processes. To minimize context-switches,
where possible, it allocates jobs in a process to a common thread.
The scheduler also monitors for
thread-starvation and deadlock situations and attempts to resolve these either by boosting thread count
or interrupting a job, respectively. It is possible to run some classes of concurrently executing
processes on NetKernel with just a single Java thread.