IP Library Granted Patent US 8,544,013
Granted Patent B2
US 8,544,013 · App. 11/371,639 · Granted Sep 24, 2013

Process scheduler having multiple adaptive partitions associated with process threads accessing mutexes and the like

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,544,013
App. No.
11/371,639
Granted
Sep 24, 2013
Kind
B2
Abstract

A system is set forth that includes a processor, one or more memory storage units, and software code stored in the one or more memory storage units. The software code is executable by the processor to generate a plurality of adaptive partitions that are each associated with one or more process threads. Each of the plurality of adaptive partitions has a corresponding processor budget that is assigned to it. The process threads include a mutex holding thread and a mutex waiting thread. The mutex holding thread is associated with a first adaptive partition and may gain exclusive access to a mutex object. The mutex waiting thread is associated with a second adaptive partition and must wait for access to the mutex object while the mutex object is held by the mutex holding thread. The software code further includes a scheduling system that selectively allocates the processor to run the process threads based, at least in part, on the processor budget of the associated adaptive partitions. The scheduling system bills processor allocation used to run the mutex holding thread to the processor budget of the second adaptive partition when the processor budget of the first adaptive partition has been exhausted.

Claims (51)

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 to generate a plurality of adaptive partitions that are each associated with a plurality of process threads, where each of the plurality of adaptive partitions has a corresponding processor budget and the process threads comprise:

a mutex holding thread associated with a first adaptive partition of the plurality of adaptive partitions, where the mutex holding thread is configured to gain exclusive access to a mutex object,

a mutex waiting thread associated with a second adaptive partition of the plurality of adaptive partitions, where the mutex waiting thread waits for access to the mutex object when the mutex object is held by the mutex holding thread,

where the software code further comprises a scheduling system executable by the processor for selectively allocating the processor to run the process threads based, at least in part, on the processor budget of the associated adaptive partitions, and

where the scheduling system bills processor allocation used to run the mutex holding thread to the processor budget of the second adaptive partition when the processor budget of the first adaptive partition has been exhausted.

2. The system of claim 1 , where the processor comprises a symmetric multiprocessor.

3. The system of claim 1 , where the scheduling system bills processor allocation used to run one or more process threads working on behalf of the mutex holding thread to the processor budget of the first adaptive partition.

4. The system of claim 1 , and further comprising one or more mutex waiting threads associated with one or more further adaptive partitions of the plurality of adaptive partitions, where the one or more mutex waiting thread wait for access to the mutex object when the mutex object is held by the mutex holding thread.

5. The system of claim 4 , where the mutex waiting thread associated with the second adaptive partition is the process thread which, of all the mutex waiting threads, the scheduling system is most likely to run next upon availability of the mutex object.

6. The system of claim 1 , where the scheduling system generates an ordering function value for each of the plurality of adaptive partitions associated with a mutex waiting thread, and where the scheduling system compares one or more of the ordering function values to one another to determine which, of all the mutex waiting threads, the scheduling system is most likely to run next upon availability of the mutex object.

7. The system of claim 1 , where the mutex holding thread has a first run priority level and the mutex waiting thread has a second run priority level that is higher than the first run priority level, and where the scheduling system raises the priority level of the mutex holding thread to the second priority level.

8. A method of operating a process scheduler in a processing system having a processor and a plurality of adaptive partitions that are each associated with a plurality of process threads, each of the adaptive partitions having a processor budget, the method comprising:

generating a mutex holding thread associated with a first adaptive partition of the plurality of adaptive partitions;

holding a mutex object using the mutex holding thread;

generating a mutex waiting thread associated with a second adaptive partition of the plurality of adaptive partitions;

preventing the mutex waiting thread from accessing the mutex object while the mutex object is held by the mutex holding thread; and

billing processor allocation used to run the mutex holding thread to the processor budget of the second adaptive partition when the processor budget of the first adaptive partition has been exhausted.

9. The method of claim 8 , where the mutex holding thread has a first run priority level and the mutex waiting thread has a second run priority level that is higher than the first run priority level, and where the method further comprises raising the priority level of the mutex holding thread to the second priority level.

10. The method of claim 8 , and further comprising billing processor allocation used to run one or more process threads working on behalf of the mutex holding thread to the processor budget of the first adaptive partition.

11. A method of operating a process scheduler in a processing system having a processor and a plurality of adaptive partitions that are each associated with a plurality of process threads, each of the adaptive partitions having scheduling attributes including a processor budget, the method comprising:

generating a mutex holding thread associated with a first adaptive partition of the plurality of adaptive partitions;

holding a mutex object using the mutex holding thread;

generating a plurality of mutex waiting threads associated with two or more further adaptive partitions of the plurality of adaptive partitions;

preventing the mutex waiting thread from accessing the mutex object while the mutex object is held by the mutex holding thread; and

determining which of the waiting threads is most likely to be run next on the processor upon release of the mutex object by the mutex holding thread;

billing processor allocation used to run the mutex holding thread to the processor budget of the adaptive partition associated with the waiting thread that is most likely to run next on the processor upon release of the mutex object by the mutex holding thread when the processor budget of the first adaptive partition has been exhausted.

12. The method of claim 11 , where the mutex holding thread has a first run priority level and the waiting thread has a second run priority level that is higher than the first run priority level, and where the method further comprises raising the priority level of the mutex holding thread to the second priority level.

13. The method of claim 11 , and further comprising billing processor allocation used to run one or more process threads working on behalf of the mutex holding thread to the processor budget of the first adaptive partition.

14. The method of claim 11 , where the operation of determining which of the mutex waiting threads is most likely to be run next on the processor upon release of the mutex object by the mutex holding thread comprises:

calculating an ordering function value for each of the adaptive partitions associated with a mutex waiting thread, where the ordering function value of a given adaptive partition is determined from one or more scheduling attributes of the given adaptive partition; and

comparing the ordering function values for each of the adaptive partitions associated with a mutex waiting thread.

15. One or more memory storage units comprising:

software code that is executable by a processor to generate a plurality of adaptive partitions that are each associated with a plurality of process threads, where each of the plurality of adaptive partitions has a corresponding processor budget and the process threads comprise

a mutex holding thread associated with a first adaptive partition of the plurality of adaptive partitions, where the mutex holding thread operates to gain exclusive access to a mutex object,

a mutex waiting thread associated with a second adaptive partition of the plurality of adaptive partitions, where the mutex waiting thread waits for access to the mutex object when the mutex object is held by the mutex holding thread; and

a scheduling system forming part of the software code, where the scheduling system selectively allocates the processor to run the process threads based, at least in part, on the processor budget of the associated adaptive partitions, and where the scheduling system operates to determine which of the mutex waiting threads is most likely to be run next on the processor upon release of the mutex object by the mutex holding thread and bills processor allocation used to run the mutex holding thread to the processor budget of the adaptive partition associated with the mutex waiting thread that is most likely to run next on the processor upon release of the mutex object by the mutex holding thread when the processor budget of the first adaptive partition has been exhausted; and

where the scheduling system bills processor allocation used to run the mutex holding thread to the processor budget of the second adaptive partition when the processor budget of the first adaptive partition has been exhausted.

16. The one or more memory storage units of claim 15 , where the scheduling system bills processor allocation used to run one or more process threads working on behalf of the mutex holding thread to the processor budget of the first adaptive partition.

17. The one or more memory storage units of claim 15 , and further comprising one or more further mutex waiting threads associated with one or more further adaptive partitions of the plurality of adaptive partitions, where the one or more further mutex waiting threads wait for access to the mutex object when the mutex object is held by the mutex holding thread.

18. The one or more memory storage units of claim 17 , where the mutex waiting thread associated with the second adaptive partition is the process thread which, of all the mutex waiting threads, the scheduling system is most likely to run next upon release of the mutex object.

19. The one or more memory storage units of claim 15 , where the scheduling system generates an ordering function value for each of the plurality of adaptive partitions associated with a mutex waiting thread, and where the scheduling system compares one or more of the ordering function values to one another to determine which, of all the mutex waiting threads, the scheduling system is most likely to run next upon availability of the mutex object.

20. The one or more memory storage units of claim 15 , where the mutex holding thread has a first run priority level and the mutex waiting thread has a second run priority level that is higher than the first run priority level, and where the scheduling system raises the priority level of the mutex holding thread to the second priority level.

21. 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 to generate a plurality of adaptive partitions that are each associated with a plurality of process threads, where each of the plurality of adaptive partitions has one or more corresponding scheduling attributes including a processor budget, and where the process threads comprise:

a mutex holding thread associated with a first adaptive partition of the plurality of adaptive partitions, where the mutex holding thread is configured to gain exclusive access to a mutex object, a plurality of mutex waiting threads associated with two or more further adaptive partitions of the plurality of adaptive partitions, where the mutex waiting threads wait for access to the mutex object when the mutex object is held by the mutex holding thread,

where the software code further comprises a scheduling system executable by the processor for selectively allocating the processor to run the process threads based, at least in part, on the processor budget of the associated adaptive partitions, where the scheduling system operates to determine which of the waiting threads is most likely to be run next on the processor upon release of the mutex object by the mutex holding thread and bills processor allocation used to run the mutex holding thread to the processor budget of the adaptive partition associated with the waiting thread that is most likely to run next on the processor upon release of the mutex object by the mutex holding thread when the processor budget of the first adaptive partition has been exhausted.

Assignments (13)
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 →
REGISTRATION Recorded Feb 28, 2011
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 025863/0398 →
CHANGE OF SEAT Recorded Feb 28, 2011
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 025863/0434 →
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 →
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 Jul 3, 2006
From: DODGE, DAN; DANKO, ATTILLA; MARINEAU-MES, SEBASTIEN; VAN DER VEEN, PETER; BURGESS, COLIN; FLETCHER, THOMAS; STECHER, BRIAN
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 017872/0233 →