US20130047157A1 - Information processing apparatus and interrupt control method - Google Patents

Information processing apparatus and interrupt control method Download PDF

Info

Publication number
US20130047157A1
US20130047157A1 US13/477,113 US201213477113A US2013047157A1 US 20130047157 A1 US20130047157 A1 US 20130047157A1 US 201213477113 A US201213477113 A US 201213477113A US 2013047157 A1 US2013047157 A1 US 2013047157A1
Authority
US
United States
Prior art keywords
interrupt
guest
control unit
destination
unit
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.)
Abandoned
Application number
US13/477,113
Inventor
Kazuhiro Suzuki
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Assigned to FUJITSU LIMITED reassignment FUJITSU LIMITED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SUZUKI, KAZUHIRO
Publication of US20130047157A1 publication Critical patent/US20130047157A1/en
Abandoned legal-status Critical Current

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Definitions

  • the embodiments discussed herein are related to an information processing apparatus and an interrupt control method.
  • VM virtual machine
  • VMM virtual machine monitor
  • an interrupt controller notifies a hypervisor of the external interrupt request.
  • the hypervisor converts the external interrupt request into a virtual interrupt request and notifies a VM serving as a destination of an interrupt of the virtual interrupt request.
  • the VM notified of the virtual interrupt request executes an interrupt process and then notifies the hypervisor of the completion of execution. Subsequently, the hypervisor notifies the interrupt controller of completion of the interrupt, and the interrupt process is finished.
  • one of the operating VMs to which the CPU is allocated can execute a process in accordance with a scheduler or the like. That is, a VM having the execution right of the CPU executes various processes.
  • the CPU is allocated to VM 1 in a state where VM 1 , VM 2 , and VM 3 are operating, the VM 1 is in an execution state and the VM 2 and VM 3 are in an execution standby state where they are operating but unable to execute a process.
  • an information processing apparatus includes an interrupt control unit that specifies a virtual machine serving as a destination of an interrupt request, and a virtualization control unit that operates multiple virtual machines.
  • the virtualization control unit includes a specifying unit that specifies a storage destination of an interrupt program corresponding to the virtual machine specified by the interrupt control unit based on information stored in a storage unit which stores information on a storage destination of an interrupt program in association with each of the multiple virtual machines, and an execution control unit that reads and executes the interrupt program stored in the storage destination specified by the specifying unit.
  • FIG. 1 is an exemplary diagram illustrating an information processing apparatus according to a first embodiment
  • FIG. 2 is an exemplary diagram illustrating an example in which the information processing apparatus according to the first embodiment executes an interrupt process
  • FIG. 3 is an exemplary diagram illustrating an example in which waiting of an interrupt process occurs
  • FIG. 4 is an exemplary diagram illustrating an example in which an interrupt process is executed efficiently
  • FIG. 5 is an exemplary functional block diagram illustrating the configuration of an information processing apparatus according to a second embodiment
  • FIG. 6 is an exemplary diagram illustrating an example of information stored in a guest ID management table
  • FIG. 7 is an exemplary diagram illustrating an example of information stored in an interrupt handler management table
  • FIG. 8 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an NIC device
  • FIG. 9 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an HDD device
  • FIG. 10 is an exemplary diagram illustrating the processing sequence when a CPU is allocated to a guest serving as a destination of an interrupt request
  • FIG. 11 is an exemplary diagram illustrating an example of a guest ID management table storing a protect mode
  • FIG. 12 is an exemplary diagram illustrating changing of an execution method in accordance with the type of interrupts.
  • FIG. 13 is an exemplary diagram illustrating an example of a hardware configuration of a computer executing an interrupt control program.
  • FIG. 1 is an exemplary diagram illustrating an information processing apparatus according to a first embodiment.
  • An information processing apparatus 10 illustrated in FIG. 1 is a server employing server virtualization techniques and operates multiple VMs (virtual machines).
  • VMs virtual machines
  • the information processing apparatus 10 is not limited to this, and may be other apparatuses such as a personal computer.
  • the number of VMs is not limited to a number described herein.
  • the information processing apparatus 10 includes an interrupt control unit 11 and a virtualization control unit 12 . Moreover, the information processing apparatus 10 operates a guest operating system (A) (hereinafter referred to as a guest OS (A)) and a guest OS (B) and a guest OS (C) as virtual machines.
  • the guest OS (A) holds an interrupt program (A)
  • the guest OS (B) holds an interrupt program (B)
  • the guest OS (C) holds an interrupt program (C).
  • the interrupt control unit 11 is a processing unit that specifies a virtual machine serving as a destination of an interrupt request when the interrupt request occurs.
  • the virtualization control unit 12 includes a storage unit 12 a , a specifying unit 12 b , and an execution control unit 12 c and is a processing unit that processes an interrupt notified from the interrupt control unit 11 using these units.
  • the storage unit 12 a may be included in another processing unit or the like in the information processing apparatus 10 rather than in the virtualization control unit 12 .
  • the storage unit 12 a stores information on a storage destination, in which an interrupt program is stored, in association with each of multiple virtual machines.
  • the specifying unit 12 b specifies a storage destination of an interrupt program correlated with the virtual machine specified by the interrupt control unit 11 from the storage unit 12 a .
  • the execution control unit 12 c reads and executes the interrupt program from the storage destination specified by the specifying unit 12 b.
  • the interrupt control unit 11 of the information processing apparatus 10 specifies a guest OS serving as a destination of an external interrupt when the external interrupt or the like is detected.
  • the virtualization control unit 12 reads an interrupt program of the guest OS serving as a destination of the external interrupt and executes the interrupt program as a proxy for the guest OS.
  • FIG. 2 is an exemplary diagram illustrating an example in which the information processing apparatus according to the first embodiment executes an interrupt process.
  • the interrupt control unit 11 specifies a guest OS (A) serving as a destination of the external interrupt.
  • the specifying unit 12 b of the virtualization control unit 12 specifies address information in which the interrupt program of the guest OS (A) is stored, from the storage unit 12 a .
  • the execution control unit 12 c reads an interrupt program (A) of the guest OS (A) from the specified address information and executes the interrupt program (A) in the virtualization control unit 12 .
  • the virtualization control unit 12 executes the interrupt program as a proxy for the guest OS which is the destination of the external interrupt.
  • the information processing apparatus 10 can efficiently execute the interrupt process without delaying the interrupt process until a CPU is allocated to the guest OS.
  • FIG. 3 is an exemplary diagram illustrating an example in which waiting of an interrupt process occurs.
  • FIG. 3 illustrates a case in which the CPU is sequentially allocated to the guest OS (A), the guest OS (B), and the guest OS (C) with an elapse of time.
  • the virtualization control unit 12 converts the interrupt (A) into a virtual interrupt (A) and notifies the guest OS (A) of the virtual interrupt (A) because the CPU is allocated to the guest OS (A) at time to.
  • the virtualization control unit 12 delays the interrupt (C) since the CPU is allocated to the guest OS (B) at time t 1 .
  • the virtualization control unit 12 converts the interrupt (C) into a virtual interrupt (C) and notifies the guest OS (C) of the virtual interrupt (C) so as to execute the interrupt (C). That is, the interrupt (C) is delayed for a period from time t 1 to time t 2 .
  • the interrupts may be delayed depending on the CPU's allocation state.
  • FIG. 4 is an exemplary diagram illustrating an example in which an interrupt process is executed efficiently.
  • FIG. 4 is an exemplary diagram illustrating an interrupt process executed by the information processing apparatus 10 as illustrated in FIG. 1 , and the CPU allocation state is as illustrated in FIG. 3 .
  • an interrupt (A) to the guest OS (A) occurs at time t 0 .
  • the virtualization control unit 12 reads and executes the interrupt program (A) of the guest OS (A) to thereby process the interrupt (A) without converting the interrupt (A) into a virtual interrupt.
  • the virtualization control unit 12 reads and executes the interrupt program (C) of the guest OS (C) to thereby process the interrupt (C).
  • occurred interrupts can be executed sequentially without delaying the same, and hence, the information processing apparatus 10 can execute an interrupt process efficiently.
  • FIG. 5 is an exemplary functional block diagram illustrating the configuration of the information processing apparatus according to the second embodiment.
  • an information processing apparatus 20 includes a virtual area 20 a , a communication interface 20 b , an input/output interface 20 c , an interrupt controller 22 , and a control unit 25 .
  • the processing units illustrated herein are only exemplary and are not limited to these.
  • the information processing apparatus may include a storage device such as a memory or a hard disk, a display unit such as a display, an input unit such as a mouse, and the like.
  • the virtual area 20 a is an area managed by a hypervisor 26 of the control unit 25 and can operate an optional number of VMs.
  • a guest OS (A), a guest OS (B), and a guest OS (C) operate as VMs.
  • a guest ID of 0 is allocated to the guest OS (A) as an identifier for identifying the guest OS (A)
  • a guest ID of 1 is allocated to the guest OS (B) as an identifier for identifying the guest OS (B).
  • a guest ID of 2 is allocated to the guest OS (C) as an identifier for identifying the guest OS (C).
  • the respective guest OS's hold an interrupt handler executing an interrupt process in accordance with an interrupt factor.
  • a virtual processor and a virtual memory are allocated to the respective guest OS's operating in the virtual area 20 a by the hypervisor 26 .
  • the respective guest OS's operate as VMs with the help of the virtual processor and the virtual memory and execute various processes.
  • the virtual memory is a virtual memory implemented by allocating a predetermined area of a memory of the information processing apparatus 20 as a memory used by a guest OS.
  • the virtual processor is a virtual processor implemented by allocating a predetermined processing capability of a process of the information processing apparatus 20 as a processor used by a guest OS.
  • the communication interface 20 b is an interface such as an NIC (network interface card) device, for example, and controls communication between the information processing apparatus 20 and other apparatuses.
  • the communication interface 20 b receives data such as packets or frames from other apparatuses and transmits data processed in the information processing apparatus 20 to other apparatuses.
  • the input/output interface 20 c controls communication with a display, a mouse, a keyboard, an HDD (hard disk drive) device, and the like.
  • the input/output interface 20 c receives an input to the information processing apparatus 20 through a mouse or a keyboard.
  • the input/output interface 20 c displays and outputs the results of the processing of the information processing apparatus 20 or the like on a display.
  • the input/output interface 20 c executes a write request transmitted from a guest OS with respect to a storage device such as an HDD device and outputs data read from the HDD device to a guest OS.
  • the interrupt controller 22 includes an interrupt target register 22 a , a guest ID management table 22 b , a storage control unit 22 c , and an interrupt destination specifying unit 22 d and is a processing unit that executes processes relevant to an interrupt using these units.
  • the interrupt target register 22 a stores a guest ID of a guest OS serving as a destination of an interrupt.
  • the guest ID is an identifier for identifying a guest OS operating in a virtual area.
  • information stored in the interrupt target register 22 a is updated by the interrupt destination specifying unit 22 d .
  • the interrupt controller 22 or the hypervisor 26 may delete a guest ID of a guest OS that executed the interrupt process.
  • the guest ID management table 22 b is a storage unit that stores information of devices used by each of the guest OS's. Moreover, the information stored in the guest ID management table 22 b may be stored by an administrator or the like and may be stored by the storage control unit 22 c .
  • FIG. 6 is an exemplary diagram illustrating an example of information stored in the guest ID management table 22 b . As illustrated in FIG. 6 , the guest ID management table 22 b stores “guest ID” and “device ID” in correlation.
  • the “guest ID” stored therein is an identifier for identifying respective guest OS's operating in the virtual area 20 a
  • the “device ID” stored therein is an identifier for identifying a device used by a guest OS and is an identifier for identifying an HDD, an NIC, or the like, for example.
  • the guest OS (A) to which a guest ID of 0 is allocated uses a device having a device ID of devA.
  • the guest OS (B) to which a guest ID of 1 is allocated uses a device having a device ID of devB.
  • the guest OS (C) to which a guest ID of 2 is allocated uses a device having a device ID of devC and a device having a device ID of devD.
  • the device ID can be used as the device ID.
  • an MAC address of the NIC device such as “AA:AA:AA:AA:AA:AA” may be stored in the guest ID management table 22 b .
  • a UUID universalally unique identifier
  • a device name of the HDD device such as “1o9097hi-fujitsu . . . ” may be stored in the guest ID management table 22 b.
  • the storage control unit 22 c is a processing unit that stores a guest ID for identifying the operating guest OS and a device ID of a device used by the guest OS in the guest ID management table 22 b in correlation. For example, when a guest OS (D) which is a new virtual machine is operated, the storage control unit 22 c receives a guest ID allocated to the guest OS (D) and a device ID of an NIC device used by the guest OS (D) from an operator or the like. Moreover, the storage control unit 22 c stores the received guest ID and device ID in the guest ID management table 22 b in correlation.
  • the storage control unit 22 c extracts a guest ID and a device ID from the access request. Moreover, the storage control unit 22 c stores the extracted guest ID and device ID in the guest ID management table 22 b in correlation.
  • the interrupt destination specifying unit 22 d is a processing unit that specifies a virtual machine serving as a destination of an interrupt request. For example, when a packet arrives at the communication interface 20 b , the interrupt destination specifying unit 22 d detects that an external interrupt requesting reception of packets has occurred. Then, the interrupt destination specifying unit 22 d specifies an NIC device at which the packet has arrived. Moreover, the interrupt destination specifying unit 22 d specifies a guest ID corresponding to the device ID of the NIC device from the guest ID management table 22 b . Subsequently, the interrupt destination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a and notifies the hypervisor 26 of an external interrupt request for reception of packets.
  • the interrupt destination specifying unit 22 d detects that an external interrupt notifying completion of the DMA has occurred. Then, the interrupt destination specifying unit 22 d specifies a HDD device serving as a transmission source from a notification of completion of the DMA. Moreover, the interrupt destination specifying unit 22 d specifies a guest ID corresponding to the device ID allocated to the HDD device from the guest ID management table 22 b . Subsequently, the interrupt destination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a and notifies the hypervisor 26 of an external interrupt request for a notification of completion of the DMA.
  • a DMA direct memory access
  • the control unit 25 includes a process control unit 25 a and the hypervisor 26 and a processing unit that controls an interrupt process using these units.
  • the control unit 25 is an electronic circuit such as a CPU.
  • the control unit 25 may include an internal memory or the like.
  • the process control unit 25 a is a processing unit that executes processes other than the processes relevant to the guest OS. For example, the process control unit 25 a executes stopping activation of an OS mounted in the information processing apparatus 20 and stopping activation of the hypervisor 26 .
  • the hypervisor 26 includes an interrupt handler management table 26 a , a CPU allocating unit 26 b , an interrupt handler specifying unit 26 c , and an interrupt executing unit 26 d , and is a processing unit that processes an interrupt request notified from the interrupt controller 22 using these units. Moreover, the hypervisor 26 transmits packets transmitted from respective guest OS's to a destination and outputs device access requests output from respective guest OS's to the corresponding devices.
  • the interrupt handler management table 26 a is a storage unit that stores information on a storage destination, in which an interrupt handler is stored, in association with each of multiple guest OS's.
  • FIG. 7 is an exemplary diagram illustrating an example of information stored in an interrupt handler management table. As illustrated in FIG. 7 , the interrupt handler management table 26 a stores “guest ID”, “interrupt vector”, “interrupt handler”, and “guest page table” in correlation.
  • the “guest ID” stored in the interrupt handler management table 26 a is an identifier for identifying guest OS's operate in the virtual area 20 a
  • the “interrupt vector” is an identifier for identifying the factors of interrupts.
  • the “interrupt handler” is stored in a format of the physical address used by a guest OS, that is, in a format of the address of a virtual address space provided by the hypervisor 26 , and represents a header address of a storage destination in which an interrupt handler is stored.
  • the “guest page table” is a page table used for converting into a virtual space of a guest OS, and represents a header address of a physical address space held by the guest OS, that is, a header address of a virtual address space provided by the hypervisor 26 .
  • FIG. 7 illustrates a case in which when an external interrupt of which the interrupt vector is 0 occurs with respect to the guest OS (A) to which a guest ID of 0 is allocated, a physical address “Handler — 0” of the guest OS (A) is converted into a virtual address using a guest page table PT0.
  • the interrupt executing unit 26 d of the hypervisor 26 can execute an interrupt handler in an address space managed by the guest OS.
  • FIG. 7 also illustrates a case in which when an external interrupt of the interrupt vector of 1 occurs with respect to the guest OS (B) to which a guest ID of 1 is allocated, a physical address “Handler B” of the guest OS (B) is converted into a virtual address using a guest page table PT1.
  • interrupt handler management table 26 a can also store the header address of a TLB (translation look-aside buffer) held by a guest OS in correlation.
  • the hypervisor 26 can specify the storage destination of an interrupt handler from a virtual address space of the guest OS at a higher speed.
  • the CPU allocating unit 26 b is a processing unit that allocates the CPU to respective guest OS's in accordance with a predetermined scheduler. For example, the CPU allocating unit 26 b transfers the execution right of CPU from the guest OS (A) to the guest OS (B) in accordance with a schedule determined by an operator, a hypervisor, or the like. As a result, the guest OS (A) transitions to an execution standby state of not having the execution right, and the guest OS (B) transitions to an execution state of having the execution right.
  • the interrupt handler specifying unit 26 c is a processing unit that specifies a storage destination of an interrupt handler corresponding to the guest OS specified by the interrupt controller 22 from the interrupt handler management table 26 a .
  • the interrupt handler specifying unit 26 c receives an external interrupt request for reception of packets from the interrupt controller 22 . Subsequently, the interrupt handler specifying unit 26 c acquires a guest ID stored in the interrupt target register 22 a of the interrupt controller 22 . That is, the interrupt handler specifying unit 26 c acquires a destination of the external interrupt request for reception of packets.
  • the interrupt handler specifying unit 26 c specifies a guest OS corresponding to the acquired guest ID.
  • the correlation between the guest ID and the guest OS is stored in an internal memory of the control unit 25 or a storage device (not illustrated) such as a memory.
  • the interrupt handler specifying unit 26 c acquires a CPU allocation state of the CPU allocating unit 26 b and determines whether the CPU is allocated to a guest OS serving as a destination of an external interrupt request for reception of packets. When the CPU is allocated, the interrupt handler specifying unit 26 c converts the external interrupt request into a virtual interrupt and outputs the converted virtual interrupt to a guest OS serving as the destination of the interrupt request.
  • the interrupt handler specifying unit 26 c specifies an interrupt vector corresponding to the external interrupt.
  • the interrupt handler specifying unit 26 c may specify the interrupt vector from the interrupt request and may hold a table storing the type of an interrupt request and the interrupt vector in correlation and specify the interrupt vector based on the table.
  • the interrupt handler specifying unit 26 c reads an interrupt handler and a guest page table corresponding to a combination of the guest ID acquired from the interrupt controller 22 and the specified interrupt vector from the interrupt handler management table 26 a . After that, the interrupt handler specifying unit 26 c outputs the read interrupt handler and guest page table to the interrupt executing unit 26 d.
  • the interrupt handler specifying unit 26 c has been notified of the external interrupt of which the interrupt vector is 0 from the interrupt controller 22 and has acquired a guest ID of 0 from the interrupt target register 22 a . Moreover, when it is determined that the CPU is allocated to the guest OS (A) having a guest ID of 0, the interrupt handler specifying unit 26 c converts the notified external interrupt into a virtual interrupt and outputs the virtual interrupt to the guest OS (A). As a result, the guest OS (A) executes an interrupt process.
  • the interrupt handler specifying unit 26 c acquires “Handler — 0” and “PT0” corresponding to a combination of the guest ID of 0 and the interrupt vector of 0 from the interrupt handler management table 26 a . Moreover, the interrupt handler specifying unit 26 c outputs the physical address “Handler — 0” of the interrupt handler and the page table “PT0” to the interrupt executing unit 26 d.
  • the interrupt executing unit 26 d is a processing unit that reads and executes an interrupt handler from the storage destination specified by the interrupt handler specifying unit 26 c .
  • the interrupt executing unit 26 d acquires a physical address “Handler — 0” and a page table “PT0” from the interrupt handler specifying unit 26 c .
  • the interrupt executing unit 26 d converts a physical address “Handler — 0” of a physical address space managed by the guest OS (A) into a virtual address of a virtual address space managed by the guest OS (A) using the page table “PT0”.
  • the interrupt executing unit 26 d reads and executes the interrupt handler from the converted virtual address.
  • the interrupt executing unit 26 d transmits “EOI (End of Interrupt)” which is a completion notification to the interrupt controller 22 or an interrupt controller which has issued an interrupt.
  • FIGS. 8 to 10 the flow of processes executed by the information processing apparatus 20 will be described using FIGS. 8 to 10 .
  • the request source of an interrupt request is an NIC device
  • an example in which the request source of an interrupt request is an HDD device will be described using FIG. 9
  • an example in which the CPU is allocated to a destination of an interrupt request will be described using FIG. 10 .
  • FIG. 8 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an NIC device.
  • the hypervisor 26 executes S 103 .
  • the hypervisor 26 outputs a request to register an MAC address of an NIC device that is used by the guest OS or added to the interrupt controller 22 (S 103 and S 104 ).
  • the hypervisor 26 also outputs a guest ID of the guest OS to the interrupt controller 22 .
  • the guest ID may be designated by the operator and may be uniquely assigned by the hypervisor.
  • the storage control unit 22 c of the interrupt controller 22 stores the MAC address of the NIC device and the guest ID notified from the hypervisor 26 in the guest ID management table 22 b in correlation (S 105 and S 106 ).
  • the communication interface 20 b outputs a packet arrival request to the interrupt controller 22 (S 107 and S 108 ). That is, the communication interface 20 b notifies the interrupt controller 22 of an external interrupt.
  • the interrupt destination specifying unit 22 d of the interrupt controller 22 specifies a guest ID corresponding to the MAC address of the NIC device at which packets have arrived from the guest ID management table 22 b (S 109 to S 111 ).
  • the interrupt destination specifying unit 22 d may extract the MAC address of a destination stored in the header of the packets or the like and may extract the MAC address directly from the NIC device at which packets have arrived. For example, when a physical NIC device is shared by multiple guest OS's, the device ID may be extracted from the MAC address of the destination.
  • the interrupt destination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a (S 112 and S 113 ). After that, the interrupt destination specifying unit 22 d sends a packet arrival request, that is, a physical interrupt request to the hypervisor 26 (S 114 and S 115 ).
  • the guest OS having the guest ID specified by the interrupt destination specifying unit 22 d is excluded from CPU allocation (S 116 ). That is, a destination guest OS of an interrupt request transitions from a state of having the execution right of CPU to a state of not having the execution right.
  • the interrupt handler specifying unit 26 c of the hypervisor 26 specifies a guest ID serving as a destination of an interrupt by referring to the interrupt target register 22 a (S 117 and S 118 ).
  • the interrupt handler specifying unit 26 c checks an allocation state of the CPU allocating unit 26 b and detects that the CPU is not allocated to the guest OS having the specified guest ID (S 119 ).
  • the interrupt handler specifying unit 26 c extracts an interrupt vector from a packet arrival request sent from the interrupt controller 22 and executes S 120 . That is, the interrupt handler specifying unit 26 c specifies a header address of an interrupt handler and a page table in accordance with a combination of the interrupt vector and the guest ID.
  • the interrupt executing unit 26 d reads and executes the interrupt handler from the guest OS using the header address of the interrupt handler and the page table specified by the interrupt handler specifying unit 26 c (S 121 ).
  • execution of the interrupt handler is finished, that is, when the external interrupt based on the packet arrival request is completed, the interrupt executing unit 26 d transmits the EOI to the interrupt controller (S 122 and S 123 ).
  • FIG. 9 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an HDD device.
  • the guest OS transmits an access request to the HDD device to the hypervisor 26 (S 201 and S 202 ).
  • the hypervisor 26 assigns a device ID to an HDD device serving as an access request destination and outputs the access request to the device ID to the interrupt controller together with the assigned device ID (S 203 and S 204 ).
  • the storage control unit 22 c of the interrupt controller 22 specifies a guest ID of a guest OS serving as a request source from the access request and the like and executes S 205 . That is, the storage control unit 22 c stores the specified guest ID and the device ID received along with the access request in the guest ID management table 22 b in correlation (S 205 and S 206 ).
  • the interrupt controller 22 transmits a DMA transfer request to the HDD (S 207 and S 208 ).
  • the HDD device transmits a DMA completion interrupt request to the interrupt controller 22 (S 209 and S 210 ). That is, the input/output interface 20 c notifies the interrupt controller 22 of the external interrupt.
  • FIG. 10 is an exemplary diagram illustrating the processing sequence when a CPU is allocated to a guest serving as a destination of an interrupt request.
  • the processes of S 301 to S 310 illustrated in FIG. 10 are the same as those of S 201 to S 210 described in FIG. 9 , and detailed description will not be provided.
  • the interrupt destination specifying unit 22 d of the interrupt controller 22 specifies a guest ID corresponding to the device ID of the HDD device having transmitted the DMA transfer request from the guest ID management table 22 b (S 311 to S 313 ). Subsequently, the interrupt destination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a (S 314 and S 315 ). After that, the interrupt destination specifying unit 22 d sends the DMA transfer request, that is, a physical interrupt request to the hypervisor 26 (S 316 and S 317 ).
  • the interrupt handler specifying unit 26 c of the hypervisor 26 specifies a guest ID serving as a destination of the interrupt by referring to the interrupt target register 22 a (S 318 and S 319 ).
  • the interrupt handler specifying unit 26 c checks an allocation state of the CPU allocating unit 26 b and detects that the CPU is allocated to the guest OS having the specified guest ID (S 320 ).
  • the interrupt handler specifying unit 26 c converts the DMA transfer request into a virtual interrupt request (S 321 ) and sends the converted virtual interrupt request to a guest OS having the specified guest ID (S 322 and S 323 ). After that, the guest OS having received the virtual interrupt request executes an interrupt process and transmits the EOI to the interrupt controller when the interrupt process is completed (S 324 and S 325 ).
  • the hypervisor 26 can determine which guest OS the interrupt process is directed to and perform a proxy process on the interrupt handler of the guest OS. Moreover, since the information processing apparatus 20 can finish the interrupt process without waiting until the CPU is allocated to the guest OS, the information processing apparatus 20 can process immediately a subsequent interrupt without delay. Moreover, since the information processing apparatus 20 directly invokes the interrupt handler of the guest OS without through the virtual interrupt, it is possible to efficiently execute an interrupt process to the guest OS. Moreover, by issuing an EOI by the interrupt handler, it is possible to process a subsequent interrupt without delay.
  • FIG. 11 is an exemplary diagram illustrating an example of a guest ID management table storing a protect mode.
  • the guest ID management table stores “protect mode” in addition to “guest ID and device ID” described in the second embodiment and the like.
  • the “protect mode” stored herein is information representing a storage destination of an operation mode of a guest OS and is the header address of a virtual address space managed by the guest OS, for example.
  • the operation mode read from an address indicated by the protect mode is called a protected virtual address mode, for example.
  • the protect mode is stored by the interrupt controller 22 receiving the same from an operator or the like.
  • the interrupt controller 22 stores information which the hypervisor 26 receives from an operator at the timing of S 102 of FIG. 8 in the guest ID management table.
  • the interrupt destination specifying unit 22 d of the interrupt controller 22 also specifies the protect mode and registers the same in the interrupt target register 22 a and notifies the hypervisor 26 of the same. Moreover, when executing the interrupt handler, the interrupt executing unit 26 d of the hypervisor 26 reads the protect mode from the storage destination and executes the interrupt handler in the operation mode of respective guest OS's. Thus, since the information processing apparatus 20 can execute the interrupt handler in the operation mode of the respective guest OS's, it is possible to prevent destruction of a memory space or the like of other guest OS's.
  • the information processing apparatus disclosed herein may determine whether the hypervisor 26 performs an interrupt process as a proxy depending on the type of interrupts. For example, information on the storage destination of an interrupt handler executed with respect to a hardware interrupt is stored in the interrupt handler management table 26 a of the hypervisor 26 in association with each of the guest OS's. By doing so, a hardware interrupt can be executed preferentially to a software interrupt.
  • the hardware interrupt is an interrupt process such as an Ethernet (registered trademark) driver process, a SCSI (small computer system interface) host adapter driver process, or a serial driver process.
  • the hardware interrupt is an interrupt process which requires execution of an interrupt to be completed as fast as possible when the interrupt occurs so that the execution time decreases.
  • the software interrupt is an interrupt process such as a TCP (transmission control protocol)/IP (internet protocol) protocol process, a SCSI protocol process, or a terminal control process.
  • the software interrupt is an interrupt process which does not require fast completion of execution as compared to the hardware interrupt.
  • the hypervisor of the information processing apparatus disclosed herein example performs execution in the context of a hardware interrupt handler, and only registration of a software interrupt is executed in the hardware interrupt handler, and the software interrupts are collectively executed later.
  • FIG. 12 is an exemplary diagram illustrating changing of an execution method in accordance with the type of interrupts.
  • the hypervisor holds a hardware interrupt handler executing a hardware interrupt, and the hardware interrupt handler holds an interrupt handler of each hardware interrupt as a fast interrupt handler.
  • the hypervisor activates a hardware interrupt handler to invoke the fast interrupt handler and executes an interrupt process as a proxy for the guest OS. After that, when execution is completed, the fast interrupt handler issues the EOI to an interrupt controller.
  • the hypervisor activates a hardware interrupt handler to convert the software interrupt into a virtual interrupt and notifies the kernel of the guest OS of the virtual interrupt.
  • the guest OS executes a slow interrupt handler.
  • the slow interrupt handler is an interrupt handler that executes a software interrupt, for example.
  • the slow interrupt handler of the guest OS executes a software interrupt handler to execute an interrupt process.
  • the software interrupt handler issues the EOI to the interrupt controller.
  • a hardware interrupt may be first executed with respect to a single external interrupt to issue the EOI, and then, the external interrupt may be collectively executed as a software interrupt.
  • the interrupt controller when packets arrive at an NIC device, the interrupt controller generates an interrupt request and activates a hardware interrupt handler of the hypervisor. Since the external interrupt corresponds to a slow interrupt, the hardware interrupt handler of the hypervisor converts the external interrupt into a virtual interrupt and notifies the slow interrupt handler held by the kernel of the guest OS of the virtual interrupt.
  • the hardware interrupt handler of the hypervisor invokes a fast interrupt handler of a registered guest and issues the EOI when the process of the fast interrupt handler is finished.
  • the slow interrupt handler of the guest OS executes the software interrupt handler to execute an interrupt process.
  • the interrupt handler is read and executed when the execution right of a processor is not allocated to the guest OS, and the external interrupt is converted into a virtual interrupt request, and the virtual interrupt request is output to the guest OS when the execution right of a processor is allocated to the guest OS.
  • a method of executing interrupts in the information processing apparatus disclosed herein is not limited to this.
  • the hypervisor of the information processing apparatus may execute the interrupt handler as a proxy for the guest OS.
  • all or part of the processes described to be automatically performed may be manually performed.
  • all or part of the processes described to be manually performed may be automatically performed with publicly known methods.
  • the processing procedures, control procedures, and specific names described in the above document and the drawings, for example, information including various data and parameters, may be arbitrarily modified unless otherwise specified.
  • FIG. 13 is an exemplary diagram illustrating an example of a hardware configuration of a computer executing an interrupt control program.
  • a computer 100 includes a CPU 102 , an input device 103 , an output device 104 , a communication interface 105 , a medium reading device 106 , an HDD (hard disk drive) 107 , and a RAM (random access memory) 108 .
  • the respective units illustrated in FIG. 13 are connected to each other by a bus 101 .
  • the input device 103 is a mouse and a keyboard
  • the output device 104 is a display or the like
  • the communication interface 105 is an interface such as an NIC.
  • the HDD 107 stores information of the tables illustrated in FIG. 5 together with an interrupt control program 107 a .
  • the HDD 107 is illustrated as an example of a recording medium, various programs may be stored in another computer readable recording medium such as a ROM (read only memory), a RAM (random access memory), or a CD-ROM and be read into the computer.
  • a storage medium may be disposed in a remote site, and the computer may access the storage medium to acquire and use the program.
  • the acquired program may be stored in a recording medium of the computer itself and used.
  • the CPU 102 reads the interrupt control program 107 a and deploys the same into the RAM 108 to thereby operate an interrupt control processor 108 a that executes the respective functions described in FIG. 5 and the like. That is, the interrupt control processor 108 a executes the same functions as the storage control unit 22 c , the interrupt destination specifying unit 22 d , the interrupt handler specifying unit 26 c , and the interrupt executing unit 26 d described in FIG. 5 . As above, the computer 100 reads and executes the program and operates as an information processing apparatus executing an interrupt control method.
  • the computer 100 may implement the same functions as the above-described embodiments by reading the interrupt control program 107 a from a recording medium using the medium reading device 106 and executing the read interrupt control program 107 a .
  • the program mentioned in the other embodiment is not limited to one which is executed by the computer 100 .
  • the present invention can be similarly applied to when another computer or server executes the program and when the computer and the server execute the program in cooperation.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

An information processing apparatus includes an interrupt control unit and a virtualization control unit. The interrupt control unit specifies a virtual machine serving as a destination of an interrupt request. The virtualization control unit operates multiple virtual machines. The virtualization control unit includes a specifying unit and an execution control unit. The specifying unit specifies a storage destination of an interrupt program corresponding to the virtual machine specified by the interrupt control unit based on information stored in a storage unit which stores information on a storage destination of an interrupt program in association with each of the multiple virtual machines. The execution control unit reads and executes the interrupt program stored in the storage destination specified by the specifying unit.

Description

    CROSS-REFERENCE TO RELATED APPLICATION
  • This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2011-177667, filed on Aug. 15, 2011, the entire contents of which are incorporated herein by reference.
  • FIELD
  • The embodiments discussed herein are related to an information processing apparatus and an interrupt control method.
  • BACKGROUND
  • Server virtualization techniques have been known. According to this technique, a virtual server called a VM (virtual machine) operates on a physical server such as an information processing apparatus. In the physical server, a hypervisor called a VMM (virtual machine monitor) operates. The hypervisor performs various types of control relevant to VM such as generation of VM.
  • When an external interrupt request to VM occurs in a physical server employing the server virtualization techniques, an interrupt controller notifies a hypervisor of the external interrupt request. The hypervisor converts the external interrupt request into a virtual interrupt request and notifies a VM serving as a destination of an interrupt of the virtual interrupt request. The VM notified of the virtual interrupt request executes an interrupt process and then notifies the hypervisor of the completion of execution. Subsequently, the hypervisor notifies the interrupt controller of completion of the interrupt, and the interrupt process is finished.
  • Moreover, as a technique of executing an interrupt to a VM, there is known a technique in which when a VM operates, the entry of an interrupt vector table of a hypervisor is rewritten into an interrupt processing program of the VM (see, for example, Japanese Laid-open Patent Publication No. 61-206043). Moreover, there is known a technique in which when the purpose of activation of the VM is an interrupt, information appropriate for the content of an interrupt is stored in a stack, and control is transferred to an interrupt handler in the VM executing an appropriate process on the stored information (see, for example, Japanese Laid-open Patent Publication No. 61-184643). Furthermore, there is known a technique in which when an execution right is allocated to a VM which is a performance monitoring target, a link to an interrupt handler of the VM is registered in an interrupt table of a hypervisor. Moreover, when an interrupt occurs, the interrupt handler is activated in accordance with the interrupt table (see, for example, Japanese Laid-open Patent Publication No. 2010-152458).
  • However, in the related art, when an interrupt request to a VM to which a CPU (central processing unit) is not allocated occurs, it is not possible to process the interrupt request until the CPU is allocated to the VM. Thus, there is a problem in that an interrupt process is not performed efficiently.
  • For example, when multiple VMs are operating in a physical server, one of the operating VMs to which the CPU is allocated can execute a process in accordance with a scheduler or the like. That is, a VM having the execution right of the CPU executes various processes. Thus, when the CPU is allocated to VM1 in a state where VM1, VM2, and VM3 are operating, the VM1 is in an execution state and the VM2 and VM3 are in an execution standby state where they are operating but unable to execute a process.
  • Thus, when an interrupt request to a VM in an execution standby state occurs, it is not possible to execute an interrupt process until the VM transitions to an execution state. As above, depending on the state of a VM serving as a destination of an interrupt request, it takes time until the interrupt process is completed. Thus, the interrupt process would not be executed efficiently.
  • SUMMARY
  • According to an aspect of an embodiment of the invention, an information processing apparatus includes an interrupt control unit that specifies a virtual machine serving as a destination of an interrupt request, and a virtualization control unit that operates multiple virtual machines. The virtualization control unit includes a specifying unit that specifies a storage destination of an interrupt program corresponding to the virtual machine specified by the interrupt control unit based on information stored in a storage unit which stores information on a storage destination of an interrupt program in association with each of the multiple virtual machines, and an execution control unit that reads and executes the interrupt program stored in the storage destination specified by the specifying unit.
  • The object and advantages of the embodiment will be realized and attained by means of the elements and combinations particularly pointed out in the claims.
  • It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the embodiment, as claimed.
  • BRIEF DESCRIPTION OF DRAWINGS
  • FIG. 1 is an exemplary diagram illustrating an information processing apparatus according to a first embodiment;
  • FIG. 2 is an exemplary diagram illustrating an example in which the information processing apparatus according to the first embodiment executes an interrupt process;
  • FIG. 3 is an exemplary diagram illustrating an example in which waiting of an interrupt process occurs;
  • FIG. 4 is an exemplary diagram illustrating an example in which an interrupt process is executed efficiently;
  • FIG. 5 is an exemplary functional block diagram illustrating the configuration of an information processing apparatus according to a second embodiment;
  • FIG. 6 is an exemplary diagram illustrating an example of information stored in a guest ID management table;
  • FIG. 7 is an exemplary diagram illustrating an example of information stored in an interrupt handler management table;
  • FIG. 8 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an NIC device;
  • FIG. 9 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an HDD device;
  • FIG. 10 is an exemplary diagram illustrating the processing sequence when a CPU is allocated to a guest serving as a destination of an interrupt request;
  • FIG. 11 is an exemplary diagram illustrating an example of a guest ID management table storing a protect mode;
  • FIG. 12 is an exemplary diagram illustrating changing of an execution method in accordance with the type of interrupts; and
  • FIG. 13 is an exemplary diagram illustrating an example of a hardware configuration of a computer executing an interrupt control program.
  • DESCRIPTION OF EMBODIMENTS
  • Preferred embodiments of the present invention will be explained with reference to accompanying drawings. It is noted that the invention is not limited to these embodiments.
  • [a] First Embodiment
  • FIG. 1 is an exemplary diagram illustrating an information processing apparatus according to a first embodiment. An information processing apparatus 10 illustrated in FIG. 1 is a server employing server virtualization techniques and operates multiple VMs (virtual machines). In this example, although an example in which the information processing apparatus 10 is a server is described, the information processing apparatus 10 is not limited to this, and may be other apparatuses such as a personal computer. Moreover, the number of VMs is not limited to a number described herein.
  • As illustrated in FIG. 1, the information processing apparatus 10 includes an interrupt control unit 11 and a virtualization control unit 12. Moreover, the information processing apparatus 10 operates a guest operating system (A) (hereinafter referred to as a guest OS (A)) and a guest OS (B) and a guest OS (C) as virtual machines. The guest OS (A) holds an interrupt program (A), the guest OS (B) holds an interrupt program (B), and the guest OS (C) holds an interrupt program (C).
  • The interrupt control unit 11 is a processing unit that specifies a virtual machine serving as a destination of an interrupt request when the interrupt request occurs. The virtualization control unit 12 includes a storage unit 12 a, a specifying unit 12 b, and an execution control unit 12 c and is a processing unit that processes an interrupt notified from the interrupt control unit 11 using these units. The storage unit 12 a may be included in another processing unit or the like in the information processing apparatus 10 rather than in the virtualization control unit 12.
  • The storage unit 12 a stores information on a storage destination, in which an interrupt program is stored, in association with each of multiple virtual machines. The specifying unit 12 b specifies a storage destination of an interrupt program correlated with the virtual machine specified by the interrupt control unit 11 from the storage unit 12 a. The execution control unit 12 c reads and executes the interrupt program from the storage destination specified by the specifying unit 12 b.
  • As above, the interrupt control unit 11 of the information processing apparatus 10 specifies a guest OS serving as a destination of an external interrupt when the external interrupt or the like is detected. The virtualization control unit 12 reads an interrupt program of the guest OS serving as a destination of the external interrupt and executes the interrupt program as a proxy for the guest OS. Here, a specific example will be described using FIG. 2. FIG. 2 is an exemplary diagram illustrating an example in which the information processing apparatus according to the first embodiment executes an interrupt process.
  • As illustrated in FIG. 2, when an external interrupt is detected, the interrupt control unit 11 specifies a guest OS (A) serving as a destination of the external interrupt. The specifying unit 12 b of the virtualization control unit 12 specifies address information in which the interrupt program of the guest OS (A) is stored, from the storage unit 12 a. The execution control unit 12 c reads an interrupt program (A) of the guest OS (A) from the specified address information and executes the interrupt program (A) in the virtualization control unit 12.
  • That is, the virtualization control unit 12 executes the interrupt program as a proxy for the guest OS which is the destination of the external interrupt. Thus, the information processing apparatus 10 can efficiently execute the interrupt process without delaying the interrupt process until a CPU is allocated to the guest OS.
  • For example, FIG. 3 is an exemplary diagram illustrating an example in which waiting of an interrupt process occurs. FIG. 3 illustrates a case in which the CPU is sequentially allocated to the guest OS (A), the guest OS (B), and the guest OS (C) with an elapse of time. In this case, when an interrupt (A) to the guest OS (A) occurs at time t0, the virtualization control unit 12 converts the interrupt (A) into a virtual interrupt (A) and notifies the guest OS (A) of the virtual interrupt (A) because the CPU is allocated to the guest OS (A) at time to.
  • When an interrupt (C) to the guest OS (C) occurs at time t1, the virtualization control unit 12 delays the interrupt (C) since the CPU is allocated to the guest OS (B) at time t1. After time t2 at which the CPU is allocated to the guest OS (C), the virtualization control unit 12 converts the interrupt (C) into a virtual interrupt (C) and notifies the guest OS (C) of the virtual interrupt (C) so as to execute the interrupt (C). That is, the interrupt (C) is delayed for a period from time t1 to time t2. As above, when interrupts are executed by respective guest OS's, the interrupts may be delayed depending on the CPU's allocation state.
  • On the other hand, FIG. 4 is an exemplary diagram illustrating an example in which an interrupt process is executed efficiently. FIG. 4 is an exemplary diagram illustrating an interrupt process executed by the information processing apparatus 10 as illustrated in FIG. 1, and the CPU allocation state is as illustrated in FIG. 3. Here, as illustrated in FIG. 4, it is assumed that an interrupt (A) to the guest OS (A) occurs at time t0. In this case, although the CPU is allocated to the guest OS (A), the virtualization control unit 12 reads and executes the interrupt program (A) of the guest OS (A) to thereby process the interrupt (A) without converting the interrupt (A) into a virtual interrupt.
  • Moreover, when an interrupt (C) to the guest OS (C) occurs at time t1, although the CPU is allocated to the guest OS (B) at time t1, the virtualization control unit 12 reads and executes the interrupt program (C) of the guest OS (C) to thereby process the interrupt (C). As above, as understood from comparison with FIG. 3, occurred interrupts can be executed sequentially without delaying the same, and hence, the information processing apparatus 10 can execute an interrupt process efficiently.
  • [b] Second Embodiment
  • Next, an information processing apparatus according to a second embodiment will be described. In the second embodiment, the configuration of the information processing apparatus according to the second embodiment, the flow of processing, and the like will be described.
  • Configuration of Information Processing Apparatus
  • FIG. 5 is an exemplary functional block diagram illustrating the configuration of the information processing apparatus according to the second embodiment. As illustrated in FIG. 5, an information processing apparatus 20 includes a virtual area 20 a, a communication interface 20 b, an input/output interface 20 c, an interrupt controller 22, and a control unit 25. The processing units illustrated herein are only exemplary and are not limited to these. For example, the information processing apparatus may include a storage device such as a memory or a hard disk, a display unit such as a display, an input unit such as a mouse, and the like.
  • The virtual area 20 a is an area managed by a hypervisor 26 of the control unit 25 and can operate an optional number of VMs. In FIG. 5, a guest OS (A), a guest OS (B), and a guest OS (C) operate as VMs. In this example, a guest ID of 0 is allocated to the guest OS (A) as an identifier for identifying the guest OS (A), and a guest ID of 1 is allocated to the guest OS (B) as an identifier for identifying the guest OS (B). Moreover, a guest ID of 2 is allocated to the guest OS (C) as an identifier for identifying the guest OS (C). Moreover, the respective guest OS's hold an interrupt handler executing an interrupt process in accordance with an interrupt factor.
  • A virtual processor and a virtual memory are allocated to the respective guest OS's operating in the virtual area 20 a by the hypervisor 26. The respective guest OS's operate as VMs with the help of the virtual processor and the virtual memory and execute various processes. The virtual memory is a virtual memory implemented by allocating a predetermined area of a memory of the information processing apparatus 20 as a memory used by a guest OS. The virtual processor is a virtual processor implemented by allocating a predetermined processing capability of a process of the information processing apparatus 20 as a processor used by a guest OS.
  • The communication interface 20 b is an interface such as an NIC (network interface card) device, for example, and controls communication between the information processing apparatus 20 and other apparatuses. For example, the communication interface 20 b receives data such as packets or frames from other apparatuses and transmits data processed in the information processing apparatus 20 to other apparatuses.
  • The input/output interface 20 c controls communication with a display, a mouse, a keyboard, an HDD (hard disk drive) device, and the like. For example, the input/output interface 20 c receives an input to the information processing apparatus 20 through a mouse or a keyboard. Moreover, the input/output interface 20 c displays and outputs the results of the processing of the information processing apparatus 20 or the like on a display. Furthermore, the input/output interface 20 c executes a write request transmitted from a guest OS with respect to a storage device such as an HDD device and outputs data read from the HDD device to a guest OS.
  • The interrupt controller 22 includes an interrupt target register 22 a, a guest ID management table 22 b, a storage control unit 22 c, and an interrupt destination specifying unit 22 d and is a processing unit that executes processes relevant to an interrupt using these units.
  • The interrupt target register 22 a stores a guest ID of a guest OS serving as a destination of an interrupt. The guest ID is an identifier for identifying a guest OS operating in a virtual area. Moreover, information stored in the interrupt target register 22 a is updated by the interrupt destination specifying unit 22 d. Moreover, when an interrupt process is completed, the interrupt controller 22 or the hypervisor 26 may delete a guest ID of a guest OS that executed the interrupt process.
  • The guest ID management table 22 b is a storage unit that stores information of devices used by each of the guest OS's. Moreover, the information stored in the guest ID management table 22 b may be stored by an administrator or the like and may be stored by the storage control unit 22 c. FIG. 6 is an exemplary diagram illustrating an example of information stored in the guest ID management table 22 b. As illustrated in FIG. 6, the guest ID management table 22 b stores “guest ID” and “device ID” in correlation. The “guest ID” stored therein is an identifier for identifying respective guest OS's operating in the virtual area 20 a, and the “device ID” stored therein is an identifier for identifying a device used by a guest OS and is an identifier for identifying an HDD, an NIC, or the like, for example.
  • In the case of FIG. 6, the guest OS (A) to which a guest ID of 0 is allocated uses a device having a device ID of devA. Similarly, the guest OS (B) to which a guest ID of 1 is allocated uses a device having a device ID of devB. Moreover, the guest OS (C) to which a guest ID of 2 is allocated uses a device having a device ID of devC and a device having a device ID of devD.
  • Various types of information can be used as the device ID. For example, when the device is an NIC device, an MAC address of the NIC device such as “AA:AA:AA:AA:AA:AA” may be stored in the guest ID management table 22 b. Moreover, when the device is an HDD device, a UUID (universally unique identifier) or a device name of the HDD device such as “1o9097hi-fujitsu . . . ” may be stored in the guest ID management table 22 b.
  • When the guest OS operates in the virtual area 20 a, the storage control unit 22 c is a processing unit that stores a guest ID for identifying the operating guest OS and a device ID of a device used by the guest OS in the guest ID management table 22 b in correlation. For example, when a guest OS (D) which is a new virtual machine is operated, the storage control unit 22 c receives a guest ID allocated to the guest OS (D) and a device ID of an NIC device used by the guest OS (D) from an operator or the like. Moreover, the storage control unit 22 c stores the received guest ID and device ID in the guest ID management table 22 b in correlation.
  • Moreover, when an access request to an HDD device is transmitted from the newly operated guest OS (D), the storage control unit 22 c extracts a guest ID and a device ID from the access request. Moreover, the storage control unit 22 c stores the extracted guest ID and device ID in the guest ID management table 22 b in correlation.
  • The interrupt destination specifying unit 22 d is a processing unit that specifies a virtual machine serving as a destination of an interrupt request. For example, when a packet arrives at the communication interface 20 b, the interrupt destination specifying unit 22 d detects that an external interrupt requesting reception of packets has occurred. Then, the interrupt destination specifying unit 22 d specifies an NIC device at which the packet has arrived. Moreover, the interrupt destination specifying unit 22 d specifies a guest ID corresponding to the device ID of the NIC device from the guest ID management table 22 b. Subsequently, the interrupt destination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a and notifies the hypervisor 26 of an external interrupt request for reception of packets.
  • Moreover, when a response to a DMA (direct memory access) transfer transmitted from a guest OS arrives at the input/output interface 20 c, the interrupt destination specifying unit 22 d detects that an external interrupt notifying completion of the DMA has occurred. Then, the interrupt destination specifying unit 22 d specifies a HDD device serving as a transmission source from a notification of completion of the DMA. Moreover, the interrupt destination specifying unit 22 d specifies a guest ID corresponding to the device ID allocated to the HDD device from the guest ID management table 22 b. Subsequently, the interrupt destination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a and notifies the hypervisor 26 of an external interrupt request for a notification of completion of the DMA.
  • The control unit 25 includes a process control unit 25 a and the hypervisor 26 and a processing unit that controls an interrupt process using these units. For example, the control unit 25 is an electronic circuit such as a CPU. The control unit 25 may include an internal memory or the like.
  • The process control unit 25 a is a processing unit that executes processes other than the processes relevant to the guest OS. For example, the process control unit 25 a executes stopping activation of an OS mounted in the information processing apparatus 20 and stopping activation of the hypervisor 26.
  • The hypervisor 26 includes an interrupt handler management table 26 a, a CPU allocating unit 26 b, an interrupt handler specifying unit 26 c, and an interrupt executing unit 26 d, and is a processing unit that processes an interrupt request notified from the interrupt controller 22 using these units. Moreover, the hypervisor 26 transmits packets transmitted from respective guest OS's to a destination and outputs device access requests output from respective guest OS's to the corresponding devices.
  • The interrupt handler management table 26 a is a storage unit that stores information on a storage destination, in which an interrupt handler is stored, in association with each of multiple guest OS's. FIG. 7 is an exemplary diagram illustrating an example of information stored in an interrupt handler management table. As illustrated in FIG. 7, the interrupt handler management table 26 a stores “guest ID”, “interrupt vector”, “interrupt handler”, and “guest page table” in correlation.
  • The “guest ID” stored in the interrupt handler management table 26 a is an identifier for identifying guest OS's operate in the virtual area 20 a, and the “interrupt vector” is an identifier for identifying the factors of interrupts. The “interrupt handler” is stored in a format of the physical address used by a guest OS, that is, in a format of the address of a virtual address space provided by the hypervisor 26, and represents a header address of a storage destination in which an interrupt handler is stored. The “guest page table” is a page table used for converting into a virtual space of a guest OS, and represents a header address of a physical address space held by the guest OS, that is, a header address of a virtual address space provided by the hypervisor 26.
  • FIG. 7 illustrates a case in which when an external interrupt of which the interrupt vector is 0 occurs with respect to the guest OS (A) to which a guest ID of 0 is allocated, a physical address “Handler 0” of the guest OS (A) is converted into a virtual address using a guest page table PT0. As a result, the interrupt executing unit 26 d of the hypervisor 26 can execute an interrupt handler in an address space managed by the guest OS. Similarly, FIG. 7 also illustrates a case in which when an external interrupt of the interrupt vector of 1 occurs with respect to the guest OS (B) to which a guest ID of 1 is allocated, a physical address “Handler B” of the guest OS (B) is converted into a virtual address using a guest page table PT1.
  • Moreover, the interrupt handler management table 26 a can also store the header address of a TLB (translation look-aside buffer) held by a guest OS in correlation. By doing so, the hypervisor 26 can specify the storage destination of an interrupt handler from a virtual address space of the guest OS at a higher speed.
  • The CPU allocating unit 26 b is a processing unit that allocates the CPU to respective guest OS's in accordance with a predetermined scheduler. For example, the CPU allocating unit 26 b transfers the execution right of CPU from the guest OS (A) to the guest OS (B) in accordance with a schedule determined by an operator, a hypervisor, or the like. As a result, the guest OS (A) transitions to an execution standby state of not having the execution right, and the guest OS (B) transitions to an execution state of having the execution right.
  • The interrupt handler specifying unit 26 c is a processing unit that specifies a storage destination of an interrupt handler corresponding to the guest OS specified by the interrupt controller 22 from the interrupt handler management table 26 a. For example, the interrupt handler specifying unit 26 c receives an external interrupt request for reception of packets from the interrupt controller 22. Subsequently, the interrupt handler specifying unit 26 c acquires a guest ID stored in the interrupt target register 22 a of the interrupt controller 22. That is, the interrupt handler specifying unit 26 c acquires a destination of the external interrupt request for reception of packets. In this case, the interrupt handler specifying unit 26 c specifies a guest OS corresponding to the acquired guest ID. The correlation between the guest ID and the guest OS is stored in an internal memory of the control unit 25 or a storage device (not illustrated) such as a memory.
  • Moreover, the interrupt handler specifying unit 26 c acquires a CPU allocation state of the CPU allocating unit 26 b and determines whether the CPU is allocated to a guest OS serving as a destination of an external interrupt request for reception of packets. When the CPU is allocated, the interrupt handler specifying unit 26 c converts the external interrupt request into a virtual interrupt and outputs the converted virtual interrupt to a guest OS serving as the destination of the interrupt request.
  • On the other hand, when the CPU is not allocated, the interrupt handler specifying unit 26 c specifies an interrupt vector corresponding to the external interrupt. For example, the interrupt handler specifying unit 26 c may specify the interrupt vector from the interrupt request and may hold a table storing the type of an interrupt request and the interrupt vector in correlation and specify the interrupt vector based on the table. Moreover, the interrupt handler specifying unit 26 c reads an interrupt handler and a guest page table corresponding to a combination of the guest ID acquired from the interrupt controller 22 and the specified interrupt vector from the interrupt handler management table 26 a. After that, the interrupt handler specifying unit 26 c outputs the read interrupt handler and guest page table to the interrupt executing unit 26 d.
  • As an example, it is assumed that the interrupt handler specifying unit 26 c has been notified of the external interrupt of which the interrupt vector is 0 from the interrupt controller 22 and has acquired a guest ID of 0 from the interrupt target register 22 a. Moreover, when it is determined that the CPU is allocated to the guest OS (A) having a guest ID of 0, the interrupt handler specifying unit 26 c converts the notified external interrupt into a virtual interrupt and outputs the virtual interrupt to the guest OS (A). As a result, the guest OS (A) executes an interrupt process.
  • On the other hand, when it is determined that the CPU is not allocated to the guest OS (A) having a guest ID of 0, the interrupt handler specifying unit 26 c acquires “Handler 0” and “PT0” corresponding to a combination of the guest ID of 0 and the interrupt vector of 0 from the interrupt handler management table 26 a. Moreover, the interrupt handler specifying unit 26 c outputs the physical address “Handler 0” of the interrupt handler and the page table “PT0” to the interrupt executing unit 26 d.
  • The interrupt executing unit 26 d is a processing unit that reads and executes an interrupt handler from the storage destination specified by the interrupt handler specifying unit 26 c. For example, the interrupt executing unit 26 d acquires a physical address “Handler 0” and a page table “PT0” from the interrupt handler specifying unit 26 c. Moreover, the interrupt executing unit 26 d converts a physical address “Handler 0” of a physical address space managed by the guest OS (A) into a virtual address of a virtual address space managed by the guest OS (A) using the page table “PT0”. After that, the interrupt executing unit 26 d reads and executes the interrupt handler from the converted virtual address. Moreover, when execution of the interrupt handler is completed, the interrupt executing unit 26 d transmits “EOI (End of Interrupt)” which is a completion notification to the interrupt controller 22 or an interrupt controller which has issued an interrupt.
  • Process Flow
  • Next, the flow of processes executed by the information processing apparatus 20 will be described using FIGS. 8 to 10. In this example, an example in which the request source of an interrupt request is an NIC device will be described using FIG. 8, an example in which the request source of an interrupt request is an HDD device will be described using FIG. 9, and an example in which the CPU is allocated to a destination of an interrupt request will be described using FIG. 10.
  • Example where NIC Device is Used
  • FIG. 8 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an NIC device. As illustrated in FIG. 8, when a guest OS is created in the virtual area 20 a by an operator or the like, or an NIC device used by the guest OS is added (S101 and S102), the hypervisor 26 executes S103.
  • That is, the hypervisor 26 outputs a request to register an MAC address of an NIC device that is used by the guest OS or added to the interrupt controller 22 (S103 and S104). In this case, the hypervisor 26 also outputs a guest ID of the guest OS to the interrupt controller 22. The guest ID may be designated by the operator and may be uniquely assigned by the hypervisor.
  • Moreover, the storage control unit 22 c of the interrupt controller 22 stores the MAC address of the NIC device and the guest ID notified from the hypervisor 26 in the guest ID management table 22 b in correlation (S105 and S106).
  • After that, when packets arrive at an NIC device included in the communication interface 20 b, the communication interface 20 b outputs a packet arrival request to the interrupt controller 22 (S107 and S108). That is, the communication interface 20 b notifies the interrupt controller 22 of an external interrupt.
  • Moreover, the interrupt destination specifying unit 22 d of the interrupt controller 22 specifies a guest ID corresponding to the MAC address of the NIC device at which packets have arrived from the guest ID management table 22 b (S109 to S111). The interrupt destination specifying unit 22 d may extract the MAC address of a destination stored in the header of the packets or the like and may extract the MAC address directly from the NIC device at which packets have arrived. For example, when a physical NIC device is shared by multiple guest OS's, the device ID may be extracted from the MAC address of the destination. Subsequently, the interrupt destination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a (S112 and S113). After that, the interrupt destination specifying unit 22 d sends a packet arrival request, that is, a physical interrupt request to the hypervisor 26 (S114 and S115).
  • On the other hand, in this case, the guest OS having the guest ID specified by the interrupt destination specifying unit 22 d is excluded from CPU allocation (S116). That is, a destination guest OS of an interrupt request transitions from a state of having the execution right of CPU to a state of not having the execution right.
  • After that, upon receiving a physical interrupt request from the interrupt controller 22, the interrupt handler specifying unit 26 c of the hypervisor 26 specifies a guest ID serving as a destination of an interrupt by referring to the interrupt target register 22 a (S117 and S118).
  • Subsequently, the interrupt handler specifying unit 26 c checks an allocation state of the CPU allocating unit 26 b and detects that the CPU is not allocated to the guest OS having the specified guest ID (S119).
  • Then, the interrupt handler specifying unit 26 c extracts an interrupt vector from a packet arrival request sent from the interrupt controller 22 and executes S120. That is, the interrupt handler specifying unit 26 c specifies a header address of an interrupt handler and a page table in accordance with a combination of the interrupt vector and the guest ID.
  • After that, the interrupt executing unit 26 d reads and executes the interrupt handler from the guest OS using the header address of the interrupt handler and the page table specified by the interrupt handler specifying unit 26 c (S121). When execution of the interrupt handler is finished, that is, when the external interrupt based on the packet arrival request is completed, the interrupt executing unit 26 d transmits the EOI to the interrupt controller (S122 and S123).
  • Example where HDD Device is Used
  • FIG. 9 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an HDD device. As illustrated in FIG. 9, the guest OS transmits an access request to the HDD device to the hypervisor 26 (S201 and S202). Upon receiving the access request, the hypervisor 26 assigns a device ID to an HDD device serving as an access request destination and outputs the access request to the device ID to the interrupt controller together with the assigned device ID (S203 and S204).
  • Moreover, the storage control unit 22 c of the interrupt controller 22 specifies a guest ID of a guest OS serving as a request source from the access request and the like and executes S205. That is, the storage control unit 22 c stores the specified guest ID and the device ID received along with the access request in the guest ID management table 22 b in correlation (S205 and S206).
  • After that, the interrupt controller 22 transmits a DMA transfer request to the HDD (S207 and S208). When the DMA transfer to the HDD is completed, the HDD device transmits a DMA completion interrupt request to the interrupt controller 22 (S209 and S210). That is, the input/output interface 20 c notifies the interrupt controller 22 of the external interrupt.
  • The processes of S211 to S223 executed thereafter are the same as those of S109 to S121 described in FIG. 8, and detailed description will not be provided. When execution of the interrupt handler is completed, that is, when the external interrupt based on the DMA completion interrupt request is completed, the interrupt executing unit 26 d transmits the EOI to the interrupt controller 22 (S224 and S225).
  • Interrupt process to guest OS having execution right FIG. 10 is an exemplary diagram illustrating the processing sequence when a CPU is allocated to a guest serving as a destination of an interrupt request. The processes of S301 to S310 illustrated in FIG. 10 are the same as those of S201 to S210 described in FIG. 9, and detailed description will not be provided.
  • Moreover, the interrupt destination specifying unit 22 d of the interrupt controller 22 specifies a guest ID corresponding to the device ID of the HDD device having transmitted the DMA transfer request from the guest ID management table 22 b (S311 to S313). Subsequently, the interrupt destination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a (S314 and S315). After that, the interrupt destination specifying unit 22 d sends the DMA transfer request, that is, a physical interrupt request to the hypervisor 26 (S316 and S317).
  • After that, upon receiving the physical interrupt request from the interrupt controller 22, the interrupt handler specifying unit 26 c of the hypervisor 26 specifies a guest ID serving as a destination of the interrupt by referring to the interrupt target register 22 a (S318 and S319).
  • Subsequently, the interrupt handler specifying unit 26 c checks an allocation state of the CPU allocating unit 26 b and detects that the CPU is allocated to the guest OS having the specified guest ID (S320).
  • Moreover, the interrupt handler specifying unit 26 c converts the DMA transfer request into a virtual interrupt request (S321) and sends the converted virtual interrupt request to a guest OS having the specified guest ID (S322 and S323). After that, the guest OS having received the virtual interrupt request executes an interrupt process and transmits the EOI to the interrupt controller when the interrupt process is completed (S324 and S325).
  • As above, in the information processing apparatus 20 according to the second embodiment, when multiple guest OS's are operating, the hypervisor 26 can determine which guest OS the interrupt process is directed to and perform a proxy process on the interrupt handler of the guest OS. Moreover, since the information processing apparatus 20 can finish the interrupt process without waiting until the CPU is allocated to the guest OS, the information processing apparatus 20 can process immediately a subsequent interrupt without delay. Moreover, since the information processing apparatus 20 directly invokes the interrupt handler of the guest OS without through the virtual interrupt, it is possible to efficiently execute an interrupt process to the guest OS. Moreover, by issuing an EOI by the interrupt handler, it is possible to process a subsequent interrupt without delay.
  • [c] Third Embodiment
  • While the embodiments of the present invention have been described hereinabove, the present invention may be implemented in various other forms other than the above-described embodiments. The other embodiments will be described below.
  • Protect Mode
  • The information processing apparatus disclosed herein may further store address information, in which an operation mode of a virtual machine, for example, is stored, as information stored in the guest ID management table described in the second embodiment. FIG. 11 is an exemplary diagram illustrating an example of a guest ID management table storing a protect mode. As illustrated in FIG. 11, the guest ID management table stores “protect mode” in addition to “guest ID and device ID” described in the second embodiment and the like. The “protect mode” stored herein is information representing a storage destination of an operation mode of a guest OS and is the header address of a virtual address space managed by the guest OS, for example. The operation mode read from an address indicated by the protect mode is called a protected virtual address mode, for example. The protect mode is stored by the interrupt controller 22 receiving the same from an operator or the like. As an example, the interrupt controller 22 stores information which the hypervisor 26 receives from an operator at the timing of S102 of FIG. 8 in the guest ID management table.
  • When the guest ID serving as the destination of an interrupt is specified, the interrupt destination specifying unit 22 d of the interrupt controller 22 also specifies the protect mode and registers the same in the interrupt target register 22 a and notifies the hypervisor 26 of the same. Moreover, when executing the interrupt handler, the interrupt executing unit 26 d of the hypervisor 26 reads the protect mode from the storage destination and executes the interrupt handler in the operation mode of respective guest OS's. Thus, since the information processing apparatus 20 can execute the interrupt handler in the operation mode of the respective guest OS's, it is possible to prevent destruction of a memory space or the like of other guest OS's.
  • Interrupt Type
  • The information processing apparatus disclosed herein may determine whether the hypervisor 26 performs an interrupt process as a proxy depending on the type of interrupts. For example, information on the storage destination of an interrupt handler executed with respect to a hardware interrupt is stored in the interrupt handler management table 26 a of the hypervisor 26 in association with each of the guest OS's. By doing so, a hardware interrupt can be executed preferentially to a software interrupt.
  • The hardware interrupt is an interrupt process such as an Ethernet (registered trademark) driver process, a SCSI (small computer system interface) host adapter driver process, or a serial driver process. The hardware interrupt is an interrupt process which requires execution of an interrupt to be completed as fast as possible when the interrupt occurs so that the execution time decreases. Moreover, the software interrupt is an interrupt process such as a TCP (transmission control protocol)/IP (internet protocol) protocol process, a SCSI protocol process, or a terminal control process. The software interrupt is an interrupt process which does not require fast completion of execution as compared to the hardware interrupt.
  • The hypervisor of the information processing apparatus disclosed herein example performs execution in the context of a hardware interrupt handler, and only registration of a software interrupt is executed in the hardware interrupt handler, and the software interrupts are collectively executed later. FIG. 12 is an exemplary diagram illustrating changing of an execution method in accordance with the type of interrupts.
  • As illustrated in FIG. 12, the hypervisor holds a hardware interrupt handler executing a hardware interrupt, and the hardware interrupt handler holds an interrupt handler of each hardware interrupt as a fast interrupt handler. When a hardware interrupt occurs, the hypervisor activates a hardware interrupt handler to invoke the fast interrupt handler and executes an interrupt process as a proxy for the guest OS. After that, when execution is completed, the fast interrupt handler issues the EOI to an interrupt controller.
  • Moreover, when a software interrupt occurs, the hypervisor activates a hardware interrupt handler to convert the software interrupt into a virtual interrupt and notifies the kernel of the guest OS of the virtual interrupt. Upon receiving a virtual interrupt, the guest OS executes a slow interrupt handler. The slow interrupt handler is an interrupt handler that executes a software interrupt, for example. After that, when the guest OS acquires the execution right of a processor in accordance with a scheduler or the like, the slow interrupt handler of the guest OS executes a software interrupt handler to execute an interrupt process. When the process is completed, the software interrupt handler issues the EOI to the interrupt controller.
  • In the above example, although an example in which a hardware interrupt and a software interrupt occur as individual interrupts has been described, a hardware interrupt may be first executed with respect to a single external interrupt to issue the EOI, and then, the external interrupt may be collectively executed as a software interrupt. For example, when packets arrive at an NIC device, the interrupt controller generates an interrupt request and activates a hardware interrupt handler of the hypervisor. Since the external interrupt corresponds to a slow interrupt, the hardware interrupt handler of the hypervisor converts the external interrupt into a virtual interrupt and notifies the slow interrupt handler held by the kernel of the guest OS of the virtual interrupt. On the other hand, the hardware interrupt handler of the hypervisor invokes a fast interrupt handler of a registered guest and issues the EOI when the process of the fast interrupt handler is finished. After that, when the guest OS acquires the execution right of a processor in accordance with a scheduler or the like, the slow interrupt handler of the guest OS executes the software interrupt handler to execute an interrupt process.
  • Executing Method
  • In the second embodiment, an example in which the interrupt handler is read and executed when the execution right of a processor is not allocated to the guest OS, and the external interrupt is converted into a virtual interrupt request, and the virtual interrupt request is output to the guest OS when the execution right of a processor is allocated to the guest OS has been described. However, a method of executing interrupts in the information processing apparatus disclosed herein is not limited to this. For example, even when the execution right of a processor is allocated to an interrupt target guest OS, the hypervisor of the information processing apparatus may execute the interrupt handler as a proxy for the guest OS.
  • System
  • Among the processes described in the embodiments, all or part of the processes described to be automatically performed may be manually performed. Alternatively, all or part of the processes described to be manually performed may be automatically performed with publicly known methods. The processing procedures, control procedures, and specific names described in the above document and the drawings, for example, information including various data and parameters, may be arbitrarily modified unless otherwise specified.
  • The constituent elements of the devices depicted in the drawings are functionally conceptual, and need not necessarily to be physically configured as depicted in the drawings. That is, specific forms of distribution and integration of the devices are not limited to those illustrated in the drawings. For example, all or part of the devices may be functionally or physically distributed or integrated in arbitrary units according to various loads and the state of use. Moreover, all or an arbitrary part of the processing functions performed in each device may be realized by a CPU and a program analyzed and executed by the CPU, or may be realized as hardware by wired logic.
  • Program
  • Various processes described in the embodiments may be achieved by causing a computer system such as a personal computer or a workstation to execute a program prepared in advance. In the following description, an example of a computer system executing a program having the same function as the above-described embodiments will be described.
  • FIG. 13 is an exemplary diagram illustrating an example of a hardware configuration of a computer executing an interrupt control program. As illustrated in FIG. 13, a computer 100 includes a CPU 102, an input device 103, an output device 104, a communication interface 105, a medium reading device 106, an HDD (hard disk drive) 107, and a RAM (random access memory) 108. Moreover, the respective units illustrated in FIG. 13 are connected to each other by a bus 101.
  • The input device 103 is a mouse and a keyboard, the output device 104 is a display or the like, and the communication interface 105 is an interface such as an NIC. The HDD 107 stores information of the tables illustrated in FIG. 5 together with an interrupt control program 107 a. Although the HDD 107 is illustrated as an example of a recording medium, various programs may be stored in another computer readable recording medium such as a ROM (read only memory), a RAM (random access memory), or a CD-ROM and be read into the computer. A storage medium may be disposed in a remote site, and the computer may access the storage medium to acquire and use the program. Moreover, the acquired program may be stored in a recording medium of the computer itself and used.
  • The CPU 102 reads the interrupt control program 107 a and deploys the same into the RAM 108 to thereby operate an interrupt control processor 108 a that executes the respective functions described in FIG. 5 and the like. That is, the interrupt control processor 108 a executes the same functions as the storage control unit 22 c, the interrupt destination specifying unit 22 d, the interrupt handler specifying unit 26 c, and the interrupt executing unit 26 d described in FIG. 5. As above, the computer 100 reads and executes the program and operates as an information processing apparatus executing an interrupt control method.
  • For example, the computer 100 may implement the same functions as the above-described embodiments by reading the interrupt control program 107 a from a recording medium using the medium reading device 106 and executing the read interrupt control program 107 a. The program mentioned in the other embodiment is not limited to one which is executed by the computer 100. For example, the present invention can be similarly applied to when another computer or server executes the program and when the computer and the server execute the program in cooperation.
  • According to the embodiments, it is possible to execute an interrupt process efficiently.
  • All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiments of the present invention have been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.

Claims (8)

1. An information processing apparatus comprising:
an interrupt control unit that specifies a virtual machine serving as a destination of an interrupt request; and
a virtualization control unit that operates multiple virtual machines, the virtualization control unit including
a specifying unit that specifies a storage destination of an interrupt program corresponding to the virtual machine specified by the interrupt control unit based on information stored in a storage unit which stores information on a storage destination of an interrupt program in association with each of the multiple virtual machines, and
an execution control unit that reads and executes the interrupt program stored in the storage destination specified by the specifying unit.
2. The information processing apparatus according to claim 1, wherein
the interrupt control unit stores, when the virtualization control unit operates a virtual machine, a machine identifier for identifying the virtual machine operated and a device identifier for identifying an external device used by the virtual machine operated in association with each other in an identifier storage unit, and
when an interrupt request occurs, a machine identifier corresponding to a device identifier of a device that issues the interrupt request is specified from the identifier storage unit.
3. The information processing apparatus according to claim 2, wherein
the identifier storage unit further stores address information on an address in which an operation mode is stored in association with each of the multiple virtual machines,
the specifying unit further specifies address information corresponding to the virtual machine specified by the interrupt control unit, and
the execution control unit reads an operation mode based on the address information specified by the specifying unit, and executes the interrupt program in the read operation mode.
4. The information processing apparatus according to claim 1, wherein
(i) when an execution right of a processor is not allocated to the virtual machine specified by the interrupt control unit, the execution control unit reads and executes the interrupt program, and (ii) when the execution right of a processor is allocated to the virtual machine specified by the interrupt control unit, the execution control unit converts the interrupt request into a virtual interrupt request and outputs the virtual interrupt request to the virtual machine serving as the destination of the interrupt request.
5. The information processing apparatus according to claim 1, wherein
the storage unit stores information on a storage destination of an interrupt program executed with respect to a hardware interrupt in association with each of the multiple virtual machines, and
(i) the execution control unit, when the specifying unit specifies the storage destination of the interrupt program for a hardware interrupt, reads and executes the interrupt program stored in the storage destination specified, and (ii) the execution control unit, when the specifying unit does not specify the storage destination of an interrupt program for the interrupt request, converts the interrupt request into a virtual interrupt and outputs the virtual interrupt to the virtual machine serving as the destination of the interrupt request.
6. A method of controlling an interrupt, performed by an information processing apparatus, the method comprising:
specifying a storage destination of an interrupt program corresponding to a virtual machine specified by an interrupt control unit based on information stored in a storage unit which stores information on a storage destination of an interrupt program in association with each of multiple virtual machines, the interrupt control unit specifying a virtual machine serving as a destination of an interrupt request; and
reading and executing the interrupt program stored in the storage destination specified.
7. A computer readable storage medium having stored therein an interrupt control program for controlling an interrupt, the interrupt control program causing a computer to execute a process comprising:
specifying a storage destination of an interrupt program corresponding to a virtual machine specified by an interrupt control unit based on information stored in a storage unit which stores information on a storage destination of an interrupt program in association with each of multiple virtual machines, the interrupt control unit specifying a virtual machine serving as a destination of an interrupt request; and
reading and executing the interrupt program stored in the storage destination specified.
8. An information processing apparatus comprising:
a processor coupled to a memory,
wherein the processor is programmed to control an interrupt by:
specifying a virtual machine serving as a destination of an interrupt request;
specifying a storage destination of an interrupt program corresponding to the virtual machine specified in the specifying, by referring to the memory that stores information on a storage destination of an interrupt program in association with each of multiple virtual machines; and
reading and executing the interrupt program stored in the storage destination specified.
US13/477,113 2011-08-15 2012-05-22 Information processing apparatus and interrupt control method Abandoned US20130047157A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2011-177667 2011-08-15
JP2011177667A JP5737050B2 (en) 2011-08-15 2011-08-15 Information processing apparatus, interrupt control method, and interrupt control program

Publications (1)

Publication Number Publication Date
US20130047157A1 true US20130047157A1 (en) 2013-02-21

Family

ID=46690362

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/477,113 Abandoned US20130047157A1 (en) 2011-08-15 2012-05-22 Information processing apparatus and interrupt control method

Country Status (3)

Country Link
US (1) US20130047157A1 (en)
EP (1) EP2560096A1 (en)
JP (1) JP5737050B2 (en)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140229935A1 (en) * 2013-02-11 2014-08-14 Nvidia Corporation Virtual interrupt delivery from a graphics processing unit (gpu) of a computing system without hardware support therefor
US20140229648A1 (en) * 2013-02-13 2014-08-14 Red Hat Israel, Ltd Storing Interrupt Location for Fast Interrupt Register Access In Hypervisors
US20150020071A1 (en) * 2013-07-12 2015-01-15 Bluedata Software, Inc. Accelerated data operations in virtual environments
US9268593B2 (en) 2012-02-03 2016-02-23 Fujitsu Limited Computer-readable recording medium, virtual machine control method and information processing apparatus
US9329880B2 (en) 2013-02-13 2016-05-03 Red Hat Israel, Ltd. Counter for fast interrupt register access in hypervisors
CN107783913A (en) * 2016-08-31 2018-03-09 华为技术有限公司 A kind of resource access method and computer applied to computer
US9921891B1 (en) * 2015-03-31 2018-03-20 Integrated Device Technology, Inc. Low latency interconnect integrated event handling
US20180173558A1 (en) * 2015-07-23 2018-06-21 At&T Intellectual Property I, L.P. Data-Driven Feedback Control System for Real-Time Application Support in Virtualized Networks
US20190196865A1 (en) * 2017-12-25 2019-06-27 Renesas Electronics Corporation Semiconductor device
US10445009B2 (en) * 2017-06-30 2019-10-15 Intel Corporation Systems and methods of controlling memory footprint
US11042494B1 (en) * 2018-06-21 2021-06-22 Amazon Technologies, Inc. Direct injection of a virtual interrupt
US20220100574A1 (en) * 2019-06-11 2022-03-31 Denso Corporation Vehicular control device, vehicular display system, and vehicular display control method

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9330035B2 (en) * 2013-05-23 2016-05-03 Arm Limited Method and apparatus for interrupt handling
US9652270B2 (en) * 2014-03-21 2017-05-16 Intel Corporation Apparatus and method for virtualized computing
US10127068B2 (en) 2016-06-30 2018-11-13 Amazon Technologies, Inc. Performance variability reduction using an opportunistic hypervisor
US10318311B2 (en) * 2016-06-30 2019-06-11 Amazon Technologies, Inc. Memory allocation techniques at partially-offloaded virtualization managers
JP6838233B2 (en) * 2018-06-14 2021-03-03 日立Astemo株式会社 Vehicle control device, interrupt information management method and interrupt information management program
TWI759677B (en) 2019-02-14 2022-04-01 美商萬國商業機器公司 Method, computer system and computer program product for directed interrupt virtualization with fallback
TWI764082B (en) * 2019-02-14 2022-05-11 美商萬國商業機器公司 Method, computer system and computer program product for interrupt signaling for directed interrupt virtualization
CA3130164A1 (en) 2019-02-14 2020-08-20 International Business Machines Corporation Directed interrupt for multilevel virtualization

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530860A (en) * 1992-05-15 1996-06-25 Fujitsu Limited Virtual computer control system effectively using a CPU with predetermined assignment ratios of resources based on a first and second priority mechanism
US20050080970A1 (en) * 2003-09-30 2005-04-14 Stalinselvaraj Jeyasingh Chipset support for managing hardware interrupts in a virtual machine system
US20090183180A1 (en) * 2001-06-08 2009-07-16 Vmware, Inc. High-performance virtual machine networking
US7665088B1 (en) * 1998-05-15 2010-02-16 Vmware, Inc. Context-switching to and from a host OS in a virtualized computer system
US20110107007A1 (en) * 2009-10-29 2011-05-05 Red Hat, Inc. Asynchronous page faults for virtual machines
US20110213942A1 (en) * 2006-09-28 2011-09-01 Zimmer Vincent J Parallel memory migration

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001229038A (en) * 2000-02-17 2001-08-24 Hitachi Ltd Multi-operating computer system
JP2006155272A (en) * 2004-11-30 2006-06-15 Hitachi Ltd Control method and program for virtual computer

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530860A (en) * 1992-05-15 1996-06-25 Fujitsu Limited Virtual computer control system effectively using a CPU with predetermined assignment ratios of resources based on a first and second priority mechanism
US7665088B1 (en) * 1998-05-15 2010-02-16 Vmware, Inc. Context-switching to and from a host OS in a virtualized computer system
US20090183180A1 (en) * 2001-06-08 2009-07-16 Vmware, Inc. High-performance virtual machine networking
US20050080970A1 (en) * 2003-09-30 2005-04-14 Stalinselvaraj Jeyasingh Chipset support for managing hardware interrupts in a virtual machine system
US20110213942A1 (en) * 2006-09-28 2011-09-01 Zimmer Vincent J Parallel memory migration
US20110107007A1 (en) * 2009-10-29 2011-05-05 Red Hat, Inc. Asynchronous page faults for virtual machines

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9268593B2 (en) 2012-02-03 2016-02-23 Fujitsu Limited Computer-readable recording medium, virtual machine control method and information processing apparatus
US9158569B2 (en) * 2013-02-11 2015-10-13 Nvidia Corporation Virtual interrupt delivery from a graphics processing unit (GPU) of a computing system without hardware support therefor
US20140229935A1 (en) * 2013-02-11 2014-08-14 Nvidia Corporation Virtual interrupt delivery from a graphics processing unit (gpu) of a computing system without hardware support therefor
US10331589B2 (en) * 2013-02-13 2019-06-25 Red Hat Israel, Ltd. Storing interrupt location for fast interrupt register access in hypervisors
US20140229648A1 (en) * 2013-02-13 2014-08-14 Red Hat Israel, Ltd Storing Interrupt Location for Fast Interrupt Register Access In Hypervisors
US9329880B2 (en) 2013-02-13 2016-05-03 Red Hat Israel, Ltd. Counter for fast interrupt register access in hypervisors
US10740148B2 (en) * 2013-07-12 2020-08-11 Hewlett Packard Enterprise Development Lp Accelerated data operations in virtual environments
US20150020071A1 (en) * 2013-07-12 2015-01-15 Bluedata Software, Inc. Accelerated data operations in virtual environments
US10055254B2 (en) 2013-07-12 2018-08-21 Bluedata Software, Inc. Accelerated data operations in virtual environments
US9921891B1 (en) * 2015-03-31 2018-03-20 Integrated Device Technology, Inc. Low latency interconnect integrated event handling
US10642640B2 (en) * 2015-07-23 2020-05-05 At&T Intellectual Property I, L.P. Data-driven feedback control system for real-time application support in virtualized networks
US20180173558A1 (en) * 2015-07-23 2018-06-21 At&T Intellectual Property I, L.P. Data-Driven Feedback Control System for Real-Time Application Support in Virtualized Networks
EP3467663A4 (en) * 2016-08-31 2019-07-24 Huawei Technologies Co., Ltd. Resource access method applied to computer, and computer
CN107783913A (en) * 2016-08-31 2018-03-09 华为技术有限公司 A kind of resource access method and computer applied to computer
US10970104B2 (en) 2016-08-31 2021-04-06 Huawei Technologies Co., Ltd. Resource access method applied to computer and computer
US10445009B2 (en) * 2017-06-30 2019-10-15 Intel Corporation Systems and methods of controlling memory footprint
US20190196865A1 (en) * 2017-12-25 2019-06-27 Renesas Electronics Corporation Semiconductor device
CN109960567A (en) * 2017-12-25 2019-07-02 瑞萨电子株式会社 Semiconductor equipment
EP3502887A3 (en) * 2017-12-25 2019-08-28 Renesas Electronics Corporation Interrupt handling for multiple virtual machines
US10936357B2 (en) * 2017-12-25 2021-03-02 Renesas Electronics Corporation Semiconductor device
US11042494B1 (en) * 2018-06-21 2021-06-22 Amazon Technologies, Inc. Direct injection of a virtual interrupt
US11809349B1 (en) * 2018-06-21 2023-11-07 Amazon Technologies, Inc. Direct injection of a virtual interrupt
US20220100574A1 (en) * 2019-06-11 2022-03-31 Denso Corporation Vehicular control device, vehicular display system, and vehicular display control method

Also Published As

Publication number Publication date
JP5737050B2 (en) 2015-06-17
JP2013041409A (en) 2013-02-28
EP2560096A1 (en) 2013-02-20

Similar Documents

Publication Publication Date Title
US20130047157A1 (en) Information processing apparatus and interrupt control method
US10248539B2 (en) Managing software performance tests based on a distributed virtual machine system
JP5644150B2 (en) Service providing system, virtual machine server, service providing method, and service providing program
US9256464B2 (en) Method and apparatus to replicate stateful virtual machines between clouds
US8914458B2 (en) Look-ahead handling of page faults in I/O operations
US8255475B2 (en) Network interface device with memory management capabilities
EP3343364B1 (en) Accelerator virtualization method and apparatus, and centralized resource manager
US8595526B2 (en) System and method for power reduction by sequestering at least one device or partition in a platform from operating system access
US9354952B2 (en) Application-driven shared device queue polling
US20110145471A1 (en) Method for efficient guest operating system (os) migration over a network
US20160323427A1 (en) A dual-machine hot standby disaster tolerance system and method for network services in virtualilzed environment
EP4160424A2 (en) Zero-copy processing
US7926067B2 (en) Method and system for protocol offload in paravirtualized systems
US20140089451A1 (en) Application-assisted handling of page faults in I/O operations
US20130247056A1 (en) Virtual machine control method and virtual machine
US9009702B2 (en) Application-driven shared device queue polling in a virtualized computing environment
EP1770520A2 (en) Operating cell processors over a network
US9268593B2 (en) Computer-readable recording medium, virtual machine control method and information processing apparatus
JP2016513846A (en) Memory sharing over the network
JP5669851B2 (en) Apparatus, method, and computer program for efficient communication between partitions in a logically partitioned system
WO2022143714A1 (en) Server system, and virtual machine creation method and apparatus
US9612877B1 (en) High performance computing in a virtualized environment
Guay et al. Early experiences with live migration of SR-IOV enabled InfiniBand
JP2015197802A (en) Information processing device, information processing method and program
US10901773B2 (en) Sharing devices between virtual machines in view of power state information

Legal Events

Date Code Title Description
AS Assignment

Owner name: FUJITSU LIMITED, JAPAN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SUZUKI, KAZUHIRO;REEL/FRAME:028245/0159

Effective date: 20120508

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION