Check out the new USENIX Web site. next up previous
Next: Resource Container Scheduler Framework Up: The RCLinux Resource Container Previous: Resource Container Data Structures


Global Data Structures

To fully characterise a system-level resource container abstraction, we need additional global variables such as:

1. rc_root: This is the root container. All the resources in the system are allocated to the root container and hence to the hierarchy rooted here. Any container or task that has to get a resource has to be in the tree rooted here.

2. rc_system: This container is used to charge all the processing that could not be directly associated with any container (eg. network processing for a packet that is not destined to any of the processes). This container is not part of the hierarchy rooted at rc_root. The statistics information in this container can be used by the system administrators to monitor the system.

3. rc_pool: Pool of resource containers from where a resource container structure is allocated. When a resource container is freed, the resource container structure is returned to the pool.

4. class_lastrun: When a task of higher class becomes runnable, it preempts the currently running task. When the task of higher class is no longer runnable, then we have to restart the scheduling with the container where we had left off. This value is stored in class_lastrun array. If the element of class_lastrun that corresponds to the highest runnable class is NULL, the scheduling starts from root.

5. rc_current: This points to the currently chargeable container. This cannot be taken as the container to which the currently running task is bound, since we are providing a facility for the task to change its binding on the fly through a system call and during the call there is a change.


next up previous
Next: Resource Container Scheduler Framework Up: The RCLinux Resource Container Previous: Resource Container Data Structures
Mansoor Alicherry 2001-05-01