Documentation for Ubix Scheduler.
Definitions:
Task - In Ubix, a task is a group of instructions to run on the processor. Typically, this is in the form of a program THREAD.
Process - A grouping of one or more tasks, usually loaded from an executable file. All of the tasks in a process will share the same ADDRESS SPACE. When a process is created, it will initially contain one task.
Thread - Term used in unix environments to describe an Ubix TASK.
Address Space - Section of virtual memory to which a task has access to.
Priority - Importance placed on a task when the scheduler chooses a task to run. There are two different types of priority in Ubix. A static priority is given when a task is created. In addition, a task contains a dynamic priority which is usually the same as the static priority. At times, such as to prevent priority inversion or to minimize the running of a CPU hogging task, this dynamic priority is changed. Ubix will implement 32 different priorities, 31 being the highest priority and 0 being the lowest.
State - Every task has a state that it can be in. Also, processes have a state but there are fewer states that a process can be running in. States are:
STARTING - The task or process is in the process of being created. Memory for it is being allocated.
READY - The task or process is set to be scheduled for execution.
RUNNING - The task or process is currently being run. Once a process is first run after being started, it remains in the RUNNING state.
SUSPEND - The scheduler has stopped the execution of the task or process to do some housekeeping work.
SLEEP - (Task specific) A task has requested to be stopped for a period of time.
BLOCK - (Task specific) A task is being stopped on a syncronization device, such as a mutex or semaphore.
REPLY - (Task specific) A task has sent a syncronious message and is waiting for the response.
WAIT - (Task specific) A task is listening for messages from other tasks.
JOIN - (Task specific) A task is waiting for another task to complete.
EXITING - The task or process is done and waiting for the scheduler to complete its housekeeping tasks.