WO2017104014A1 - 計算機システム、タスク処理方法及びタスク処理プログラム - Google Patents

計算機システム、タスク処理方法及びタスク処理プログラム Download PDF

Info

Publication number
WO2017104014A1
WO2017104014A1 PCT/JP2015/085173 JP2015085173W WO2017104014A1 WO 2017104014 A1 WO2017104014 A1 WO 2017104014A1 JP 2015085173 W JP2015085173 W JP 2015085173W WO 2017104014 A1 WO2017104014 A1 WO 2017104014A1
Authority
WO
WIPO (PCT)
Prior art keywords
interrupt
processing
task
control
unit
Prior art date
Application number
PCT/JP2015/085173
Other languages
English (en)
French (fr)
Inventor
寿和 加藤
Original Assignee
三菱電機株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to PCT/JP2015/085173 priority Critical patent/WO2017104014A1/ja
Priority to TW105103009A priority patent/TW201723834A/zh
Publication of WO2017104014A1 publication Critical patent/WO2017104014A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Definitions

  • the present invention relates to a computer system, a task processing method, and a task processing program.
  • the task stack is a stack area used for each task process.
  • the interrupt stack is a stack area that is shared between interrupt processes.
  • the real-time OS switches between the task stack and the interrupt stack, and saves and restores the execution context in the interrupt entry / exit processing that occurs during the execution of the task processing.
  • switching of the stack area is not necessary. For this reason, a nest counter for distinguishing between multiple interrupts and the first interrupt is used.
  • TCB task control block
  • interrupt responsiveness is improved by reducing interrupt entry processing.
  • whether to perform task switching is determined by interrupt exit processing according to the value of a nest counter for managing multiple interrupts.
  • the control task process is a task process that is conventionally performed by the computer system under the management of the real-time OS.
  • the control interrupt process is a plurality of interrupt processes having different priorities.
  • the monitoring interrupt process is an interrupt process for periodically monitoring the state of the computer system.
  • a control module that is a load module that performs control processing and a monitoring module that is a load module that performs monitoring interrupt processing are operated on a single CPU (central processing unit).
  • the control module includes a real-time OS.
  • the monitoring interrupt stack is separated from the control task stack and the control interrupt stack managed by the real-time OS.
  • the monitoring interrupt stack is a stack area used for monitoring interrupt processing.
  • the control task stack is a task stack used in control processing.
  • the control interrupt stack is an interrupt stack used in control processing.
  • there is a high priority control interrupt process that is a short-cycle interrupt process performed with a higher priority than the monitoring interrupt process. Assume that a system call accompanied by task switching is issued in high priority control interrupt processing.
  • the entrance / exit processing of the monitoring interrupt processing and the entrance / exit processing of the high priority control interrupt processing are independent processes. Therefore, in the entry / exit processing of the high-priority control interrupt processing that occurs during execution of the monitoring interrupt processing, simply switching between the control interrupt stack and the monitoring interrupt stack is interrupted by the high-priority control interrupt processing. Cannot return to monitoring interrupt processing. In addition, when task switching is requested, the task switching is performed when control task processing is resumed by simply switching between the control task stack and the monitoring interrupt stack in the entry / exit processing of the monitoring interrupt processing. Can not do it.
  • the task switching required by the high-priority interrupt process is appropriately performed.
  • the purpose is to implement.
  • a computer system includes: A processing unit for processing a task, a first interrupt, and a second interrupt having a higher priority than the first interrupt using separate stack areas; When the first interrupt occurs during the processing of the task, the processing unit is caused to interrupt the processing of the task to start the processing of the first interrupt, and the second interrupt is performed during the processing of the first interrupt.
  • An entrance control unit that causes the processing unit to interrupt the processing of the first interrupt and start the processing of the second interrupt when an interrupt occurs;
  • a return control unit that causes the processing unit to resume the processing of the first interrupt when the processing of the second interrupt started in the middle of the processing of the first interrupt ends;
  • the task switching is requested by the second interrupt processing started in the middle of the first interrupt processing, the task switching is performed by the processing unit after the resumed first interrupt processing is completed. If the task switching is not requested by the second interrupt process started in the middle of the first interrupt process after starting the previous process, after the restarted first interrupt process is completed, An exit control unit that causes the processing unit to resume processing of the task.
  • a high-priority second interrupt that is processed using a stack area different from the first interrupt occurs, and task switching is requested by the processing of the second interrupt.
  • the processing of the first interrupt is resumed after the processing of the second interrupt is completed. Then, after the resumed first interrupt process is completed, the task switching destination process starts. Therefore, the task requested by the second interrupt process can be appropriately switched.
  • FIG. 2 is a block diagram showing a hardware configuration of a computer system according to Embodiment 1.
  • FIG. FIG. 2 is a block diagram showing a functional configuration of the computer system according to the first embodiment.
  • 5 is a flowchart showing a procedure of real-time OS interrupt entry processing by the computer system according to the first embodiment.
  • 6 is a flowchart showing a procedure of real-time OS interrupt exit processing by the computer system according to the first embodiment.
  • 5 is a flowchart showing a procedure of interrupt entry processing by the computer system according to the first embodiment.
  • 3 is a flowchart showing a procedure of type determination processing by the computer system according to the first embodiment.
  • 4 is a flowchart showing a procedure of monitoring interrupt return processing by the computer system according to the first embodiment.
  • 6 is a flowchart illustrating a procedure of monitoring interrupt exit processing by the computer system according to the first embodiment.
  • Embodiment 1 FIG. The configuration of the system according to the present embodiment, the operation of the system according to the present embodiment, and the effects of the present embodiment will be described in order.
  • the computer system 100 includes hardware such as a CPU 101, a ROM 102 (read only memory), a RAM 103, and a peripheral device 104.
  • the CPU 101 is connected to other hardware via the signal line 116, and controls these other hardware.
  • the computer system 100 is a system in which a control module and a monitoring module having a multitask configuration based on a real-time OS operate on a single CPU 101.
  • Two modules, a control module and a monitoring module, are stored in the ROM 102 and the RAM 103 as independent load modules, and operate on the CPU 101.
  • the control module is a program including a real-time OS and various applications.
  • the monitoring module is a program that monitors the state of the computer system 100.
  • the CPU 101 is an arithmetic device that controls the computer system 100.
  • the CPU 101 includes a PC 105 (program counter), a PSW 106 (processor status word), an SP 107, and a general-purpose register 108.
  • the PC 105 is a register that holds an address value of an instruction to be executed next by the CPU 101.
  • the PSW 106 is a register that holds the internal state of the CPU 101.
  • the SP 107 is a register that holds the address value of the recently accessed stack area.
  • the general-purpose register 108 is a register that can be used for various purposes.
  • the ROM 102 has an interrupt vector area 109, a control module code area 110, and a monitoring module code area 111.
  • the interrupt vector area 109 is an interrupt vector table.
  • the control module code area 110 and the monitoring module code area 111 are code areas for the control module and the monitoring module, respectively.
  • the CPU 101 sequentially executes instructions in these code areas.
  • the RAM 103 includes a control module data area 112, a monitoring module data area 113, a control module stack area 114, and a monitoring module stack area 115.
  • the control module data area 112 and the monitoring module data area 113 are data areas used by the control module and the monitoring module, respectively.
  • the control module stack area 114 and the monitoring module stack area 115 are stack areas for the control module and the monitoring module, respectively. As will be described later, the control module stack area 114 is divided into a stack area for each task process and an interrupt process stack area.
  • the peripheral device 104 is specifically an input / output device such as a timer or an A / D (analog / digital) converter.
  • the peripheral device 104 inputs an interrupt signal to the CPU 101 under the set conditions.
  • Information, data, signal values, and variable values indicating the processing results of the control module and the monitoring module are stored in the RAM 103, an auxiliary storage device described later, or a register or cache memory in the CPU 101.
  • the computer system 100 includes functional elements such as a monitoring function unit 200, a control function unit 300, an interrupt entrance mechanism 401, and an interrupt exit mechanism 402.
  • the interrupt entry mechanism 401 is represented as “EM1”
  • the interrupt exit mechanism 402 is represented as “EM2”.
  • the monitoring function unit 200 includes a monitoring entrance control unit 201, a register storage unit 202, a type determination unit 203, an SP switching unit 204, a restoration preparation unit 205, a nest counter operation unit 206, a monitoring interrupt processing unit 207, A return control unit 208, a register return unit 209, and a monitoring exit control unit 210.
  • the monitoring entrance control unit 201 is “MP01”
  • the register storage unit 202 is “MP02”
  • the type determination unit 203 is “MP03”
  • the SP switching unit 204 is “MP04”
  • the return preparation unit 205 is “MP05”
  • the nest counter operation unit 206 is expressed as “MP06”
  • the monitoring interrupt processing unit 207 as “MP07”
  • the return control unit 208 as “MP08”
  • the register return unit 209 as “MP09”
  • the monitoring exit control unit 210 as “MP10”.
  • a program for realizing the function of the monitoring function unit 200 is stored in the monitoring module code area 111 of the ROM 102.
  • the function of the monitoring function unit 200 is exhibited by reading this program into the CPU 101 and executing it by the CPU 101. That is, the function of the monitoring function unit 200 is realized by a monitoring module that is software.
  • the monitoring function unit 200 holds the specific information 211.
  • the specific information 211 is described as “ID”.
  • the specific information 211 is stored in the monitoring module data area 113 of the RAM 103.
  • the monitoring function unit 200 uses memory areas such as a monitoring stack storage area 212, a control stack storage area 213, and a monitoring interrupt stack 214.
  • the monitoring stack storage area 212 is expressed as “SA1”
  • the control stack storage area 213 is expressed as “SA2”
  • the monitoring interrupt stack 214 is expressed as “ST1”.
  • the monitoring stack storage area 212 and the control stack storage area 213 are included in the monitoring module data area 113 of the RAM 103.
  • the monitoring interrupt stack 214 is included in the monitoring module stack area 115 of the RAM 103.
  • the control function unit 300 includes a control entry control unit 301, a register storage unit 302, a nest counter operation unit 303, an SP switching unit 304, an interrupt call unit 305, a control interrupt processing unit 306, and a control exit control unit 307.
  • the control entrance control unit 301 is “CP01”
  • the register storage unit 302 is “CP02”
  • the nest counter operation unit 303 is “CP03”
  • the SP switching unit 304 is “CP04”
  • the interrupt calling unit 305 is “CP05”.
  • the control interrupt processing unit 306 is “CP06”, the control exit control unit 307 is “CP07”, the switching determination unit 308 is “CP08”, the task switching unit 309 is “CP09”, the register return unit 310 is “CP10”, and task processing
  • the part 311 is described as “CP11”.
  • the control module code area 110 of the ROM 102 stores a program that realizes the function of the control function unit 300.
  • the function of the control function unit 300 is exhibited when this program is read by the CPU 101 and executed by the CPU 101. That is, the function of the control function unit 300 is realized by a control module that is software.
  • control entrance control unit 301 the register storage unit 302, the nest counter operation unit 303, the SP switching unit 304, the interrupt call unit 305, the control exit control unit 307, the switching determination unit 308,
  • the functions of the task switching unit 309 and the register return unit 310 are realized by a real-time OS.
  • the functions of the control interrupt processing unit 306 and the task processing unit 311 are realized by an application.
  • the control function unit 300 holds a nest counter 312.
  • the nest counter 312 is described as “NC”.
  • the nest counter 312 is stored in the control module data area 112 of the RAM 103.
  • the control function unit 300 uses memory areas such as a task stack storage area 313, a control interrupt stack 314, and a control task stack 315.
  • the task stack storage area 313 is represented as “SA3”, the control interrupt stack 314 as “ST2”, and the control task stack 315 as “ST3”.
  • the task stack storage area 313 is included in the control module data area 112 of the RAM 103.
  • the control interrupt stack 314 and the control task stack 315 are included in the control module stack area 114 of the RAM 103.
  • the interrupt entry mechanism 401 performs interrupt mask comparison and priority comparison when an interrupt signal is input from the peripheral device 104 to the CPU 101 or when an interrupt signal is generated inside the CPU 101.
  • the interrupt entry mechanism 401 stores the contents of the PC 105 and the PSW 106 in the stack area indicated by SP107. Then, the interrupt entrance mechanism 401 acquires an address value corresponding to the interrupt to be accepted from the interrupt vector area 109, and jumps to the address value.
  • the interrupts correspond to a monitoring interrupt corresponding to the first interrupt, a high priority control interrupt corresponding to the second interrupt having a higher priority than the first interrupt, and a third interrupt having a lower priority than the first interrupt. And low priority control interrupts.
  • the monitoring interrupt is an interrupt that is periodically issued to monitor the state of the computer system 100 and processed by the monitoring module.
  • Control interrupts such as a high priority control interrupt and a low priority control interrupt are interrupts that are arbitrarily issued to control the computer system 100 and are processed by the control module.
  • the interrupt entrance mechanism 401 is realized by the CPU 101.
  • the interrupt vector area 109 has a jump destination address value for each interrupt factor. Specifically, in the interrupt vector area 109, among the interrupt factors, the interrupt factor of the low priority control interrupt is first executed to realize the function of the control entrance control unit 301 of the control function unit 300. Instruction address value is set. Among the interrupt factors, for the monitoring interrupt or the high-priority control interrupt, the address value of the instruction that is executed first in order to realize the function of the monitoring entrance control unit 201 of the monitoring function unit 200 is set.
  • the interrupt vector area 109 may have a jump destination address value common to a plurality of interrupt factors.
  • the interrupt vector area 109 may be on the RAM 103.
  • the interrupt exit mechanism 402 is activated when an interrupt return instruction included in the instruction set architecture of the CPU 101 is executed.
  • the interrupt exit mechanism 402 resumes the execution of the processing that was executed before the occurrence of the interrupt by restoring the contents of the PC 105 and the PSW 106 from the stack area indicated by SP107.
  • the interrupt exit mechanism 402 is realized by the CPU 101.
  • monitoring interrupt processing unit 207 the control interrupt processing unit 306, and the task processing unit 311 are collectively referred to as “processing unit”.
  • processing unit The monitoring inlet control unit 201 and the control inlet control unit 301 are collectively referred to as “inlet control unit”.
  • monitoring exit control unit 210 and the control exit control unit 307 are collectively referred to as “exit control unit”.
  • the processing unit processes tasks, monitoring interrupts, and high priority control interrupts using separate stack areas.
  • the “separate stack areas” are the control task stack 315, the monitoring interrupt stack 214, and the control interrupt stack 314.
  • the entrance control unit When the monitoring interrupt occurs during task processing, the entrance control unit causes the processing unit to interrupt task processing and start monitoring interrupt processing. When a high priority control interrupt occurs during the monitoring interrupt processing, the entrance control unit causes the processing unit to interrupt the monitoring interrupt processing and start the high priority control interrupt processing.
  • the return control unit 208 causes the processing unit to resume the monitoring interrupt processing when the high priority control interrupt processing started in the middle of the monitoring interrupt processing ends.
  • the exit control unit When task switching is requested by high-priority control interrupt processing that was started in the middle of monitoring interrupt processing, the exit control unit sends the task switching destination to the processing unit after the restarted monitoring interrupt processing is completed. Start processing. If the task switching is not requested due to the high priority control interrupt processing that was started in the middle of the monitoring interrupt processing, the exit control unit will process the task to the processing unit after the restarted monitoring interrupt processing is completed. To resume.
  • the processing unit further processes the low priority interrupt.
  • the entrance control unit When the low priority control interrupt occurs before the monitoring interrupt occurs during the task processing, the entrance control unit causes the processing unit to suspend the task processing and start the low priority control interrupt processing. When a monitoring interrupt occurs in the middle of low priority control interrupt processing, the entrance control unit causes the processing unit to interrupt low priority control interrupt processing and start monitoring interrupt processing.
  • the exit control unit resumes when task switching is requested by high priority control interrupt processing started in the middle of monitoring interrupt processing after monitoring interrupt processing started in the middle of low priority control interrupt processing
  • the low priority control interrupt processing is resumed, and after the resumed low priority control interrupt processing is completed, the processing unit is caused to start the task switching destination processing.
  • the return control unit 208 completes the processing of the plurality of interrupts when a plurality of interrupts having a higher priority than the monitoring interrupt are generated during the processing of the monitoring interrupt. When it is launched.
  • the entrance control unit sets data for starting the return control unit 208 at the end of the high priority control interrupt process. Insert into the stack area for priority control interrupt processing.
  • a transition frame to be described later corresponds to “data for activating the return control unit 208 at the end of processing of the high priority control interrupt”.
  • the “stack area for high priority control interrupt processing” is the control interrupt stack 314.
  • the entrance control unit stores the SP107 value indicating the stack area being used by the processing unit, and then sets the stack area to be used by the processing unit. Change to the stack area for monitoring interrupt processing.
  • the “stack area for monitoring interrupt processing” is the monitoring interrupt stack 214.
  • the exit control unit uses the stack area to be used after the restarted monitoring interrupt processing is completed. Is changed to the stack area for processing at the switching destination. Specifically, the “switch area for processing to be switched” is the control task stack 315.
  • the exit control unit uses the stack to be used by the processing unit after the restarted monitoring interrupt processing is completed. The area is changed to a stack area corresponding to the value stored by the entrance control unit.
  • the monitoring entrance control unit 201 executes interrupt entry processing when a monitoring interrupt or a high priority control interrupt occurs.
  • the monitoring entry control unit 201 activates the register storage unit 202, the type determination unit 203, the SP switching unit 204, the return preparation unit 205, and the nest counter operation unit 206 according to the type of interrupt that has occurred. Thereafter, the monitoring entrance control unit 201 activates the monitoring interrupt processing unit 207 when the generated interrupt is a monitoring interrupt.
  • the monitoring entrance control unit 201 activates the control entrance control unit 301 of the control function unit 300 when the generated interrupt is a high priority control interrupt. Details of the interrupt entry process will be described later.
  • the register storage unit 202 stores necessary data of the general-purpose register 108 on the stack area pointed to by the SP 107 at the time of activation.
  • the type determination unit 203 executes a type determination process.
  • the type determination unit 203 determines the type of interrupt that has occurred.
  • the types to be judged are monitor interrupt, first high priority control interrupt that occurred during execution of monitor interrupt processing, nest high priority control interrupt that occurred during execution of monitor interrupt processing, and monitor interrupt There are four types of high priority control interrupts that have not occurred.
  • the monitoring interrupt processing is monitoring interrupt processing executed by the monitoring interrupt processing unit 207.
  • the type determination unit 203 uses the specific information 211, the monitoring stack storage area 212, and the control stack storage area 213 for determining the type. As a specific example of the specific information 211, there is a timer interrupt factor number used in the monitoring interrupt. Details of the type determination process will be described later.
  • the monitoring stack storage area 212 when the high priority control interrupt process is started during the execution of the monitoring interrupt process, the value of the SP 107 indicating the stack area storing the execution context of the interrupted monitoring interrupt process is stored. Area.
  • the high priority control interrupt process is a high priority control interrupt process executed by the control interrupt processing unit 306 of the control function unit 300. When the monitoring interrupt process is not interrupted, the monitoring stack storage area 212 is cleared to zero.
  • the control stack storage area 213 stores the execution context of the interrupted control task process or the low priority control interrupt process when the monitor interrupt process is started during the execution of the control task process or the low priority control interrupt process. This is an area where the value of SP107 indicating the stack area is stored.
  • the control task process is a task process executed by the task processing unit 311 of the control function unit 300.
  • the low priority control interrupt process is a low priority control interrupt process executed by the control interrupt processing unit 306 of the control function unit 300. When the control task process or the low priority control interrupt process is not interrupted, the monitoring stack storage area 212 is cleared to zero.
  • the SP switching unit 204 stores the value of the SP 107 at the time of activation in an appropriate storage area, and sets the address value of the stack area corresponding to the generated interrupt in the SP 107.
  • the return preparation unit 205 is activated in the entrance processing of the first high priority control interrupt that occurs during the execution of the monitoring interrupt processing.
  • the return preparation unit 205 switches the SP 107 to the stack area used for the first high-priority control interrupt that occurs during the execution of the monitoring interrupt process so that the monitoring interrupt process can be resumed after the exit process corresponding to the entry process.
  • a transition frame is generated on the stack area.
  • the transition frame is a stack frame including a start address value of a program executed to realize the function of the return control unit 208.
  • the transition frame is stored in the same format as the format in which the interrupt entrance mechanism 401 stores the value of the PC 105 on the stack area.
  • the nest counter operation unit 206 has a function of incrementing the nest counter 312 of the control function unit 300 by one so that the function of the control exit control unit 307 can be used in the exit processing of the monitoring interrupt when a monitoring interrupt occurs. . If this function is not provided, the control exit control unit 307 performs control in the exit processing of the high priority control interrupt when a low priority control interrupt has not occurred and a monitoring interrupt has occurred and a high priority control interrupt has occurred. There is a possibility of switching task processing by mistake.
  • the monitor interrupt processing unit 207 uses the monitor interrupt stack 214 to process a monitor interrupt for monitoring the computer system 100.
  • the return control unit 208 uses the transition frame generated by the return preparation unit 205 to transition from the exit processing of the high priority control interrupt that occurred during the execution of the monitoring interrupt processing to the monitoring interrupt return processing.
  • the recovery control unit 208 activates the register recovery unit 209 to recover the execution context of the monitoring interrupt, and then uses the interrupt recovery command to process the interrupted monitoring interrupt process. 207 to resume. Details of the monitoring interrupt return processing will be described later.
  • the monitoring exit control unit 210 executes the monitoring interrupt exit processing when the monitoring interrupt processing by the monitoring interrupt processing unit 207 is completed.
  • the monitoring exit control unit 210 activates the SP switching unit 204 and sets the value stored in the control stack storage area 213 in the SP 107. Thereafter, the monitoring exit control unit 210 activates the type determination unit 203 and clears the control stack storage area 213 to zero. Thereafter, the monitoring exit control unit 210 activates the control exit control unit 307 of the control function unit 300 and causes the switching determination unit 308 to execute processing. Details of the monitoring interrupt exit processing will be described later.
  • the real-time OS uses the interrupt entry / exit processing mechanism that is conventionally provided without changing it as much as possible. Therefore, in the exit / entry process of the monitoring interrupt process and the high priority control interrupt process, the process different from the conventional process is performed, and then the interrupt process of the real-time OS is performed.
  • each unit of the control function unit 300 is mainly an operation for executing an interrupt entry / exit process and an interrupt process call process performed in a conventional real-time OS.
  • the control entrance control unit 301 executes a real-time OS interrupt entrance process when a low priority control interrupt occurs or after an interrupt entry process by the monitoring entrance control unit 201 of the monitoring function unit 200. Details of the real-time OS interrupt entry process will be described later.
  • the register storage unit 302 stores necessary data of the general-purpose register 108 on the stack area pointed to by the SP 107 at the time of activation.
  • the nest counter operation unit 303 increments the nest counter 312 by 1 at the control interrupt entry process and decrements the nest counter 312 by 1 at the control interrupt exit process. It has the function to do.
  • the nest counter 312 is a variable secured on the RAM 103, but may be realized by a dedicated register provided by hardware.
  • the nest counter 312 is also operated by the nest counter operation unit 206 of the monitoring function unit 200 when a monitoring interrupt occurs.
  • the SP switching unit 304 is activated when the first control interrupt occurs, stores the value of the SP 107 at the time of activation in the task stack storage area 313, and sets the address value of the control interrupt stack 314 to the SP 107.
  • the value stored in the task stack storage area 313 is the address value of the control task stack 315 or the monitoring interrupt stack 214.
  • the interrupt call unit 305 activates the control interrupt processing unit 306 according to the interrupt factor of the generated control interrupt. Specifically, the interrupt calling unit 305 obtains an address value corresponding to the interrupt factor number of the generated control interrupt from the interrupt vector area 109, and calls the program of that address value.
  • the called program is a program that is executed to realize the function of the control interrupt processing unit 306.
  • the control interrupt processing unit 306 uses the control interrupt stack 314 to execute processing corresponding to each interrupt factor defined by the user.
  • the control interrupt processing unit 306 can call a system call for using the function of the real-time OS. In this embodiment, when task switching is required as a result of executing a system call, task switching is performed in exit processing when all interrupt processing occurring at that time is completed. .
  • the control exit control unit 307 executes the real-time OS interrupt exit process when the control interrupt process is completed or after the monitoring interrupt exit process by the monitoring exit control unit 210 of the monitoring function unit 200. Details of the real-time OS interrupt exit processing will be described later.
  • the switching determination unit 308 executes the execution result of the system call called in the nested control interrupt process when the first control interrupt process is completed or when the control interrupt is not generated and the monitor interrupt process is terminated. To determine whether task switching is necessary. The switching determination unit 308 activates the task switching unit 309 when task switching is necessary.
  • the task switching unit 309 stores the execution context of the control task process being executed in the control task stack 315 indicated by the SP 107 at the time of activation, and stores the value of the SP 107 in the TCB secured on the RAM 103. . Thereafter, the task switching unit 309 acquires the address value of the control task stack 315 in which the execution context is stored from the TCB of the control task process of the switching destination, and sets the address value in the SP 107. Thus, the task switching unit 309 switches control task processing executed on the CPU 101.
  • the register restoration unit 310 restores the data of the general-purpose register 108 saved by the register saving unit 302 or the register saving unit 202 of the monitoring function unit 200 from the stack area indicated by the SP 107.
  • the register return unit 310 executes an interrupt return instruction included in the instruction set architecture of the CPU 101 in order to restart the process before the occurrence of the interrupt.
  • the task processing unit 311 is provided for each processing unit defined by the user. Two or more task processing units 311 can operate in parallel by managing the real-time OS. Each task processing unit 311 operates using a corresponding control task stack 315.
  • This procedure corresponds to a part of the processing procedure of the task processing program according to the present embodiment.
  • the interrupt entry mechanism 401 jumps to the address value of the instruction that is stored in the interrupt vector area 109 and executed at the beginning of the real-time OS interrupt entry process of the control entry control unit 301. Then, real-time OS interrupt entry processing starts. Note that the contents of the interrupt vector area 109 referred to by the CPU 101 are set in advance when the computer system 100 is initialized.
  • step S11 the control entrance control unit 301 operates the register storage unit 302 to store the contents of the general-purpose register 108 not stored in the stack area in the stack area pointed to by the SP 107.
  • step S12 the control entrance control unit 301 determines whether or not the nest counter 312 is zero. When the nest counter 312 is 0, the generated interrupt is the first control interrupt, and the flow proceeds to step S13. If the nest counter 312 is not 0, the generated interrupt is not the first control interrupt, and the flow proceeds to step S15.
  • step S13 the control entrance control unit 301 operates the SP switching unit 304 and stores the SP 107 value at that time in the task stack storage area 313.
  • step S14 the control entrance control unit 301 operates the SP switching unit 304 to switch the SP 107 to the control interrupt stack 314. Specifically, the control entrance control unit 301 sets the bottom value of the control interrupt stack 314 in the SP 107.
  • step S15 the control entrance control unit 301 operates the nest counter operation unit 303 to increment the nest counter 312 by one.
  • step S16 the control entrance control unit 301 calls a control interrupt process corresponding to the interrupt factor of the generated interrupt.
  • the control interrupt processing is executed by the corresponding control interrupt processing unit 306 using the control interrupt stack 314. After step S16, the flow ends.
  • the real-time OS interrupt entry process is also executed after the interrupt entry process by the monitoring entry control unit 201 of the monitoring function unit 200 when a high priority control interruption occurs. In that case, the process after step S12 is performed.
  • This procedure corresponds to a part of the processing procedure of the task processing program according to the present embodiment.
  • the CPU 101 executes the real-time OS interrupt exit processing. By jumping to the address value of the instruction executed first, real-time OS interrupt exit processing is started.
  • step S21 the control exit control unit 307 operates the nest counter operation unit 303 to decrement the nest counter 312 by one.
  • step S22 the control exit control unit 307 determines whether or not the nest counter 312 is zero. If the nest counter 312 is 0, the first control interrupt process has been completed, or the monitoring interrupt that has occurred when no control interrupt has occurred has ended, and the flow proceeds to step S23. If the nest counter 312 is not 0, the nested control interrupt process has ended, or the monitoring interrupt process started during the execution of the control interrupt process has ended, and the flow proceeds to step S25.
  • step S23 the control exit control unit 307 operates the SP switching unit 304 to switch the SP 107 to the value of the control task stack 315 stored in the task stack storage area 313.
  • step S24 the control exit control unit 307 operates the switching determination unit 308 to determine whether task switching is necessary from the execution result of the system call called in the control interrupt process. Specifically, the control exit control unit 307 compares task switching request flags managed by the real-time OS. The task switching request flag is set when the highest priority task is switched within the system call. If there is a task switching request, the flow proceeds to step S27. If there is no request for task switching, the flow proceeds to step S25.
  • step S25 the control exit control unit 307 operates the register restoration unit 310 to restore the saved data of the general-purpose register 108 from the stack area indicated by the SP 107 at that time.
  • step S26 the control exit control unit 307 executes the interrupt return instruction to operate the interrupt exit mechanism 402 and resume execution of the processing that was being executed before the occurrence of the interrupt. After step S26, the flow ends.
  • step S27 the control exit control unit 307 operates the task switching unit 309 to store the SP107 value in the TCB of the switching source task.
  • step S28 the control exit control unit 307 operates the task switching unit 309 to switch control task processing. After step S28, the flow ends.
  • This procedure corresponds to a part of the processing procedure of the task processing program according to the present embodiment.
  • the interrupt entry mechanism 401 jumps to the address value of the instruction that is stored in the interrupt vector area 109 and executed at the beginning of the interrupt entry process of the monitoring entry control unit 201. As a result, interrupt entry processing starts. As described above, the contents of the interrupt vector area 109 referred to by the CPU 101 are set in advance when the computer system 100 is initialized.
  • step S31 the monitoring entrance control unit 201 operates the register storage unit 202 to store the contents of the general-purpose register 108 not stored in the stack area in the stack area pointed to by the SP 107.
  • step S32 the monitoring entrance control unit 201 operates the type determination unit 203 to execute the type determination process in order to determine the type of interrupt that has occurred.
  • the procedure of the type determination process will be described later.
  • step S33 if the result of the type determination process is a monitoring interrupt, that is, if a monitoring interrupt occurs, the flow proceeds to step S34. If the result of the type determination process is not a monitoring interrupt, the flow proceeds to step S40.
  • step S34 the monitoring entrance control unit 201 operates the nest counter operation unit 206 to increment the nest counter 312 by one. This is to prevent task switching from being executed in the exit processing of a high-priority control interrupt when a control interrupt has not occurred and a monitoring interrupt has occurred and a high-priority control interrupt has occurred. is there.
  • step S35 the monitoring entrance control unit 201 determines whether or not the nest counter 312 is 1. If the nest counter 312 is 1, a control interrupt has not occurred and a monitoring interrupt has occurred, and the flow proceeds to step S36. If the nest counter 312 is not 1, it means that a monitoring interrupt has occurred during execution of the control interrupt process, and the flow proceeds to step S37.
  • step S36 the monitoring entrance control unit 201 operates the SP switching unit 204, and stores the SP 107 value at that time in the task stack storage area 313.
  • the SP 107 value to be saved is a value indicating the control task stack 315 storing the execution context of the control task process that was being executed when the monitoring interrupt occurred.
  • step S37 the monitoring entrance control unit 201 operates the SP switching unit 204 to store the value of the SP 107 at that time in the control stack storage area 213.
  • the value of the SP 107 to be saved is a value indicating the stack area that stores the execution context of the control task process or the low priority control interrupt process that was being executed when the monitoring interrupt occurred.
  • step S38 the monitoring entrance control unit 201 operates the SP switching unit 204 to switch the SP 107 to the monitoring interrupt stack 214. Specifically, the monitoring entrance control unit 201 sets the bottom value of the monitoring interrupt stack 214 in the SP 107.
  • step S39 the monitoring entrance control unit 201 calls a monitoring interrupt process.
  • the monitoring interrupt processing is executed by the monitoring interrupt processing unit 207 using the monitoring interrupt stack 214. After step S39, the flow ends.
  • step S40 if the result of the type determination process is a control interrupt immediately after the monitoring interrupt, that is, if the first high priority control interrupt occurs during the execution of the monitoring interrupt process, the flow proceeds to step S41. If the result of the type determination process is not a control interrupt immediately after the monitoring interrupt, the flow proceeds to step S45.
  • step S41 the monitoring entrance control unit 201 operates the SP switching unit 204 to store the SP 107 value at that time in the monitoring stack storage area 212.
  • the value of the SP 107 to be saved is a value indicating the stack area that stores the execution context of the monitoring interrupt process that was being executed.
  • step S42 the monitoring entrance control unit 201 determines whether or not the nest counter 312 is 1. If the nest counter 312 is 1, a control interrupt has not occurred and a monitoring interrupt has occurred, and the flow proceeds to step S43. If the nest counter 312 is not 1, it means that a monitoring interrupt has occurred during the execution of the control interrupt process, and the flow proceeds to step S46.
  • step S43 the monitoring entrance control unit 201 operates the SP switching unit 204 to switch the SP 107 to the control interrupt stack 314. Specifically, the monitoring entrance control unit 201 sets the bottom value of the control interrupt stack 314 in the SP 107.
  • step S44 the monitoring entrance control unit 201 operates the return preparation unit 205 to generate a transition frame on the control interrupt stack 314 for transitioning to the monitoring interrupt return process.
  • step S45 the monitoring entrance control unit 201 jumps to the real-time OS interrupt entrance process of the control entrance control unit 301.
  • step S46 the monitoring entrance control unit 201 operates the SP switching unit 204 to switch the SP 107 to the value of the control interrupt stack 314 stored in the control stack storage area 213. After step S46, the flow proceeds to step S44.
  • This procedure corresponds to a part of the processing procedure of the task processing program according to the present embodiment.
  • step S51 the type determination unit 203 refers to the register of the CPU 101 and acquires the cause number of the generated interrupt.
  • the type determination unit 203 compares the factor number with the specific information 211. If the factor number matches the specific information 211, the flow proceeds to step S52. If the factor number does not match the specific information 211, the flow proceeds to step S53.
  • step S52 the type determination unit 203 determines that the generated interrupt is a monitoring interrupt. After step S52, the flow ends.
  • step S53 the type determination unit 203 compares the value in the monitoring stack storage area 212 with 0. If the value of the monitoring stack storage area 212 is not 0, the monitoring interrupt has already been interrupted, and the flow proceeds to step S54. If the value of the monitoring stack storage area 212 is 0, the flow proceeds to step S55.
  • step S54 the type determining unit 203 determines that the generated interrupt is a nesting of control interrupts after the occurrence of a monitoring interrupt. After step S54, the flow ends.
  • step S55 the type determination unit 203 compares the value of the control stack storage area 213 with 0. When the value of the control stack storage area 213 is not 0, the monitoring interrupt has been generated, but the control interrupt is not nested, and the flow proceeds to step S56. If the value of the control stack storage area 213 is 0, the flow proceeds to step S57.
  • step S56 the type determination unit 203 determines that the generated interrupt is a control interrupt immediately after the occurrence of the monitoring interrupt. After step S56, the flow ends.
  • step S57 the type determination unit 203 determines that the generated interrupt is a control interrupt when no monitoring interrupt occurs. After step S57, the flow ends.
  • This procedure corresponds to a part of the processing procedure of the task processing program according to the present embodiment.
  • the monitoring interrupt return processing of the return control unit 208 is started using the transition frame generated by the return preparation unit 205 from the exit processing of the high priority control interrupt generated during the execution of the monitoring interrupt processing.
  • step S61 the return control unit 208 operates the SP switching unit 204 to switch the SP 107 to the value of the monitoring interrupt stack 214 stored in the monitoring stack storage area 212.
  • step S62 the return control unit 208 operates the SP switching unit 204 to clear the monitoring stack storage area 212 to zero. That is, the return control unit 208 writes 0 in the monitoring stack storage area 212.
  • step S63 the return control unit 208 operates the register return unit 209 to return the saved data of the general-purpose register 108 from the stack area indicated by the SP 107, that is, the monitoring interrupt stack 214.
  • step S64 the return control unit 208 executes the interrupt return instruction, thereby operating the interrupt exit mechanism 402 to resume execution of the monitoring interrupt process that was executed before the occurrence of the interrupt. After step S64, the flow ends.
  • This procedure corresponds to a part of the processing procedure of the task processing program according to the present embodiment.
  • the monitoring interrupt exit processing of the monitoring exit control unit 210 is started by function return or the like.
  • step S71 the monitoring exit control unit 210 operates the SP switching unit 204 to switch the SP 107 to the stack area stored in the control stack storage area 213, that is, the value of the control task stack 315 or the control interrupt stack 314. .
  • step S72 the monitoring exit control unit 210 operates the SP switching unit 204 to clear the control stack storage area 213 to zero. That is, the monitoring exit control unit 210 writes 0 in the control stack storage area 213.
  • step S73 the monitoring exit control unit 210 jumps to the real-time OS interrupt exit process of the control exit control unit 307.
  • the monitoring interrupt processing is performed so that the requested task switching can be appropriately performed in the exit processing when all the processing of the control interrupt generated at that time ends and returns to the control task processing.
  • high-priority control interrupt entry / exit processing that occurs during execution of the monitoring interrupt processing.
  • the nest counter 312 is operated in the monitoring interrupt entry process.
  • the return preparation unit 205 In the entrance process of the control interrupt that occurs during the execution of the monitor interrupt process, the return preparation unit 205 generates a stack frame for transitioning to the monitor interrupt return process on the stack area on the control module side.
  • the monitoring exit control unit 210 branches to the real-time OS interrupt exit processing, so that the task switching requested by the system call called from the high priority control interrupt generated during the execution of the monitoring interrupt processing is performed. Can be implemented.
  • the type determination unit 203 determines whether or not the type of interrupt that has occurred is a monitoring interrupt using the specific information 211.
  • a monitoring interrupt occurs, the use position of the stack area on the control module side is stored in the control stack storage area 213. Further, when a high priority control interrupt occurs, the use position of the monitor interrupt stack 214 is stored in the monitor stack storage area 212.
  • the interrupt processing is completed, the stored value is restored by the SP switching unit 204, so that switching of the stack area between the monitoring interrupt processing and the control interrupt processing can be appropriately realized.
  • the computer system 100 may include another type of recording medium such as a flash memory in place of the ROM 102, the RAM 103, or both the ROM 102 and the RAM 103.
  • another type of recording medium such as a flash memory in place of the ROM 102, the RAM 103, or both the ROM 102 and the RAM 103.
  • the control module and the monitoring module may be stored in the auxiliary storage device.
  • the auxiliary storage device is a flash memory or an HDD (Hard Disk Drive).
  • a program stored in the auxiliary storage device is loaded into the RAM 103 and executed by the CPU 101.
  • control module and the monitoring module may be stored in a portable recording medium such as a magnetic disk, a flexible disk, or an optical disk.
  • the CPU 101, the ROM 102, and the RAM 103 are collectively referred to as “processing circuitry”. That is, the function of “part” is realized by a processing circuit.
  • Part may be read as “Process”, “Procedure” or “Process”.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

監視割り込み処理部(207)による監視割り込みの処理の途中で、監視割り込みとは別のスタック領域を使用して処理される高優先度の制御割り込みが発生し、制御割り込み処理部(306)による、その制御割り込みの処理によってタスクの切り替えが要求されたとする。その場合、制御割り込み処理部(306)による制御割り込みの処理の終了後に、監視割り込み処理部(207)による監視割り込みの処理が再開する。そして、再開した監視割り込みの処理が終了してから、タスク切り替え部(309)によるタスクの切り替えが実施される。

Description

計算機システム、タスク処理方法及びタスク処理プログラム
 本発明は、計算機システム、タスク処理方法及びタスク処理プログラムに関するものである。
 従来、リアルタイムOS(オペレーティングシステム)が搭載された計算機システムでは、複数のタスクスタックと、1つの割り込みスタックとが分離して備えられていることが多い(例えば、特許文献1参照)。タスクスタックとは、タスク処理ごとに使用されるスタック領域のことである。割り込みスタックとは、割り込み処理間で共有して使用されるスタック領域のことである。
 リアルタイムOSは、タスク処理の実行中に発生する割り込みの出入口処理において、タスクスタックと割り込みスタックとの間の切り替え、及び、実行コンテキストの保存及び復帰を実施する。ただし、多重割り込みの場合には、スタック領域の切り替えは不要である。そのため、多重割り込みと初回の割り込みとを判別するためのネストカウンタが用いられる。
 割り込み処理において、システムコールが実行され、タスク切り替えが必要となる場合がある。そのような場合、初回の割り込みの出口処理において、割り込み発生時に実行されていた切り替え元のタスク処理の実行コンテキストのうち、必要な部分がタスクスタックに保存される。また、SP(スタックポインタ)の値が、切り替え元のタスク処理に対応するTCB(タスクコントロールブロック)に保存される。そして、切り替え先のタスク処理に対応するTCBから、実行コンテキストが保存されたスタック領域を示すSPの値が取得され、実行コンテキストの復帰が行われる。TCBとは、RAM(ランダムアクセスメモリ)上に確保された、タスク情報を記憶するためのメモリ領域のことである。
 特許文献1に記載の技術では、割り込みの入口処理を削減することで、割り込み応答性を高めている。この技術では、タスク切り替えが要求されている場合、多重割り込みを管理するためのネストカウンタの値に応じて、タスク切り替えを行うかどうかが割り込みの出口処理で判定される。
特開2014-203230号公報
 近年、計算機システムの安全性向上が求められている。具体的には、IEC(登録商標)61508等の機能安全規格への対応が求められるようになってきている。機能安全規格に対応するための1つの方法として、複数の制御タスク処理と複数の制御割り込み処理とから構成される制御処理の外部に、監視割り込み処理を追加する方法がある。制御タスク処理とは、計算機システムがリアルタイムOSの管理の下で従来実施しているタスク処理のことである。制御割り込み処理とは、異なる優先度を持つ複数の割り込み処理のことである。監視割り込み処理とは、計算機システムの状態を周期的に監視する割り込み処理のことである。
 上記の方法では、制御処理が監視割り込み処理の動作に影響を与えないことを保証しなければならない。そのため、制御処理と監視割り込み処理とで使用されるコード領域、データ領域及びスタック領域を各々異なるロードモジュールとして分離することが必須となる。
 単一CPU(セントラルプロセッシングユニット)上で、制御処理を行うロードモジュールである制御モジュールと、監視割り込み処理を行うロードモジュールである監視モジュールの2つを動作させるとする。制御モジュールには、リアルタイムOSが含まれる。監視割り込みスタックは、リアルタイムOSによって管理される制御タスクスタック及び制御割り込みスタックとは分離される。監視割り込みスタックとは、監視割り込み処理で使用されるスタック領域のことである。制御タスクスタックとは、制御処理で使用されるタスクスタックのことである。制御割り込みスタックとは、制御処理で使用される割り込みスタックのことである。制御割り込み処理の中には、監視割り込み処理よりも高い優先度で行われる短周期の割り込み処理である高優先度制御割り込み処理が存在するとする。高優先度制御割り込み処理において、タスク切り替えを伴うシステムコールが発行されるとする。この場合、監視割り込み処理の出入口処理と、高優先度制御割り込み処理の出入口処理は、独立した処理となる。したがって、監視割り込み処理の実行中に発生する高優先度制御割り込み処理の出入口処理において、制御割り込みスタックと監視割り込みスタックとの間の切り替えを実施するだけでは、高優先度制御割り込み処理によって中断されていた監視割り込み処理に復帰することができない。また、タスク切り替えが要求されている場合、監視割り込み処理の出入口処理において、制御タスクスタックと監視割り込みスタックとの間の切り替えを実施するだけでは、制御タスク処理が再開される際にタスク切り替えを実施することができない。
 本発明は、割り込み処理の途中で、その割り込み処理とは別のスタック領域を使用する高優先度の割り込み処理が実行された場合に、その高優先度の割り込み処理によって要求されるタスク切り替えを適切に実施することを目的とする。
 本発明の一態様に係る計算機システムは、
 別々のスタック領域を使用して、タスクと、第1割り込みと、前記第1割り込みよりも高優先度の第2割り込みとを処理する処理部と、
 前記タスクの処理の途中で前記第1割り込みが発生した場合、前記処理部に前記タスクの処理を中断させて前記第1割り込みの処理を開始させ、前記第1割り込みの処理の途中で前記第2割り込みが発生した場合、前記処理部に前記第1割り込みの処理を中断させて前記第2割り込みの処理を開始させる入口制御部と、
 前記第1割り込みの処理の途中で開始した前記第2割り込みの処理が終了した場合、前記処理部に前記第1割り込みの処理を再開させる復帰制御部と、
 前記第1割り込みの処理の途中で開始した前記第2割り込みの処理によって前記タスクの切り替えが要求された場合、再開した前記第1割り込みの処理が終了してから、前記処理部に前記タスクの切り替え先の処理を開始させ、前記第1割り込みの処理の途中で開始した前記第2割り込みの処理によって前記タスクの切り替えが要求されなかった場合、再開した前記第1割り込みの処理が終了してから、前記処理部に前記タスクの処理を再開させる出口制御部とを備える。
 第1割り込みの処理の途中で、第1割り込みとは別のスタック領域を使用して処理される高優先度の第2割り込みが発生し、その第2割り込みの処理によってタスクの切り替えが要求されたとする。その場合、本発明では、第2割り込みの処理の終了後に、第1割り込みの処理が再開する。そして、再開した第1割り込みの処理が終了してから、タスクの切り替え先の処理が開始する。したがって、第2割り込みの処理によって要求されたタスクの切り替えを適切に実施することができる。
実施の形態1に係る計算機システムのハードウェア構成を示すブロック図。 実施の形態1に係る計算機システムの機能構成を示すブロック図。 実施の形態1に係る計算機システムによるリアルタイムOS割り込み入口処理の手順を示すフローチャート。 実施の形態1に係る計算機システムによるリアルタイムOS割り込み出口処理の手順を示すフローチャート。 実施の形態1に係る計算機システムによる割り込み入口処理の手順を示すフローチャート。 実施の形態1に係る計算機システムによる種別判定処理の手順を示すフローチャート。 実施の形態1に係る計算機システムによる監視割り込み復帰処理の手順を示すフローチャート。 実施の形態1に係る計算機システムによる監視割り込み出口処理の手順を示すフローチャート。
 以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
 実施の形態1.
 本実施の形態に係るシステムの構成、本実施の形態に係るシステムの動作、本実施の形態の効果を順番に説明する。
 ***構成の説明***
 図1及び図2を参照して、本実施の形態に係るシステムである計算機システム100の構成を説明する。
 図1に示すように、計算機システム100は、CPU101、ROM102(リードオンリーメモリ)、RAM103、周辺デバイス104といったハードウェアを備える。CPU101は、信号線116を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
 本実施の形態において、計算機システム100は、単一CPU101上で、リアルタイムOSによるマルチタスク構成を持つ制御モジュールと監視モジュールとが動作するシステムである。制御モジュールと監視モジュールとの2つのモジュールは、独立したロードモジュールとして、ROM102とRAM103とに格納され、CPU101の上で動作する。制御モジュールは、リアルタイムOSと各種アプリケーションとを含むプログラムである。監視モジュールは、計算機システム100の状態を監視するプログラムである。
 CPU101は、計算機システム100の制御を行う演算装置である。CPU101は、PC105(プログラムカウンタ)と、PSW106(プロセッサステータスワード)と、SP107と、汎用レジスタ108とを有する。PC105は、CPU101が次に実行する命令のアドレス値を保持するレジスタである。PSW106は、CPU101の内部状態を保持するレジスタである。SP107は、最近アクセスされたスタック領域のアドレス値を保持するレジスタである。汎用レジスタ108は、様々な用途に使用可能なレジスタである。
 ROM102は、割り込みベクタ領域109と、制御モジュールコード領域110と、監視モジュールコード領域111とを有する。割り込みベクタ領域109は、具体的には、割り込みベクタテーブルである。制御モジュールコード領域110及び監視モジュールコード領域111は、それぞれ制御モジュール及び監視モジュールのコード領域である。CPU101は、これらのコード領域の命令を順次実行していく。
 RAM103は、制御モジュールデータ領域112と、監視モジュールデータ領域113と、制御モジュールスタック領域114と、監視モジュールスタック領域115とを有する。制御モジュールデータ領域112及び監視モジュールデータ領域113は、それぞれ制御モジュール及び監視モジュールが使用するデータ領域である。制御モジュールスタック領域114及び監視モジュールスタック領域115は、それぞれ制御モジュール及び監視モジュールのスタック領域である。後述するように、制御モジュールスタック領域114は、タスク処理ごとのスタック領域と、割り込み処理のスタック領域とに分かれている。
 周辺デバイス104は、具体的には、タイマ、A/D(アナログ/デジタル)コンバータといった入出力デバイスである。周辺デバイス104は、設定された条件の下で、CPU101に割り込み信号を入力する。
 制御モジュール及び監視モジュールの処理の結果を示す情報、データ、信号値、及び、変数値は、RAM103、後述する補助記憶装置、又は、CPU101内のレジスタ又はキャッシュメモリに記憶される。
 図2に示すように、計算機システム100は、監視機能部200、制御機能部300、割り込み入口機構401、割り込み出口機構402といった機能要素を備える。図2では、割り込み入口機構401を「EM1」、割り込み出口機構402を「EM2」と表記している。
 監視機能部200は、監視入口制御部201と、レジスタ保存部202と、種別判定部203と、SP切り替え部204と、復帰準備部205と、ネストカウンタ操作部206と、監視割り込み処理部207と、復帰制御部208と、レジスタ復帰部209と、監視出口制御部210とを有する。図2では、監視入口制御部201を「MP01」、レジスタ保存部202を「MP02」、種別判定部203を「MP03」、SP切り替え部204を「MP04」、復帰準備部205を「MP05」、ネストカウンタ操作部206を「MP06」、監視割り込み処理部207を「MP07」、復帰制御部208を「MP08」、レジスタ復帰部209を「MP09」、監視出口制御部210を「MP10」と表記している。ROM102の監視モジュールコード領域111には、監視機能部200の機能を実現するプログラムが記憶されている。このプログラムが、CPU101に読み込まれ、CPU101によって実行されることで、監視機能部200の機能が発揮される。即ち、監視機能部200の機能は、ソフトウェアである監視モジュールにより実現される。
 監視機能部200は、特定情報211を保持する。図2では、特定情報211を「ID」と表記している。特定情報211は、RAM103の監視モジュールデータ領域113に記憶される。
 監視機能部200は、監視スタック保存領域212、制御スタック保存領域213、監視割り込みスタック214といったメモリ領域を使用する。図2では、監視スタック保存領域212を「SA1」、制御スタック保存領域213を「SA2」、監視割り込みスタック214を「ST1」と表記している。監視スタック保存領域212及び制御スタック保存領域213は、RAM103の監視モジュールデータ領域113に含まれる。監視割り込みスタック214は、RAM103の監視モジュールスタック領域115に含まれる。
 制御機能部300は、制御入口制御部301と、レジスタ保存部302と、ネストカウンタ操作部303と、SP切り替え部304と、割り込み呼び出し部305と、制御割り込み処理部306と、制御出口制御部307と、切り替え判定部308と、タスク切り替え部309と、レジスタ復帰部310と、タスク処理部311とを有する。図2では、制御入口制御部301を「CP01」、レジスタ保存部302を「CP02」、ネストカウンタ操作部303を「CP03」、SP切り替え部304を「CP04」、割り込み呼び出し部305を「CP05」、制御割り込み処理部306を「CP06」、制御出口制御部307を「CP07」、切り替え判定部308を「CP08」、タスク切り替え部309を「CP09」、レジスタ復帰部310を「CP10」、タスク処理部311を「CP11」と表記している。ROM102の制御モジュールコード領域110には、制御機能部300の機能を実現するプログラムが記憶されている。このプログラムが、CPU101に読み込まれ、CPU101によって実行されることで、制御機能部300の機能が発揮される。即ち、制御機能部300の機能は、ソフトウェアである制御モジュールにより実現される。具体的には、制御入口制御部301と、レジスタ保存部302と、ネストカウンタ操作部303と、SP切り替え部304と、割り込み呼び出し部305と、制御出口制御部307と、切り替え判定部308と、タスク切り替え部309と、レジスタ復帰部310とのそれぞれの機能が、リアルタイムOSにより実現される。制御割り込み処理部306と、タスク処理部311とのそれぞれの機能が、アプリケーションにより実現される。
 制御機能部300は、ネストカウンタ312を保持する。図2では、ネストカウンタ312を「NC」と表記している。ネストカウンタ312は、RAM103の制御モジュールデータ領域112に記憶される。
 制御機能部300は、タスクスタック保存領域313、制御割り込みスタック314、制御タスクスタック315といったメモリ領域を使用する。図2では、タスクスタック保存領域313を「SA3」、制御割り込みスタック314を「ST2」、制御タスクスタック315を「ST3」と表記している。タスクスタック保存領域313は、RAM103の制御モジュールデータ領域112に含まれる。制御割り込みスタック314及び制御タスクスタック315は、RAM103の制御モジュールスタック領域114に含まれる。
 割り込み入口機構401は、周辺デバイス104からCPU101に割り込み信号が入力されたか、又は、CPU101の内部で割り込み信号が生成された場合、割り込みマスク比較及び優先度比較を行う。割り込み入口機構401は、割り込みマスク比較及び優先度比較の結果、割り込みを受理する場合、SP107で示されるスタック領域に、PC105とPSW106とのそれぞれの内容を保存する。そして、割り込み入口機構401は、割り込みベクタ領域109から、受理する割り込みに対応したアドレス値を取得して、そのアドレス値にジャンプする。
 割り込みとしては、第1割り込みに相当する監視割り込みと、第1割り込みよりも高優先度の第2割り込みに相当する高優先度制御割り込みと、第1割り込みよりも低優先度の第3割り込みに相当する低優先度制御割り込みとがある。監視割り込みは、計算機システム100の状態を監視するために周期的に発行され、監視モジュールによって処理される割り込みである。高優先度制御割り込み、低優先度制御割り込みといった制御割り込みは、計算機システム100を制御するために任意に発行され、制御モジュールによって処理される割り込みである。割り込み入口機構401は、CPU101により実現される。
 割り込みベクタ領域109は、割り込み要因ごとにジャンプ先のアドレス値を持っている。具体的には、割り込みベクタ領域109において、割り込み要因のうち、低優先度制御割り込みの割り込み要因に対しては、制御機能部300の制御入口制御部301の機能を実現するために最初に実行される命令のアドレス値が設定されている。割り込み要因のうち、監視割り込み若しくは高優先度制御割り込みに対しては、監視機能部200の監視入口制御部201の機能を実現するために最初に実行される命令のアドレス値が設定されている。なお、割り込みベクタ領域109は、複数の割り込み要因に共通のジャンプ先のアドレス値を持っていてもよい。また、割り込みベクタ領域109は、RAM103上にあってもよい。
 割り込み出口機構402は、CPU101の命令セットアーキテクチャに含まれる割り込み復帰命令の実行を契機として起動する。割り込み出口機構402は、SP107で示されるスタック領域からPC105とPSW106との内容を復帰させることで、割り込み発生前に実行されていた処理の実行を再開させる。割り込み出口機構402は、CPU101により実現される。
 ***動作の説明***
 図1及び図2を参照して、本実施の形態に係るシステムである計算機システム100の動作を説明する。計算機システム100の動作は、本実施の形態に係るタスク処理方法に相当する。
 ここでは、監視割り込み処理部207、制御割り込み処理部306及びタスク処理部311を総称して「処理部」という。監視入口制御部201及び制御入口制御部301を総称して「入口制御部」という。監視出口制御部210及び制御出口制御部307を総称して「出口制御部」という。
 処理部は、別々のスタック領域を使用して、タスクと、監視割り込みと、高優先度制御割り込みとを処理する。「別々のスタック領域」は、具体的には、制御タスクスタック315、監視割り込みスタック214及び制御割り込みスタック314である。
 入口制御部は、タスクの処理の途中で監視割り込みが発生した場合、処理部にタスクの処理を中断させて監視割り込みの処理を開始させる。入口制御部は、監視割り込みの処理の途中で高優先度制御割り込みが発生した場合、処理部に監視割り込みの処理を中断させて高優先度制御割り込みの処理を開始させる。
 復帰制御部208は、監視割り込みの処理の途中で開始した高優先度制御割り込みの処理が終了した場合、処理部に監視割り込みの処理を再開させる。
 出口制御部は、監視割り込みの処理の途中で開始した高優先度制御割り込みの処理によってタスクの切り替えが要求された場合、再開した監視割り込みの処理が終了してから、処理部にタスクの切り替え先の処理を開始させる。出口制御部は、監視割り込みの処理の途中で開始した高優先度制御割り込みの処理によってタスクの切り替えが要求されなかった場合、再開した監視割り込みの処理が終了してから、処理部にタスクの処理を再開させる。
 本実施の形態において、処理部は、低優先度割り込みをさらに処理する。
 入口制御部は、タスクの処理の途中で監視割り込みが発生する前に低優先度制御割り込みが発生した場合、処理部にタスクの処理を中断させて低優先度制御割り込みの処理を開始させる。入口制御部は、低優先度制御割り込みの処理の途中で監視割り込みが発生した場合、処理部に低優先度制御割り込みの処理を中断させて監視割り込みの処理を開始させる。
 出口制御部は、低優先度制御割り込みの処理の途中で監視割り込みの処理が開始した後に監視割り込みの処理の途中で開始した高優先度制御割り込みの処理によってタスクの切り替えが要求された場合、再開した監視割り込みの処理が終了し、低優先度制御割り込みの処理が再開し、再開した低優先度制御割り込みの処理が終了してから、処理部にタスクの切り替え先の処理を開始させる。
 本実施の形態において、復帰制御部208は、監視割り込みの処理の途中で監視割り込みよりも高優先度の複数の割り込みが高優先度制御割り込みとして発生した場合、複数の割り込みの処理が全て終了したときに起動される。
 本実施の形態において、入口制御部は、監視割り込みの処理の途中で高優先度制御割り込みが発生した場合、高優先度制御割り込みの処理の終了時に復帰制御部208を起動するためのデータを高優先度制御割り込みの処理用のスタック領域に挿入する。後述する遷移フレームは、「高優先度制御割り込みの処理の終了時に復帰制御部208を起動するためのデータ」に相当する。「高優先度制御割り込みの処理用のスタック領域」は、具体的には、制御割り込みスタック314である。
 本実施の形態において、入口制御部は、タスクの処理の途中で監視割り込みが発生した場合、処理部で使用中のスタック領域を示すSP107の値を保存した後、処理部に使用させるスタック領域を監視割り込みの処理用のスタック領域に変更する。「監視割り込みの処理用のスタック領域」は、具体的には、監視割り込みスタック214である。
 出口制御部は、監視割り込みの処理の途中で開始した高優先度制御割り込みの処理によってタスクの切り替えが要求された場合、再開した監視割り込みの処理が終了してから、処理部に使用させるスタック領域を切り替え先の処理用のスタック領域に変更する。「切り替え先の処理用のスタック領域」は、具体的には、制御タスクスタック315である。出口制御部は、監視割り込みの処理の途中で開始した高優先度制御割り込みの処理によってタスクの切り替えが要求されなかった場合、再開した監視割り込みの処理が終了してから、処理部に使用させるスタック領域を入口制御部により保存された値に対応するスタック領域に変更する。
 以下では、監視機能部200の各部の動作を、より具体的に説明する。
 監視入口制御部201は、監視割り込み、又は、高優先度制御割り込みが発生した際に、割り込み入口処理を実行する。割り込み入口処理において、監視入口制御部201は、発生した割り込みの種別に応じて、レジスタ保存部202、種別判定部203、SP切り替え部204、復帰準備部205及びネストカウンタ操作部206を起動する。その後、監視入口制御部201は、発生した割り込みが監視割り込みの場合には、監視割り込み処理部207を起動する。監視入口制御部201は、発生した割り込みが高優先度制御割り込みの場合には、制御機能部300の制御入口制御部301を起動する。割り込み入口処理の詳細については、後述する。
 レジスタ保存部202は、起動された時点のSP107が指しているスタック領域上に、汎用レジスタ108の必要なデータを保存する。
 種別判定部203は、種別判定処理を実行する。種別判定処理において、種別判定部203は、発生した割り込みの種別を判定する。判定される種別としては、監視割り込みと、監視割り込み処理を実行中に発生した初回の高優先度制御割り込みと、監視割り込み処理を実行中に発生したネストの高優先度制御割り込みと、監視割り込みが未発生で発生した高優先度制御割り込みとの4つがある。監視割り込み処理とは、監視割り込み処理部207により実行される監視割り込みの処理のことである。種別判定部203は、種別の判定のために、特定情報211、監視スタック保存領域212及び制御スタック保存領域213を使用する。特定情報211の具体例としては、監視割り込みで使用されるタイマ割り込みの要因番号がある。種別判定処理の詳細については、後述する。
 監視スタック保存領域212は、監視割り込み処理の実行中に高優先度制御割り込み処理が開始された際、中断された監視割り込み処理の実行コンテキストを格納しているスタック領域を示すSP107の値が保存される領域である。高優先度制御割り込み処理とは、制御機能部300の制御割り込み処理部306により実行される高優先度制御割り込みの処理のことである。なお、監視割り込み処理が中断されていないときには、監視スタック保存領域212は0クリアされている。
 制御スタック保存領域213は、制御タスク処理又は低優先度制御割り込み処理の実行中に監視割り込み処理が開始された際、中断された制御タスク処理又は低優先度制御割り込み処理の実行コンテキストを格納しているスタック領域を示すSP107の値が保存される領域である。制御タスク処理とは、制御機能部300のタスク処理部311により実行されるタスクの処理のことである。低優先度制御割り込み処理とは、制御機能部300の制御割り込み処理部306により実行される低優先度制御割り込みの処理のことである。なお、制御タスク処理又は低優先度制御割り込み処理が中断されていないときには、監視スタック保存領域212は0クリアされている。
 SP切り替え部204は、起動された時点のSP107の値を適切な保存領域に保存し、発生した割り込みに応じたスタック領域のアドレス値をSP107に設定する。
 復帰準備部205は、監視割り込み処理の実行中に発生した初回の高優先度制御割り込みの入口処理において起動される。復帰準備部205は、その入口処理に対応する出口処理の後に監視割り込み処理を再開できるよう、SP107を監視割り込み処理の実行中に発生した初回の高優先度制御割り込みに使用されるスタック領域に切り替えた後、そのスタック領域上に遷移フレームを生成する。本実施の形態において、遷移フレームは、復帰制御部208の機能を実現するために実行されるプログラムの先頭アドレス値を含むスタックフレームである。遷移フレームは、割り込み入口機構401がスタック領域上にPC105の値を保存する形式と同じ形式で保存される。
 ネストカウンタ操作部206は、監視割り込みが発生した際、監視割り込みの出口処理で制御出口制御部307の機能が利用できるように、制御機能部300が持つネストカウンタ312を1つインクリメントする機能を有する。この機能を設けない場合、低優先度制御割り込みが未発生で監視割り込みが発生し、さらに高優先度制御割り込みが発生した場合に、高優先度制御割り込みの出口処理において制御出口制御部307が制御タスク処理の切り替えを誤って実行してしまう可能性がある。
 監視割り込み処理部207は、監視割り込みスタック214を使用して、計算機システム100を監視するための監視割り込みを処理する。
 復帰制御部208は、復帰準備部205により生成された遷移フレームを用いて、監視割り込み処理の実行中に発生した高優先度制御割り込みの出口処理から監視割り込み復帰処理に遷移する。監視割り込み復帰処理において、復帰制御部208は、レジスタ復帰部209を起動して、監視割り込みの実行コンテキストを復帰させた後、割り込み復帰命令を用いて、中断された監視割り込み処理を監視割り込み処理部207に再開させる。監視割り込み復帰処理の詳細については、後述する。
 監視出口制御部210は、監視割り込み処理部207による監視割り込み処理が終了した際に、監視割り込み出口処理を実行する。監視割り込み出口処理において、監視出口制御部210は、SP切り替え部204を起動して、制御スタック保存領域213に保存した値をSP107に設定する。その後、監視出口制御部210は、種別判定部203を起動して、制御スタック保存領域213を0クリアする。さらにその後、監視出口制御部210は、制御機能部300の制御出口制御部307を起動して、切り替え判定部308による処理を実行させる。監視割り込み出口処理の詳細については、後述する。
 本実施の形態では、リアルタイムOSが従来備えている割り込み出入口処理の機構をできる限り変更せずに利用している。そのため、監視割り込み処理及び高優先度制御割り込み処理の出入口処理では、従来とは異なる処理を実施した後、リアルタイムOSの割り込み出入口処理を実施している。
 以下では、制御機能部300の各部の動作を、より具体的に説明する。制御機能部300の各部の動作は、主として、従来のリアルタイムOSで行われている割り込み出入口処理と割り込み処理の呼び出し処理とを実施するための動作である。
 制御入口制御部301は、低優先度制御割り込みが発生した際、又は、監視機能部200の監視入口制御部201による割り込み入口処理の後、リアルタイムOS割り込み入口処理を実行する。リアルタイムOS割り込み入口処理の詳細については、後述する。
 レジスタ保存部302は、起動された時点のSP107が指しているスタック領域上に、汎用レジスタ108の必要なデータを保存する。
 ネストカウンタ操作部303は、制御割り込みのネスト、即ち、多重割り込みを管理するために、制御割り込みの入口処理でネストカウンタ312を1つインクリメントし、制御割り込みの出口処理でネストカウンタ312を1つデクリメントする機能を有する。ネストカウンタ312は、本実施の形態では、RAM103上に確保された変数であるが、ハードウェアで提供される専用のレジスタにより実現されてもよい。なお、ネストカウンタ312は、監視割り込みが発生した際に、監視機能部200のネストカウンタ操作部206によっても操作される。
 SP切り替え部304は、初回の制御割り込みが発生した際に起動され、起動された時点のSP107の値をタスクスタック保存領域313に保存し、制御割り込みスタック314のアドレス値をSP107に設定する。タスクスタック保存領域313に保存される値は、制御タスクスタック315又は監視割り込みスタック214のアドレス値である。
 割り込み呼び出し部305は、制御割り込みが発生した際に、発生した制御割り込みの割り込み要因に応じて、制御割り込み処理部306を起動する。具体的には、割り込み呼び出し部305は、割り込みベクタ領域109から、発生した制御割り込みの割り込み要因番号に対応するアドレス値を取得して、そのアドレス値のプログラムを呼び出す。呼び出されるプログラムは、制御割り込み処理部306の機能を実現するために実行されるプログラムである。
 制御割り込み処理部306は、制御割り込みスタック314を使用して、ユーザによって定義される各割り込み要因に応じた処理を実行する。制御割り込み処理部306は、リアルタイムOSの機能を利用するためのシステムコールを呼び出すことができる。本実施の形態において、システムコールが実行された結果、タスク切り替えが必要となる場合には、その時点で発生している全ての割り込み処理が完了した際の出口処理において、タスク切り替えが実施される。
 制御出口制御部307は、制御割り込み処理が終了した際、又は、監視機能部200の監視出口制御部210による監視割り込み出口処理の後、リアルタイムOS割り込み出口処理を実行する。リアルタイムOS割り込み出口処理の詳細については、後述する。
 切り替え判定部308は、初回の制御割り込み処理が終了した際、又は、制御割り込みが未発生で監視割り込み処理が終了した際に、ネストされた制御割り込み処理の中で呼び出されたシステムコールの実行結果によって、タスク切り替えが必要かどうかを判定する。切り替え判定部308は、タスク切り替えが必要な場合には、タスク切り替え部309を起動する。
 タスク切り替え部309は、起動された時点のSP107で示される制御タスクスタック315に、実行中の制御タスク処理の実行コンテキストを保存し、そのSP107の値をRAM103上に確保されたTCB内に格納する。その後、タスク切り替え部309は、切り替え先の制御タスク処理のTCBから、実行コンテキストが保存された制御タスクスタック315のアドレス値を取得し、そのアドレス値をSP107に設定する。これより、タスク切り替え部309は、CPU101上で実行される制御タスク処理の切り替えを実施する。
 レジスタ復帰部310は、SP107が示すスタック領域から、レジスタ保存部302又は監視機能部200のレジスタ保存部202により保存された汎用レジスタ108のデータを復帰させる。レジスタ復帰部310は、割り込み発生前の処理を再開させるために、CPU101の命令セットアーキテクチャに含まれる割り込み復帰命令を実行する。
 タスク処理部311は、ユーザによって定義される処理単位ごとに設けられる。リアルタイムOSの管理により2つ以上のタスク処理部311が並行して動作することができる。それぞれのタスク処理部311は、対応する制御タスクスタック315を使用して動作する。
 図3を参照して、計算機システム100によるリアルタイムOS割り込み入口処理の手順を説明する。この手順は、本実施の形態に係るタスク処理プログラムの処理手順の一部に相当する。
 低優先度制御割り込みが発生した際、割り込み入口機構401が、割り込みベクタ領域109に格納された、制御入口制御部301のリアルタイムOS割り込み入口処理の最初に実行される命令のアドレス値にジャンプすることで、リアルタイムOS割り込み入口処理が開始する。なお、CPU101が参照する割り込みベクタ領域109の内容は、計算機システム100の初期化時等で事前に設定されている。
 ステップS11において、制御入口制御部301は、レジスタ保存部302を動作させて、スタック領域に保存されない汎用レジスタ108の内容を、SP107が指すスタック領域に保存する。
 ステップS12において、制御入口制御部301は、ネストカウンタ312が0であるかどうかを判定する。ネストカウンタ312が0である場合、発生した割り込みは初回の制御割り込みであり、フローはステップS13に進む。ネストカウンタ312が0でない場合、発生した割り込みは初回の制御割り込みではなく、フローはステップS15に進む。
 ステップS13において、制御入口制御部301は、SP切り替え部304を動作させて、その時点のSP107の値をタスクスタック保存領域313に保存する。
 ステップS14において、制御入口制御部301は、SP切り替え部304を動作させて、SP107を制御割り込みスタック314に切り替える。具体的には、制御入口制御部301は、SP107に制御割り込みスタック314のボトム値を設定する。
 ステップS15において、制御入口制御部301は、ネストカウンタ操作部303を動作させて、ネストカウンタ312を1つインクリメントする。
 ステップS16において、制御入口制御部301は、発生した割り込みの割り込み要因に対応する制御割り込み処理を呼び出す。制御割り込み処理は、対応する制御割り込み処理部306により制御割り込みスタック314を使用して実行される。ステップS16の後、フローは終了する。
 リアルタイムOS割り込み入口処理は、高優先度制御割り込みの発生時、監視機能部200の監視入口制御部201による割り込み入口処理の後にも実行される。その場合には、ステップS12以降の処理が実行される。
 図4を参照して、計算機システム100によるリアルタイムOS割り込み出口処理の手順を説明する。この手順は、本実施の形態に係るタスク処理プログラムの処理手順の一部に相当する。
 制御割り込みが終了した際、又は、監視割り込みが終了した際に必要な処理を監視機能部200の監視出口制御部210により監視割り込み出口処理が実行された際に、CPU101が、リアルタイムOS割り込み出口処理の最初に実行される命令のアドレス値にジャンプすることで、リアルタイムOS割り込み出口処理が開始する。
 ステップS21において、制御出口制御部307は、ネストカウンタ操作部303を動作させて、ネストカウンタ312を1つデクリメントする。
 ステップS22において、制御出口制御部307は、ネストカウンタ312が0であるかどうかを判定する。ネストカウンタ312が0である場合、初回の制御割り込み処理が終了したか、又は、制御割り込みが未発生で発生した監視割り込みが終了したことになり、フローはステップS23に進む。ネストカウンタ312が0でない場合、ネストされた制御割り込み処理が終了したか、又は、制御割り込み処理の実行中に開始された監視割り込み処理が終了したことになり、フローはステップS25に進む。
 ステップS23において、制御出口制御部307は、SP切り替え部304を動作させて、SP107をタスクスタック保存領域313に保存されていた制御タスクスタック315の値に切り替える。
 ステップS24において、制御出口制御部307は、切り替え判定部308を動作させて、制御割り込み処理の中で呼び出されたシステムコールの実行結果から、タスク切り替えが必要となっているかどうかを判定する。具体的には、制御出口制御部307は、リアルタイムOSが管理するタスク切り替え要求フラグを比較する。タスク切り替え要求フラグは、システムコールの内部で、最高優先度のタスクが切り替わった際に設定される。タスク切り替えの要求がある場合、フローはステップS27に進む。タスク切り替えの要求がない場合、フローはステップS25に進む。
 ステップS25において、制御出口制御部307は、レジスタ復帰部310を動作させて、その時点のSP107が示すスタック領域から、保存されていた汎用レジスタ108のデータを復帰させる。
 ステップS26において、制御出口制御部307は、割り込み復帰命令を実行することで、割り込み出口機構402を動作させて、割り込み発生前に実行されていた処理の実行を再開させる。ステップS26の後、フローは終了する。
 ステップS27において、制御出口制御部307は、タスク切り替え部309を動作させて、SP107の値を切り替え元タスクのTCBに保存する。
 ステップS28において、制御出口制御部307は、タスク切り替え部309を動作させて、制御タスク処理を切り替える。ステップS28の後、フローは終了する。
 図5を参照して、計算機システム100による割り込み入口処理の手順を説明する。この手順は、本実施の形態に係るタスク処理プログラムの処理手順の一部に相当する。
 監視割り込み又は高優先度制御割り込みが発生した際、割り込み入口機構401が、割り込みベクタ領域109に格納された、監視入口制御部201の割り込み入口処理の最初に実行される命令のアドレス値にジャンプすることで、割り込み入口処理が開始する。なお、前述したように、CPU101が参照する割り込みベクタ領域109の内容は、計算機システム100の初期化時等で事前に設定されている。
 ステップS31において、監視入口制御部201は、レジスタ保存部202を動作させて、スタック領域に保存されない汎用レジスタ108の内容を、SP107が指すスタック領域に保存する。
 ステップS32において、監視入口制御部201は、発生した割り込みの種別を判定するため、種別判定部203を動作させて、種別判定処理を実行する。種別判定処理の手順については、後述する。
 ステップS33において、種別判定処理の結果が監視割り込みである場合、即ち、監視割り込みが発生した場合、フローはステップS34に進む。種別判定処理の結果が監視割り込みでない場合、フローはステップS40に進む。
 ステップS34において、監視入口制御部201は、ネストカウンタ操作部206を動作させて、ネストカウンタ312を1つインクリメントする。これは、制御割り込みが未発生で監視割り込みが発生し、さらに高優先度制御割り込みが発生した際に、その高優先度制御割り込みの出口処理において、タスク切り替えが実行されることを防止するためである。
 ステップS35において、監視入口制御部201は、ネストカウンタ312が1であるかどうかを判定する。ネストカウンタ312が1である場合、制御割り込みが未発生で監視割り込みが発生したことになり、フローはステップS36に進む。ネストカウンタ312が1でない場合、制御割り込み処理の実行中に監視割り込みが発生したことになり、フローはステップS37に進む。
 ステップS36において、監視入口制御部201は、SP切り替え部204を動作させて、その時点のSP107の値を、タスクスタック保存領域313に保存する。保存されるSP107の値は、監視割り込みが発生した時点で実行中だった制御タスク処理の実行コンテキストを格納している制御タスクスタック315を示す値である。
 ステップS37において、監視入口制御部201は、SP切り替え部204を動作させて、その時点のSP107の値を、制御スタック保存領域213に保存する。保存されるSP107の値は、監視割り込みが発生した時点で実行中だった制御タスク処理又は低優先度制御割り込み処理の実行コンテキストを格納しているスタック領域を示す値である。
 ステップS38において、監視入口制御部201は、SP切り替え部204を動作させて、SP107を監視割り込みスタック214に切り替える。具体的には、監視入口制御部201は、SP107に監視割り込みスタック214のボトム値を設定する。
 ステップS39において、監視入口制御部201は、監視割り込み処理を呼び出す。監視割り込み処理は、監視割り込み処理部207により監視割り込みスタック214を使用して実行される。ステップS39の後、フローは終了する。
 ステップS40において、種別判定処理の結果が監視割り込み直後の制御割り込みである場合、即ち、監視割り込み処理の実行中に初回の高優先度制御割り込みが発生した場合、フローはステップS41に進む。種別判定処理の結果が監視割り込み直後の制御割り込みでない場合、フローはステップS45に進む。
 ステップS41において、監視入口制御部201は、SP切り替え部204を動作させて、その時点のSP107の値を、監視スタック保存領域212に保存する。保存されるSP107の値は、実行中だった監視割り込み処理の実行コンテキストを格納しているスタック領域を示す値である。
 ステップS42において、監視入口制御部201は、ネストカウンタ312が1であるかどうかを判定する。ネストカウンタ312が1である場合、制御割り込みが未発生で監視割り込みが発生したことになり、フローはステップS43に進む。ネストカウンタ312が1でない場合、制御割り込み処理の実行中に監視割り込みが発生したことになり、フローはステップS46に進む。
 ステップS43において、監視入口制御部201は、SP切り替え部204を動作させて、SP107を制御割り込みスタック314に切り替える。具体的には、監視入口制御部201は、SP107に制御割り込みスタック314のボトム値を設定する。
 ステップS44において、監視入口制御部201は、復帰準備部205を動作させて、制御割り込みスタック314上に、監視割り込み復帰処理に遷移するための遷移フレームを生成する。
 ステップS45において、監視入口制御部201は、制御入口制御部301のリアルタイムOS割り込み入口処理へジャンプする。
 ステップS46において、監視入口制御部201は、SP切り替え部204を動作させて、SP107を制御スタック保存領域213に保存されていた制御割り込みスタック314の値に切り替える。ステップS46の後、フローはステップS44に進む。
 図6を参照して、計算機システム100による種別判定処理の手順を説明する。この手順は、本実施の形態に係るタスク処理プログラムの処理手順の一部に相当する。
 ステップS51において、種別判定部203は、CPU101のレジスタ等を参照して、発生した割り込みの要因番号を取得する。種別判定部203は、要因番号を特定情報211と比較する。要因番号が特定情報211と一致した場合、フローはステップS52に進む。要因番号が特定情報211と一致しない場合、フローはステップS53に進む。
 ステップS52において、種別判定部203は、発生した割り込みが監視割り込みであると判断する。ステップS52の後、フローは終了する。
 ステップS53において、種別判定部203は、監視スタック保存領域212の値を0と比較する。監視スタック保存領域212の値が0でない場合、既に監視割り込みの中断が発生しており、フローはステップS54に進む。監視スタック保存領域212の値が0である場合、フローはステップS55に進む。
 ステップS54において、種別判定部203は、発生した割り込みが監視割り込み発生後の制御割り込みのネストであると判断する。ステップS54の後、フローは終了する。
 ステップS55において、種別判定部203は、制御スタック保存領域213の値を0と比較する。制御スタック保存領域213の値が0でない場合、監視割り込みは発生済であるが、制御割り込みのネストはなく、フローはステップS56に進む。制御スタック保存領域213の値が0である場合、フローはステップS57に進む。
 ステップS56において、種別判定部203は、発生した割り込みが監視割り込み発生直後の制御割り込みであると判断する。ステップS56の後、フローは終了する。
 ステップS57において、種別判定部203は、発生した割り込みが監視割り込み未発生時の制御割り込みであると判断する。ステップS57の後、フローは終了する。
 図7を参照して、計算機システム100による監視割り込み復帰処理の手順を説明する。この手順は、本実施の形態に係るタスク処理プログラムの処理手順の一部に相当する。
 監視割り込み処理の実行中に発生した高優先度制御割り込みの出口処理から、復帰準備部205で生成された遷移フレームを用いて、復帰制御部208の監視割り込み復帰処理が開始される。
 ステップS61において、復帰制御部208は、SP切り替え部204を動作させて、SP107を監視スタック保存領域212に保存されていた監視割り込みスタック214の値に切り替える。
 ステップS62において、復帰制御部208は、SP切り替え部204を動作させて、監視スタック保存領域212を0クリアする。即ち、復帰制御部208は、監視スタック保存領域212に0を書き込む。
 ステップS63において、復帰制御部208は、レジスタ復帰部209を動作させて、その時点のSP107が示すスタック領域、即ち、監視割り込みスタック214から、保存されていた汎用レジスタ108のデータを復帰させる。
 ステップS64において、復帰制御部208は、割り込み復帰命令を実行することで、割り込み出口機構402を動作させて、割り込み発生前に実行されていた監視割り込み処理の実行を再開させる。ステップS64の後、フローは終了する。
 図8を参照して、計算機システム100による監視割り込み出口処理の手順を説明する。この手順は、本実施の形態に係るタスク処理プログラムの処理手順の一部に相当する。
 監視割り込み処理部207による監視割り込み処理が終了した際に、関数リターン等により、監視出口制御部210の監視割り込み出口処理が開始される。
 ステップS71において、監視出口制御部210は、SP切り替え部204を動作させて、SP107を制御スタック保存領域213に保存されていたスタック領域、即ち、制御タスクスタック315又は制御割り込みスタック314の値に切り替える。
 ステップS72において、監視出口制御部210は、SP切り替え部204を動作させて、制御スタック保存領域213を0クリアする。即ち、監視出口制御部210は、制御スタック保存領域213に0を書き込む。
 ステップS73において、監視出口制御部210は、制御出口制御部307のリアルタイムOS割り込み出口処理へジャンプする。
 ***実施の形態の効果の説明***
 監視割り込みの処理の途中で、監視割り込みとは別のスタック領域を使用して処理される高優先度の制御割り込みが発生し、その制御割り込みの処理によってタスクの切り替えが要求されたとする。その場合、本実施の形態では、制御割り込みの処理の終了後に、監視割り込みの処理が再開する。そして、再開した監視割り込みの処理が終了してから、タスクの切り替え先の処理が開始する。したがって、制御割り込みの処理によって要求されたタスクの切り替えを適切に実施することができる。
 具体的には、監視割り込み処理の実行中、1つ以上の高優先度制御割り込みが発生し、いずれかの制御割り込み処理で、タスク切り替えを伴うシステムコールが発行されたとする。本実施の形態では、その時点で発生している制御割り込みの処理が全て終了して制御タスク処理に戻る際の出口処理で、要求されていたタスク切り替えを適切に実施できるように、監視割り込み処理と監視割り込み処理実行中に発生する高優先度制御割り込みの出入口処理とが制御される。
 本実施の形態では、監視割り込みの入口処理で、ネストカウンタ312が操作される。監視割り込み処理の実行中に発生する制御割り込みの入口処理で、制御モジュール側のスタック領域上に監視割り込み復帰処理へ遷移するためのスタックフレームが復帰準備部205により生成される。監視割り込みの出口処理では、監視出口制御部210がリアルタイムOS割り込み出口処理に分岐することで、監視割り込み処理の実行中に発生した高優先度制御割り込みから呼び出されたシステムコールによって要求されたタスク切り替えを実施できる。
 本実施の形態では、特定情報211を用いて、発生した割り込みの種別が監視割り込みであるかどうか種別判定部203により判定される。監視割り込みの発生時には、制御モジュール側のスタック領域の使用位置が制御スタック保存領域213に記憶される。さらに、高優先度制御割り込みの発生時には、監視割り込みスタック214の使用位置が監視スタック保存領域212に記憶される。割り込みの処理が終了したときには、保存された値をSP切り替え部204により復帰させることで、監視割り込み処理と制御割り込み処理との間のスタック領域の切り替えを適切に実現することができる。
 ***他の構成***
 計算機システム100は、ROM102、RAM103、又は、ROM102及びRAM103の両方に代えて、フラッシュメモリ等、他の種類の記録媒体を備えていてもよい。
 制御モジュール及び監視モジュールは、補助記憶装置に記憶されていてもよい。補助記憶装置は、具体的には、フラッシュメモリ、又は、HDD(ハードディスクドライブ)である。補助記憶装置に記憶されているプログラムは、RAM103にロードされ、CPU101によって実行される。
 制御モジュール及び監視モジュールは、磁気ディスク、フレキシブルディスク、光ディスク等の可搬記録媒体に記憶されてもよい。
 CPU101、ROM102及びRAM103を、総称して「プロセッシングサーキットリ」という。つまり、「部」の機能は、プロセッシングサーキットリにより実現される。
 「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。
 以上、本発明の実施の形態について説明したが、この実施の形態を部分的に実施しても構わない。具体的には、この実施の形態の説明において「部」として説明するもののうち、いずれか1つのみを採用してもよいし、いくつかの任意の組み合わせを採用してもよい。また、この実施の形態の説明において「ステップ」として説明するもののうち、いずれか1つのみを採用してもよいし、いくつかの任意の組み合わせを採用してもよい。「ステップ」として説明するものの順序を変更してもよい。なお、本発明は、この実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
 100 計算機システム、101 CPU、102 ROM、103 RAM、104 周辺デバイス、105 PC、106 PSW、107 SP、108 汎用レジスタ、109 割り込みベクタ領域、110 制御モジュールコード領域、111 監視モジュールコード領域、112 制御モジュールデータ領域、113 監視モジュールデータ領域、114 制御モジュールスタック領域、115 監視モジュールスタック領域、116 信号線、200 監視機能部、201 監視入口制御部、202 レジスタ保存部、203 種別判定部、204 SP切り替え部、205 復帰準備部、206 ネストカウンタ操作部、207 監視割り込み処理部、208 復帰制御部、209 レジスタ復帰部、210 監視出口制御部、211 特定情報、212 監視スタック保存領域、213 制御スタック保存領域、214 監視割り込みスタック、300 制御機能部、301 制御入口制御部、302 レジスタ保存部、303 ネストカウンタ操作部、304 SP切り替え部、305 割り込み呼び出し部、306 制御割り込み処理部、307 制御出口制御部、308 切り替え判定部、309 タスク切り替え部、310 レジスタ復帰部、311 タスク処理部、312 ネストカウンタ、313 タスクスタック保存領域、314 制御割り込みスタック、315 制御タスクスタック、401 割り込み入口機構、402 割り込み出口機構。

Claims (7)

  1.  別々のスタック領域を使用して、タスクと、第1割り込みと、前記第1割り込みよりも高優先度の第2割り込みとを処理する処理部と、
     前記タスクの処理の途中で前記第1割り込みが発生した場合、前記処理部に前記タスクの処理を中断させて前記第1割り込みの処理を開始させ、前記第1割り込みの処理の途中で前記第2割り込みが発生した場合、前記処理部に前記第1割り込みの処理を中断させて前記第2割り込みの処理を開始させる入口制御部と、
     前記第1割り込みの処理の途中で開始した前記第2割り込みの処理が終了した場合、前記処理部に前記第1割り込みの処理を再開させる復帰制御部と、
     前記第1割り込みの処理の途中で開始した前記第2割り込みの処理によって前記タスクの切り替えが要求された場合、再開した前記第1割り込みの処理が終了してから、前記処理部に前記タスクの切り替え先の処理を開始させ、前記第1割り込みの処理の途中で開始した前記第2割り込みの処理によって前記タスクの切り替えが要求されなかった場合、再開した前記第1割り込みの処理が終了してから、前記処理部に前記タスクの処理を再開させる出口制御部と
    を備える計算機システム。
  2.  前記処理部は、前記第1割り込みよりも低優先度の第3割り込みをさらに処理し、
     前記入口制御部は、前記タスクの処理の途中で前記第1割り込みが発生する前に前記第3割り込みが発生した場合、前記処理部に前記タスクの処理を中断させて前記第3割り込みの処理を開始させ、前記第3割り込みの処理の途中で前記第1割り込みが発生した場合、前記処理部に前記第3割り込みの処理を中断させて前記第1割り込みの処理を開始させ、
     前記出口制御部は、前記第3割り込みの処理の途中で前記第1割り込みの処理が開始した後に前記第1割り込みの処理の途中で開始した前記第2割り込みの処理によって前記タスクの切り替えが要求された場合、再開した前記第1割り込みの処理が終了し、前記第3割り込みの処理が再開し、再開した前記第3割り込みの処理が終了してから、前記処理部に前記タスクの切り替え先の処理を開始させる請求項1に記載の計算機システム。
  3.  前記復帰制御部は、前記第1割り込みの処理の途中で前記第1割り込みよりも高優先度の複数の割り込みが前記第2割り込みとして発生した場合、前記複数の割り込みの処理が全て終了したときに起動される請求項1又は2に記載の計算機システム。
  4.  前記入口制御部は、前記第1割り込みの処理の途中で前記第2割り込みが発生した場合、前記第2割り込みの処理の終了時に前記復帰制御部を起動するためのデータを前記第2割り込みの処理用のスタック領域に挿入する請求項1から3のいずれか1項に記載の計算機システム。
  5.  前記入口制御部は、前記タスクの処理の途中で前記第1割り込みが発生した場合、前記処理部で使用中のスタック領域を示すスタックポインタの値を保存した後、前記処理部に使用させるスタック領域を前記第1割り込みの処理用のスタック領域に変更し、
     前記出口制御部は、前記第1割り込みの処理の途中で開始した前記第2割り込みの処理によって前記タスクの切り替えが要求された場合、再開した前記第1割り込みの処理が終了してから、前記処理部に使用させるスタック領域を前記切り替え先の処理用のスタック領域に変更し、前記第1割り込みの処理の途中で開始した前記第2割り込みの処理によって前記タスクの切り替えが要求されなかった場合、再開した前記第1割り込みの処理が終了してから、前記処理部に使用させるスタック領域を前記入口制御部により保存された値に対応するスタック領域に変更する請求項4に記載の計算機システム。
  6.  計算機システムが、別々のスタック領域を使用して、タスクと、第1割り込みと、前記第1割り込みよりも高優先度の第2割り込みとを処理し、
     前記タスクの処理の途中で前記第1割り込みが発生した場合、前記計算機システムが、前記タスクの処理を中断して前記第1割り込みの処理を開始し、前記第1割り込みの処理の途中で前記第2割り込みが発生した場合、前記計算機システムが、前記第1割り込みの処理を中断して前記第2割り込みの処理を開始し、
     前記第1割り込みの処理の途中で開始した前記第2割り込みの処理が終了した場合、前記計算機システムが、前記第1割り込みの処理を再開し、
     前記第1割り込みの処理の途中で開始した前記第2割り込みの処理によって前記タスクの切り替えが要求された場合、再開した前記第1割り込みの処理が終了してから、前記計算機システムが、前記タスクの切り替え先の処理を開始し、前記第1割り込みの処理の途中で開始した前記第2割り込みの処理によって前記タスクの切り替えが要求されなかった場合、再開した前記第1割り込みの処理が終了してから、前記計算機システムが、前記タスクの処理を再開するタスク処理方法。
  7.  コンピュータに、
     別々のスタック領域を使用して、タスクと、第1割り込みと、前記第1割り込みよりも高優先度の第2割り込みとを処理する手順と、
     前記タスクの処理の途中で前記第1割り込みが発生した場合、前記タスクの処理を中断して前記第1割り込みの処理を開始し、前記第1割り込みの処理の途中で前記第2割り込みが発生した場合、前記第1割り込みの処理を中断して前記第2割り込みの処理を開始する手順と、
     前記第1割り込みの処理の途中で開始した前記第2割り込みの処理が終了した場合、前記第1割り込みの処理を再開する手順と、
     前記第1割り込みの処理の途中で開始した前記第2割り込みの処理によって前記タスクの切り替えが要求された場合、再開した前記第1割り込みの処理が終了してから、前記タスクの切り替え先の処理を開始し、前記第1割り込みの処理の途中で開始した前記第2割り込みの処理によって前記タスクの切り替えが要求されなかった場合、再開した前記第1割り込みの処理が終了してから、前記タスクの処理を再開する手順と
    を実行させるタスク処理プログラム。
PCT/JP2015/085173 2015-12-16 2015-12-16 計算機システム、タスク処理方法及びタスク処理プログラム WO2017104014A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2015/085173 WO2017104014A1 (ja) 2015-12-16 2015-12-16 計算機システム、タスク処理方法及びタスク処理プログラム
TW105103009A TW201723834A (zh) 2015-12-16 2016-01-30 計算機系統、任務處理方法以及任務處理程式產品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/085173 WO2017104014A1 (ja) 2015-12-16 2015-12-16 計算機システム、タスク処理方法及びタスク処理プログラム

Publications (1)

Publication Number Publication Date
WO2017104014A1 true WO2017104014A1 (ja) 2017-06-22

Family

ID=59056240

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/085173 WO2017104014A1 (ja) 2015-12-16 2015-12-16 計算機システム、タスク処理方法及びタスク処理プログラム

Country Status (2)

Country Link
TW (1) TW201723834A (ja)
WO (1) WO2017104014A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05224953A (ja) * 1992-02-07 1993-09-03 Matsushita Electric Ind Co Ltd 割込み制御装置及び方法
JP2002259136A (ja) * 2001-03-02 2002-09-13 Denso Corp スタック領域管理方法、プログラム、データ処理装置
JP2014203230A (ja) * 2013-04-04 2014-10-27 三菱電機株式会社 計算機システム、計算機システムの割込み処理プログラム及び計算機システムの割込み処理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05224953A (ja) * 1992-02-07 1993-09-03 Matsushita Electric Ind Co Ltd 割込み制御装置及び方法
JP2002259136A (ja) * 2001-03-02 2002-09-13 Denso Corp スタック領域管理方法、プログラム、データ処理装置
JP2014203230A (ja) * 2013-04-04 2014-10-27 三菱電機株式会社 計算機システム、計算機システムの割込み処理プログラム及び計算機システムの割込み処理方法

Also Published As

Publication number Publication date
TW201723834A (zh) 2017-07-01

Similar Documents

Publication Publication Date Title
US9727343B2 (en) Apparatus and method for handling exception events
KR100746797B1 (ko) 프로세서 및 정보처리 방법
US8484643B2 (en) CPU usage time counting method and job control system using this CPU usage time
US9043806B2 (en) Information processing device and task switching method
JP5093259B2 (ja) Biosとbmcとの間の通信パス強化方法、その装置及びそのプログラム
KR20080066721A (ko) 미디어 재생기들상에서 다중 작업을 위한 방법
EP3296869A1 (en) Information processing apparatus, information processing method and computer-readable medium
US8495345B2 (en) Computing apparatus and method of handling interrupt
US20040098722A1 (en) System, method, and computer program product for operating-system task management
CN111782368A (zh) 中断嵌套处理方法、装置、终端及存储介质
JP2006092042A (ja) 情報処理装置及びコンテキスト切り替え方法
US7434222B2 (en) Task context switching RTOS
JP2008090390A (ja) マイコンデバッグシステムおよびマイクロコンピュータ
US6820153B2 (en) Interrupt processing and memory management method in an operation processing device and a device using the same
WO2017104014A1 (ja) 計算機システム、タスク処理方法及びタスク処理プログラム
US20030037227A1 (en) Processor enabling exception handling to be set by program
KR101785540B1 (ko) 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치
JP5017784B2 (ja) プロセッサ及びこのプロセッサ適用される割込み処理制御方法
WO2023144939A1 (ja) コンピュータ、制御方法及び制御プログラム
US20080126753A1 (en) Embedded system and operating method thereof
JP2006139495A (ja) 演算処理装置
CN116361079A (zh) 堆栈切换方法、堆栈切换装置、处理器以及存储介质
JPH11316691A (ja) オペレーティングシステムの実行方法及び、これを用いた情報処理装置
JP2011150636A (ja) マイクロプロセッサ及びその制御方法
CN117632411A (zh) 一种中断处理程序的处理方法、中断控制方法及处理器

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15910705

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15910705

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP