Claims
- 1. A virtual queue method for allocating tasks by a dispatcher algorithm to switching queues of individual processors in a multiprocessor computer system, said method comprising;
a) allowing a user to establish priority for tasks to be allocated to individual processor switching queues, b) placing a value, indicating a priority for each said task queued for an said individual processor for on said individual processor switching queues, said value being associated with said user established priority, c) placing a reference for a highest priority task of said each task having a queued value on said individual processor switching queue, from each said individual processor switching queue onto a virtual queue, d) at a time a given processor is ready to perform a task, searching said virtual queue for a said reference for any tasks which may have a higher priority than any priority value that currently exists on said given processor's individual processor switching queue, and e) if a task reference on said virtual queue has a higher priority than task priority values existing on said given processor's individual processor switching queue, plucking said task from said virtual queue and, running said plucked task on said given processor, else, if no task reference on said virtual queue has a higher priority than at least one task priority on said given processor's individual processor switching queue, running a one of said at least one tasks from said given processor's individual processor switching queue.
- 2. The method of claim 1 wherein said given processor may be any one of all individual processors used by said multiprocessor computer system and wherein said virtual queue is accessed to determine if a higher priority task has been placed thereon by said all individual processors.
- 3. The method of claim 1 wherein the decision step e) requires an additional decision to determine if a second processor which has a task on said virtual queue that has higher priority than a task on said given processor's individual switching queue is one that said given processor is entitled to pluck from, and if said second processor is not one said given processor is entitled to pluck from, then said decision step e) performs the task identified in the else statement.
- 4. The method of claim 3 wherein said additional decision is determined with reference to a buddy mask.
- 5. The method of claim 3 wherein said additional decision is determined with reference to a steal-from mask.
- 6. The method of claim 1 wherein when a task is created the method comprises the additional step;
f) determining if a newly created task is a part of a predetermined dedicated Data Sharing Group, if yes, setting a stealable mask for said newly created task to allow stealing by any processor in its assigned cache neighborhood based on the stealable mask parameters related to said predetermined dedicated Data Sharing Group, or if no, setting a stealable mask for said newly created task to allow stealing by any cache neighborhood.
- 7. The method of claim 1 further comprising, each time a user applies a dedication list, updates a dedication list or a processor configuration changes in a multiprocessor computer system employing the method of claim 1:I. for each dedication to a Data Sharing Group in the list, finding the highest-numbered non-exclusive cache neighborhood which satisfies said dedication's requirements creating a steal-from mask for this found cache neighborhood, indicating this Data Sharing Group's dedication, II. after I. Is complete, creating a system-wide steal-from mask for non-dedicated cache neighborhoods.
- 8. The method of claim 7 wherein part I further comprises;
indicating if said Data Sharing Group is exclusive or if non dedicated tasks are permitted to run in this Data Sharing Group's cache neighborhood and wherein said part II. further comprises
for each processor not in an exclusive assignment, setting said each not in an exclusive assignment processor's steal-from mask to that of the non-exclusively assigned neighborhood.
- 9. A data structure for handling user specification of parameters identifying Data Sharing groups used to specify how tasks within a said Data Sharing Group are allocated from a virtual switching queue by a dispatcher algorithm in a multiprocessor computer system, said data structure comprising;
a structure for each set of applications related within a Data Sharing Group having a Data Sharing Group ID with each task sharing said Data Sharing Group ID being a member within a Data Sharing Group ID membership list, wherein each member on said membership list has an Entity Type identifier and an Entity ID, and wherein
each Data Sharing Group ID has a place on a List of Dedications, each Data Sharing Group ID on said List of Dedications further having a list of dedication parameters employable by said operating system to allocate processor resources within said multiprocessor computer system.
- 10. The data structure of claim 9 wherein said list of additional dedication parameters comprises at least one of the following parameters;
Switching Queue ID, Processing Power, Exclusive Assignment, Undedicated Work Permitted, Overload Threshold, Overload Notification Required.
- 11. A multiprocessor OS for processing new tasks having a virtual switching queue, and individual processor switching queues for each individual processor, wherein a task scheduler on the creation of each new task is for placing a reference on an individual processor switching queue and for placing a reference from a highest priority task from each said individual processor switching queue onto said virtual queue.
- 12. A data structure for handling task scheduling for a multiprocessor OS comprising an individual switching queue corresponding to each individual processor, having a holder for a reference to each task placed onto said individual switching queues, and having a virtual switching queue having a list for holding a highest priority reference from each said individual switching queue, such that said list holds all highest priority tasks awaiting processing by a processor.
RELATED APPLICATIONS
[0001] This is related to patent application Ser. Nos. ______ and ______ (filed on even date herewith and having Attorney Docket Numbers RA5439 and RA5551) which have substantially the same disclosure but claim different inventions. These different inventions solve related problems in different ways, but they are incorporated herein by this reference.