IP Library Granted Patent US 8,387,052
Granted Patent B2
US 8,387,052 · App. 11/216,795 · Granted Feb 26, 2013

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 8,387,052
App. No.
11/216,795
Granted
Feb 26, 2013
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. Even when overloaded, the scheduler provides real-time guarantees to a set of critical threads, as specified by the system architect.

Claims (34)

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 an associated guaranteed processor time budget and dynamically associable with one or more process threads;

a plurality of process threads each having a priority and each dynamically associable with any one of the plurality of adaptive partitions;

one or more process threads of the plurality of process thread designated as critical threads;

one or more critical processor time budgets, each associated with 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 in a ready state and having the highest priority amongst process threads, of the plurality of process threads, that are in the ready state;

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

when the system is in overload and when the process thread, of the plurality of process threads, that is in the ready state, having the highest priority amongst process threads, of the plurality of process threads, that are in the ready state is a critical thread and the adaptive partition that the critical thread is associated with has exhausted guaranteed processor time budget, allocate the processor to the critical thread when the adaptive partition with which the critical thread is associated has available critical processor time budget;

where the guaranteed processor time budget is allocated and billed over successive averaging windows; and where a portion of the guaranteed processor time budget associated with each adaptive partition is billed when the processor is allocated to a process thread associated with the adaptive partition;

where the critical processor time budget is allocated and billed over successive averaging windows; and where a portion of the critical processor time budget associated with each adaptive partition is billed when the processor is allocated to a critical thread associated with the adaptive partition and the guaranteed processor time budget associated with the adaptive partition is exhausted.

2. The system of claim 1 , where the system is in overload when all of the process threads in the ready state cannot be allocated the processor over the duration of one averaging window, of the successive averaging windows, and where the system is under normal load otherwise.

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

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

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 associated with adaptive partition with which the process thread is associated 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 in the ready state and that has a priority higher than the priority of the process thread to which the processor is currently allocated.

7. A method of scheduling a plurality of process threads, each having a priority and each dynamically associable with an adaptive partition, for execution by a processor of a system, the method comprising:

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

associating one or more process threads from the plurality of process threads with each of the plurality of adaptive partitions;

designating one or more of the plurality of process threads as critical threads;

associating with each of one or more of the adaptive partitions a critical processor time budget;

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

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

when the system is in overload and when the process thread, of the plurality of process threads, that is in the ready state, having the highest priority amongst process threads, of the plurality of process threads, that are in the ready state is a critical thread and the adaptive partition that the critical thread is associated with has exhausted guaranteed processor time budget, allocate the processor to the critical thread when the adaptive partition with which the critical thread is associated has available critical processor time budget;

where the guaranteed processor time budget is allocated and billed over successive averaging windows; and where a portion of the guaranteed processor time budget associated with each adaptive partition is billed when the processor is allocated to a process thread associated with the adaptive partition;

where the critical processor time budget is allocated and billed over successive averaging windows; and where a portion of the critical processor time budget associated with each adaptive partition is billed when the processor is allocated to a critical thread associated with the adaptive partition and the guaranteed processor time budget associated with the adaptive partition is exhausted.

8. The method of claim 7 , where the system is in overload when all of the process threads in the ready state cannot be allocated the processor over the duration of one averaging window, of the successive averaging windows, and where the system is under normal load otherwise.

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

10. The method of claim 7 , where the critical processor time budget associated with each of the plurality of adaptive partitions is dynamic and can be reallocated while the system executes.

11. The method of claim 7 , 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 associated with adaptive partition with which the process thread is associated is exhausted.

12. The method of claim 7 , 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 in the ready state and that has a priority higher than the priority of the process thread to which the processor is currently allocated.

Assignments (15)
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 ADDRESS Recorded Feb 27, 2012
From: QNX SOFTWARE SYSTEMS LIMITED
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 027768/0961 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2011
From: 7801769 CANADA INC.
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 026883/0553 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2011
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: 7801769 CANADA INC.
Reel/Frame 026883/0544 →
CHANGE OF NAME Recorded Jun 9, 2010
From: QNX SOFTWARE SYSTEMS
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024508/0275 →
REGISTRATION Recorded Jun 9, 2010
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024508/0493 →
CHANGE OF SEAT Recorded Jun 9, 2010
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024509/0723 →
PARTIAL RELEASE OF SECURITY INTEREST Recorded Jun 3, 2010
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: HARMAN INTERNATIONAL INDUSTRIES, INCORPORATED; QNX SOFTWARE SYSTEMS (WAVEMAKERS), INC.; QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024483/0045 →
CHANGE OF NAME Recorded Mar 8, 2010
From: QNX SOFTWARE SYSTEMS
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024047/0493 →
SECURITY AGREEMENT Recorded May 8, 2009
From: HARMAN INTERNATIONAL INDUSTRIES, INCORPORATED; BECKER SERVICE-UND VERWALTUNG GMBH; CROWN AUDIO, INC.; HARMAN BECKER AUTOMOTIVE SYSTEMS (MICHIGAN), INC.; HARMAN BECKER AUTOMOTIVE SYSTEMS HOLDING GMBH; HARMAN BECKER AUTOMOTIVE SYSTEMS, INC.; HARMAN CONSUMER GROUP, INC.; HARMAN DEUTSCHLAND GMBH; HARMAN FINANCIAL GROUP LLC; HARMAN HOLDING GMBH & CO. KG; HARMAN MUSIC GROUP, INCORPORATED; HARMAN SOFTWARE TECHNOLOGY INTERNATIONAL BETEILIGUNGS GMBH; HARMAN SOFTWARE TECHNOLOGY MANAGEMENT GMBH; HBAS INTERNATIONAL GMBH; HBAS MANUFACTURING, INC.; INNOVATIVE SYSTEMS GMBH NAVIGATION-MULTIMEDIA; JBL INCORPORATED; LEXICON, INCORPORATED; MARGI SYSTEMS, INC.; QNX SOFTWARE SYSTEMS (WAVEMAKERS), INC.; QNX SOFTWARE SYSTEMS CANADA CORPORATION; QNX SOFTWARE SYSTEMS CO.; QNX SOFTWARE SYSTEMS GMBH; QNX SOFTWARE SYSTEMS GMBH & CO. KG; QNX SOFTWARE SYSTEMS INTERNATIONAL CORPORATION; QNX SOFTWARE SYSTEMS, INC.; XS EMBEDDED GMBH (F/K/A HARMAN BECKER MEDIA DRIVE TECHNOLOGY GMBH)
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 022659/0743 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2006
From: DODGE, DAN; DANKO, ATTILLA; MARINEAU-MES, SEBASTIEN; VAN DER VEEN, PETER; BURGESS, COLIN; FLETCHER, THOMAS; STECHER, BRIAN
To: QNX SOFTWARE SYSTEMS
Reel/Frame 017745/0549 →