Controlled scheduling of program threads in a multitasking operating system
First Claim
1. A multitasking operating system comprising:
- means for receiving from one or more application program threads specification of classes in which a multiplicity of application program threads reside and assigning said multiplicity of application program threads to classes based on said specification, wherein at least one of said classes can be assigned a plurality of program threads;
means for assigning priority levels to said program threads;
means for scheduling execution of said program threads such that the highest priority program thread in each of said classes which is available for execution is selected for execution before a lower priority program thread which is available for execution in the same class; and
means, responsive to a request from one of said application program threads which is executing to halt execution of said one program thread and select for execution a particular application program thread which is specified in said request and available for execution from the same class, for complying with said request, and wherein there is another application program thread, in addition to said particular program thread and said one program thread, which is available for execution from said same class and has a higher priority than said particular program thread.
1 Assignment
0 Petitions
Accused Products
Abstract
A multitasking operating system permits application programs (and their developers) to influence a schedule of execution of program threads derived from the application programs. Each of the program threads is assigned a priority level and a dispatch class in which the thread resides. Based on these parameters, the operating system schedules the threads for execution in the following manner. The operating system queues the highest priority thread which is available for execution from each dispatch class onto a run list for execution by a processor. The highest priority thread on the run list is executed first. An application program thread can change the dispatch class in which another program thread resides. An executing program thread can also voluntarily yield to a specified program thread in the same dispatch class or permit the highest priority available thread in the same dispatch class to be queued on the run list with itself being available and in contention for the run list.
-
Citations
16 Claims
-
1. A multitasking operating system comprising:
-
means for receiving from one or more application program threads specification of classes in which a multiplicity of application program threads reside and assigning said multiplicity of application program threads to classes based on said specification, wherein at least one of said classes can be assigned a plurality of program threads; means for assigning priority levels to said program threads; means for scheduling execution of said program threads such that the highest priority program thread in each of said classes which is available for execution is selected for execution before a lower priority program thread which is available for execution in the same class; and means, responsive to a request from one of said application program threads which is executing to halt execution of said one program thread and select for execution a particular application program thread which is specified in said request and available for execution from the same class, for complying with said request, and wherein there is another application program thread, in addition to said particular program thread and said one program thread, which is available for execution from said same class and has a higher priority than said particular program thread. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for operating a computer, said method comprising the steps of:
-
receiving from one or more application programs specification of classes in which a multiplicity of application program threads reside assigning said application program threads to classes based on said specification, each class being assigned at least one program thread, and at least one class being assigned a plurality of program threads; assigning a priority to each of said program threads; queuing the highest priority program thread which is available for execution from each class onto a queue for execution without queuing a lower priority program thread which is available for execution in the same class; and complying with a request from one of said application program threads which is executing to halt execution of said one program thread, select a particular application program thread which is specified in said request and available for execution from the same class and queue said particular application program thread on said queue; and
whereinthere is another program thread in said same class which is available for execution and has a higher priority than said particular program thread. - View Dependent Claims (7, 8, 9)
-
-
10. A computer system comprising:
-
means for assigning a multiplicity of application program threads to a plurality of classes based on corresponding specifications from one or more application programs, wherein each of said classes is assigned at least one program thread and at least one of said classes can be assigned a plurality of program threads; at least one processor; means for assigning a priority level to each of said program threads to affect execution order; means for selecting at least one available program thread from each of said classes for execution by said processor or processors before a lower priority program thread which is available for execution from the same class, said selection being based at least in part on relative priority levels of the program threads within each of said classes; and means, responsive to a request from one of said application program threads which is executing to halt execution of said one application program thread, select a particular application program thread which is specified in said request and available for execution from the same class, and queue said particular application program thread on said queue, for complying with said request, and wherein the halted program thread is available for execution; and there is another program thread in said same class which is available for execution and has a higher priority than said particular program thread. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
Specification