Patent EP0527392A2 successfully refreshed from Google Patents.
← Back to Patent Explorer
EP0527392A2 Expired / Lapsed EP ⏱️ 0.0 years remaining

Preemptive and non pre-emptive scheduling and executing of program threads in a multitasking operating system

Assignee: International Business Machines Corp
•
Filing: 1992-07-29
•
Granted: —
•
Expires: 2012-07-29
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A multitasking operating system permits application programs (and their developers) to influence a schedule of execution of program threads which constitute the application programs by specifying parameters for the program threads. The parameters indicate each thread's priority level and dispatch class in which the thread resides. The application programs specify the thread's parameters based on the following principles of the operating system. The operating system queues the highest priority thread 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. While this thread is dispatchable and being executed, no other thread from the same dispatch class can preempt it unless this executing thread voluntarily relinquishes control of the processor, even if the other thread has a higher priority. (This other thread would have been created or made available after the currently executing thread was selected for the run list.) However, the currently executing thread can be involuntarily preempted at any time by another higher priority, available thread from a different dispatch class. A thread can also voluntarily relinquish control of its processor at other appropriate points in the execution, for example, when data structures are valid, to share the processor with other lower priority threads from the same or different dispatch classes.

Inventors

  • 👤 Joel Alan Farrell
  • 👤 Stephen Elliott Record
  • 👤 Brian Keith Wade

Bibliographic Details

Application Number —
Jurisdiction EP
Data Source google_patents
Last Synchronized 2026-10-30 23:51
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/46; G06F9/48; G06F9/4806; G06F9/4843; G06F9/4881

Claims Analysis

Total Claims: 41
Claim 1
Independent Claim 122 words
A multitasking operating system comprising: means for assigning a multiplicity of program threads to a plurality of classes such that at least one of said classes can be assigned a plurality of program threads; means for assigning priority levels to said program threads; and means for scheduling execution of said program threads such that a program thread from another class can preempt execution of a lower priority program thread from said one class, but a program thread in said one class having a higher priority than said lower priority program thread in said one class cannot preempt or is more restricted than said program thread in said other class in preempting execution of said lower priority program thread in said one class.
Claim 2
Dependent Claim 41 words
A multitasking operating system as set forth in claim 1 wherein the scheduling means prevents said program thread in said one class from preempting said lower priority program thread in said one class while said lower priority program thread is dispatchable.
Claim 3
Dependent Claim 41 words
A multitasking operating system as set forth in claim 2 wherein the scheduling means permits said program thread from said other class to preempt said lower priority program thread from said one class while said lower priority program thread is dispatchable.
Claim 4
Dependent Claim 38 words
A multitasking operating system as set forth in claim 1 wherein the means for assigning program threads into classes and the means for assigning priority levels to the program threads is based on parameters specified by application programs.
Claim 5
Dependent Claim 47 words
A multitasking operating system as set forth in claim 1 further comprising means for selecting an available program thread from each of said classes for current or subsequent execution, said selections being based at least in part on relative priorities of the program threads within each class.
Claim 6
Dependent Claim 37 words
A multitasking operating system as set forth in claim 2 further comprising means for selecting at least two program threads for execution from said one class which can be executed concurrently on a like number of processors.
Claim 7
Dependent Claim 61 words
A multitasking operating system as set forth in claim 1 further comprising means for selecting a program thread from each class for execution by a processor, and means for preventing the selected program thread from each class while executing from being replaced for execution by another program thread from the same class until the selected program thread experiences a non-dispatchable condition.
Claim 8
Dependent Claim 52 words
A multitasking operating system as set forth in claim 5 further comprising means for queueing the selected program thread from each class onto a run list for subsequent execution by one or more processors, and selecting the highest priority program thread on the run list for execution by the next available processor.
Claim 9
Dependent Claim 73 words
A multitasking operating system as set forth in claim 8 further comprising means for comparing priority of a program thread which is currently executing on a processor to a highest priority program thread on the run list that is awaiting execution, and switching execution to the highest priority, waiting thread in the run list if the highest priority thread on the run list has a higher priority than the currently executing program thread.
Claim 10
Dependent Claim 46 words
A multitasking operating system as set forth in claim 6 wherein said one class includes at least three program threads and said at least two selected program threads have the highest priority levels of all program threads in said one class which are available for execution.
Claim 11
Dependent Claim 32 words
A multitasking operating system as set forth in claim 4 further comprising means for designating a maximum number of program threads to be run concurrently from said one class on different processors.
Claim 12
Dependent Claim 30 words
A multitasking operating system as set forth in claim 1 further comprising means, initiated by a currently executing program thread, for blocking said currently executing program thread from further execution.
Claim 13
Dependent Claim 54 words
A multitasking operating system as set forth in claim 12 wherein said currently executing program thread initiates the blocking if a request of said currently executing program thread cannot be satisfied or an operation of said currently executing program cannot be completed, due to a condition beyond control of said currently executing program thread.
Claim 14
Dependent Claim 37 words
A multitasking operating system as set forth in claim 12 further comprising means, responsive to the blocking means, for selecting the highest priority thread from the class containing the blocked program thread for immediate or subsequent execution.
Claim 15
Dependent Claim 41 words
A multitasking operating system as set forth in claim 1 further comprising means, initiated by a currently executing program thread, for suspending another program thread in the same or different class, whereby the suspended program thread is made unavailable for execution.
Claim 16
Dependent Claim 33 words
A multitasking operating system as set forth in claim 15 further comprising means, initiated by a program thread other than said suspended program thread, for terminating the suspension of said suspended program thread.
Claim 17
Dependent Claim 25 words
A multitasking operating system as set forth in claim 1 further comprising means, initiated by one currently executing program thread, for suspending another program thread.
Claim 18
Dependent Claim 41 words
A multitasking operating system as set forth in claim 1 further comprising means for a dispatchable, executing program thread to voluntarily suspend execution of itself to permit another program thread which may be in the same dispatch class to be executed.
Claim 19
Independent Claim 119 words
A method for operating a computer, said method comprising the steps of: assigning a multiplicity of program threads to a plurality of classes, each class being assigned at least one program thread, and at least one class being assigned a plurality of program threads; executing one of the program threads from said one class; preventing another one of the program threads in said one class from preempting execution of said one program thread from said one class while executing said one program thread from said one class; and after executing at least part of said one thread from said one class, preempting execution of said one program thread from said one class with a program thread from another class.
Claim 20
Dependent Claim 37 words
A method as set forth in claim 19 further comprising the step of preventing any program thread in any class from preempting any other program thread in the same class during execution of said other program thread.
Claim 21
Dependent Claim 52 words
A method as set forth in claim 19 further comprising the step of assigning a priority level to each of said program threads to form a basis for preemption, and wherein said program thread from said other class has a higher priority level than the preempted program thread from said one class.
Claim 22
Dependent Claim 40 words
A method as set forth in claim 21 further comprising the step of queueing the highest priority level program thread which is available for execution from each class on a run list for subsequent execution by one or more processors.
Claim 23
Dependent Claim 33 words
A method as set forth in claim 22 further comprising the step of executing the highest priority program thread on the run list before executing the other program threads on the run list.
Claim 24
Dependent Claim 52 words
A method as set forth in claim 23 further comprising the steps of: blocking execution of a currently executing program thread; and after the blocking step, selecting for subsequent execution the highest priority program thread which is not blocked and otherwise available for execution, from the class containing the blocked program thread.
Claim 25
Dependent Claim 33 words
A method as set forth in claim 19 further comprising the step of suspending another program thread in the same or different class, whereby the suspended program thread is not available for execution.
Claim 26
Dependent Claim 27 words
A method as set forth in claim 19 further comprising the step of suspending said one program thread, the suspension being done by another executing program thread.
Claim 27
Dependent Claim 185 words
A computer system comprising: means for assigning a multiplicity of program threads to a plurality of classes such that 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 when said processor or processors are available, said selection being based at least in part on the relative priority levels of the program threads within each of said classes; means for preempting execution of a program thread from any of said classes with a higher priority level program thread from another class; and means for preventing a program thread in said one class, which was made available after selection by the selecting means of another, lower priority program thread from said one class for execution, from preempting execution of said other, lower priority program thread in said one class.
Claim 28
Dependent Claim 31 words
A computer system as set forth in claim 27 further comprising means for designating a maximum number of program threads to be run concurrently from said one class on different processors.
Claim 29
Dependent Claim 42 words
A computer system as set forth in claim 27 further comprising means for positioning a representation of the highest priority program thread which is available for execution from each class onto a run list for subsequent execution by one or more processors.
Claim 30
Dependent Claim 29 words
A computer system as set forth in claim 29 further comprising means for selecting the highest priority thread on the run list for execution by the next available processor.
Claim 31
Dependent Claim 33 words
A computer system as set forth in claim 29 wherein the preventing means prevents more than one program thread from any class from being positioned on the run list at any one time.
Claim 32
Dependent Claim 42 words
A computer system as set forth in claim 27 wherein said system comprises a plurality of said processors, and further comprising means for selecting a plurality of program threads from said one class for execution on a like number of said processors.
Claim 33
Dependent Claim 37 words
A computer system as set forth in claim 32 wherein said plurality of program threads from said one class have the highest priority levels of all program threads in said one class that are available for execution.
Claim 34
Dependent Claim 27 words
A computer system as set forth in claim 27 further comprising means for requesting that one of said program threads that is currently executing cease to execute.
Claim 35
Dependent Claim 170 words
A computer program product comprising: a computer readable medium; first program instruction means, recorded on said medium, for instructing a computer processor to receive identifications of program threads and classes in which said program threads reside; second program instruction means, recorded on said medium, for instructing a computer processor to assign said program threads to said classes according to said identifications; third program instruction means, recorded on said medium, for instructing a computer processor to select one of the program threads for execution; fourth program instruction means, recorded on said medium, for instructing a computer processor to prevent another one of the program threads in the same class as the one selected for execution from preempting the execution of the selected program thread; fifth program instruction means, recorded on said medium, for instructing a computer processor to permit a program thread from another class to preempt execution of said selected program thread with a program thread; wherein each of said program instruction means is executable by the associated computer processor.
Claim 36
Dependent Claim 76 words
A computer program product as set forth in claim 35 further comprising sixth program instruction means, recorded on said medium, for instructing a computer processor to permit any program thread to voluntarily relinquish control of the associated processor, whereby another program thread from the same or different class can execute in place of said program thread which voluntarily relinquished control of said processor; and wherein said sixth program instruction means is executable by the associated processor.
Claim 37
Dependent Claim 78 words
A computer program product as set forth in claim 35 further comprising sixth program instruction means, recorded on said medium, for instructing a computer processor to assign a priority level to each of said program threads to form a basis for interclass preemption, and wherein said program thread from said other class has a higher priority level than the preempted program thread from said one class; and said sixth program instruction means is executable by the associated processor.
Claim 38
Dependent Claim 67 words
A computer program product as set forth in claim 37 further comprising seventh program instruction means, recorded on said medium, for instructing a computer processor to represent the highest priority level program thread which is available for execution from each class on a run list for subsequent execution by one or more computer processors, and wherein said seventh program instruction means is executable by the associated processor.
Claim 39
Dependent Claim 59 words
A computer program product as set forth in claim 38 further comprising eighth program instruction means, recorded on said medium, for instructing a computer processor to execute the highest priority program thread on the run list before executing the other program threads on the run list, and wherein said eighth program instruction means is executable by the associated processor.
Claim 40
Dependent Claim 99 words
A computer program product as set forth in claim 39 further comprising ninth program instruction means, recorded on said medium, for instructing a computer processor to halt execution of a currently executing program thread; and tenth program instruction means, recorded on said medium, for instructing a computer processor after execution of the currently executing program thread is halted to select for subsequent execution the highest priority program thread which is available for execution from the class containing the program thread whose execution was halted; and wherein said ninth and tenth program instruction means are executable by the associated processor.
Claim 41
Dependent Claim 75 words
A computer program product as set forth in claim 35 further comprising; sixth program instruction means, recorded on said medium, for instructing a computer processor to request that said one program thread cease execution; seventh program instruction means, recorded on said medium, for instructing a computer processor to cease to execute said one program thread in response to said request; and wherein said sixth and seventh program instruction means are executable by the associated processor.

References Cited (Backward Citations)

No citation records indexed.

USPTO Annuity & Maintenance Windows

Maintenance schedule is calculated for granted US utility patents.

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag