Methods for efficient distribution of parallel tasks to slave processes in a multiprocessing system
First Claim
1. In a multiprocessor system, a method for delaying Operating System interruptions of a process performing a thread of tasks until the current task is complete or the expiration of a time slice, comprising the steps of:
- (a) the Operating System setting a GIVEUP flag in a data buffer area associated with the process to inform a multiprocessing scheduling program that the process is to be interrupted after the process is determined that it is performing said task;
(b) upon completion of said task the multiprocessing scheduling program reading the GIVEUP flag and returning the CPU to the Operating System if the GIVEUP flag is set; and
(c) the Operating System interrupting the process at the end of a time slice, if the process has not yet finished said task and returned the CPU back to the Operating System.
7 Assignments
0 Petitions
Accused Products
Abstract
Three new, efficient protocols for providing communications between a user'"'"'s application program, a Multiprocessing Library, and the host Operating System is described. These new protocols are termed WAKEUP, GIVEUP, and CONTEXT-TO-USER-SPACE. They utilize the concept of a conduit through which the Operating System and the user application program can communicate without the need for expensive system calls. A primary use for the new protocols is the scheduling of multiple Central Processing Units (CPUs) into a single user program in a multi-CPU, multiprogramming, multi-tasking environment. WAKEUP allows a master process to quickly request the asynchronous scheduling of slave processes to help execute parallel tasks. GIVEUP allows a slave process time to finish a task before Operating System interruption. Once completed with its task, there is no need to save the context of the slave process. CONTEXT-TO-USE-SPACE allows other slave processes the opportunity to execute interrupted tasks that were not allowed to finish under GIVEUP.
-
Citations
14 Claims
-
1. In a multiprocessor system, a method for delaying Operating System interruptions of a process performing a thread of tasks until the current task is complete or the expiration of a time slice, comprising the steps of:
-
(a) the Operating System setting a GIVEUP flag in a data buffer area associated with the process to inform a multiprocessing scheduling program that the process is to be interrupted after the process is determined that it is performing said task; (b) upon completion of said task the multiprocessing scheduling program reading the GIVEUP flag and returning the CPU to the Operating System if the GIVEUP flag is set; and (c) the Operating System interrupting the process at the end of a time slice, if the process has not yet finished said task and returned the CPU back to the Operating System. - View Dependent Claims (3, 5, 6, 7)
-
-
2. In a multiprocessor system, a method for assigning parallel tasks from interrupted processes to available processes, comprising the steps of:
-
(a) a slave process setting a save-in-user-space flag to inform the Operating System that the slave process is currently performing a parallel task; (b) if the slave process is interrupted, the Operating System saving the context of the slave process in user-space; (c) the Operating System setting a flag to inform a multiprocessing scheduling program that the process was interrupted while performing a parallel task; (d) checking of the flag by the multiprocessing scheduling program to detect the interrupted task; and (e) assigning the interrupted task to an available process started by the Operating System. - View Dependent Claims (4, 8, 9, 14)
-
-
10. In a multiprocessor system having an Operating System, a method for parallel processing of parallel regions of code, comprising the steps of:
-
(a) establishing a master process and one or more slave processes; (b) establishing a data buffer conduit including a thread structure and a context structure for each said slave process, each said thread structure including a WAKEUP flag and a GIVEUP flag; (c) the master process setting the WAKEUP flag for a slave process when a parallel region of code is encountered; (d) the Operating System polling said WAKEUP flags and, upon detection of a WAKEUP flag for a slave process, activating a slave process and the slave process obtaining a task to execute; (e) the Operating System setting the GIVEUP flag for the running slave process if the Operating System desires to interrupt the process; (f) the running slave process polling the GIVEUP flag at the completion of its task and returning control to the Operating System if the GIVEUP flag is set; and (g) the Operating System interrupting the slave process for which it has set the GIVEUP flag if the slave process does not return control to the Operating System within a predetermined time slice. - View Dependent Claims (11, 12, 13)
-
Specification