Processor resource distributor and method
AssigneeEquator Technologies, Inc.
InventorMiche Baker-Harvey
Life of this patent
Estimating the term…
Abstract
A device and method for distributing time available on a processor among two or more alternative tasks or threads and scheduling their execution. Each of the tasks specifies multiple levels of time usage on the process under which it can operate, including a best quality of service which uses the most time and a minimal quality of service which uses the least time. The invented system and method guarantees that each task will always be able to run at least its minimal quality of service and includes methods for obtaining optimal quality of service from all of the tasks.
Claims51
A method in a computer system for admitting tasks to be performed on a processor, comprising:
- (a) receiving requests for execution on said processor from at least three tasks each having at least a respective high level of use of time on said processor, the respective high use level providing a high quality of performance of the respective task, and at least two of said tasks each having a respective low level of use of time on said processor, the respective low use level providing a low quality of performance of the respective task;
- (b) admitting for processing at least two but not all of said tasks, including at least one of said tasks having a respective low use level, the admitted tasks selected such that the sum of their respective low use levels does not exceed the total time available on said processor and such that there is insufficient unused time on said processor to admit any one of the remaining tasks at its respective low use level;
- and
- (c) excluding from admission for processing said remaining tasks.
A method in a computer system for a processor resource distributor to assign processor time to tasks comprising:
- (a) receiving for each of two or more tasks requests for processor time, at least one of said requests including specification of two or more levels of processor use for a bi-level task associated with said request, each of said two or more levels specified by a cycle duration for division of real time and, for each cycle duration, specification of a portion of each cycle to be allocated to said bi-level task;
- and
- (b) allocating processor time to each of said two or more tasks based on said requests and allocating processor time for said bi-level task by selecting one of said specified cycle durations and portions of each cycle.
A method in a computer system for adjusting allocation of time on a processor between at least two tasks, comprising:
- (a) dividing time on said processor into a series of is periods, commencing execution on said processor of a first task, and allocating to said first task a portion of each of said first periods;
- (b) dividing time on said processor into a series of second periods which may or may not be the same as said series of first periods, commencing execution on said processor of a second task at a high level of use during each of said second periods, said high level providing a high quality of performance of said second task, said second task also being capable of executing at a low level of use during said second periods, said low level using less processor time than said high level and providing a lower quality of performance than said high level, and allocating to said second task a portion of each of said second periods;
- and
- (c) if said first task requires more processor time in one of the first periods than the processor time allocated to it, switching said second task to its low level of use and reallocating at least a portion of the time on said processor which is thereby made available to said first task.
A method in a computer system for adjusting use of time on a processor by a task, comprising:
- (a) dividing time on said processor into a series of periods;
- (b) commencing execution on said processor of a task executing at a high level of use of time on said processor, said high level providing a high quality of performance of said task, said task also being capable of executing at a low level of use of time on said processor, said low level using less processor time than said high level and providing a lower quality of performance than said high level;
- (c) allocating to said task a portion of each of said periods;
- and
- (d) if said task requires more processor time in a period than the processor time allocated to it, switching said task to its low use level.
A method in a computer system for adjusting use of time on a processor by a task, comprising:
- (a) dividing time on said processor into a series of periods;
- (b) commencing execution on said processor of a first task executing at a high level of use of time on said processor, said high level providing a high quality of performance of said first task, said first task also being capable of executing at a low level of use of time on said processor, said low level using less processor time than said high level and providing a lower quality of performance than said high level;
- (c) allocating to said first task a portion of each of said periods;
- (d) commencing execution on said processor of a second task executing at a high level of use of time on said processor, said high level providing a high quality of performance of said second task, said second task also being capable of executing at a low level of use of time on said processor, said low level using less processor time than said high level and providing a lower quality of performance than said high level;
- and,
- (e) if said first task requires more processor time in a period than
- the processor time allocated to it, switching said second task to its low level of use rather than switching said first task to its low level of use based on a previously made selection that, in the event that said first task requires more processor time than the processor time allocated to it, said second task will be switched to its low use level rather than said first task.
A computer readable medium containing a computer program which, when run in a computer system, causes the system to perform the following method for admitting tasks to be performed on a processor:
- (a) receiving requests for execution on said processor from at least three tasks each having at least a respective high level of use of time on said processor, the respective high use level providing a high quality of performance of the respective task, and at least two of said tasks each having a respective low level of use of time on said processor, the respective low use level providing a low quality of performance of the respective task;
- (b) admitting for processing at least two but not all of said tasks, including at least one of said tasks having a respective low use level, the admitted tasks selected such that the sum of their respective low use levels does not exceed the total time available on said processor and such that there is insufficient unused time on said processor to admit any one of the remaining tasks at its respective low use level;
- and
- (c) excluding from admission for processing said remaining tasks.
A computer readable medium containing a computer program which, when run in a computer system, causes the system to perform the following method for a processor resource distributor to assign processor time to tasks:
- (a) receiving for each of two or more tasks requests for processor time, at least one of said requests including specification of two or more levels of processor use for a bi-level task associated with said request, each of said two or more levels specified by a cycle duration for division of real time and, for each cycle duration, specification of a portion of each cycle to be allocated to said bi-level task;
- and
- (b) allocating processor time to each of said two or more tasks based on said requests and allocating processor time for said bi-level task by selecting one of said specified cycle durations and portions of each cycle.
A computer readable medium containing a computer program which, when run in a computer system, causes the system to perform the following method for adjusting allocation of time on a processor between at least two tasks:
- (a) dividing time on said processor into a first series of periods, commencing execution on said processor of a first task, and allocating to said first task a portion of each of said periods of said first series;
- (b) dividing time on said processor into a second series of periods which may or may not be the same as said first series of periods, commencing execution on said processor of a second task executing at a high level of use during each of said periods of said second series, said high level providing a high quality of performance, said second task also being capable of executing at a low level of use during said second periods, said low level using less processor time than said high level and providing a lower quality of performance than said high level, and allocating to said second task a portion of each of said periods of said second series;
- and
- (c) if said first task requires more processor time in a period of said first series than the processor time allocated to it, switching said second task to its low level of use and reallocating at least a portion of the time on said processor which is thereby made available to said first task.
A computer readable medium containing a computer program which, when run in a computer system, causes the system to perform the following method for adjusting use of time on a processor by a task:
- (a) dividing time on said processor into a series of periods;
- (b) commencing execution on said processor of a task executing at a high level of use of time on said processor, said high level providing a high quality of performance, said task also being capable of executing at a low level of use of time on said processor, said low level using less processor time than said high level and providing a lower quality of performance than said high level;
- (c) allocating to said task a portion of each of said periods;
- and
- (d) if said task requires more processor time in a period than the processor time allocated to it, switching said task to its low use level.
A computer readable medium containing a computer program which, when run in a computer system, causes the system to perform the following method for adjusting use of time on a processor by a task:
- (a) dividing time on said processor into a series of periods;
- (b) commencing execution on said processor of a first task executing at a high level of use of time on said processor, said high level providing a high quality of performance of said first task, said task also being capable of executing at a low level of use of time on said processor, said low level using less processor time than said high level and providing a lower quality of performance than said high level;
- (c) allocating to said first task a portion of each of said periods;
- (d) commencing execution on said processor of a second task executing at a high level of use of time on said processor, said high level providing a high quality of performance for said second task, said second task also being capable of executing at a low level of use of time on said processor, said low level using less processor time than said high level and providing a lower quality of performance than said high level for said second task;
- and,
- (e) if said first task requires more processor time in a period than the processor time allocated to it, switching said second task to its low level of use rather than switching said first task to its low level of use based on a previously made selection that, in the event that said first task requires more processor time than the processor time allocated to it, said second task will be switched to its low use level rather than said first task.
A device in a computer system for admitting tasks to be performed on a processor, comprising:
- (a) means for receiving requests for execution on said processor from at least three tasks each having at least a respective high level of use of time on said processor, the respective high use level providing a high quality of performance of the respective task, and at least two of said tasks each having a respective low level of use of time on said processor, the respective low use level providing a low quality of performance of the respective task;
- (b) means for admitting for processing at least two but not all of said tasks, including at least one of said tasks having a respective low use level, the admitted tasks selected such that the sum of their respective low use levels does not exceed the total time available on said processor and such that there is insufficient unused time on said processor to admit any one of the remaining tasks at its respective low use level;
- and
- (c) means for excluding from admission for processing said remaining tasks.
A processor resource distributor in a computer system which assigns processor time to tasks comprising:
- (a) means for receiving for each of two or more tasks requests for processor time, at least one of said requests including specification of two or more levels of processor use for a bi-level task associated with said request, each of said two or more levels specified by a cycle duration for division of real time and, for each cycle duration, specification of a portion of each cycle to be allocated to said bi-level task;
- and
- (b) means for allocating processor time to each of said two or more tasks based on said requests and allocating processor time for said bi-level task by selecting one of said specified cycle durations and portions of each cycle.
A device in a computer system for adjusting allocation of time on a processor between at least two tasks, comprising:
- (a) means for dividing time on said processor into a first series of periods, commencing execution on said processor of a first task, and allocating to said first task a portion of each of said periods of said first series;
- (b) means for dividing time on said processor into a second series of periods which may or may not be the same as said first series of periods, commencing execution on said processor of a second task executing at a high level of use during each of said second periods, said high level providing a high quality of performance of said second task, said second task also being capable of executing at a low level of use during said periods of said second series, said low level using less processor time than said high level and providing a lower quality of performance than said high level, and allocating to said second task a portion of each of said periods of said second series;
- and
- (c) means for, if said first task requires more processor time in a period of said first series than the processor time allocated to it, switching said second task to its low level of use and reallocating at least a portion of the time on said processor which is thereby made available to said first task.
A device in a computer system for adjusting use of time on a processor by a task, comprising:
- (a) means for dividing time on said processor into a series of periods;
- (b) means for commencing execution on said processor of a task executing at a high level of use of time on said processor, said high level providing a high quality of performance of said task, said task also being capable of executing at a low level of use of time on said processor, said low level using less processor time than said high level and providing a lower quality of performance than said high level;
- (c) means for allocating to said task a portion of each of said periods;
- and
- (d) means for, if said task requires more processor time in a period than the processor time allocated to it, switching said task to its low use level.
A device in a computer system for adjusting use of time on a processor by a task, comprising:
- (a) means for dividing time on said processor into a series of periods;
- (b) means for commencing execution on said processor of a first task executing at a high level of use of time on said processor, said high level providing a high quality of performance of said first task, said first task also being capable of executing at a low level of use of time on said processor, said low level using less processor time than said high level and providing a lower quality of performance than said high level;
- (c) means for allocating to said first task a portion of each of said periods;
- (d) means for commencing execution on said processor of a second task executing at a high level of use of time on said processor, said high level providing a high quality of performance to said second task, said second task also being capable of executing at a low level of use of time on said processor, said low level using less processor time than said high level and providing a lower quality of performance than said high level;
- and,
- (e) means for, if said first task requires more processor time in a period than the processor time allocated to it, switching said second task to its low level of use rather than switching said first task to its low level of use based on a previously made selection that, in the event that said first task requires more processor time than the processor time allocated to it, said second task will be switched to its low use level rather than said first task.
Dependencies are inferred from the claim text.