EP0798638A2 - Periodic process scheduling method - Google Patents
Periodic process scheduling method Download PDFInfo
- Publication number
- EP0798638A2 EP0798638A2 EP97105059A EP97105059A EP0798638A2 EP 0798638 A2 EP0798638 A2 EP 0798638A2 EP 97105059 A EP97105059 A EP 97105059A EP 97105059 A EP97105059 A EP 97105059A EP 0798638 A2 EP0798638 A2 EP 0798638A2
- Authority
- EP
- European Patent Office
- Prior art keywords
- time
- priority
- group
- cpu
- periodic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
Definitions
- the present invention relates to a scheduling method of a process of a computer system, and in particular to a process scheduling method for periodically starting each process.
- the term "stream” means a group of processes delivering worked continuous media data directly or indirectly to each other.
- Each of processes belonging to the same stream are provided with the unique order of conducting the work processing of continuous media data.
- the top process obtains input of the continuous media data from an external device (such as a video digitizer).
- Each of subsequent processes receives continuous media data worked by a process immediately preceding in order from the immediately preceding process, conducts data work (such as compression processing) to be conducted by itself, and delivers continuous media data worked by itself to a process immediately succeeding in order.
- the last process outputs continuous media data to the external device (such as a network adapter).
- a summary of a scheduling method using a Conductor/Performer model will be hereafter described.
- One periodically driven Conductor process is prepared.
- the order of Performer processes i.e., processes belonging to the stream) to be started by the Conductor process is registered beforehand. In accordance with this registered order, the Conductor process starts a Performer process. Therefore, each of both the Conductor process and the Performer processes holds a message queue for wakeup notice of its own process. Wakeup of another process is conducted by transmitting a message to a message queue held by the process.
- the Conductor process is driven at time intervals each equal to a specified period.
- the Conductor process repetitively issues a call (function call) for transmitting a message to a message queue owned by the next Performer process in the order and waiting the arrival of a message at a message queue owned by the Conductor process.
- the Conductor process repeats the wakeup of a Performer process and sleep lasting until the started Performer process completes the execution of one period. If the last Performer process in order has completed execution, the Conductor process sleeps until the next periodically driven trigger is applied by a timer interrupt.
- a Performer process wakes up upon receiving a message from the Conductor process, and conducts continuous media processing corresponding to one period. Upon completing the continuous media processing corresponding to one period, the Performer process issues a call for transmitting a message to a message queue owned by the Conductor process and waiting for the arrival of a message at a message queue owned by its own process. The Performer process sleeps until a message for notifying the wakeup of the next period is transmitted from the Conductor process.
- the above described scheduling method assures a CPU of being periodically allocated to a Performer process.
- processing for a deadline miss exception (such a state that the processing corresponding to one period could not be completed within a specified time from driving of the Conductor process) is conducted by signal notification to the Conductor process. Since a signal handler has typically the same priority as a subject process does, there is a possibility that execution of a process of another stream will be delayed by the signal handler processing. In other words, there is a possibility that the processing delay of one stream will cause a processing delay of another stream.
- An object of the present invention is to provide a periodic process scheduling method of a computer system, whereby:
- Another object of the present invention is to provide a periodic process scheduling method of a computer system, whereby when an asynchronous event such as arrival of a network packet has occurred, the execution interval of the processes which conduct continuous media processing is prevented from varying.
- a periodic process scheduling method of a computer system including a plurality of process groups, each of the process groups including at least one periodically executed process, the plurality of process groups being executed in parallel, the periodic process scheduling method including the steps of specifying a wakeup interval period and a required CPU time per period for each of the process groups, and securing a CPU allocation time so as to prevent collision between a CPU allocation time of a speciifed process group and a CPU allocation time of another process group, and adjusting the CPU allocation time and the wakeup period so as to maintain the wakeup interval period of each of specified process groups.
- a method for waking up a process scheduled according to the above described process scheduling method further includes the steps of responding to arrival of time when one of the process groups should be waked up, conducting wakeup by changing execution priority of a process belonging to this process group to the highest priority in the system, and thereafter maintaining the highest priority for CPU allocation time consecutively allocated.
- the above described process wakeup method further includes the steps of responding to elapse of the CPU allocation time consecutively allocated and consumption of the required CPU time, changing execution priority of a process waked up from the highest priority to reference priority, and notifying this process of timeout.
- an asynchronous event method includes the steps of responding to occurrence of an asynchronous event needing reception of information such as arrival of a network packet during execution of a process having the highest priority in a system, immediately suspending the execution of the process running with the highest priority, securing an information receiving buffer, preparing for reception of the information, thereafter resuming the execution of the process suspended in execution, and referring to received information and conducting processing by using a periodically waked up process.
- the flow of process wakeup and the flow of continuous media data for implementing a process scheduling method of a computer system according to an embodiment of the present invention is shown in FIG. 1.
- the periodic kernel process 101 is a control process periodically driven by timer interrupt handler 104.
- the periodic kernel process 101 selects the next process (hereafter referred to as periodic process) group 102 which should process continuous media data.
- the periodic kernel process 101 implements the periodic scheduling of each periodic process 102. If a periodic process 102 to be scheduled does not exist, the periodic kernel process 101 schedules another normal process 109. Details of this operation will be described afterwards.
- At least one periodic process 102 which processes the same continuous media data forms one process group 103.
- Periodic processes belonging to the process group 103 are given predetermined processing order.
- a periodic process 102 which is the first in processing order is driven preferentially by a change of priority conducted by the periodic kernel process 101.
- the periodic process which is the first in processing order reads continuous media data supplied from an input device 105 via an input buffer 106, and works upon the data.
- the worked data are delivered to a periodic process 102 which is the next in processing order via a shared buffer 110.
- the priority of a periodic process 102 in the process group 103 is inherited one after another.
- a periodic process 102 which is the last in processing order outputs data to an output device 108 via an output buffer 107 and lowers the priority of its own process. Thereby, processing of one period of this process group 103 is substantially terminated.
- a plurality of process groups 103 such as a process group for processing sound information and a process group for processing movie information, may exist.
- a scheduler which is not illustrated is called by a function call to create a scheduling table 900 and drive a specified process.
- the scheduler is a collection of program modules which are activated by a called process and which conduct processing concerning the scheduling.
- the group master process is a process which is at the head in processing order among processes belonging to the process group.
- Processes belonging to the process group other than the group master process are called slave processes. Creation and deletion of the process group 103 are conducted by the group master process by using the following interface.
- master_pid process ID of the group master process slave_pid_array: array of slave process IDs forming the group proc_array_number: the number of slave process IDs forming the group pgroupid: an ID of the generated process group is returned
- the "create_proc_group” function generates a process group having, as the group master, a process specified by "master_pid.”
- the generated process group is formed by process groups specified by “slave_pid_array” and “proc_array_number” in addition to the process specified by "master_pid.”
- a generated process group ID is returned to "pgroupid.” It is premised that individual processes having process IDs specified by "master_pid” and "slave_pid_array” have already been generated.
- the "destroy_proc_group” function deletes a process group specified by "pgroupid.”
- FIG. 2 The data structure of array data and a control block used to manage the process group is shown in FIG. 2.
- the process group is managed by using a process group control block 202.
- the process group control block 202 includes a "master_pid” field 203, a "pid_array” field 204, and a "nproc” field 205.
- the "master_pid” field 203 stores the process ID of the group master process of the process group.
- the "pid_array” field 204 stores a pointer to a process ID array 206.
- the process ID array 206 is an array of process IDs of slave processes forming the process group.
- the "nproc" field 205 stores the number of process IDs stored in the process ID array 206.
- conversion from a process group ID to a process group control block 202 is conducted by using a process group control block pointer array 201.
- a pointer to the process group control block 202 is stored in an element having a process group ID as an index.
- a "nil" pointer is stored in a corresponding element of the process group control block pointer array 201.
- one element included in elements of the process control block pointer array 201 in which the "nil" pointer is stored is searched for. Its index value is used as a return value of the "pgroupid.”
- a memory region used for the process group control block 202 is secured.
- a memory region used for the process ID array 206 is secured.
- the ID of the group master process specified by the argument "master_pid" of the "create_proc_group” function is stored in the "master_pid" field 203 of the process group control block 202 having a memory region secured at the step 302.
- step 305 the array of the process ID of the slave process specified by the argument "slave_pid_array” of the "create_proc_group” function is copied into the process ID array 206 having a memory region sesured at the step 303.
- a pointer to the process ID array is set in the "pid-array" field.
- the number of slave process IDs forming the process group specified by the argument "proc_array_number" of the "create_proc_group” function is stored in the "nproc" field 205 of the process group control block 202 having a memory region secured at the step 302.
- step 401 an element of the process group control block pointer array 201 having the argument "pgroupid" of the "destroy_proc_group” function as the index is searched for, and a memory region which has been used by the process group control block indicated by that element is deallocated.
- a memory region which has been used by the process ID array 206 indicated by the "pid_array" field of the above described process group control block 202 is deallocated.
- the "nil" pointer is substituted for an element of the process group control block pointer array 201 corresponding to the process group to be deallocated.
- a process group 103 becomes the unit of scheduling.
- the group master of the process group 103 reserves the CPU allocated to the process group 103 over a specified time at intervals each equal to a specified period. If allocation of the CPU time has become unnecessary, the group master calls a "dealloc_time_slot" function and cancels its reservation.
- the scheduler determines the CPU allocation sequence so as to satisfy the period and execution time per period requested by each process group, and creates a scheduling table 900. This creation algorithm will be described afterwards.
- the periodic kernel process 101 conducts scheduling of each periodic process 102.
- the periodic kernel process 101 sets the priority of the group master process of that process group 103 to "raised.”
- the periodic process having the priority set to "raised” is assured to have the highest priority among user processes.
- the process 102 having the priority set to "raised” is assured to have priority higher than that of the periodic kernel process 101.
- the timer interrupt handler 104 sets the priority of the periodic process 102 having the priority set to "raised” among the periodic processes belonging to the process group 103 to "depressed.” (The group master process can inherit the priority of another periodic process 102 belonging to the same process group 103. This will be described afterwards.) The process 102 having the priority set to "depressed” is assured to have the lowest priority among user processes.
- any user process or periodic kernel process 101 which does not belong to the process group 103 is not scheduled so long as a periodic process 102 belonging to the process group 103 having the priority set to "raised” is in the executable state.
- any periodic process 102 belonging to the process group 103 is not scheduled.
- a CPU time which is not allocated to any periodic process 102 is allocated to the normal process 109 or an idle process which executes an infinite loop and which is always in the executable state.
- pgroupid process group ID assured of CPU allocation interval: wakeup interval of process length: execution time of process group per period to be secured
- the process group specified by "pgroupid” requests the CPU to be allocated over a time specified by "length” and at a period specified by "interval.”
- the "interval” and “length” are specified by taking a predtermined time slot as the unit.
- the priority of the group master process becomes “raised.”
- the group master process can set the priority of another process belonging to the process group to "raised,” and change the priority of its own process to "depressed” (or reference priority).
- the value of the "interval" must be power of 2. If a value other than that is specified, the scheduler conducts processing by assuming that a largest power value of 2 which does not exceed the specified value has been specified.
- the scheduler Upon being requested to allocate the CPU by the "alloc_time_slot" function, the scheduler cannot always conduct scheduling of the process group 103 as requested by all process groups 103. The reason will now be described. As shown in FIG. 5, a plurality of process groups 501 and 502 cannot be scheduled at the same time. Therefore, it beomes necessary to shift the overlap time of the CPU allocation time 503 of either one of overlapping process groups 501 and 502 to a different time 504. That is the reason.
- the scheduler determines the CPU allocation time of each process group and registes the result in the scheduling table 900 which will be described afterwards.
- the CPU allocation is conducted by taking the timer interrupt occurrence interval as the unit. By using the timer interrupt occurrence time as a boundary, the real time is divided into a group of time slots.
- a process group 103 to be allocated is determined for each time slot.
- a time slot table 700 as shown in FIG. 7 is created.
- the time slot table 700 has the same size as the greatest "interval" value among "interval" values requested by a process group 103 to be allocated (i.e., a process group 103 for which a CPU allocation reservation request has already been issued by the "alloc_time_slot” function).
- the time slot table 700 is a one-dimensional array. In each element of the array, an ID of a process group 103 to be allocated to a corresponding time slot is stored. As an initial value of each element, an ID indicating that the time slot is not yet allocated is stored.
- step 602 it is determined whether a process group 103 for which a time slot to be allocated has not yet been determined is present. If allocation of time slots for all process groups 103 has been completed, termination takes place at step 613.
- a process group 103 which is minimum in "interval” value requested at the time of issuance of the "alloc_time_slot” function is selected out of process groups 103 for which a time slot to be allocated has not yet been determined.
- step 604 the requested "interval" value and "length” value of the process group 103 selected at the step 603 are substituted for I and L, respectively.
- time slots included in time slots 0 through I-1 and not yet allocated are collected in groups every adjacent time slots.
- step 606 If at step 606, the sum total of sizes (the number of time slots) of adjacent empty time slots obtained at the step 605 is less than L, time slot allocation satisfying requests of all process groups 103 is judged to be impossible and abnormal termination takes place (step 614).
- step 607 adjacent empty time slots obtained at the step 605 and having a maximum size are compared in magnitude with L.
- one having a minimum size is selected at step 608 out of adjacent empty time slots having at least the size of L.
- step 609 L time slots located at the head of the adjacent empty time slots selected at the step 608 are allocated to the process group 103 selected at the step 603.
- time slots located I, 2I, 3I, ... time slots after are also allocated to the process group 103 selected at the step 603.
- time slot allocation to the process group 103 selected at the step 603 is completed, and a jump to the step 602 takes place.
- step 607 L If at the step 607 L is greater than the maximum adjacent empty time slot size, adjacent empty time slots having a maximum size are selected at step 610.
- step 611 all time slots belonging to the adjacent empty time slots selected at the step 610 are allocated to the process group 103 selected at the step 603. In addition to the time slots allocated at this time, time slots located I, 2I, 3I, ... time slots after are also allocated to the process group 103 selected at the step 603.
- the L minus the size of the adjacent empty time slots selected at the step 610 is set as a new L value, and a jump to the step 605 takes place.
- FIGS. 7 and 8 An example of creation of a time slot table 700 will now be described by referring to FIGS. 7 and 8. It is now assumed that the number of process groups 103 to which time slots are allocated is three. In FIG. 8, "interval" values 801 and “length” values 802 requested by each process group 103 are shown.
- time slot table 700 having a size of 32 which is the maximum value of the "interval" value 801 requested by three process groups 103 is created.
- Each element of the time slot table 700 is initialized to have an ID indicating that allocation has not yet been conducted.
- Time slots allocated to a process group A having a minimum "interval" value 801 are determined. From time slots included in time slots 0 through 7, adjacent empty time slots are generated. In this case, one adjacent empty time slot group having a size of 8 formed by time slots 0 through 7 is generated.
- the "length" value 802 equivalent to two requested by the process group A is less than the size 8 of the adjacent empty time slots thus generated. Therefore, two time slots located at the head of the adjacent empty time slots, i.e., time slots 0 and 1 are allocated to the process group A. Besides, time slots located thereafter at an interval equal to an integer times of the "interval" value 801 of eight requested by the process group A are also allocated to the process group A. Besides the time slots 0 and 1, time slots 8, 9, 16, 17, 24 and 25 are thus allocated to the process group A. In accordance therewith, corresponding elements of the time slot table 700 are updated. Thereby, allocation of time slots to the process group A is completed.
- time slots allocated to a process group B having a second least "interval" value 801 are determined. From time slots 0 through 15, adjacent empty time slots are generated. In this case, two adjacent empty time slot groups each having a size of 6 and respectively including time slots 2 through 7 and time slots 10 through 15 are generated.
- the "length" value 802 equivalent to three requested by the process group B is less than this size 6.
- Out of adjacent empty time slots having a size of at least 3, adjacent empty time slots having a minimum size are selected.
- adjacent time slots formed by time slots 2 through 7 are selected.
- Three time slots located at the head of the adjacent empty time slots are allocated to the process group B.
- time slots 2 through 4 are allocated to the process group B.
- time slots 18 through 20 are also allocated to the process group B.
- corresponding elements of the time slot table 700 are updated. Thereby, allocation of time slots to the process group B is completed.
- time slots alllocated to the process group C are determined. From time slots 0 through 31, adjacent empty time slots are generated. In this case, the following adjacent empty time slots are generated:
- the "length" value 802 of seven requested by the process group C is greater than the maximum size 6 of the above described adjacent empty time slots. First of all, therefore, one adjacent empty time slot group having a maximum size of 6 is selected. All time slots belonging to the adjacent empty time slots, i.e., the time slots 10 through 15 are allocated to the process group C. In accordance therewith, corresponding elements of the time slot table 700 are updated.
- adjacent empty time slots having a size of at least 1 is selected from adjacent empty time slots having a size of at least 1.
- adjacent empty time slots formed by time slots 5 through 7 are selected.
- One time slot located at the head of the adjacent empty time slot, i.e., time slot 5 is allocated to the process group C.
- corresponding elements of the time slot table 700 are updated. Thereby, allocation of time slots to the process group C is completed.
- Process groups allocated for each time slot by the processing heretofore described are determined as shown in FIG. 7. From this, the scheduler generates the scheduling table 900 shown in FIG. 9.
- This scheduling table 900 is a table describing the order of process groups 915 to which the CPU should be allocated and their allocation times 916 (the number of time slots).
- an end flag 917 indicates whether allocation of the process group 915 corresponding to one period is finished when the CPU allocation of that line has been completed. For example, the end flag 917 for 903 becomes OFF, i.e., FALSE, because allocation corresponding to one period is not completed even if the time slot 5 is allocated to the process group C.
- the end flag 917 for 906 becomes ON, i.e., TRUE, because allocation corresponding to one period is completed if the time slots 10 through 15 are allocated.
- An index 914 is a pointer indicating a line (entry) of the scheduling table 900 to which the CPU is subsequently allocated.
- a time slot for which the process group 915 specifies "OTHERS” is a time slot allocated to the normal process 109.
- "OTHERS" 907 indicates that if execution of the periodic process in the process group C is finished before elapse of six time slots allocated to the process group C, time slots which have become empty are allocated to the normal process 109.
- the scheduler Whenever the "alloc_time_slot" function is issued, the scheduler recreates the scheduling table 900 on the basis of the existing table as shown in FIG. 8 and a request conducted by the new "alloc_time_slot" function.
- the periodic kernel process 101 conducts scheduling of the process group 103.
- the periodic kernel process 101 changes the priority of a periodic process 102 belongiong to the process group 103 which has requested periodic CPU allocation to "raised,” “depressed,” or reference priority. Thereby, the scheduling is implemented.
- a periodic process having priority set to "raised” by the periodic kernel process 101 changes the priority of its own process to "depressed,” and changes the priority of other periodic processes belonging to the same process group to "raised.” As a result, handoff scheduling in the process group is implemented.
- pid process ID time: time during which the priority is kept at "raised” flags: flag specifying the priority obtained after a specified time has elapsed
- the priority of the process is changed to the reference priority.
- the priority of the process is changed to "depressed.” Furthermore, whether a signal is to be transmitted to a process specified by the "pid" when a specified time has elapsed is specified by the following flag.
- a timeout signal is transmitted to a process specified by "pid" when a specified time has elapsed.
- the "proc_raise” function sets the priority of a process specified by "pid” to "raised” for a time (the number of time slots) specified by "time.”
- time 916 allocated to a process group to which that process belongs or INFINITY is specified.
- a process having priority set to "raised” is assured of having priority higher than that of any other user process.
- pid process ID flags: flag specifying the priority obtained after a change. The following can be specified.
- the priority of the process is changed to the reference priority.
- the "proc_raise_cancel” function changes the priority of the process set to "raised” by the "proc_raise” function.
- the priority after the change becomes the reference priority according to the scheduling attribute. If “PRIORITY_DEPRESSED” is specified in "flags" beforehand, the priority after the change becomes "depressed.”
- pid process ID flags: flag specifying the priority obtained after handoff. The following can be specified.
- the priority of the process is changed to the reference priority.
- the "proc_raise_handoff” function sets the priority of the process specified by "pid” to "raised,” and changes the priority of its own process according to "flags.”
- the process specified by "pid” must belong to the same process group as the calling process. Otherwise, an error return is caused. If "PRIORITY_NORMAL" is specified in “flags" beforehand, the priority of the calling process after handoff becomes the reference priority. If “PRIORITY_DEPRESSED" is specified in "flags" beforehand, the priority of the calling process after handoff becomes "depressed.”
- the priority of the calling process must be "raised.” If a process having priority other than "raised” calls the present function, the error return is caused.
- pid process ID time: time during which the priority is kept at "depressed" flags: flag specifying the priority obtained after a specified time has elapsed. The following flags can be specified.
- the priority of the process is changed to the reference priority.
- the "proc_depress” function sets the priority of a process specified by "pid” to “depressed” for a time (the number of time slots) specified by "time.” The process having priority set to "depressed” is assured of having priority lower than any other user process.
- the "proc_depress” function is issued mainly for the periodic kernel process 101 to lower the priority of its own process and wake up the normal process 109.
- pid process ID flags: flag specifying the priority obtained after a change. The following can be specified.
- the priority of the process is changed to the reference priority.
- the "proc_depress_cancel” function changes the priority of the process set to "depressd” by the "proc_depress” function.
- the priority after the change becomes the reference priority.
- the priority after the change becomes "raised.”
- FIG. 10 The data structure of array data and control block required for implementing the above described function group are shown in FIG. 10.
- Process management is conducted by using a process control block 1002.
- process control blocks 1002 of processes assuming the executable (ready) state are connected to bidirectional queues (hereafter referred to as bidirection ready queues) having elements of a ready queue header array 1001 as queue headers.
- the ready queue header array 1001 is an array of queue headers (i.e., pointers indicating a process control block) of bidirectional queues associated with respective priorities having priority as an index value. It is assumed that priority having a smaller value is higher priority. The value of the highest priority is represented by "raised,” and the value of the lowest priority is represented by "depressed.”
- the process control block 1002 holds a "next_proc" field 1003 and a prev_proc field 1004 in order to be connected to a bidirectional ready queue associated with priority.
- a pointer to a process control block 1002 located behind in the bidirectional queue and a pointer to a process control block 1002 located before are stored, respectively.
- a pointer to an element of the ready queue header array 1001 is stored in the "next_proc" field 1003 of a process control block located at the end of the bidirectional ready queue.
- a "counter” field 1005, a "flags” field 1006, a "context” field 1007, and a “base_pri” field 1010 are present in the process control block 1002.
- the "counter” field 1005 holds a remaining time (represented by the number of time slots) during which that process can maintain the priority of "raised” or “depressed.”
- the "flags” field 1006 there is stored a flag indicating the priority of the process to be changed after the time during the priority of "raised” or “depressed” can be maintained has elapsed.
- the "context” field 1007 is a region for saving the execution context of the process.
- the reference priority of the process is stored at the time of process generation.
- Conversion of the process ID to a process control block 1002 is conducted by using a process control block pointer array 1009. Specifically, in an element of the process control block pointer array 1009 having the process ID as an index, a pointer to a process control block 1002 is stored beforehand. In the case where the process control block 1002 corresponding to the process ID is not present, a "nil" pointer is stored beforehand in the corresponding element of the process control block pointer array 1009.
- the scheduler derives an element of the process control block pointer array 1009 having the argument "pid" of the "proc_raise” function as the index, and dequeues the process control block 1002 indicated by that element from the bidirectional ready queue.
- an element of the ready queue header array 1001 having "raised” as the index, and the process control block 1002 derived at the step 1101 is enqueued at the end of a bidirectional ready queue having that element as the queue header.
- step 1103 the value specified by the argument "time” of "proc_raise” function is stored in the "counter" field 1005 of the process control block 1002 obtained at the step 1102.
- step 1104 the value specified by the argument "flags" of the "proc_raise” function is stored in the "flags" field 1006 of the process control block 1002 obtained at the step 1102.
- the current execution contexts are saved in the context field 1007 of the process control block 1002 indicated by "ctxproc" 1008.
- a pointer to the process control block 1002 of the process having the highest priority in the system is stored in the "ctxproc" 1008.
- the process control block of the process having the highest priority in the system can be searched for by using the following procedure.
- Out of bidirectional ready queues stored in the ready queue header array 1001 a bidirectional ready queue having a queue length of at least 1 and having a minimum index value is first derived.
- the process control block 1002 queued at the head of that bidirectional ready queue becomes the derived process control block 1002.
- the process specified by the argument "pid" of the "proc_raise” function and connected to the ready queue header array 1001 with the value of "raised” at the step 1102 is the process having the highest priority.
- step 1107 the execution context saved in the "context" field 1007 of the process control block derived at the step 1106 is restored.
- process switching is caused and the restored process of the execution context is dispatched.
- the process control block pointer of the process having the highest priority in the system is compared with contents of the "ctxproc" 1008 and both of them are the same, the processing of the steps 1105 through 1107 may be skipped.
- proc_raise_cancel "proc_raise_handoff”
- the processing becomes similar to that of the "proc_raise” function and will not be described.
- timer interrupt handler 104 In the case where the "proc_raise” function and the "proc_depress” function have been issued, it is necessary to determine whether the time specified by the argument "time” has elapsed since issuance of those functions. This determination is conducted in the timer interrupt handler 104 by using the "counter" field 1005 of the process control block. In addition, the timer interrupt handler 104 conducts drive processing of the periodic kernel process 101 as well. The processing flow of the timer interrupt handler 104 conducting them is shown in FIG. 12.
- an element having the "raised" of the ready queue header array 1001 as the index is derived, and a pointer to a process control block 1002 stored in that element is substituted for a variable "PCB.”
- step 1202 it is determined whether the value of the "PCB" updated at the step 1201 is a "nil" pointer. If it is a "nil" pointer, a jump to step 1207 is effected. Unless it is a "nil" pointer, a jump to step 1203 is effected.
- the "counter" field 1005 of the process control block 1002 indicated by the "PCB” is decreased by one. In the case where "INFINITY" is stored in the "counter" field 1005 beforehand, however, nothing is conducted.
- step 1204 it is determined whether the value of the "counter” field 1005 of the process control block 1002 indicated by the "PCB" is 0. If the value of the "counter” field 1005 is 0, a jump to step 1205 is effected. If the value of the "counter” field 1005 is other than 0, a jump to step 1206 is effected.
- ready queue operation is conducted according to the "flags" field 1006 of the process control block 1002 indicated by the "PCB.” Specifically, the following operation is conducted. First of all, the process control block 1002 indicated by the “PCB” is dequeued from the bidirectional ready queue. In the case where "PRIORITY_NORMAL" is stored beforehand in the "flags” field 1006, an element having as the index a value stored in the "base_pri” field 1010 of the ready queue header array 1001 is then derived, and the process control block 1002 indicated by the "PCB” is enqueued at the end of a bidirectional ready queue having that element as the queue header.
- step 1206 the value of the "PCB” is updated to have the value of the next_proc field 1003 of the process control block 1002 indicated by the "PCB.” Thereafter, a jump to the step 1202 is effected.
- an element having the "depressed" of the ready queue header array 1001 as the index is derived, and a pointer to a process control block 1002 stored in that element is substituted for a variable "PCB.”
- step 1208 it is determined whether the value of the "PCB" updated at the step 1207 is a "nil" pointer. If it is a "nil" pointer, a jump to step 1213 is effected. Unless it is a "nil" pointer, a jump to step 1208 is effected.
- the "counter" field 1005 of the process control block 1002 indicated by the "PCB” is decreased by one. In the case where "INFINITY" is stored in the "counter" field 1005 beforehand, however, nothing is conducted.
- step 1210 it is determined whether the value of the "counter” field 1005 of the process control block 1002 indicated by the "PCB" is 0. If the value of the "counter” field 1005 is 0, a jump to step 1211 is effected. If the value of the "counter” field 1005 is other than 0, a jump to step 1212 is effected.
- ready queue operation is conducted according to the "flags" field 1006 of the process control block 1002 indicated by the "PCB.” Specifically, the following operation is conducted. First of all, the process control block 1002 indicated by the “PCB” is dequeued from the bidirectional ready queue. In the case where "PRIORITY_NORMAL" is stored beforehand in the "flags” field 1006, an element having as the index a value stored in the "base_pri” field 1010 of the ready queue header array 1001 is then derived, and the process control block 1002 indicated by the "PCB” is enqueued at the end of a bidirectional ready queue having that element as the queue header.
- step 1212 the value of the "PCB” is updated to have the value of the "next_proc" field 1003 of the process control block 1002 indicated by the "PCB.” Thereafter, a jump to the step 1208 is effected.
- steps 1213 through 1216 drive processing of the periodic kernel process 101 is conducted. The periodic kernel process 101 is driven in the case where an event hereafter described has occurred.
- the periodic kernel process 101 changes the priority of its own process to "depressed” as described in (a). Each time the "minimum interval” elapses, however, it becomes necessary to allocate the CPU time to the process group 915 requesting the driving conducted at the "minimum interval”s. Therefore, the periodic kernel process 101 is driven at the "minimum interval” periods to allocate the CPU time to the corresponding process group.
- the driving interval of the periodic kernel process 101 according to the "minimum interval” is managed by a variable “kproc_timer.”
- kproc_timer When the scheduling table 900 is created by the "alloc_time_slot” function, this variable is initialized to the "minimum interval” by the scheduler.
- the "kproc_timer" is decreased by one.
- step 1214 it is determined whether the value of the "kproc_timer" updated at the step 1213 is 0.
- the value of 0 indicates the driving invoking of the periodic kernel process 101 described above in (b).
- the "kproc_timer” is initialized again and thereafter a jump to step 1215 is effected.
- the "index" 914 of the scheduling table 900 is advanced to an entry having "OTHERS" stored in the field of the process group 915.
- the present step updates so that the "index” will indicate the entry of 907.
- the periodic kernel process 101 driven at step 1216 can start processing of allocating the CPU time to the process group 915 from the next entry with respect to the entry storing "OTHERS” in the field of the process group 915.
- the "index" 914 already indicates the entry storing "OTHERS” in the field of the process group 915, nothing is conducted.
- the "proc_depress_cancel” (“kern_proc,” “PRIORITY_NORMAL”) function is called.
- the “kern_proc” represents the process ID of the periodic kernel process 101. If the priority of the periodic kernel process 101 is "depressed,” the priority of the periodic kernel process 101 is changed from the “depressed” to the reference priority (high priority next to the “raised”) by execution of the present function. If the priority of the periodic kernel process 101 is the reference priority, the priority is not changed by executing this function. At this time point, it is assured that a process having priority "raised” is not present. (The scheduling table 900 is set so that the CPU time will not be allocated to each process group 915 without waiting the driving invoking of the periodic kernel process 101.) Therefore, driving of the periodic kernel process 101 in the above described case (b) can be carried out.
- the periodic kernel process 101 is driven by the timer interrupt handler 104 at intervals each equal to the time 916 allocated to the process group 103 requesting the CPU allocation or the "minimum interval.” In other words, the process which has been executing the timer interrupt handler 104 at that time wakes up the periodic kernel process 101.
- the periodic kernel process 101 operates with the reference priority.
- the "index" 914 of the scheduling table 900 is increased by a value corresponding to one entry.
- the "index" 914 of the scheduling table 900 indicates an entry representing a process group 915 to which the CPU should be subsequently allocated by the periodic kernel process 101.
- step 1302 the entry of the scheduling table 900 indicated by the "index" 914 is searched for.
- step 1303 it is determined whether the field of the process group 915 of the entry obtained at the step 1302 contains "OTHERS.”
- the "proc_depress (MYSELF, INFINITY, PRIORITY_NORMAL) function is called at step 1304.
- the periodic kernel process 101 has priority “depressed” until the "proc_depress_cancel” function is isssued.
- the "proc_depress_cancel” function is isssued from the timer interrupt handler 104.
- the normal process 109 which does not conduct the continuous media processing i.e., a process which does not request the periodic scheduling by using the "alloc_time_slot” function) is subjected to scheduling.
- step 1305 it is determined at step 1305 whether the process group 915 to which the CPU should be subsequently allocated has completed the execution corresponding to one period. This is judged by using a flag of a "done” field 1401 of a process group state table 1400 as shown in FIG. 14.
- the "done” field 1401 is a field for describing whether the execution corresponding to one period has been completed, for each of process groups 103 requesting the periodic scheduling by using the "alloc_time_slot” function.
- a periodic process 102 belonging to a process group 103 requesting the periodic scheduling issues the "proc_raise_cancel" function to its own process when the execution corresponding to one period has been completed as described afterwards.
- the "done” flag of the process group 103 that the periodic process 102 which has called this function belongs to is set within the processing routine of this function.
- step 1301 If the end flag 917 is "FALSE,” a return to step 1301 is effected.
- end flag 917 is "TRUE”
- a corresponding flag of the "done" field 1401 of the process group state table 1400 is cleared at step 1308.
- an "active pid” field 1402 is also initialized. This initializing method will be described below. Thereafter, a return to the step 1301 is effected.
- the corresponding entry is initialized.
- the entry in the "active pid" field 1402 corresponding to the process group 915 selected at the step 1302 is initialized to have the process ID of the group master of that process group 915.
- the "proc_raise_handoff” function is issued, in that processing routine the corresponding entry of the "active pid” field 1402 is updated to have a process ID of the handoff destination. If the "proc_raise_cancel” function is issued and the end flag 917 is "TRUE,” in that processing routine the corresponding entry of the "active pid” field 1402 is initialized.
- step 1310 If the end flag 917 is judged to be "FALSE” at the step 1309, "proc_raise (pid, TIME, PRIORITY_DEPRESS)" is issued at step 1310 and processing is terminated.
- the method for setting the "pid” and “TIME” is similar that of the step 1307. In this case as well, the periodic process 102 specified by the "pid” is scheduled over the time specified by the "TIME" immediately after this step.
- FIGS. 15 through 17 Operation of the periodic processes 102 belonging to the process group 103 requesting the periodic scheduling is shown in FIGS. 15 through 17.
- FIG. 15 is a diagram showing the wakeup sequence of periodic processes 102 belonging to a process group 103.
- the processing order of periodic processes 102 belonging to a process group 103 is predetermined.
- a group master process 1501 of the process group 103 is made “raised” in priority by the "proc_raise” function of the periodic kernel process 101 to conduct wakeup.
- the "proc_raise_handoff” function By using the "proc_raise_handoff” function, each process 102 belonging to the process group 103 gives its priority to the next periodic process 102 in order. The priority of its own process 102 after inheritance becomes “depressed.”
- the "proc_raise_cancel” function the last periodic process 102 in order completes execution corresponding to one period.
- FIG. 16 is a program showing the operation of the group master process 1501.
- a process group 103 having its own process as the group master process 1501 is created. Thereafter, this process group 103 becomes the unit of scheduling.
- a 1603rd line through a 1606th line form a loop for conducting the continuous media processing.
- the "proc_raise_handoff" function is called and the priority of a process 102 belonging to the process group 103 created in the 1601st line to be subsequently processed is set to "raised” in the 1605th line. The priority of its own process becomes “depressed.”
- FIG. 17 is a program showing the operation of the slave process 102.
- a 1702nd line through a 1704th line form a loop for conducting the continuous media processing.
- the "proc_raise_handoff” function is called and the priority of a process 102 belonging to the process group 103 created in the 1601st line to be subsequently processed is set to "raised” in the 1703rd line.
- the priority of its own process becomes “depressed.”
- the last periodic process 102 in order issues the "proc_raise_cancel” function and changes the priority of its own process to "depressed” in the 1704th line. If the execution loop of the continuous media processing has been executed a predtermined number of times, the program is terminated.
- a timeout signal is transmitted to the process 102 registered in the "active pid" field 1402 of the process group state table 1400.
- a flag indicating "IN_SIFNAL_TRANSACTION” set in the flag in the "done" field 1401 of the process group table 1400.
- the execution end judgment of the process group 915 at the step 1305 is always "TRUE.” Furthermore, clearing the "done" field 1401 at the step 1308 is not conducted either. In other words, the signal handler is scheduled and executed with the reference priority of the periodic process 102 in the same way as the normal process 109. As a result, it can be assured that the processing delay of one stream does not affect the processing of another stream.
- a single periodic kernel process 101 conducts periodic scheduling of all process groups 103 on the basis of the scheduling table 900. Therefore, the execution of the periodic process 102 is not delayed due to occurrence of access contention among a plurality of process groups 103 for the CPU time. Furthermore, after the execution priority of a periodic process 102 has been changed, wakeup of the periodic process depending upon the process dispatch is conducted. As compared with the case a periodic process is waked up via inter-process communication, therefore, the overhead caused by the wakeup notice is reduced. Furthermore, the signal handler processing for a process which has exhausted the specified CPU time and caused timeout is executed with the reference priority of that process. Therefore, the signal handler processing is prevented from causing an execution delay of another process group.
- process switching is conducted from the process executing the timer interrupt handler 104 to the periodic kernel process 101 at intervals each equal to the "time" 916 allocated to the process group 103 or the "minimum interval.” At this time, therefore, the overhead of the process switch intervenes.
- a module hereafter referred to as scheduler
- the timer interrupt handler 104 and the scheduler are executed in the same process. Thereby, the overhead of the process switch from the timer interrupt handler 104 to the periodic kernel process 101 is reduced.
- the configuration of a system for implementing the present invention by using the scheduler is shown in FIG. 18. While the operation of the scheduler in the present embodiment will be described afterwards by referring to FIG. 20, it is different from the operation of the conventional scheduler shown in the steps 1105 through 1107.
- one scheduler 1801 is present.
- the scheduler changes the priority of the periodic process, determines a process to be subsequently scheduled, and conducts the dispatch operation of that process.
- the scheduler is periodically called by a timer interrupt handler 104.
- a periodic process 102 conducting the continuous media processing gives the priority to the next periodic process 102 in processing order, and when the last process 102 in processing order completes the execution corresponding to one period and changes the priority of its own process, the scheduler is called in the processing routine of each function.
- periodic processes 102 which process the same continuous media processing data form a process group 103.
- the creation and deletion of the process group 103 are conducted by using the above described "create_proc_group” and "destroy_proc_group” functions.
- a periodic process 102 which is the first in processing order in the process group 103 reads continuous media data from an input device 105 via an input buffer 106, and works upon the data. The worked data are delivered to a periodic process 102 which is the next in processing order via a shared buffer 110.
- a periodic process 102 which is the last in processing order outputs data to an output device 108 via an output buffer 107.
- a process group 103 becomes the unit of scheduling.
- a group master process of the process group 103 reserves allocation of the CPU to the process group 103 over a specified time at intervals each equal to a specified period. If allocation of the CPU time has become unnecessary, the group master calls the above described "dealloc_time_slot" function and cancels its reservation.
- the scheduler determines the CPU allocation sequence so as to satisfy the period and execution time per period requested by each process group, and creates a scheduling table 900. This creation algorithm was described with reference to the first embodiment.
- the scheduler 1801 conducts scheduling of each periodic process 102.
- the scheduler 1801 Upon arrival at the time when the CPU should be allocated to the process group 103, the scheduler 1801 sets the priority of the group master process of that process group 103 to "raised.” (In other words, the scheduler 1801 calls the above described "proc_raise” function.)
- the scheduler 1801 called by the timer interrupt handler 104 sets the priority of the periodic process 102 having the priority set to "raised” among the periodic processes belonging to the process group 103 to "depressed.” This method of calling the scheduler from the timer interrupt handler and operation of the scheduler will be described in detail afterwards.
- any user process which does not belong to the process group 103 is not scheduled so long as a periodic process 102 belonging to the process group 103 having the priority set to "raised" is in the executable state. Over the time during which the CPU should not be allocated, any periodic process 102 belonging to the process group 103 is not scheduled. A CPU time which is not allocated to any process group 103 is allocated to the normal process 109 or an idle process.
- the scheduler 1801 can be called by the timer interrupt handler 104 or a periodic process 102 requesting a priority change of its own process or another process.
- the form of a command list used to call the scheduler is shown in FIG. 19.
- the timer interrupt handler 104 or a periodic process 102 attempting to call the scheduler 1801 specifies a pointer 1901 to an entry located at the head of the command list shown in FIG. 19, as the argument of its calling function.
- the command list shows scheduler operation orders in a list form. Each entry of the command list is formed by a "next_command” field 1902, a "flag” field 1903, and a "pid” field 1904. In the "next_command” field 1902, a pointer to the next entry is stored.
- the value of the "next_command" field of the entry located at the end of the list is “nil.”
- In the "flag” field "HANDOFF,” “CANCEL,” “INTERVAL,” or “TIMER” can be specified.
- the "pid” field has a meaning only when the "flag” field holds “HANDOFF.”
- timer interrupt handler 104 Each time the timer interrupt handler 104 conducts driving, it delivers a command list having an entry with "TIMER” stored in the "flag” to the scheduler 1801. At intervals each equivalent to the "minimum interval" of the process group 103 requesting the CPU allocation, the timer interrupt handler 104 also delivers an entry having "INTERVAL" stored in the "flag” to the scheduler besides the above described entry. Therefore, it is necessary for the timer interrupt handler 104 to judge the "minimum interval" by using the above described "kproc_timer.”
- a periodic process 102 In the case where a periodic process 102 gives its priority to the next periodic process in processing order, it delivers a command list having an entry with "HANDOFF" stored in the "flags” and an ID of the next periodic process 102 in processing order stored in the "pid" to the scheduler.
- the last periodic process 102 in processing order completes the execution corresponding to one period and changes the priority of its own process to "depressed," the last periodic process delivers a command list having an entry with "CANCEL” stored in "flags" to the scheduler.
- the scheduler searches for the "flag" field of an entry located at the top of the delivered command list. If the "flag” field indicates “HANDOFF,” a jump to step 2002 is effected. If the "flag” field indicates “CANCEL,” a jump to step 2003 is effected. If the “flag” field indicates “INTERVAL,” the step 1215 is executed and then a jump to step 2006 is effected. If the "flag” field indicates "TIMER,” the steps 1201 through 1212 are executed.
- step 2014 If at step 2014 the process is a process the "PCB->counter" of which has been judged to be 0, i.e., a process for which the CPU time 916 allocated to the process group 915 has elapsed, and the "flag" field indicated by the "next_command" does not hold the "INTERVAL," a jump to step 2006 is effected. In the case where this condition is not satisfied, a jump to step 2012 is effected.
- step 2002 the priority of the periodic process 1202 functioning as the inheritance source of the priority, the priority of the periodic process 1202 functioning as the inheritance destination, and the counter field 1005 and the flag field 1006 in the process control block 1002 are updated.
- This updating method becomes similar to the flow chart shown in FIG. 11, and consequently it will not be described. Then, a jump to the step 2012 is effected.
- step 2003 the end flag 917 of a process group to which the CPU time has been allocated immediately before the wakeup of the scheduler (an entry indicated by the index 914 of the scheduling table 900) is searched for. If the end flag 917 is ON, a jump to step 2005 is effected. If the end flag 917 is OFF, a jump to step 2004 is effected.
- step 2004 the "done" field 1401 of the corresponding entry of the process group state table 1400 is set, and a jump to the step 2006 is effected.
- step 2005 the same operation as the step 1308 is conducted and a jump to the step 2006 is effected.
- step 2006 the same operation as the steps 1301 through 1302 is conducted and a jump to the step 2007 is effected.
- step 2007, it is inspected whether the field of the process group 915 of the entry obtained at the step 2006 indicates "OTHERS.” If it indicates "OTHERS,” a jump to step 2012 is effected. If it indicates something other than "OTHERS", a jump to step 2008 is effected.
- step 2008 the end flag 917 of the entry indicated by the index 914 increased at the step 2006 and the "done" field 1401 of the process group state table 1400 corresponding to that entry are searched for. If both bits are set, a jump to step 2009 is effected. If only the "done" field is set beforehand, a jump to step 2006 is effected. If only the end flag is set beforehand, a jump to step 2010 is effected. If both the "done" field and the end flag are cleared beforehand, a jump to step 2011 is effected.
- step 2009 the same operation as the step 1308 is conducted and a jump to step 2006 is effected.
- step 2010 the priority of the periodic process 102 functioning as the group master process 1501 of the process group 103 registered in the entry which is in turn indicated by the index 914 is changed to the "raised” over a time specified by the "time" field 916 of the entry, and the priority of the process and the "counter” field 1005 and the "flag” field 1006 of the corresponding process control block 1002 are updated in order to transmit a signal after an elapse of that time.
- This updating method becomes similar to the flow chart shown in FIG. 11 and consequently it will be omitted. Thereafter, a jump to the step 2012 is effected.
- step 2011 the priority of the periodic process 102 functioning as the group master process 1501 of the process group 103 registered in the entry which is in turn indicated by the index 914 is changed to the "raised” over a time specified by the "time" field 916 of the entry, and the priority of the process and the "counter” field 1005 and the "flag” field 1006 of the corresponding process control block 1002 are updated in order to transmit a signal after elapse of that time.
- This updating method becomes similar to the flow chart shown in FIG. 11 and consequently it will be omitted. Thereafter, a jump to the step 2012 is effected.
- the "next_command" field of the entry processed at the steps 2001 through 2011 is searched for. If that value is not “nil,” a jump to the step 2001 is effected. If that value is "nil,” the steps 1105 through 1107 are executed and thereafter termination is conducted.
- asynchronous event processing such as receiving processing of network packets requires response performance of some degree. If the asynchronous event processing takes preference and the priority of the process conducting that processing is made higher than that of the periodic process 102, a delay might be incurred in the execution time of the periodic process 102.
- the interrupt handler conducting the processing of receiving the network packets is provided with a hierarchical structure.
- the periodic kernel process 101 In the timer interrupt handler 104, the periodic kernel process 101, the scheduler 1801, and the process group 103 of the first and second embodiments, there are no changes.
- the third embodiment is carried out so as to reinforce the first or second embodiment.
- FIG. 21 shows the configuration of the system around the present interrupt handler and the configuration of the interrupt handler.
- the timer interrupt handler 104, the periodic kernel process 101, and the scheduler 1801 are not illustrated.
- the present system includes a CPU 2101 and an ethernet board 2102 as hardware.
- the ethernet board 2102 Upon receiving a packet, the ethernet board 2102 functions to notify the CPU 2101 of arrival of the packet and drive, on the CPU 2101, a routine (interrupt handler) for conducting packet receiving processing.
- a routine interrupt handler
- a second level interrupt handler 2104 and an application program 2105 are provided on the CPU 2101.
- the second level interrupt handler 2104 is periodically driven by the periodic kernel process 101 or the scheduler 1801 according to the above described scheduling method.
- the application program 2105 is a business program for processing the received packet, and it is run by a periodic process 102 or the normal process 109.
- the operation flow of the first level interrupt handler 2103 is shown in FIG. 22.
- the first level interrupt handler 2103 is driven upon a notice of packet arrival given by the ethernet board 2102.
- the received packet is first enqueued in a packet queue 2106.
- one receiving buffer is secured out of free buffers 2108.
- a command requesting the receiving buffer secured at the step 2202 to receive packets is issued to the ethernet board 2102.
- all that the first level interrupt handler 2103 performs is to secure the receiving buffer and prepares for packet receiving, and the first level interrupt handler 2103 does not conduct at all the processing of referring to information stored in the receiving buffer.
- the ethernet board 2102 cannot receive packets which arrive until execution of the step 2203 since notification of packet arrival. Because the address of the receiving buffer which should store received packets is not specified by the first interrupt handler 2103. If a packet arrives during that time, therefore, the ethernet board 2102 fails in packet receiving and that packet is lost, but that time is limited to a minimum.
- the second level interrupt handler 2104 is periodically driven with the specified period.
- a packet enqueued by the first level interrupt handler 2103 and linked to the packet queue 2106 is dequeued, and protocol processing is conducted by referring to the dequeued packet. If received data to be delivered to the application program 2105 are obtained as a result of this protocol processing, the received data are enqueued in a received data queue 2107. Therefore, the second level interrupt handler 2104 is scheduled simply as one of periodic processes 102 belonging to a certain process group 103.
- the application program 2105 functions to dequeue the received data enqueued in the received data queue 2107 and deallocate the receiving buffer storing the received data.
- the execution of the periodic process is suspended and execution of the first interrupt handler 2103 is started.
- loss of a packet is prevented from being caused due to a failure of the ethernet board 2102 in receiving a packet.
- the probability of the packet loss and the execution delay of the periodic process 102 are reduced and both of these advantages are reconciled as compared with the conventional case where the first level interrupt handler 2103 and the second level interrupt handler 2104 are processed by one packet receiving interrupt handler.
- the second level interrupt handler 2104 is scheduled as a periodic process 102. Until the time when the CPU 2101 is allocated to its own process is reached, therefore, the second level interrupt handler 2104 does not start the execution even if the packet queue has a packet queued therein. Immediately upon completion of the execution of the first level interrupt handler 2103, therefore, the execution of the periodic process is resumed.
- the execution suspension time of the periodic process 102 caused by arrival of a packet can be suppressed to only the execution time of the first level interrupt handler 2103.
- the second level interrupt handler 2104 is assured of periodic driving. Until a time corresponding to the driving period elapses since arrival of a packet, therefore, the second level interrupt handler 2104 is driven at least once without fail. In other words, the upper limit of the time required until a packet is enqueued in the received data queue 2107 since arrival of the packet becomes also the driving period of the second level interrupt handler 2104. Thus the response performance of the network packet receiving processing can also be assured.
- the periodic process scheduling method according to the first through third embodiments of the present invention have been described in detail.
- the program for executing the scheduling method in each embodiment is stored in a recording medium such as a hard disk or a CD-ROM as the OS of the computer to be used.
- the process scheduling program according to the present invention may be downloaded into a resident memory from an external server.
- the scheduling method of the present invention provides a CPU time allocation algorithm simultaneously satisfying a plurality of periodic CPU allocation requests.
- the variation of the execution start interval of the continuous media processing corresponding to one period obtained by using this algorithm is assured of becoming shorter than the driving interval of the periodic kernel process.
- the CPU time is allocated in a shorter time after the periodic kernel process is driven. As the period of a process becomes shorter, the variation of the execution start interval can be suppressed to a smaller value.
- input buffer management such as input buffer switching may be conducted periodically. If the periodic process scheduling can be assured, therefore, the process conducting the continuous media processing may spontaneously switch over input buffers and notification using an interrupt of input continuous media data arrival becomes unnecessary. Improvement in performance of continuous media processing owing to reduction of interrupt overhead can be anticipated.
- the wakeup and sleep of each of processes conducting the continuous media processing are implemented by changing the priority.
- the overhead required for the wakeup and sleep can be reduced. From this point as well, improvement in performance of the continuous media processing can be anticipated.
- the priority of the signal handler in the scheduling method of the present invention is assured of being lower than the priority of the process conducting the continuous media processing. Therefore, it can be assured that a processing delay of one stream does not affect the processing of other streams.
- time periods allocated to process groups are made continuous as far as possible. Therefore, the number of times of process switching is suppressed to a minimum. Improvement in performance of the continuous media processing owing to the reduction of the overhead required for process switching can also be anticipated.
- the execution time ratio between process groups is always kept constant. Even if a synchronizing mechanism such as a rendezvous is not used, therefore, synchronizing between streams can be realized.
- the present invention can prevent the variation of the execution interval of the process conducting the continuous media processing when an asynchronous event has occurred.
- scheduling program described in the above embodiments can be down-loaded from a recording medium such as a hard disk or a CD-ROM or an external server to a predetermined location of the main memory of the computer system at the time of booting or switching-on.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Multi Processors (AREA)
- Time-Division Multiplex Systems (AREA)
Abstract
Description
- The present invention relates to a scheduling method of a process of a computer system, and in particular to a process scheduling method for periodically starting each process.
- Conventionally as the scheduling method of a process for conducting continuous media, a scheduling method using the "Conductor/Performer" model is known. (Nishio et al., "Conductor/Performer," 1st International Workshop on Real-Time Operating Systems and Applications, 1994.) The term "continuous media processing" means processing for converting and transferring data obtained by digitizing images or speech.
- In the case where only one stream exists in a system, this method assures any process belonging to the stream of being periodically scheduled. Herein, however, the term "stream" means a group of processes delivering worked continuous media data directly or indirectly to each other. Each of processes belonging to the same stream are provided with the unique order of conducting the work processing of continuous media data. The top process obtains input of the continuous media data from an external device (such as a video digitizer). Each of subsequent processes receives continuous media data worked by a process immediately preceding in order from the immediately preceding process, conducts data work (such as compression processing) to be conducted by itself, and delivers continuous media data worked by itself to a process immediately succeeding in order. The last process outputs continuous media data to the external device (such as a network adapter).
- A summary of a scheduling method using a Conductor/Performer model will be hereafter described. For each stream, one periodically driven Conductor process is prepared. The order of Performer processes (i.e., processes belonging to the stream) to be started by the Conductor process is registered beforehand. In accordance with this registered order, the Conductor process starts a Performer process. Therefore, each of both the Conductor process and the Performer processes holds a message queue for wakeup notice of its own process. Wakeup of another process is conducted by transmitting a message to a message queue held by the process.
- The Conductor process is driven at time intervals each equal to a specified period. In accordance with the registered order of the Performer processes, the Conductor process repetitively issues a call (function call) for transmitting a message to a message queue owned by the next Performer process in the order and waiting the arrival of a message at a message queue owned by the Conductor process. In other words, the Conductor process repeats the wakeup of a Performer process and sleep lasting until the started Performer process completes the execution of one period. If the last Performer process in order has completed execution, the Conductor process sleeps until the next periodically driven trigger is applied by a timer interrupt.
- On the other hand, a Performer process wakes up upon receiving a message from the Conductor process, and conducts continuous media processing corresponding to one period. Upon completing the continuous media processing corresponding to one period, the Performer process issues a call for transmitting a message to a message queue owned by the Conductor process and waiting for the arrival of a message at a message queue owned by its own process. The Performer process sleeps until a message for notifying the wakeup of the next period is transmitted from the Conductor process.
- In the case where only one stream exists in the system, the above described scheduling method assures a CPU of being periodically allocated to a Performer process.
- In the scheduling method according to the Conductor/Performer model, the following problems occur in the case where a plurality of streams exist in a system.
- (a) The priority of each of the Conductor processes and Performer processes does not change with time. In the case where Conductor processes having different drive periods are mixedly present, the execution start interval of the Conductor processes varies. In other words, when a Conductor process has been waked up, there is a possibility that another Conductor process or another Performer process having the same priority or higher priority is executing. In other words, access contention of the CPU time occurs between the Conductor process waked up and another Conductor process or another Performer process. As a result, the execution start interval of the Conductor process varies, and the execution interval of subsequent Performer process also varies.
- (b) Since wakeup notice is conducted by inter-process communication (IPC), function calls of message transmission and message reception occur and overhead caused by wakeup notice is large.
- These problems make it difficult to realize continuous media processing required to yield high throughput, such as real time MPEG compression processing of multimedia data. Unless in such processing the buffer management at the time of continuous media data input is conducted without use of an interrupt, sufficient throughput is not obtained because of the interrupt overhead. Even in the case where a plurality of streams exist in the system, therefore, it is necessary to keep the execution interval of a Performer process constant as far as possible and it is necessary for a Performer process to spontaneously change over the input buffer without a notice using an interrupt. In the same way, the overhead of the IPC used for wakeup notice also decreases the throughput.
- Furthermore, in the scheduling method according to the Conductor/Performer model, processing for a deadline miss exception (such a state that the processing corresponding to one period could not be completed within a specified time from driving of the Conductor process) is conducted by signal notification to the Conductor process. Since a signal handler has typically the same priority as a subject process does, there is a possibility that execution of a process of another stream will be delayed by the signal handler processing. In other words, there is a possibility that the processing delay of one stream will cause a processing delay of another stream.
- An object of the present invention is to provide a periodic process scheduling method of a computer system, whereby:
- (a) the execution interval of a process which conducts continuous media processing is kept constant, even in the case where a plurality of streams are present in a system;
- (b) overhead required to control the wakeup and sleep of processes is reduced; and
- (c) a signal handler for conducting the recovery processing on a processing delay is executed, and thereby a processing delay of another stream is not caused even if a processing delay is incurred in one stream.
- Another object of the present invention is to provide a periodic process scheduling method of a computer system, whereby when an asynchronous event such as arrival of a network packet has occurred, the execution interval of the processes which conduct continuous media processing is prevented from varying.
- In accordance with one aspect of the present invention, the above described object is achieved by a periodic process scheduling method of a computer system, the computer system including a plurality of process groups, each of the process groups including at least one periodically executed process, the plurality of process groups being executed in parallel, the periodic process scheduling method including the steps of specifying a wakeup interval period and a required CPU time per period for each of the process groups, and securing a CPU allocation time so as to prevent collision between a CPU allocation time of a speciifed process group and a CPU allocation time of another process group, and adjusting the CPU allocation time and the wakeup period so as to maintain the wakeup interval period of each of specified process groups.
- In accordance with another aspect of the present invention, a method for waking up a process scheduled according to the above described process scheduling method further includes the steps of responding to arrival of time when one of the process groups should be waked up, conducting wakeup by changing execution priority of a process belonging to this process group to the highest priority in the system, and thereafter maintaining the highest priority for CPU allocation time consecutively allocated.
- In accordance with another aspect of the present invention, the above described process wakeup method further includes the steps of responding to elapse of the CPU allocation time consecutively allocated and consumption of the required CPU time, changing execution priority of a process waked up from the highest priority to reference priority, and notifying this process of timeout.
- In accordance with still another aspect of the present invention, an asynchronous event method includes the steps of responding to occurrence of an asynchronous event needing reception of information such as arrival of a network packet during execution of a process having the highest priority in a system, immediately suspending the execution of the process running with the highest priority, securing an information receiving buffer, preparing for reception of the information, thereafter resuming the execution of the process suspended in execution, and referring to received information and conducting processing by using a periodically waked up process.
- Other objects, features and advantages of the present invention will become apparent from reading the following description of the embodiments taken in conjunction with the accompanying drawing.
-
- FIG. 1 is a diagram showing the process wakeup and data flow in a scheduling method according to an embodiment of the present invention;
- FIG. 2 is a diagram showing the structure of data for managing a process group;
- FIG. 3 is a flow chart of "create_proc_group" function;
- FIG. 4 is a flow chart of "destroy_proc_group" function;
- FIG. 5 is a diagram showing a method for eliminating the overlap between CPU times allocated to a process group;
- FIG. 6 is a flow chart of a time slot table creation;
- FIG. 7 is a diagram showing a result of a creation example of a time slot table;
- FIG. 8 is a diagram showing input data for the creation example of a time slot table;
- FIG. 9 is a diagram showing the configuration of a scheduling table;
- FIG. 10 is a diagram showing the structure of data for managing processes;
- FIG. 11 is a flow chart of "proc_raise" function;
- FIG. 12 is a flow chart of a timer interrupt handler;
- FIG. 13 is a flow chart of a periodic kernel process;
- FIG. 14 is a diagram showing the configuration of a scheduling table;
- FIG. 15 is a diagram showing the flow of wakeup of continuous media processing process;
- FIG. 16 is a diagram showing the program of a group master process;
- FIG. 17 is a diagram showing the program of a slave process;
- FIG. 18 is a diagram showing process wakeup and data flow in a scheduling method according to another embodiment of the present invention;
- FIG. 19 is a diagram showing the configuration of a command list;
- FIG. 20 is a flow chart of a scheduler;
- FIG. 21 is a diagram showing the configuration of a network packet receiving system according to another embodiment of the present invention; and
- FIG. 22 is a flow chart of first level interrupt handler.
- Hereafter, embodiments of the present invention will be described in detail by referring to the drawing.
- The flow of process wakeup and the flow of continuous media data for implementing a process scheduling method of a computer system according to an embodiment of the present invention is shown in FIG. 1. In the system, one
periodic kernel process 101 exists. Theperiodic kernel process 101 is a control process periodically driven by timer interrupthandler 104. By referring to a scheduling table 900, theperiodic kernel process 101 selects the next process (hereafter referred to as periodic process)group 102 which should process continuous media data. By changing the priority of the selectedperiodic process group 102, theperiodic kernel process 101 implements the periodic scheduling of eachperiodic process 102. If aperiodic process 102 to be scheduled does not exist, theperiodic kernel process 101 schedules anothernormal process 109. Details of this operation will be described afterwards. - At least one
periodic process 102 which processes the same continuous media data forms oneprocess group 103. Periodic processes belonging to theprocess group 103 are given predetermined processing order. Aperiodic process 102 which is the first in processing order is driven preferentially by a change of priority conducted by theperiodic kernel process 101. The periodic process which is the first in processing order reads continuous media data supplied from aninput device 105 via aninput buffer 106, and works upon the data. The worked data are delivered to aperiodic process 102 which is the next in processing order via a sharedbuffer 110. The priority of aperiodic process 102 in theprocess group 103 is inherited one after another. Aperiodic process 102 which is the last in processing order outputs data to anoutput device 108 via anoutput buffer 107 and lowers the priority of its own process. Thereby, processing of one period of thisprocess group 103 is substantially terminated. In the system, a plurality ofprocess groups 103, such as a process group for processing sound information and a process group for processing movie information, may exist. - By the way, a scheduler which is not illustrated is called by a function call to create a scheduling table 900 and drive a specified process. The scheduler is a collection of program modules which are activated by a called process and which conduct processing concerning the scheduling.
- In the process group, a group master process exists. The group master process is a process which is at the head in processing order among processes belonging to the process group. Processes belonging to the process group other than the group master process are called slave processes. Creation and deletion of the
process group 103 are conducted by the group master process by using the following interface. - create_proc_group(master_pid, slave_pid_array, proc_array_number, pgroupid)
- master_pid: process ID of the group master process
slave_pid_array: array of slave process IDs forming the group
proc_array_number: the number of slave process IDs forming the group
pgroupid: an ID of the generated process group is returned - SUCCESS: Termination
or various error codes - The "create_proc_group" function generates a process group having, as the group master, a process specified by "master_pid." The generated process group is formed by process groups specified by "slave_pid_array" and "proc_array_number" in addition to the process specified by "master_pid." A generated process group ID is returned to "pgroupid." It is premised that individual processes having process IDs specified by "master_pid" and "slave_pid_array" have already been generated.
- destroy_proc_group(pgroupid)
- pgroupid: process group ID
- SUCCESS: Termination
or various error codes - The "destroy_proc_group" function deletes a process group specified by "pgroupid."
- The data structure of array data and a control block used to manage the process group is shown in FIG. 2.
- The process group is managed by using a process
group control block 202. The processgroup control block 202 includes a "master_pid"field 203, a "pid_array"field 204, and a "nproc"field 205. The "master_pid"field 203 stores the process ID of the group master process of the process group. The "pid_array"field 204 stores a pointer to aprocess ID array 206. Theprocess ID array 206 is an array of process IDs of slave processes forming the process group. The "nproc"field 205 stores the number of process IDs stored in theprocess ID array 206. Furthermore, conversion from a process group ID to a processgroup control block 202 is conducted by using a process group controlblock pointer array 201. In other words, a pointer to the processgroup control block 202 is stored in an element having a process group ID as an index. In the case where a processgroup control group 202 corresponding to the process group ID does not exist, a "nil" pointer is stored in a corresponding element of the process group controlblock pointer array 201. - The processing flow of the "create_proc_group" function is shown in FIG. 3.
- At
step 301, one element included in elements of the process controlblock pointer array 201 in which the "nil" pointer is stored is searched for. Its index value is used as a return value of the "pgroupid." - At
step 302, a memory region used for the processgroup control block 202 is secured. - At
step 303, a memory region used for theprocess ID array 206 is secured. - At
step 304, the ID of the group master process specified by the argument "master_pid" of the "create_proc_group" function is stored in the "master_pid"field 203 of the process group control block 202 having a memory region secured at thestep 302. - At
step 305, the array of the process ID of the slave process specified by the argument "slave_pid_array" of the "create_proc_group" function is copied into theprocess ID array 206 having a memory region sesured at thestep 303. - At
step 306, a pointer to the process ID array is set in the "pid-array" field. - At
step 307, the number of slave process IDs forming the process group specified by the argument "proc_array_number" of the "create_proc_group" function is stored in the "nproc"field 205 of the process group control block 202 having a memory region secured at thestep 302. - The processing flow of "destroy_proc_group" function is shown in FIG. 4.
- At
step 401, an element of the process group controlblock pointer array 201 having the argument "pgroupid" of the "destroy_proc_group" function as the index is searched for, and a memory region which has been used by the process group control block indicated by that element is deallocated. - At
step 402, a memory region which has been used by theprocess ID array 206 indicated by the "pid_array" field of the above described processgroup control block 202 is deallocated. - At
step 403, the "nil" pointer is substituted for an element of the process group controlblock pointer array 201 corresponding to the process group to be deallocated. - A
process group 103 becomes the unit of scheduling. By using the "alloc_time_slot" function at the time of its initializing, the group master of theprocess group 103 reserves the CPU allocated to theprocess group 103 over a specified time at intervals each equal to a specified period. If allocation of the CPU time has become unnecessary, the group master calls a "dealloc_time_slot" function and cancels its reservation. - If the "alloc_time_slot" function is called, the scheduler determines the CPU allocation sequence so as to satisfy the period and execution time per period requested by each process group, and creates a scheduling table 900. This creation algorithm will be described afterwards.
- On the basis of the scheduling table 900, the
periodic kernel process 101 conducts scheduling of eachperiodic process 102. Upon arrival at the time when the CPU should be allocated to theprocess group 103, theperiodic kernel process 101 sets the priority of the group master process of thatprocess group 103 to "raised." The periodic process having the priority set to "raised" is assured to have the highest priority among user processes. In addition, theprocess 102 having the priority set to "raised" is assured to have priority higher than that of theperiodic kernel process 101. - Upon elapse of the specified time since the priority of the group master process has become "raised," the timer interrupt
handler 104 sets the priority of theperiodic process 102 having the priority set to "raised" among the periodic processes belonging to theprocess group 103 to "depressed." (The group master process can inherit the priority of anotherperiodic process 102 belonging to thesame process group 103. This will be described afterwards.) Theprocess 102 having the priority set to "depressed" is assured to have the lowest priority among user processes. - Over the time during which the CPU should be allocated to the
process group 103, any user process orperiodic kernel process 101 which does not belong to theprocess group 103 is not scheduled so long as aperiodic process 102 belonging to theprocess group 103 having the priority set to "raised" is in the executable state. Over the time during which the CPU should not be allocated, anyperiodic process 102 belonging to theprocess group 103 is not scheduled. A CPU time which is not allocated to anyperiodic process 102 is allocated to thenormal process 109 or an idle process which executes an infinite loop and which is always in the executable state. By setting the priority of the idle process to the lowest priority next to "depressed," it is assured that scheduling is not conducted over the time during which the CPU should not be allocated to aperiodic process 102 or theperiodic kernel process 101. External specifications of the "alloc_time_slot" function and the "dealloc_time_slot" function will be described below. - alloc_time_slot(pgroupid, interval, length)
- pgroupid: process group ID assured of CPU allocation
interval: wakeup interval of process
length: execution time of process group per period to be secured - SUCCESS: termination
or various error codes - In the "alloc_time_slot" function, the process group specified by "pgroupid" requests the CPU to be allocated over a time specified by "length" and at a period specified by "interval." The "interval" and "length" are specified by taking a predtermined time slot as the unit. At the period specified by the "interval," the priority of the group master process becomes "raised." By using a "proc_raise_handoff" function (which will be described afterwards), the group master process can set the priority of another process belonging to the process group to "raised," and change the priority of its own process to "depressed" (or reference priority). Upon elapse of a time specified by the "length" since the priority of the group master process became "raised," the priority of a process having the priority set to "raised" and included in the processes belonging to the process group is forcibly changed to "depressed." Furthermore, a timeout signal is transmitted to that process.
- The value of the "interval" must be power of 2. If a value other than that is specified, the scheduler conducts processing by assuming that a largest power value of 2 which does not exceed the specified value has been specified.
- dealloc_time_slot(pgroupid)
- pgroupid: process group ID for canceling the CPU allocation assurance
- SUCCESS: termination
or various error codes - In the "dealloc_time_slot" function, the process group specified by "pgroupid" cancels the CPU allocation request which has been held by the process group specified by "pgroupid."
- Upon being requested to allocate the CPU by the "alloc_time_slot" function, the scheduler cannot always conduct scheduling of the
process group 103 as requested by allprocess groups 103. The reason will now be described. As shown in FIG. 5, a plurality ofprocess groups CPU allocation time 503 of either one of overlappingprocess groups different time 504. That is the reason. - In accordance with the following algorithm, the scheduler determines the CPU allocation time of each process group and registes the result in the scheduling table 900 which will be described afterwards. The CPU allocation is conducted by taking the timer interrupt occurrence interval as the unit. By using the timer interrupt occurrence time as a boundary, the real time is divided into a group of time slots. In accordance with the following algorithm, a
process group 103 to be allocated is determined for each time slot. - The flow chart of the above described algorithm is shown in FIG. 6.
- At
step 601, a time slot table 700 as shown in FIG. 7 is created. The time slot table 700 has the same size as the greatest "interval" value among "interval" values requested by aprocess group 103 to be allocated (i.e., aprocess group 103 for which a CPU allocation reservation request has already been issued by the "alloc_time_slot" function). The time slot table 700 is a one-dimensional array. In each element of the array, an ID of aprocess group 103 to be allocated to a corresponding time slot is stored. As an initial value of each element, an ID indicating that the time slot is not yet allocated is stored. - At
step 602, it is determined whether aprocess group 103 for which a time slot to be allocated has not yet been determined is present. If allocation of time slots for allprocess groups 103 has been completed, termination takes place atstep 613. - At
step 603, aprocess group 103 which is minimum in "interval" value requested at the time of issuance of the "alloc_time_slot" function is selected out ofprocess groups 103 for which a time slot to be allocated has not yet been determined. - At
step 604, the requested "interval" value and "length" value of theprocess group 103 selected at thestep 603 are substituted for I and L, respectively. - At
step 605, time slots included intime slots 0 through I-1 and not yet allocated are collected in groups every adjacent time slots. Hereafter, time slot groups Xi (i = 1, 2, ... n) subjected to grouping at the present step are referred to as adjacent empty time slots. - If at
step 606, the sum total of sizes (the number of time slots) of adjacent empty time slots obtained at thestep 605 is less than L, time slot allocation satisfying requests of allprocess groups 103 is judged to be impossible and abnormal termination takes place (step 614). - At
step 607, adjacent empty time slots obtained at thestep 605 and having a maximum size are compared in magnitude with L. - If L is less, one having a minimum size is selected at
step 608 out of adjacent empty time slots having at least the size of L. - At
step 609, L time slots located at the head of the adjacent empty time slots selected at thestep 608 are allocated to theprocess group 103 selected at thestep 603. In addition to the time slots allocated at this time, time slots located I, 2I, 3I, ... time slots after are also allocated to theprocess group 103 selected at thestep 603. Thereby, time slot allocation to theprocess group 103 selected at thestep 603 is completed, and a jump to thestep 602 takes place. - If at the step 607 L is greater than the maximum adjacent empty time slot size, adjacent empty time slots having a maximum size are selected at
step 610. - At
step 611, all time slots belonging to the adjacent empty time slots selected at thestep 610 are allocated to theprocess group 103 selected at thestep 603. In addition to the time slots allocated at this time, time slots located I, 2I, 3I, ... time slots after are also allocated to theprocess group 103 selected at thestep 603. - At
step 612, the L minus the size of the adjacent empty time slots selected at thestep 610 is set as a new L value, and a jump to thestep 605 takes place. - An example of creation of a time slot table 700 will now be described by referring to FIGS. 7 and 8. It is now assumed that the number of
process groups 103 to which time slots are allocated is three. In FIG. 8, "interval"values 801 and "length"values 802 requested by eachprocess group 103 are shown. - First of all, the time slot table 700 having a size of 32 which is the maximum value of the "interval"
value 801 requested by threeprocess groups 103 is created. Each element of the time slot table 700 is initialized to have an ID indicating that allocation has not yet been conducted. - Time slots allocated to a process group A having a minimum "interval"
value 801 are determined. From time slots included intime slots 0 through 7, adjacent empty time slots are generated. In this case, one adjacent empty time slot group having a size of 8 formed bytime slots 0 through 7 is generated. - The "length"
value 802 equivalent to two requested by the process group A is less than thesize 8 of the adjacent empty time slots thus generated. Therefore, two time slots located at the head of the adjacent empty time slots, i.e.,time slots value 801 of eight requested by the process group A are also allocated to the process group A. Besides thetime slots time slots - Subsequently, time slots allocated to a process group B having a second least "interval"
value 801 are determined. Fromtime slots 0 through 15, adjacent empty time slots are generated. In this case, two adjacent empty time slot groups each having a size of 6 and respectively includingtime slots 2 through 7 andtime slots 10 through 15 are generated. - The "length"
value 802 equivalent to three requested by the process group B is less than thissize 6. Out of adjacent empty time slots having a size of at least 3, adjacent empty time slots having a minimum size are selected. Now, adjacent time slots formed bytime slots 2 through 7 are selected. Three time slots located at the head of the adjacent empty time slots are allocated to the process group B. In other words,time slots 2 through 4 are allocated to the process group B. In the same way,time slots 18 through 20 are also allocated to the process group B. In accordance therewith, corresponding elements of the time slot table 700 are updated. Thereby, allocation of time slots to the process group B is completed. - Finally, time slots alllocated to the process group C are determined. From
time slots 0 through 31, adjacent empty time slots are generated. In this case, the following adjacent empty time slots are generated: - adjacent empty time slots having a size of 3 and including
time slots 5 through 7; - adjacent empty time slots having a size of 6 and including
time slots 10 through 15; - adjacent empty time slots having a size of 3 and including
time slots 21 through 23; and - adjacent empty time slots having a size of 6 and including
time slots 26 through 31. - The "length"
value 802 of seven requested by the process group C is greater than themaximum size 6 of the above described adjacent empty time slots. First of all, therefore, one adjacent empty time slot group having a maximum size of 6 is selected. All time slots belonging to the adjacent empty time slots, i.e., thetime slots 10 through 15 are allocated to the process group C. In accordance therewith, corresponding elements of the time slot table 700 are updated. - From the "length"
value 802 of seven requested by the process group C, thesize 6 of the adjacent empty time slots selected before is subtracted, resulting in a difference of one. Allocation of one time slot thus left is now conducted. Adjacent empty time slots are generated again. In this case, the following adjacent empty time slots are generated: - adjacent empty time slots having a size of 3 and including
time slots 5 through 7; - adjacent empty time slots having a size of 3 and including
time slots 21 through 23; and - adjacent empty time slots having a size of 6 and including
time slots 26 through 31. - From adjacent empty time slots having a size of at least 1, adjacent empty time slots having a minimum size is selected. In this case, adjacent empty time slots formed by
time slots 5 through 7 are selected. One time slot located at the head of the adjacent empty time slot, i.e.,time slot 5 is allocated to the process group C. In accordance therewith, corresponding elements of the time slot table 700 are updated. Thereby, allocation of time slots to the process group C is completed. - Process groups allocated for each time slot by the processing heretofore described are determined as shown in FIG. 7. From this, the scheduler generates the scheduling table 900 shown in FIG. 9. This scheduling table 900 is a table describing the order of
process groups 915 to which the CPU should be allocated and their allocation times 916 (the number of time slots). Furthermore, anend flag 917 indicates whether allocation of theprocess group 915 corresponding to one period is finished when the CPU allocation of that line has been completed. For example, theend flag 917 for 903 becomes OFF, i.e., FALSE, because allocation corresponding to one period is not completed even if thetime slot 5 is allocated to the process group C. However, theend flag 917 for 906 becomes ON, i.e., TRUE, because allocation corresponding to one period is completed if thetime slots 10 through 15 are allocated. The algorithm for converting the time slot table 700 to the scheduling table 900 is self-evident, and consequently it will not be described. Anindex 914 is a pointer indicating a line (entry) of the scheduling table 900 to which the CPU is subsequently allocated. A time slot for which theprocess group 915 specifies "OTHERS" is a time slot allocated to thenormal process 109. "OTHERS" 907 indicates that if execution of the periodic process in the process group C is finished before elapse of six time slots allocated to the process group C, time slots which have become empty are allocated to thenormal process 109. - Whenever the "alloc_time_slot" function is issued, the scheduler recreates the scheduling table 900 on the basis of the existing table as shown in FIG. 8 and a request conducted by the new "alloc_time_slot" function.
- In accordance with the scheduling table 900 generated according to the above described algorithm, the
periodic kernel process 101 conducts scheduling of theprocess group 103. Theperiodic kernel process 101 changes the priority of aperiodic process 102 belongiong to theprocess group 103 which has requested periodic CPU allocation to "raised," "depressed," or reference priority. Thereby, the scheduling is implemented. - Furthermore, a periodic process having priority set to "raised" by the
periodic kernel process 101 changes the priority of its own process to "depressed," and changes the priority of other periodic processes belonging to the same process group to "raised." As a result, handoff scheduling in the process group is implemented. - The priority changes are conducted by using "proc_raise," "proc_raise_cancel," "proc_raise_handoff," "proc_depress," and "proc_depress_cancel" functions. External specifications of these functions will be described below.
- proc_raise(pid, time, flags)
- pid: process ID
time: time during which the priority is kept at "raised"
flags: flag specifying the priority obtained after a specified time has elapsed - The priority of the process is changed to the reference priority.
- The priority of the process is changed to "depressed." Furthermore, whether a signal is to be transmitted to a process specified by the "pid" when a specified time has elapsed is specified by the following flag.
- A timeout signal is transmitted to a process specified by "pid" when a specified time has elapsed.
- SUCCESS: termination
or various error codes - The "proc_raise" function sets the priority of a process specified by "pid" to "raised" for a time (the number of time slots) specified by "time." In the "time,"
time 916 allocated to a process group to which that process belongs or INFINITY is specified. A process having priority set to "raised" is assured of having priority higher than that of any other user process. - Priorities of a plurality of processes cannot be set to "raised" simultaneously. If the present function is called when a process having the priority set to "raised" is already present, the present function returns an error.
- In the case where "INFINITY" has been set in "time," the priority of the process is kept at "raised" until the "proc_raise_cancel" function or the "proc_raise_handoff" funtion is issued to the process. The "INFINITY" is specified when, for example, the timer interrupt
handler 104 wakes up theperiodic kernel process 101. When theperiodic process 102 is to be waked up, typically the "INFINITY" is not specified. - It is now assumed that a value other than the "INFINITY" is specified in "time" beforehand. If in this case the "proc_raise_cancel" function or the "proc_raise_handoff" function is not issued to the process even when the time specified by "time" has elapsed, the priority of the process is forcibly changed according to the flag specified in "flags." If "PRIORITY_NORMAL" is specified in "flags" beforehand, the priority of the process is changed from "raised" to the reference priority. If "PRIORITY_DEPRESSED" is specified in "flags" beforehand, the priority of the process is changed from "raised" to "depressed." If "SEND_SIGNAL" is specified in "flags" beforehand, a timeout signal is transmitted to that process. The process which has received the timeout signal is waked up according to the preset priority, and the process can conduct processing for the case of timeout.
- proc_raise_cancel(pid, flags)
- pid: process ID
flags: flag specifying the priority obtained after a change. The following can be specified. - The priority of the process is changed to the reference priority.
- The priority of the process is changed to "depressed."
- SUCCESS: termination
or various error codes - According to the "flags," the "proc_raise_cancel" function changes the priority of the process set to "raised" by the "proc_raise" function. In the case where "PRIORITY_NORMAL" is specified in "flags" beforehand, the priority after the change becomes the reference priority according to the scheduling attribute. If "PRIORITY_DEPRESSED" is specified in "flags" beforehand, the priority after the change becomes "depressed."
- proc_raise_handoff(pid, flags)
- pid: process ID
flags: flag specifying the priority obtained after handoff.
The following can be specified. - The priority of the process is changed to the reference priority.
- The priority of the process is changed to "depressed."
- SUCCESS: termination
or various error codes - The "proc_raise_handoff" function sets the priority of the process specified by "pid" to "raised," and changes the priority of its own process according to "flags." The process specified by "pid" must belong to the same process group as the calling process. Otherwise, an error return is caused. If "PRIORITY_NORMAL" is specified in "flags" beforehand, the priority of the calling process after handoff becomes the reference priority. If "PRIORITY_DEPRESSED" is specified in "flags" beforehand, the priority of the calling process after handoff becomes "depressed."
- The priority of the calling process must be "raised." If a process having priority other than "raised" calls the present function, the error return is caused.
- In the case where an upper limit time during which the priority of the calling process is kept at "raised" (i.e., in the case where something other than "INFINITY" is specified in "time" argument of the "proc_raise" function beforehand), the time during which the priority of the destination process of handoff is kept at "raised" becomes the time during which the priority of the source process of handoff is kept at "raised" and which is left at the time of calling. If an upper limit time during which the priority of the calling process is kept at "raised" is not specified, an upper limit time during which the priority of the destination process of the handoff is kept at "raised" is not present either.
- proc_depress(pid, time, flags)
- pid: process ID
time: time during which the priority is kept at "depressed"
flags: flag specifying the priority obtained after a specified time has elapsed. The following flags can be specified. - The priority of the process is changed to the reference priority.
- The priority of the process is changed to "raised."
- SUCCESS: termination
or various error codes - The "proc_depress" function sets the priority of a process specified by "pid" to "depressed" for a time (the number of time slots) specified by "time." The process having priority set to "depressed" is assured of having priority lower than any other user process. The "proc_depress" function is issued mainly for the
periodic kernel process 101 to lower the priority of its own process and wake up thenormal process 109. - In the case where "INFINITY" has been set in "time," the priority of the process is kept at "depressed" until the "proc_depress_cancel" function or the "proc_raise_handoff" funtion is issued to the process.
- It is now assumed that a value other than the "INFINITY" is specified in "time" beforehand. If in this case the "proc_raise_cancel" function or the "proc_depress_handoff" function is not issued to the process even when the time specified by "time" has elapsed, the priority of the process is forcibly changed according to the flag specified in "flags." If "PRIORITY_NORMAL" is specified in "flags" beforehand, the priority of the process is changed from "depressed" to the reference priority. If "PRIORITY_RAISED" is specified in "flags" beforehand, the priority of the process is changed from "depressed" to "raised".
- proc_depress_cancel(pid, flags)
- pid: process ID
flags: flag specifying the priority obtained after a change. The following can be specified. - The priority of the process is changed to the reference priority.
- The priority of the process is changed to "raised."
- SUCCESS: termination
or various error codes - According to the "flags," the "proc_depress_cancel" function changes the priority of the process set to "depressd" by the "proc_depress" function. In the case where "PRIORITY_NORMAL" is specified in "flags" beforehand, the priority after the change becomes the reference priority. If "PRIORITY_RAISED" is specified in "flags" beforehand, the priority after the change becomes "raised."
- The data structure of array data and control block required for implementing the above described function group are shown in FIG. 10.
- Process management is conducted by using a
process control block 1002. According to priority,process control blocks 1002 of processes assuming the executable (ready) state are connected to bidirectional queues (hereafter referred to as bidirection ready queues) having elements of a readyqueue header array 1001 as queue headers. The readyqueue header array 1001 is an array of queue headers (i.e., pointers indicating a process control block) of bidirectional queues associated with respective priorities having priority as an index value. It is assumed that priority having a smaller value is higher priority. The value of the highest priority is represented by "raised," and the value of the lowest priority is represented by "depressed." - The
process control block 1002 holds a "next_proc"field 1003 and aprev_proc field 1004 in order to be connected to a bidirectional ready queue associated with priority. In the "next_proc"field 1003 and the "prev_proc"field 1004, a pointer to aprocess control block 1002 located behind in the bidirectional queue and a pointer to aprocess control block 1002 located before are stored, respectively. In the "prev_proc"field 1004 of aprocess control block 1002 located at the head of the bidirectional ready queue, however, a pointer to an element of the readyqueue header array 1001 is stored. In the "next_proc"field 1003 of a process control block located at the end of the bidirectional ready queue, a "nil" pointer is stored. - Besides them, a "counter"
field 1005, a "flags"field 1006, a "context"field 1007, and a "base_pri"field 1010 are present in theprocess control block 1002. The "counter"field 1005 holds a remaining time (represented by the number of time slots) during which that process can maintain the priority of "raised" or "depressed." In the "flags"field 1006, there is stored a flag indicating the priority of the process to be changed after the time during the priority of "raised" or "depressed" can be maintained has elapsed. The "context"field 1007 is a region for saving the execution context of the process. In the "base_pri"field 1010, the reference priority of the process is stored at the time of process generation. - Conversion of the process ID to a
process control block 1002 is conducted by using a process controlblock pointer array 1009. Specifically, in an element of the process controlblock pointer array 1009 having the process ID as an index, a pointer to aprocess control block 1002 is stored beforehand. In the case where theprocess control block 1002 corresponding to the process ID is not present, a "nil" pointer is stored beforehand in the corresponding element of the process controlblock pointer array 1009. - Furthermore, in "ctxproc" 1008, a pointer to the
process control block 1002 of a process which is now being executed is stored. - The processing flow of the "proc_raise" function is shown in FIG. 11.
- At
step 1101, the scheduler derives an element of the process controlblock pointer array 1009 having the argument "pid" of the "proc_raise" function as the index, and dequeues theprocess control block 1002 indicated by that element from the bidirectional ready queue. - At
step 1102, an element of the readyqueue header array 1001 having "raised" as the index, and theprocess control block 1002 derived at thestep 1101 is enqueued at the end of a bidirectional ready queue having that element as the queue header. - At
step 1103, the value specified by the argument "time" of "proc_raise" function is stored in the "counter"field 1005 of theprocess control block 1002 obtained at thestep 1102. - At
step 1104, the value specified by the argument "flags" of the "proc_raise" function is stored in the "flags"field 1006 of theprocess control block 1002 obtained at thestep 1102. - At
step 1105, the current execution contexts (values of various registers) are saved in thecontext field 1007 of theprocess control block 1002 indicated by "ctxproc" 1008. - At
step 1106, a pointer to theprocess control block 1002 of the process having the highest priority in the system is stored in the "ctxproc" 1008. The process control block of the process having the highest priority in the system can be searched for by using the following procedure. Out of bidirectional ready queues stored in the readyqueue header array 1001, a bidirectional ready queue having a queue length of at least 1 and having a minimum index value is first derived. Theprocess control block 1002 queued at the head of that bidirectional ready queue becomes the derivedprocess control block 1002. Here, the process specified by the argument "pid" of the "proc_raise" function and connected to the readyqueue header array 1001 with the value of "raised" at thestep 1102 is the process having the highest priority. - At
step 1107, the execution context saved in the "context"field 1007 of the process control block derived at thestep 1106 is restored. By the processing of thestep 1107, process switching is caused and the restored process of the execution context is dispatched. If between thestep 1104 and thestep 1105 the process control block pointer of the process having the highest priority in the system is compared with contents of the "ctxproc" 1008 and both of them are the same, the processing of thesteps 1105 through 1107 may be skipped. - The "proc_raise_cancel," "proc_raise_handoff," "proc_depress," and "proc_depress_cancel," functions can also be implemented by conducting ready queue operation similar to the
steps 1101 through 1102, update of various fields of theprocess control block 1002 similar to thesteps 1103 through 1104 (if necessary), saving of the execution context similar to thestep 1105, and restoration of the execution context of the process having the highest priority in the system similar to thesteps 1106 through 1107. The processing becomes similar to that of the "proc_raise" function and will not be described. - In the case where the "proc_raise" function and the "proc_depress" function have been issued, it is necessary to determine whether the time specified by the argument "time" has elapsed since issuance of those functions. This determination is conducted in the timer interrupt
handler 104 by using the "counter"field 1005 of the process control block. In addition, the timer interrupthandler 104 conducts drive processing of theperiodic kernel process 101 as well. The processing flow of the timer interrupthandler 104 conducting them is shown in FIG. 12. - At
step 1201, an element having the "raised" of the readyqueue header array 1001 as the index is derived, and a pointer to aprocess control block 1002 stored in that element is substituted for a variable "PCB." - At
step 1202, it is determined whether the value of the "PCB" updated at thestep 1201 is a "nil" pointer. If it is a "nil" pointer, a jump to step 1207 is effected. Unless it is a "nil" pointer, a jump to step 1203 is effected. - At
step 1203, the "counter"field 1005 of theprocess control block 1002 indicated by the "PCB" is decreased by one. In the case where "INFINITY" is stored in the "counter"field 1005 beforehand, however, nothing is conducted. - At
step 1204, it is determined whether the value of the "counter"field 1005 of theprocess control block 1002 indicated by the "PCB" is 0. If the value of the "counter"field 1005 is 0, a jump to step 1205 is effected. If the value of the "counter"field 1005 is other than 0, a jump to step 1206 is effected. - At
step 1205, ready queue operation is conducted according to the "flags"field 1006 of theprocess control block 1002 indicated by the "PCB." Specifically, the following operation is conducted. First of all, theprocess control block 1002 indicated by the "PCB" is dequeued from the bidirectional ready queue. In the case where "PRIORITY_NORMAL" is stored beforehand in the "flags"field 1006, an element having as the index a value stored in the "base_pri"field 1010 of the readyqueue header array 1001 is then derived, and theprocess control block 1002 indicated by the "PCB" is enqueued at the end of a bidirectional ready queue having that element as the queue header. In the case where "PRIORITY_DEPRESSED" is stored beforehand in the "flags"field 1006, an element having as the index "depressed" of the readyqueue header array 1001 is derived, and theprocess control block 1002 indicated by the "PCB" is enqueued at the end of a bidirectional ready queue having that element as the queue header. - At
step 1206, the value of the "PCB" is updated to have the value of thenext_proc field 1003 of theprocess control block 1002 indicated by the "PCB." Thereafter, a jump to thestep 1202 is effected. - At
step 1207, an element having the "depressed" of the readyqueue header array 1001 as the index is derived, and a pointer to aprocess control block 1002 stored in that element is substituted for a variable "PCB." - At
step 1208, it is determined whether the value of the "PCB" updated at thestep 1207 is a "nil" pointer. If it is a "nil" pointer, a jump to step 1213 is effected. Unless it is a "nil" pointer, a jump to step 1208 is effected. - At
step 1209, the "counter"field 1005 of theprocess control block 1002 indicated by the "PCB" is decreased by one. In the case where "INFINITY" is stored in the "counter"field 1005 beforehand, however, nothing is conducted. - At
step 1210, it is determined whether the value of the "counter"field 1005 of theprocess control block 1002 indicated by the "PCB" is 0. If the value of the "counter"field 1005 is 0, a jump to step 1211 is effected. If the value of the "counter"field 1005 is other than 0, a jump to step 1212 is effected. - At
step 1211, ready queue operation is conducted according to the "flags"field 1006 of theprocess control block 1002 indicated by the "PCB." Specifically, the following operation is conducted. First of all, theprocess control block 1002 indicated by the "PCB" is dequeued from the bidirectional ready queue. In the case where "PRIORITY_NORMAL" is stored beforehand in the "flags"field 1006, an element having as the index a value stored in the "base_pri"field 1010 of the readyqueue header array 1001 is then derived, and theprocess control block 1002 indicated by the "PCB" is enqueued at the end of a bidirectional ready queue having that element as the queue header. In the case where "PRIORITY_RAISSED" is stored beforehand in the "flags"field 1006, an element having as the index "raised" of the readyqueue header array 1001 is derived, and theprocess control block 1002 indicated by the "PCB" is enqueued at the end of a bidirectional ready queue having that element as the queue header. - At
step 1212, the value of the "PCB" is updated to have the value of the "next_proc"field 1003 of theprocess control block 1002 indicated by the "PCB." Thereafter, a jump to thestep 1208 is effected. Atsteps 1213 through 1216, drive processing of theperiodic kernel process 101 is conducted. Theperiodic kernel process 101 is driven in the case where an event hereafter described has occurred. - (a) The CPU time to be allocated to the
process group 915 has elapsed.
In accordance with the scheduling table 900, theperiodic kernel process 101 supplies "times" 916 described in the table to processgroups 915 one after another. When the "time" 916 supplied to aprocess group 915 has elapsed, the count of the "PCB" counter of the process having the priority of "raised" and belonging to thatprocess group 915 becomes 0. By thesteps periodic kernel process 101 having high priority next to the "raised" is driven. Theperiodic kernel process 101 changes theprocess group 915 to which the CPU should be allocated. In the case where there is not aprocess group 915 to which the CPU should be subsequently allocated, theperiodic kernel process 101 changes its own priority to "depressed" and thereby carries out allocation of the CPU time to thenormal process 109. - (b) Minimum interval of a
process group 915 requesting allocation of the CPU (which is eight time slots in the example of FIG. 8 and hereafter abbreviated to "minimum interval") has elapsed. - In the case where there is not a
process group 915 to which the CPU should be subsequently allocated, theperiodic kernel process 101 changes the priority of its own process to "depressed" as described in (a). Each time the "minimum interval" elapses, however, it becomes necessary to allocate the CPU time to theprocess group 915 requesting the driving conducted at the "minimum interval"s. Therefore, theperiodic kernel process 101 is driven at the "minimum interval" periods to allocate the CPU time to the corresponding process group. - The driving interval of the
periodic kernel process 101 according to the "minimum interval" is managed by a variable "kproc_timer." When the scheduling table 900 is created by the "alloc_time_slot" function, this variable is initialized to the "minimum interval" by the scheduler. - At
step 1213, the "kproc_timer" is decreased by one. - At
step 1214, it is determined whether the value of the "kproc_timer" updated at thestep 1213 is 0. The value of 0 indicates the driving invoking of theperiodic kernel process 101 described above in (b). For the driving processing of theperiodic kernel process 101, the "kproc_timer" is initialized again and thereafter a jump to step 1215 is effected. - In the case where the "kproc_timer" is other than 0, saving restoration processing of the execution context shown in
steps 1105 through 1107 is executed. In the case where the CPU time to be allocated to theprocess group 915 has elapsed (i.e., in the case of (a) described above), theperiodic kernel process 101 becomes the process holding the highest priority and theperiodic kernel process 101 is driven by execution of thesteps 1105 through 1107. - At
step 1215, the "index" 914 of the scheduling table 900 is advanced to an entry having "OTHERS" stored in the field of theprocess group 915. For example, in the case where the "index" 914 indicates the entry of 906 in FIG. 9, the present step updates so that the "index" will indicate the entry of 907. Owing to the present step, theperiodic kernel process 101 driven atstep 1216 can start processing of allocating the CPU time to theprocess group 915 from the next entry with respect to the entry storing "OTHERS" in the field of theprocess group 915. In the case where the "index" 914 already indicates the entry storing "OTHERS" in the field of theprocess group 915, nothing is conducted. - At
step 1216, the "proc_depress_cancel" ("kern_proc," "PRIORITY_NORMAL") function is called. The "kern_proc" represents the process ID of theperiodic kernel process 101. If the priority of theperiodic kernel process 101 is "depressed," the priority of theperiodic kernel process 101 is changed from the "depressed" to the reference priority (high priority next to the "raised") by execution of the present function. If the priority of theperiodic kernel process 101 is the reference priority, the priority is not changed by executing this function. At this time point, it is assured that a process having priority "raised" is not present. (The scheduling table 900 is set so that the CPU time will not be allocated to eachprocess group 915 without waiting the driving invoking of theperiodic kernel process 101.) Therefore, driving of theperiodic kernel process 101 in the above described case (b) can be carried out. - In order to correctly decrease the count of the "PCB->counter" of the
periodic process 102 at time slot intervals, the "PCB" of theperiodic process 102 must be always connected to the ready queue. Therefore, such a wait that the "PCB" of theperiodic process 102 is removed is inhibited. To prevent this, a method described in JP-A-8-226404 is used for mutual exclusion management between processes. As for the input/output, asynchronous input/output is entirely used. - The flow chart of the operation of the periodic is shown in FIG. 13.
- The
periodic kernel process 101 is driven by the timer interrupthandler 104 at intervals each equal to thetime 916 allocated to theprocess group 103 requesting the CPU allocation or the "minimum interval." In other words, the process which has been executing the timer interrupthandler 104 at that time wakes up theperiodic kernel process 101. Theperiodic kernel process 101 operates with the reference priority. - At
step 1301, the "index" 914 of the scheduling table 900 is increased by a value corresponding to one entry. The "index" 914 of the scheduling table 900 indicates an entry representing aprocess group 915 to which the CPU should be subsequently allocated by theperiodic kernel process 101. - At
step 1302, the entry of the scheduling table 900 indicated by the "index" 914 is searched for. - At
step 1303, it is determined whether the field of theprocess group 915 of the entry obtained at thestep 1302 contains "OTHERS." - If the
process group 915 contains "OTHERS," the "proc_depress (MYSELF, INFINITY, PRIORITY_NORMAL) function is called atstep 1304. As a result, theperiodic kernel process 101 has priority "depressed" until the "proc_depress_cancel" function is isssued. Each time the "minimum interval" of theprocess group 103 requesting the periodic allocation of the CPU elapses, the "proc_depress_cancel" function is isssued from the timer interrupthandler 104. Until then, thenormal process 109 which does not conduct the continuous media processing (i.e., a process which does not request the periodic scheduling by using the "alloc_time_slot" function) is subjected to scheduling. - If the
process group 915 does not contain "OTHERS," it is determined atstep 1305 whether theprocess group 915 to which the CPU should be subsequently allocated has completed the execution corresponding to one period. This is judged by using a flag of a "done"field 1401 of a process group state table 1400 as shown in FIG. 14. The "done"field 1401 is a field for describing whether the execution corresponding to one period has been completed, for each ofprocess groups 103 requesting the periodic scheduling by using the "alloc_time_slot" function. Aperiodic process 102 belonging to aprocess group 103 requesting the periodic scheduling issues the "proc_raise_cancel" function to its own process when the execution corresponding to one period has been completed as described afterwards. The "done" flag of theprocess group 103 that theperiodic process 102 which has called this function belongs to is set within the processing routine of this function. - In the case where the
process group 915 of the entry obtained at thestep 1302 has completed the execution corresponding to one period, theend flag 917 of that entry is searched for atstep 1306. - If the
end flag 917 is "FALSE," a return to step 1301 is effected. - If the
end flag 917 is "TRUE," a corresponding flag of the "done"field 1401 of the process group state table 1400 is cleared atstep 1308. In addition, an "active pid"field 1402 is also initialized. This initializing method will be described below. Thereafter, a return to thestep 1301 is effected. - In the case where the execution correpsonding to one period has been judged uncompleted at the
step 1305, theend flag 917 of the entry obtained at thestep 1302 is inspected atstep 1309. - If the
end flag 917 is "TRUE," "proc_raise (pid, TIME, PRIORITY_DEPRESS | SENDSIGNAL)" is issued atstep 1307. In the "pid," the process ID stored in the "active pid"field 1402 of the process group state table 1400 is used. In the "TIME," the value of thetime field 916 of the entry is used. The "active pid"field 1402 of the process group state table 1400 represents whichperiodic process 102 belonging to theprocess group 103 is now executing the continuous media processing. Immediately after this step, theperiodic process 102 specified by the "pid" is scheduled over the time specified by the "TIME." - At
step 1308, the corresponding entry is initialized. Atstep 1308, the entry in the "active pid"field 1402 corresponding to theprocess group 915 selected at thestep 1302 is initialized to have the process ID of the group master of thatprocess group 915. Furthermore, if the "proc_raise_handoff" function is issued, in that processing routine the corresponding entry of the "active pid"field 1402 is updated to have a process ID of the handoff destination. If the "proc_raise_cancel" function is issued and theend flag 917 is "TRUE," in that processing routine the corresponding entry of the "active pid"field 1402 is initialized. - If the
end flag 917 is judged to be "FALSE" at thestep 1309, "proc_raise (pid, TIME, PRIORITY_DEPRESS)" is issued atstep 1310 and processing is terminated. The method for setting the "pid" and "TIME" is similar that of thestep 1307. In this case as well, theperiodic process 102 specified by the "pid" is scheduled over the time specified by the "TIME" immediately after this step. - Operation of the
periodic processes 102 belonging to theprocess group 103 requesting the periodic scheduling is shown in FIGS. 15 through 17. - FIG. 15 is a diagram showing the wakeup sequence of
periodic processes 102 belonging to aprocess group 103. - The processing order of
periodic processes 102 belonging to aprocess group 103 is predetermined. Agroup master process 1501 of theprocess group 103 is made "raised" in priority by the "proc_raise" function of theperiodic kernel process 101 to conduct wakeup. By using the "proc_raise_handoff" function, eachprocess 102 belonging to theprocess group 103 gives its priority to the nextperiodic process 102 in order. The priority of itsown process 102 after inheritance becomes "depressed." By using the "proc_raise_cancel" function, the lastperiodic process 102 in order completes execution corresponding to one period. - FIG. 16 is a program showing the operation of the
group master process 1501. - In a 1601st line, a
process group 103 having its own process as thegroup master process 1501 is created. Thereafter, thisprocess group 103 becomes the unit of scheduling. - In a 1602nd line, it is requested to allocate the CPU time specified by "length" at intervals specified by "interval" to the
process group 103 created in the 1601st line. After issuance of this function, the "proc_raise" function is issued to thegroup master process 1501 by the periodic kernel process as shown in FIG. 15. - A 1603rd line through a 1606th line form a loop for conducting the continuous media processing. After the continuous media processing corresponding to one period has been conducted, the "proc_raise_handoff" function is called and the priority of a
process 102 belonging to theprocess group 103 created in the 1601st line to be subsequently processed is set to "raised" in the 1605th line. The priority of its own process becomes "depressed." - If the execution loop of the continuous media processing has been executed a predtermined number of times, the CPU time allocation request issued in the 1602nd line is canceled in a 1607th line.
- Furthermore, in a 1608th line, the
process group 103 created in the 1601st line is deleted. - FIG. 17 is a program showing the operation of the
slave process 102. - A 1702nd line through a 1704th line form a loop for conducting the continuous media processing.
- After the continuous media processing corresponding to one period has been conducted, the "proc_raise_handoff" function is called and the priority of a
process 102 belonging to theprocess group 103 created in the 1601st line to be subsequently processed is set to "raised" in the 1703rd line. The priority of its own process becomes "depressed." However, the lastperiodic process 102 in order issues the "proc_raise_cancel" function and changes the priority of its own process to "depressed" in the 1704th line. If the execution loop of the continuous media processing has been executed a predtermined number of times, the program is terminated. - In the case where the execution corresponding to one period has not been completed in the CPU allocation time corresponding to one period, a timeout signal is transmitted to the
process 102 registered in the "active pid"field 1402 of the process group state table 1400. In addition, a flag indicating "IN_SIFNAL_TRANSACTION" set in the flag in the "done"field 1401 of the process group table 1400. - As for the
process group 103 having this flag set therein, the execution end judgment of theprocess group 915 at thestep 1305 is always "TRUE." Furthermore, clearing the "done"field 1401 at thestep 1308 is not conducted either. In other words, the signal handler is scheduled and executed with the reference priority of theperiodic process 102 in the same way as thenormal process 109. As a result, it can be assured that the processing delay of one stream does not affect the processing of another stream. - According to the first embodiment, a single
periodic kernel process 101 conducts periodic scheduling of allprocess groups 103 on the basis of the scheduling table 900. Therefore, the execution of theperiodic process 102 is not delayed due to occurrence of access contention among a plurality ofprocess groups 103 for the CPU time. Furthermore, after the execution priority of aperiodic process 102 has been changed, wakeup of the periodic process depending upon the process dispatch is conducted. As compared with the case a periodic process is waked up via inter-process communication, therefore, the overhead caused by the wakeup notice is reduced. Furthermore, the signal handler processing for a process which has exhausted the specified CPU time and caused timeout is executed with the reference priority of that process. Therefore, the signal handler processing is prevented from causing an execution delay of another process group. - In the first embodiment, process switching is conducted from the process executing the timer interrupt
handler 104 to theperiodic kernel process 101 at intervals each equal to the "time" 916 allocated to theprocess group 103 or the "minimum interval." At this time, therefore, the overhead of the process switch intervenes. In a second embodiment, a module (hereafter referred to as scheduler) for controlling the process scheduling instead of theperiodic kernel process 101 is installed, and the timer interrupthandler 104 and the scheduler are executed in the same process. Thereby, the overhead of the process switch from the timer interrupthandler 104 to theperiodic kernel process 101 is reduced. The configuration of a system for implementing the present invention by using the scheduler is shown in FIG. 18. While the operation of the scheduler in the present embodiment will be described afterwards by referring to FIG. 20, it is different from the operation of the conventional scheduler shown in thesteps 1105 through 1107. - In the system, one
scheduler 1801 is present. The scheduler changes the priority of the periodic process, determines a process to be subsequently scheduled, and conducts the dispatch operation of that process. The scheduler is periodically called by a timer interrupthandler 104. In addition, also when aperiodic process 102 conducting the continuous media processing gives the priority to the nextperiodic process 102 in processing order, and when thelast process 102 in processing order completes the execution corresponding to one period and changes the priority of its own process, the scheduler is called in the processing routine of each function. Theses scheduler calling methods will be described in detail afterwards. - In the same way as the first embodiment,
periodic processes 102 which process the same continuous media processing data form aprocess group 103. The creation and deletion of theprocess group 103 are conducted by using the above described "create_proc_group" and "destroy_proc_group" functions. Aperiodic process 102 which is the first in processing order in theprocess group 103 reads continuous media data from aninput device 105 via aninput buffer 106, and works upon the data. The worked data are delivered to aperiodic process 102 which is the next in processing order via a sharedbuffer 110. Aperiodic process 102 which is the last in processing order outputs data to anoutput device 108 via anoutput buffer 107. - A
process group 103 becomes the unit of scheduling. By using the above described "alloc_time_slot" function at the time of its initializing, a group master process of theprocess group 103 reserves allocation of the CPU to theprocess group 103 over a specified time at intervals each equal to a specified period. If allocation of the CPU time has become unnecessary, the group master calls the above described "dealloc_time_slot" function and cancels its reservation. - If the "alloc_time_slot" function is called, the scheduler determines the CPU allocation sequence so as to satisfy the period and execution time per period requested by each process group, and creates a scheduling table 900. This creation algorithm was described with reference to the first embodiment.
- On the basis of the scheduling table 900, the
scheduler 1801 conducts scheduling of eachperiodic process 102. Upon arrival at the time when the CPU should be allocated to theprocess group 103, thescheduler 1801 sets the priority of the group master process of thatprocess group 103 to "raised." (In other words, thescheduler 1801 calls the above described "proc_raise" function.) Upon elapse of the specified time since the priority of the group master process has become "raised," thescheduler 1801 called by the timer interrupthandler 104 sets the priority of theperiodic process 102 having the priority set to "raised" among the periodic processes belonging to theprocess group 103 to "depressed." This method of calling the scheduler from the timer interrupt handler and operation of the scheduler will be described in detail afterwards. Over the time during which the CPU should be allocated to theprocess group 103, any user process which does not belong to theprocess group 103 is not scheduled so long as aperiodic process 102 belonging to theprocess group 103 having the priority set to "raised" is in the executable state. Over the time during which the CPU should not be allocated, anyperiodic process 102 belonging to theprocess group 103 is not scheduled. A CPU time which is not allocated to anyprocess group 103 is allocated to thenormal process 109 or an idle process. - As described above, the
scheduler 1801 can be called by the timer interrupthandler 104 or aperiodic process 102 requesting a priority change of its own process or another process. The form of a command list used to call the scheduler is shown in FIG. 19. - The timer interrupt
handler 104 or aperiodic process 102 attempting to call thescheduler 1801 specifies apointer 1901 to an entry located at the head of the command list shown in FIG. 19, as the argument of its calling function. The command list shows scheduler operation orders in a list form. Each entry of the command list is formed by a "next_command"field 1902, a "flag"field 1903, and a "pid"field 1904. In the "next_command"field 1902, a pointer to the next entry is stored. The value of the "next_command" field of the entry located at the end of the list is "nil." In the "flag" field, "HANDOFF," "CANCEL," "INTERVAL," or "TIMER" can be specified. The "pid" field has a meaning only when the "flag" field holds "HANDOFF." - Each time the timer interrupt
handler 104 conducts driving, it delivers a command list having an entry with "TIMER" stored in the "flag" to thescheduler 1801. At intervals each equivalent to the "minimum interval" of theprocess group 103 requesting the CPU allocation, the timer interrupthandler 104 also delivers an entry having "INTERVAL" stored in the "flag" to the scheduler besides the above described entry. Therefore, it is necessary for the timer interrupthandler 104 to judge the "minimum interval" by using the above described "kproc_timer." - In the case where a
periodic process 102 gives its priority to the next periodic process in processing order, it delivers a command list having an entry with "HANDOFF" stored in the "flags" and an ID of the nextperiodic process 102 in processing order stored in the "pid" to the scheduler. - In the case where the last
periodic process 102 in processing order completes the execution corresponding to one period and changes the priority of its own process to "depressed," the last periodic process delivers a command list having an entry with "CANCEL" stored in "flags" to the scheduler. - Finally, the operation flow of the scheduler which receives the above described command list and conducts driving will now be described by referring to FIG. 20.
- At
step 2001, the scheduler searches for the "flag" field of an entry located at the top of the delivered command list. If the "flag" field indicates "HANDOFF," a jump to step 2002 is effected. If the "flag" field indicates "CANCEL," a jump to step 2003 is effected. If the "flag" field indicates "INTERVAL," thestep 1215 is executed and then a jump to step 2006 is effected. If the "flag" field indicates "TIMER," thesteps 1201 through 1212 are executed. If atstep 2014 the process is a process the "PCB->counter" of which has been judged to be 0, i.e., a process for which theCPU time 916 allocated to theprocess group 915 has elapsed, and the "flag" field indicated by the "next_command" does not hold the "INTERVAL," a jump to step 2006 is effected. In the case where this condition is not satisfied, a jump to step 2012 is effected. - At
step 2002, the priority of theperiodic process 1202 functioning as the inheritance source of the priority, the priority of theperiodic process 1202 functioning as the inheritance destination, and thecounter field 1005 and theflag field 1006 in theprocess control block 1002 are updated. This updating method becomes similar to the flow chart shown in FIG. 11, and consequently it will not be described. Then, a jump to thestep 2012 is effected. - At
step 2003, theend flag 917 of a process group to which the CPU time has been allocated immediately before the wakeup of the scheduler (an entry indicated by theindex 914 of the scheduling table 900) is searched for. If theend flag 917 is ON, a jump to step 2005 is effected. If theend flag 917 is OFF, a jump to step 2004 is effected. - At
step 2004, the "done"field 1401 of the corresponding entry of the process group state table 1400 is set, and a jump to thestep 2006 is effected. - At
step 2005, the same operation as thestep 1308 is conducted and a jump to thestep 2006 is effected. - At
step 2006, the same operation as thesteps 1301 through 1302 is conducted and a jump to thestep 2007 is effected. - At
step 2007, it is inspected whether the field of theprocess group 915 of the entry obtained at thestep 2006 indicates "OTHERS." If it indicates "OTHERS," a jump to step 2012 is effected. If it indicates something other than "OTHERS", a jump to step 2008 is effected. - At
step 2008, theend flag 917 of the entry indicated by theindex 914 increased at thestep 2006 and the "done"field 1401 of the process group state table 1400 corresponding to that entry are searched for. If both bits are set, a jump to step 2009 is effected. If only the "done" field is set beforehand, a jump to step 2006 is effected. If only the end flag is set beforehand, a jump to step 2010 is effected. If both the "done" field and the end flag are cleared beforehand, a jump to step 2011 is effected. - At
step 2009, the same operation as thestep 1308 is conducted and a jump to step 2006 is effected. - At
step 2010, the priority of theperiodic process 102 functioning as thegroup master process 1501 of theprocess group 103 registered in the entry which is in turn indicated by theindex 914 is changed to the "raised" over a time specified by the "time"field 916 of the entry, and the priority of the process and the "counter"field 1005 and the "flag"field 1006 of the correspondingprocess control block 1002 are updated in order to transmit a signal after an elapse of that time. This updating method becomes similar to the flow chart shown in FIG. 11 and consequently it will be omitted. Thereafter, a jump to thestep 2012 is effected. - At
step 2011, the priority of theperiodic process 102 functioning as thegroup master process 1501 of theprocess group 103 registered in the entry which is in turn indicated by theindex 914 is changed to the "raised" over a time specified by the "time"field 916 of the entry, and the priority of the process and the "counter"field 1005 and the "flag"field 1006 of the correspondingprocess control block 1002 are updated in order to transmit a signal after elapse of that time. This updating method becomes similar to the flow chart shown in FIG. 11 and consequently it will be omitted. Thereafter, a jump to thestep 2012 is effected. - At the
step 2012, the "next_command" field of the entry processed at thesteps 2001 through 2011 is searched for. If that value is not "nil," a jump to thestep 2001 is effected. If that value is "nil," thesteps 1105 through 1107 are executed and thereafter termination is conducted. - If a number of asynchronous events such as arrival of network packets occur while the system is operating according to the scheduling method of a periodic process of the first or second embodiment, then execution of the
periodic process 102 is obstructed and the jitter of the driving period interval of theperiodic process 102 becomes large. In other words, asynchronous event processing such as receiving processing of network packets requires response performance of some degree. If the asynchronous event processing takes preference and the priority of the process conducting that processing is made higher than that of theperiodic process 102, a delay might be incurred in the execution time of theperiodic process 102. In the third embodiment, the interrupt handler conducting the processing of receiving the network packets is provided with a hierarchical structure. In the timer interrupthandler 104, theperiodic kernel process 101, thescheduler 1801, and theprocess group 103 of the first and second embodiments, there are no changes. The third embodiment is carried out so as to reinforce the first or second embodiment. By taken an interrupt handler conducting the processing of receiving the network packets as an example of the asynchronous interrupt handler, the configuration and operation method of the interrupt handler will hereafter be described. - FIG. 21 shows the configuration of the system around the present interrupt handler and the configuration of the interrupt handler. The timer interrupt
handler 104, theperiodic kernel process 101, and thescheduler 1801 are not illustrated. - The present system includes a
CPU 2101 and anethernet board 2102 as hardware. Upon receiving a packet, theethernet board 2102 functions to notify theCPU 2101 of arrival of the packet and drive, on theCPU 2101, a routine (interrupt handler) for conducting packet receiving processing. Besides a first level interrupthandler 2103 driven by packet receipt, a second level interrupthandler 2104 and anapplication program 2105 are provided on theCPU 2101. As one of the periodic processes, the second level interrupthandler 2104 is periodically driven by theperiodic kernel process 101 or thescheduler 1801 according to the above described scheduling method. Theapplication program 2105 is a business program for processing the received packet, and it is run by aperiodic process 102 or thenormal process 109. - The operation flow of the first level interrupt
handler 2103 is shown in FIG. 22. - As described above, the first level interrupt
handler 2103 is driven upon a notice of packet arrival given by theethernet board 2102. Atstep 2201, the received packet is first enqueued in apacket queue 2106. Atstep 2202, one receiving buffer is secured out offree buffers 2108. Atstep 2203, a command requesting the receiving buffer secured at thestep 2202 to receive packets is issued to theethernet board 2102. In other words, all that the first level interrupthandler 2103 performs is to secure the receiving buffer and prepares for packet receiving, and the first level interrupthandler 2103 does not conduct at all the processing of referring to information stored in the receiving buffer. Theethernet board 2102 cannot receive packets which arrive until execution of thestep 2203 since notification of packet arrival. Because the address of the receiving buffer which should store received packets is not specified by the first interrupthandler 2103. If a packet arrives during that time, therefore, theethernet board 2102 fails in packet receiving and that packet is lost, but that time is limited to a minimum. - The second level interrupt
handler 2104 is periodically driven with the specified period. A packet enqueued by the first level interrupthandler 2103 and linked to thepacket queue 2106 is dequeued, and protocol processing is conducted by referring to the dequeued packet. If received data to be delivered to theapplication program 2105 are obtained as a result of this protocol processing, the received data are enqueued in a receiveddata queue 2107. Therefore, the second level interrupthandler 2104 is scheduled simply as one ofperiodic processes 102 belonging to acertain process group 103. - The
application program 2105 functions to dequeue the received data enqueued in the receiveddata queue 2107 and deallocate the receiving buffer storing the received data. - In the case where a packet has arrived during execution of a
periodic process 102, the execution of the periodic process is suspended and execution of the first interrupthandler 2103 is started. By conducting the execution of the first interrupthandler 2103 with the highest priority, loss of a packet is prevented from being caused due to a failure of theethernet board 2102 in receiving a packet. In other words, by applying the third embodiment to the first or second embodiment, the probability of the packet loss and the execution delay of theperiodic process 102 are reduced and both of these advantages are reconciled as compared with the conventional case where the first level interrupthandler 2103 and the second level interrupthandler 2104 are processed by one packet receiving interrupt handler. - The second level interrupt
handler 2104 is scheduled as aperiodic process 102. Until the time when theCPU 2101 is allocated to its own process is reached, therefore, the second level interrupthandler 2104 does not start the execution even if the packet queue has a packet queued therein. Immediately upon completion of the execution of the first level interrupthandler 2103, therefore, the execution of the periodic process is resumed. By thus providing the interrupt handler with a hierarchical structure, the execution suspension time of theperiodic process 102 caused by arrival of a packet can be suppressed to only the execution time of the first level interrupthandler 2103. - Furthermore, the second level interrupt
handler 2104 is assured of periodic driving. Until a time corresponding to the driving period elapses since arrival of a packet, therefore, the second level interrupthandler 2104 is driven at least once without fail. In other words, the upper limit of the time required until a packet is enqueued in the receiveddata queue 2107 since arrival of the packet becomes also the driving period of the second level interrupthandler 2104. Thus the response performance of the network packet receiving processing can also be assured. - The periodic process scheduling method according to the first through third embodiments of the present invention have been described in detail. The program for executing the scheduling method in each embodiment is stored in a recording medium such as a hard disk or a CD-ROM as the OS of the computer to be used. Alternatively, the process scheduling program according to the present invention may be downloaded into a resident memory from an external server.
- The scheduling method of the present invention provides a CPU time allocation algorithm simultaneously satisfying a plurality of periodic CPU allocation requests. The variation of the execution start interval of the continuous media processing corresponding to one period obtained by using this algorithm is assured of becoming shorter than the driving interval of the periodic kernel process. In addition, for a process which is shorter in requested period, i.e., for a process which should have a suppressed absolute value of a variation of the execution start interval, the CPU time is allocated in a shorter time after the periodic kernel process is driven. As the period of a process becomes shorter, the variation of the execution start interval can be suppressed to a smaller value.
- In the case where the arrival rate of the continuous media data is constant, input buffer management such as input buffer switching may be conducted periodically. If the periodic process scheduling can be assured, therefore, the process conducting the continuous media processing may spontaneously switch over input buffers and notification using an interrupt of input continuous media data arrival becomes unnecessary. Improvement in performance of continuous media processing owing to reduction of interrupt overhead can be anticipated.
- Furthermore, in the scheduling method of the present invention, the wakeup and sleep of each of processes conducting the continuous media processing are implemented by changing the priority. As compared with the conventional method using the IPC, the overhead required for the wakeup and sleep can be reduced. From this point as well, improvement in performance of the continuous media processing can be anticipated.
- In the case where a deadline miss occurs in one process group and a signal is transmitted to the subject process, the priority of the signal handler in the scheduling method of the present invention is assured of being lower than the priority of the process conducting the continuous media processing. Therefore, it can be assured that a processing delay of one stream does not affect the processing of other streams.
- Furthermore, in the CPU allocation algorithm of the present invention, time periods allocated to process groups are made continuous as far as possible. Therefore, the number of times of process switching is suppressed to a minimum. Improvement in performance of the continuous media processing owing to the reduction of the overhead required for process switching can also be anticipated.
- Furthermore, in the CPU allocation algorithm of the present invention, the execution time ratio between process groups is always kept constant. Even if a synchronizing mechanism such as a rendezvous is not used, therefore, synchronizing between streams can be realized.
- Furthermore, the present invention can prevent the variation of the execution interval of the process conducting the continuous media processing when an asynchronous event has occurred.
- It should be noted that the scheduling program described in the above embodiments can be down-loaded from a recording medium such as a hard disk or a CD-ROM or an external server to a predetermined location of the main memory of the computer system at the time of booting or switching-on.
Claims (11)
- A periodic process scheduling method of a computer system, said computer system including a plurality of process groups (103), each of said process groups including at least one periodically executed process (102), said plurality of process groups being executed in parallel, said periodic process scheduling method comprising the steps of:specifying a wakeup interval period and a required CPU time per period for each of the process groups; andsecuring a CPU allocation time so as to prevent collision between a CPU allocation time of a speciifed process group and a CPU allocation time of another process group, and adjusting said CPU allocation time and said wakeup period so as to maintain the wakeup interval period of each of specified process groups.
- A periodic process scheduling method according to claim 1, further comprising the steps of:creating a table (900) for registering therein order of process groups (103) to which CPU time is allocated by taking a time slot as unit;selecting a process group so as to allocate time slots to process groups in order from a process group having a shorter wakeup period;extracting adjacent free time slots in a range of wakeup interval period of the selected process group;responding to existence of adjacent empty time slots having a size of at least a required CPU time, obtaining, from adjacent empty time slots corresponding to at least the required CPU time and having a minimum size, adjacent empty time slots corresponding to the required CPU time beginning from head thereof, and allocating the obtained adjacent empty time slots to the selected process group; andresponding to nonexistence of adjacent empty time slots having a size of at least a required CPU time, allocating all time slots belonging to adjacent empty time slots having a maximum size to the selected process group, and allocating a remaining time equivalent to the required CPU time minus the allocated time slots to the said process group by using the previous step and the present step.
- A method for waking up a process scheduled according to the periodic scheduling method as claimed in 1, further comprising the steps of:responding to arrival of time when one of said process groups (103) should be waked up;conducting wakeup by changing execution priority of a process (102) belonging to said process group to highest priority in a system; andthereafter maintaining the highest priority for CPU allocation time consecutively allocated.
- A process wakeup method according to claim 3, further comprising the step of changing execution priority of said process to lowest priority ("depressed") in the system upon elapse of the CPU allocation time consecutively allocated.
- A process wakeup method according to claim 3, further comprising the steps of:responding to an order for giving priority of a first process to a second process belonging to same process as the first process before elapse of said CPU allocation time consecutively allocated; andconducting wakeup by changing execution priority of the first process from the highest priority ("raised") in the system to lowest priority and changing execution priority of the second process to the highest priority.
- A process wakeup method according to claim 3, further comprising the steps of:responding to elapse of the CPU allocation time consecutively allocated and consumption of said required CPU time;changing execution priority of a process waked up from the highest priority to reference priority; andnotifying said process of timeout.
- A process wakeup method according to claim 3, further comprising the steps of responding to elapse of the CPU allocation time consecutively allocated, waking up a single control process (1801) waking up said process group (103), and waking up a process belonging to a process group supplied with next consecutive CPU allocation time by using said control process.
- A process wakeup method according to claim 3, wherein processing to be conducted between detection of a time point for waking up one of said process groups and wakeup of a process belonging to said process group is executed by a single process.
- A process wakeup method according to claim 3, further comprising the steps of:responding to occurrence of an asynchronous event needing reception of information such as arrival of a network packet during execution of a process having the highest priority in a system;immediately suspending the execution of the process running with the highest priority;securing an information receiving buffer;preparing for reception of the information;thereafter resuming the execution of the process suspended in execution; andreferring to received information and conducting processing by using a periodically waked up process.
- A computer-readable recording medium for storing a program for ordering periodic process scheduling of a computer system, said computer system including a plurality of process groups (103), each of said process groups including at least one periodically executed process (102), said plurality of process groups being executed in parallel, said program comprising:program means for specifying a wakeup interval period and a required CPU time per period for each of the process groups; andprogram means for securing a CPU allocation time so as to prevent collision between a CPU allocation time of a speciifed process group and a CPU allocation time of another process group, and adjusting said CPU allocation time and said wakeup period so as to maintain the wakeup interval period of each of specified process groups.
- A recording medium according to claim 10, wherein in order to wake up a process scheduled by execution of said program, said recording medium comprises:program means responsive to arrival of time when one of said process groups should be waked up, to conduct wakeup by changing execution priority of a process (102) belonging to said process group (103) to highest priority ("raised") in a system;program means for thereafter maintaining the highest priority for CPU allocation time consecutively allocated, and changing the execution priority of said process to lowest priority ("depressed") in the system upon elapse of the CPU allocation time consecutively allocated; andprogram means responsive to elapse of the CPU allocation time consecutively allocated, to wake up a single control process (1801) waking up said process group, and wake up a process belonging to a process group supplied with next consecutive CPU allocation time by using said control process.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP73673/96 | 1996-03-28 | ||
JP7367396 | 1996-03-28 |
Publications (3)
Publication Number | Publication Date |
---|---|
EP0798638A2 true EP0798638A2 (en) | 1997-10-01 |
EP0798638A3 EP0798638A3 (en) | 1998-11-18 |
EP0798638B1 EP0798638B1 (en) | 2008-07-16 |
Family
ID=13524996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP97105059A Expired - Lifetime EP0798638B1 (en) | 1996-03-28 | 1997-03-25 | Periodic process scheduling method |
Country Status (4)
Country | Link |
---|---|
US (1) | US5944778A (en) |
EP (1) | EP0798638B1 (en) |
CA (1) | CA2200929C (en) |
DE (1) | DE69738832D1 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000028418A1 (en) * | 1998-11-09 | 2000-05-18 | Intel Corporation | Scheduling resource requests in a computer system |
EP1037147A1 (en) * | 1999-03-15 | 2000-09-20 | BRITISH TELECOMMUNICATIONS public limited company | Resource scheduling |
EP1037146A1 (en) * | 1999-03-15 | 2000-09-20 | BRITISH TELECOMMUNICATIONS public limited company | Resource scheduling |
FR2821940A1 (en) * | 2001-03-12 | 2002-09-13 | Centre Nat Etd Spatiales | Method for managing time in a real time system, comprises calls from application programs to time management system for processing activation at determined times and listing of times and activities |
WO2005055058A1 (en) * | 2003-12-04 | 2005-06-16 | Matsushita Electric Industrial Co., Ltd. | Task scheduling device, method, program, recording medium, and transmission medium for priority-driven periodic process scheduling |
WO2005064463A1 (en) * | 2003-12-26 | 2005-07-14 | Matsushita Electric Industrial Co., Ltd. | Task scheduling apparatus, method, program, storage medium and transmission medium for prioritized signal handler scheduling |
EP2395431A1 (en) * | 2010-06-11 | 2011-12-14 | Siemens Aktiengesellschaft | Method and apparatus for scheduling plural tasks |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6948172B1 (en) * | 1993-09-21 | 2005-09-20 | Microsoft Corporation | Preemptive multi-tasking with cooperative groups of tasks |
US6400819B1 (en) * | 1996-03-28 | 2002-06-04 | Hitachi, Ltd. | Method and apparatus for executing communication in real-time and data structure for real-time data communication |
US7805724B1 (en) * | 1998-05-27 | 2010-09-28 | Arc International I.P., Inc. | Apparatus, method and computer program for dynamic slip control in real-time scheduling |
US6112221A (en) * | 1998-07-09 | 2000-08-29 | Lucent Technologies, Inc. | System and method for scheduling web servers with a quality-of-service guarantee for each user |
US6505228B1 (en) * | 1998-07-22 | 2003-01-07 | Cisco Technology, Inc. | Dynamic determination of execution sequence |
US7334229B1 (en) * | 1999-01-28 | 2008-02-19 | Cisco Technology, Inc. | Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore |
US6466580B1 (en) * | 1999-02-23 | 2002-10-15 | Advanced Micro Devices, Inc. | Method and apparatus for processing high and low priority frame data transmitted in a data communication system |
US7065762B1 (en) * | 1999-03-22 | 2006-06-20 | Cisco Technology, Inc. | Method, apparatus and computer program product for borrowed-virtual-time scheduling |
US6874144B1 (en) * | 1999-04-05 | 2005-03-29 | International Business Machines Corporation | System, method, and program for implementing priority inheritance in an operating system |
KR100727901B1 (en) * | 1999-07-10 | 2007-06-14 | 삼성전자주식회사 | Micro scheduling method and operating system kernel device therefrom |
US7330815B1 (en) * | 1999-10-04 | 2008-02-12 | Globalenglish Corporation | Method and system for network-based speech recognition |
US7099855B1 (en) | 2000-01-13 | 2006-08-29 | International Business Machines Corporation | System and method for electronic communication management |
US6691175B1 (en) * | 2000-02-25 | 2004-02-10 | Sun Microsystems, Inc. | Method and apparatus for managing data propagation between software modules |
US6408277B1 (en) * | 2000-06-21 | 2002-06-18 | Banter Limited | System and method for automatic task prioritization |
US9699129B1 (en) | 2000-06-21 | 2017-07-04 | International Business Machines Corporation | System and method for increasing email productivity |
US8290768B1 (en) | 2000-06-21 | 2012-10-16 | International Business Machines Corporation | System and method for determining a set of attributes based on content of communications |
JP2002027477A (en) * | 2000-07-04 | 2002-01-25 | Mitsubishi Electric Corp | Mpeg image processor and data transfer method for the same |
US7644057B2 (en) | 2001-01-03 | 2010-01-05 | International Business Machines Corporation | System and method for electronic communication management |
US6918115B2 (en) * | 2001-02-16 | 2005-07-12 | Microsoft Corporation | Method and apparatus for synchronization of periodic processes |
US6904483B2 (en) * | 2001-03-20 | 2005-06-07 | Wind River Systems, Inc. | System and method for priority inheritance |
JP2002342097A (en) * | 2001-05-17 | 2002-11-29 | Matsushita Electric Ind Co Ltd | Task allocatable time deciding device and task allocatable time deciding method |
US7912930B1 (en) * | 2002-02-21 | 2011-03-22 | Oracle International Corporation | System and method for resource provisioning |
US20040003019A1 (en) * | 2002-06-28 | 2004-01-01 | Sun Microsystems, Inc., A Delaware Corporation | Process management for real time systems management controller |
KR100471746B1 (en) * | 2002-07-26 | 2005-03-16 | 재단법인서울대학교산학협력재단 | A soft real-time task scheduling method and the storage media thereof |
US7797064B2 (en) | 2002-12-13 | 2010-09-14 | Stephen Loomis | Apparatus and method for skipping songs without delay |
US7412532B2 (en) | 2002-12-13 | 2008-08-12 | Aol Llc, A Deleware Limited Liability Company | Multimedia scheduler |
US20040177115A1 (en) * | 2002-12-13 | 2004-09-09 | Hollander Marc S. | System and method for music search and discovery |
US7493289B2 (en) * | 2002-12-13 | 2009-02-17 | Aol Llc | Digital content store system |
US7912920B2 (en) | 2002-12-13 | 2011-03-22 | Stephen Loomis | Stream sourcing content delivery system |
US7441240B2 (en) * | 2003-01-07 | 2008-10-21 | Matsushita Electric Industrial Co., Ltd. | Process scheduling apparatus, process scheduling method, program for process scheduling, and storage medium recording a program for process scheduling |
US7389230B1 (en) | 2003-04-22 | 2008-06-17 | International Business Machines Corporation | System and method for classification of voice signals |
US8495002B2 (en) | 2003-05-06 | 2013-07-23 | International Business Machines Corporation | Software tool for training and testing a knowledge base |
US20050187913A1 (en) | 2003-05-06 | 2005-08-25 | Yoram Nelken | Web-based customer service interface |
US7559060B2 (en) * | 2003-06-10 | 2009-07-07 | National Instruments Corporation | Time-bounded program execution |
US7725896B2 (en) * | 2003-07-21 | 2010-05-25 | Adc Dsl Systems, Inc. | Periodic event execution control mechanism |
JP2005056196A (en) * | 2003-08-05 | 2005-03-03 | Fanuc Ltd | Programmable controller |
JP3953449B2 (en) * | 2003-08-26 | 2007-08-08 | 富士通株式会社 | Task management program and task control device |
US20060026601A1 (en) * | 2004-07-29 | 2006-02-02 | Solt David G Jr | Executing commands on a plurality of processes |
US7076615B1 (en) * | 2004-09-22 | 2006-07-11 | Parin Bhadrik Dalal | Interval matching circuit for classification |
US9361156B2 (en) | 2005-03-14 | 2016-06-07 | 2236008 Ontario Inc. | Adaptive partitioning for operating system |
US8387052B2 (en) * | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
CA2538503C (en) * | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
US8245230B2 (en) * | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
US7774784B2 (en) * | 2005-03-17 | 2010-08-10 | Microsoft Corporation | Determining an actual amount of time a processor consumes in executing a portion of code |
JP4555145B2 (en) * | 2005-04-28 | 2010-09-29 | 富士通株式会社 | Batch scheduling program, batch scheduling method, and batch scheduling apparatus |
US8112399B2 (en) * | 2005-11-07 | 2012-02-07 | International Business Machines Corporation | Method and apparatus for configurable data aggregation in a data warehouse |
US20070112876A1 (en) * | 2005-11-07 | 2007-05-17 | Blaisdell Russell C | Method and apparatus for pruning data in a data warehouse |
US8738565B2 (en) * | 2005-11-07 | 2014-05-27 | International Business Machines Corporation | Collecting data from data sources |
US8510596B1 (en) * | 2006-02-09 | 2013-08-13 | Virsec Systems, Inc. | System and methods for run time detection and correction of memory corruption |
TWI324747B (en) * | 2006-06-08 | 2010-05-11 | Wistron Corp | Method for preventing process collision of micro controller |
US8640131B2 (en) * | 2008-01-18 | 2014-01-28 | Microsoft Corporation | Demand-based processor cycle allocation subsequent to equal group-based processor cycle distribution |
JP5209788B2 (en) * | 2008-08-28 | 2013-06-12 | エヌイーシー ヨーロッパ リミテッド | Method and system for scheduling periodic processes |
US9098331B2 (en) * | 2011-06-29 | 2015-08-04 | Telefonaktiebolaget L M Ericsson (Publ) | Joint scheduling of multiple processes on a shared processor |
US9128754B2 (en) * | 2012-05-31 | 2015-09-08 | Hewlett-Packard Development Company, L.P. | Resource starvation management in a computer system |
US9904575B2 (en) | 2013-05-15 | 2018-02-27 | Apple Inc. | System and method for selective timer rate limiting |
US9958933B2 (en) | 2015-06-04 | 2018-05-01 | Apple Inc. | Opportunistic waking of an application processor |
US10915268B2 (en) | 2017-12-22 | 2021-02-09 | International Business Machines Corporation | Event based runtime scheduling |
CN110109743B (en) * | 2019-05-09 | 2023-07-21 | 中国航空工业集团公司西安航空计算技术研究所 | Real-time process scheduling method |
-
1997
- 1997-03-25 EP EP97105059A patent/EP0798638B1/en not_active Expired - Lifetime
- 1997-03-25 DE DE69738832T patent/DE69738832D1/en not_active Expired - Fee Related
- 1997-03-25 CA CA002200929A patent/CA2200929C/en not_active Expired - Fee Related
- 1997-03-26 US US08/824,338 patent/US5944778A/en not_active Expired - Lifetime
Non-Patent Citations (2)
Title |
---|
RAMAMRITHAM K ET AL: "SCHEDULING ALGORITHMS AND OPERATING SYSTEMS SUPPORT FOR REAL-TIME SYSTEMS" PROCEEDINGS OF THE IEEE, vol. 82, no. 1, 1 January 1994, pages 55-67, XP000435881 * |
STANKOVIC J A ET AL: "THE SPRING KERNEL: A NEW PARADIGM FOR REAL-TIME OPERATING SYSTEMS*" OPERATING SYSTEMS REVIEW (SIGOPS), vol. 23, no. 3, 1 July 1989, pages 54-71, XP000140317 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2358939B (en) * | 1998-11-09 | 2003-07-02 | Intel Corp | Scheduling resource requests in a computer system |
GB2358939A (en) * | 1998-11-09 | 2001-08-08 | Intel Corp | Scheduling resource requests in a computer system |
WO2000028418A1 (en) * | 1998-11-09 | 2000-05-18 | Intel Corporation | Scheduling resource requests in a computer system |
EP1037147A1 (en) * | 1999-03-15 | 2000-09-20 | BRITISH TELECOMMUNICATIONS public limited company | Resource scheduling |
EP1037146A1 (en) * | 1999-03-15 | 2000-09-20 | BRITISH TELECOMMUNICATIONS public limited company | Resource scheduling |
WO2000055732A2 (en) * | 1999-03-15 | 2000-09-21 | British Telecommunications Public Limited Company | Resource scheduling |
WO2000055732A3 (en) * | 1999-03-15 | 2000-12-28 | British Telecomm | Resource scheduling |
US7219347B1 (en) | 1999-03-15 | 2007-05-15 | British Telecommunications Public Limited Company | Resource scheduling |
FR2821940A1 (en) * | 2001-03-12 | 2002-09-13 | Centre Nat Etd Spatiales | Method for managing time in a real time system, comprises calls from application programs to time management system for processing activation at determined times and listing of times and activities |
WO2002077801A3 (en) * | 2001-03-12 | 2004-02-12 | Centre Nat Etd Spatiales | Time management method and system in a real-time system |
WO2002077801A2 (en) * | 2001-03-12 | 2002-10-03 | Centre National D'etudes Spatiales | Time management method and system in a real-time system |
WO2005055058A1 (en) * | 2003-12-04 | 2005-06-16 | Matsushita Electric Industrial Co., Ltd. | Task scheduling device, method, program, recording medium, and transmission medium for priority-driven periodic process scheduling |
WO2005064463A1 (en) * | 2003-12-26 | 2005-07-14 | Matsushita Electric Industrial Co., Ltd. | Task scheduling apparatus, method, program, storage medium and transmission medium for prioritized signal handler scheduling |
US7831973B2 (en) | 2003-12-26 | 2010-11-09 | Panasonic Corporation | Task scheduling apparatus, task scheduling method, task scheduling program, storage medium and transmission medium |
EP2395431A1 (en) * | 2010-06-11 | 2011-12-14 | Siemens Aktiengesellschaft | Method and apparatus for scheduling plural tasks |
Also Published As
Publication number | Publication date |
---|---|
EP0798638A3 (en) | 1998-11-18 |
EP0798638B1 (en) | 2008-07-16 |
US5944778A (en) | 1999-08-31 |
DE69738832D1 (en) | 2008-08-28 |
CA2200929A1 (en) | 1997-09-28 |
CA2200929C (en) | 2008-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5944778A (en) | Periodic process scheduling method | |
US7039012B2 (en) | Process execution method and apparatus | |
US5247671A (en) | Scalable schedules for serial communications controller in data processing systems | |
EP0617361B1 (en) | Scheduling method and apparatus for a communication network | |
US7386707B2 (en) | Processor and program execution method capable of efficient program execution | |
US20060182137A1 (en) | Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment | |
US20040015973A1 (en) | Resource reservation for large-scale job scheduling | |
US5838957A (en) | Multi-stage timer implementation for telecommunications transmission | |
US7116635B2 (en) | Process execution method and apparatus | |
US8539501B2 (en) | Managing access to a shared resource in a data processing system | |
US5768572A (en) | Timer state control optimized for frequent cancel and reset operations | |
US6951019B1 (en) | Execution control for processor tasks | |
WO2012094862A1 (en) | Method, apparatus and computer for task scheduling in operating system | |
JP2001517025A (en) | Computer | |
US8225320B2 (en) | Processing data using continuous processing task and binary routine | |
JP2904483B2 (en) | Scheduling a periodic process | |
US7047531B2 (en) | Method and apparatus for automated network polling | |
US20020010732A1 (en) | Parallel processes run scheduling method and device and computer readable medium having a parallel processes run scheduling program recorded thereon | |
JP2004517424A (en) | Server architecture | |
JP3653176B2 (en) | Process execution control method | |
JP2000322278A (en) | Process execution controlling method | |
JP2009541852A (en) | Computer micro job | |
JP2002500454A (en) | Avoiding data loss in buffered UARTs | |
CA2240778A1 (en) | Job scheduling for instruction processor | |
US6952826B1 (en) | Method for implementing a multi-level system model for deterministically handling selected data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
AK | Designated contracting states |
Kind code of ref document: A2 Designated state(s): DE FR GB IT |
|
PUAL | Search report despatched |
Free format text: ORIGINAL CODE: 0009013 |
|
AK | Designated contracting states |
Kind code of ref document: A3 Designated state(s): DE FR GB IT |
|
17P | Request for examination filed |
Effective date: 19981210 |
|
17Q | First examination report despatched |
Effective date: 20020607 |
|
GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
GRAS | Grant fee paid |
Free format text: ORIGINAL CODE: EPIDOSNIGR3 |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): DE FR GB IT |
|
REG | Reference to a national code |
Ref country code: GB Ref legal event code: FG4D |
|
REF | Corresponds to: |
Ref document number: 69738832 Country of ref document: DE Date of ref document: 20080828 Kind code of ref document: P |
|
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
26N | No opposition filed |
Effective date: 20090417 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: GB Payment date: 20090220 Year of fee payment: 13 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: DE Payment date: 20090519 Year of fee payment: 13 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: FR Payment date: 20090128 Year of fee payment: 13 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: IT Payment date: 20100125 Year of fee payment: 14 |
|
GBPC | Gb: european patent ceased through non-payment of renewal fee |
Effective date: 20100325 |
|
REG | Reference to a national code |
Ref country code: FR Ref legal event code: ST Effective date: 20101130 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: FR Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20100331 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20101001 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: GB Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20100325 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IT Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20110325 |