IP Library Granted Patent US 9,361,156
Granted Patent B2
US 9,361,156 · App. 13/776,465 · Granted Jun 7, 2016

Adaptive partitioning for operating system

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,361,156
App. No.
13/776,465
Granted
Jun 7, 2016
Kind
B2
Abstract

An adaptive partition scheduler is a priority-based scheduler that also provides execution time guarantees (fair-share). Execution time guarantees apply to threads or groups of threads when the system is overloaded. When the system is not overloaded, threads are scheduled based strictly on priority, maintaining strict real-time behavior. When the system is overloaded, threads are scheduled based priority of threads that are in a ready state and based on the available guaranteed processor time budget of the adaptive partition associated with each thread.

Claims (26)

1. A system comprising:

a processor;

one or more memory storage units;

software code stored in the one or more memory storage units, where the software code is executable by the processor and comprises:

a plurality of adaptive partitions each having a respective guaranteed processor time budget and one or more process threads;

a plurality of process threads each having a priority and each belonging to any one of the plurality of adaptive partitions; and

a process scheduler executable by the processor configured to:

when the system is under a normal load, allocate the processor to a process thread, of the plurality of process threads, that is ready for execution and having the highest priority amongst process threads, of the plurality of process threads, that are ready for execution; and

when the system is in overload, allocate the processor to a process thread, of the plurality of process threads, that is ready for execution, having the highest priority amongst process threads, of the plurality of process threads, that are ready for execution and for which the adaptive partition having the process thread has an available guaranteed processor time budget.

2. The system of claim 1 , where the guaranteed processor time budget of each of the plurality of adaptive partitions is dynamic and can be reallocated while the system executes.

3. The system of claim 1 , where the guaranteed processor time budget is allocated and billed over successive averaging windows; and where a portion of the guaranteed processor time budget of each adaptive partition is billed when the processor is allocated to a process thread belonging to the respective adaptive partition.

4. The system of claim 3 , where the system is in overload when the processor cannot be allocated to all of the process threads that are ready for execution over the duration of one averaging window, of the successive averaging windows, and where the system is under normal load otherwise.

5. The system of claim 1 , where the process thread to which the processor is allocated runs until the process thread is finished, is blocked, or the guaranteed processor time budget of the adaptive partition having the process thread is exhausted.

6. The system of claim 1 , where the process thread to which the processor is allocated further runs until the process thread is preempted and the processor is allocated to another process thread, of the plurality of process threads, that is ready for execution and that has a priority higher than the priority of the process thread to which the processor is currently allocated.

7. The system of claim 1 , where a process thread, of the plurality of process threads, is ready for execution when the process thread is any of: in a ready state and in a ready queue.

8. A method of scheduling a plurality of process threads, each having a priority, for execution by a processor of a system, the method comprising:

creating a plurality of adaptive partitions each having a respective guaranteed processor time budget;

assigning one or more process threads from the plurality of process threads to each of the plurality of adaptive partitions;

when the processor is under a normal load, allocating the processor to a process thread, of the plurality of process threads, that is ready for execution and having the highest priority amongst process threads, of the plurality of process threads, that are ready for execution; and

when the processor is in overload, allocating the processor to a process thread, of the plurality of process threads, that is ready for execution, having the highest priority amongst process threads, of the plurality of process threads, that are ready for execution state and for which the adaptive partition having the process thread has an available guaranteed processor time budget.

9. The method of claim 8 , where the guaranteed processor time budget of each of the plurality of adaptive partitions is dynamic and can be reallocated while the system executes.

10. The method of claim 8 , where the guaranteed processor time budget is allocated and billed over successive averaging windows; and where a portion of the guaranteed processor time budget of each adaptive partition is billed when the processor is allocated to a process thread belonging to the adaptive partition.

11. The method of claim 10 , where the system is in overload when the processor cannot be al located to all of the process threads that are ready for execution over the duration of one averaging window, of the successive averaging windows, and where the system is under normal load otherwise.

12. The method of claim 8 , where the process thread to which the processor is allocated runs until the process thread is finished, is blocked, or the guaranteed processor time budget of the adaptive partition having the process thread is associated is exhausted.

13. The method of claim 8 , where the process thread to which the processor is allocated further runs until the process thread is preempted and the processor is allocated to another process thread, of the plurality of process threads, that is ready for execution and that has a priority higher than the priority of the process thread to which the processor is currently allocated.

14. The method of claim 8 , where a process thread, of the plurality of process threads, is ready for execution when the process thread is any of: in a ready state and in a ready queue.

Assignments (10)
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064270/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064104/0103 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2020
From: 2236008 ONTARIO INC.
To: BLACKBERRY LIMITED
Reel/Frame 053313/0315 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2014
From: 8758271 CANADA INC.
To: 2236008 ONTARIO INC.
Reel/Frame 032607/0674 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2014
From: QNX SOFTWARE SYSTEMS LIMITED
To: 8758271 CANADA INC.
Reel/Frame 032607/0943 →
CHANGE OF NAME Recorded Aug 13, 2013
From: QNX SOFTWARE SYSTEMS
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 031013/0111 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 13, 2013
From: DODGE, DAN; DANKO, ATTILLA; MARINEAU-MES, SEBASTIEN; VAN DER VEEN, PETER; BURGESS, COLIN; FLETCHER, THOMAS; STECHER, BRIAN
To: QNX SOFTWARE SYSTEMS
Reel/Frame 031001/0113 →
CHANGE OF ADDRESS Recorded Aug 13, 2013
From: QNX SOFTWARE SYSTEMS LIMITED
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 031013/0152 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 13, 2013
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: 7801769 CANADA INC.
Reel/Frame 031001/0309 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 13, 2013
From: 7801769 CANADA INC.
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 031001/0386 →