WO2012117465A1 - 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路 - Google Patents

仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路 Download PDF

Info

Publication number
WO2012117465A1
WO2012117465A1 PCT/JP2011/005108 JP2011005108W WO2012117465A1 WO 2012117465 A1 WO2012117465 A1 WO 2012117465A1 JP 2011005108 W JP2011005108 W JP 2011005108W WO 2012117465 A1 WO2012117465 A1 WO 2012117465A1
Authority
WO
WIPO (PCT)
Prior art keywords
virtual machine
virtual
program
storage area
type
Prior art date
Application number
PCT/JP2011/005108
Other languages
English (en)
French (fr)
Inventor
忠雄 谷川
Original Assignee
パナソニック株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by パナソニック株式会社 filed Critical パナソニック株式会社
Priority to JP2012539103A priority Critical patent/JP5981845B2/ja
Priority to CN201180020496.3A priority patent/CN102859502B/zh
Priority to US13/583,151 priority patent/US20120331465A1/en
Publication of WO2012117465A1 publication Critical patent/WO2012117465A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine

Definitions

  • the present invention relates to a virtual machine system, and more particularly to a technology for controlling access to a storage area from a virtual machine.
  • a system for controlling execution of a plurality of virtual machines is known as a virtual machine system.
  • Patent Literature 1 discloses a technique for generating a child virtual computer by forking a parent virtual computer
  • Patent Literature 2 discloses a virtual computer based on a request from an application program executed on the virtual computer.
  • a technique for generating a child virtual computer by cloning a computer is disclosed.
  • the application program to be executed includes an application program authenticated as not including malware (hereinafter referred to as “authenticated application program”) and malware. Otherwise, there may be a mixture of application programs that are not authenticated (hereinafter referred to as “unauthenticated application programs”).
  • the authenticated application program may be attacked by executing the malware.
  • an authenticated application program As an example of a case where an authenticated application program is attacked, for example, when an authenticated application program or data is tampered with, the authenticated application program is executed in an inappropriate manner and the system administrator authority is deprived. As a result, the computer system may be illegally hijacked, and information that should be kept secret from the outside, such as paid content, personal information, and encryption keys stored in the system may be read out.
  • a conventional virtual machine system that dynamically generates a virtual machine
  • when a new application program is executed when there is no virtual machine for executing the application program, the virtual machine system is based on the parent virtual machine.
  • a new child virtual machine is generated, and the child virtual machine is caused to execute the application program.
  • the child virtual machine generated from the parent virtual machine has the same function as the parent virtual machine. Therefore, if an authenticated application program is included in the application program to be executed by the parent virtual machine, even if it is a child virtual machine generated to execute the unauthenticated application program An authenticated application program will be included in the target application program.
  • the authenticated application program may be attacked by the malware.
  • the present invention has been made in view of such a problem, and even when an authenticated application program and an unauthenticated application program are mixed in the application program to be executed by the virtual machine, By executing malware contained in unauthenticated application programs, it is possible to prevent unauthorized execution of software such as attacks on authenticated application programs that cause system hijacking, data theft, and tampering.
  • An object is to provide a virtual computer system.
  • a virtual computer system includes a storage device, a processor connected to the storage device, and a hyper that is executed on the processor and causes the processor to control the execution of a plurality of virtual computers.
  • a virtual machine system comprising a visor, An access control unit that controls access from the virtual machine to the storage area of the storage device is provided, and the storage device stores a first storage area for storing the first type program and a second storage for storing the second type program.
  • the hypervisor includes a startup request receiving unit for receiving a startup request for the first type program or the second type program from the virtual machine, and the startup request receiving unit executed by the processor, When a startup request for the first type program is received, a virtual machine for executing the first type program is generated, the generated virtual machine is managed as the first type virtual machine, and the second type program When a startup request is received, a virtual computer for executing the second type program is generated, and the generated virtual computer is used as the second type virtual computer.
  • a virtual machine generating unit for managing the virtual machine wherein the access control unit manages the access control as the first type virtual machine managed by the virtual machine generating unit executed by the processor. Access to the second storage area from a computer is prohibited.
  • the unauthenticated application program is stored in the first storage area as the first type program
  • the authenticated application program is stored in the second storage area as the second type program.
  • Block diagram showing the main hardware configuration of the virtual machine system 100 Operation mode diagram showing operation modes of the processor 101 Data structure diagram showing the data structure of the memory protection table Data structure diagram showing the data structure of memory protection information Storage area diagram showing division of storage area of memory 102 Block diagram showing a program module to be executed on the processor 101
  • Data structure diagram of application group management table 700 Data structure diagram of virtual machine management table 800
  • Data structure diagram of virtual machine state table 900 Data structure of access permission information 1000
  • Storage area diagram showing division of storage area of memory 102 Flow chart of virtual machine switching process Memory access processing flowchart
  • Application program execution flowchart A block diagram showing the main hardware configuration of the virtual machine system 1500 Block diagram showing a program module to be executed on the processor 101 Block diagram showing a program module to be executed on the processor 101 Schematic configuration diagram of a virtual machine system 1800 in a modified example
  • a virtual machine system in which a plurality of operating systems that are executed in a supervisor mode of a processor are time-division controlled by a hypervisor will be described.
  • This virtual machine system includes a memory protection unit that controls access from the virtual machine to the memory storage area in addition to the processor. Then, the hypervisor executed by the processor and the memory protection unit operate in cooperation so that access to the storage area of the memory and access to the predetermined area are prohibited for each virtual machine. To control.
  • FIG. 1 is a block diagram showing the main hardware configuration of the virtual machine system 100.
  • the virtual computer system 100 is a computer device as hardware, and includes an integrated circuit 110, an input device 131, and an output device 132.
  • the integrated circuit 110 includes a processor 101, a memory 102, a cache memory 105, an MMU (Memory Management Unit) 106, a memory protection unit 107, a timer 108, a DMAC (Direct Memory Access Controller) 109, an internal bus 120, a first interface 121, and a first interface 121.
  • the memory 102 includes a ROM (Read Only Memory) 103 and a RAM (Random Access Memory) 104.
  • the processor 101 is connected to the cache memory 105 and the MMU 106 and executes a program stored in the ROM 103 or the RAM 104, thereby executing the ROM 103, the RAM 104, the cache memory 105, the MMU 106, the memory protection unit 107, the timer 108, and the input device 131.
  • the output device 132 is controlled to realize various functions.
  • FIG. 2 is an operation mode diagram showing an operation mode provided in the processor 101.
  • the processor 101 includes a user mode 230 for executing an application program (task A231, task K232, task L233, etc. in the figure), an operating system (first OS (Operating System) 221 in the figure), A second OS 222, a third OS 223, etc.) and a privileged mode (hereinafter referred to as "supervisor mode") 220 for executing the hypervisor.
  • a user mode 230 for executing an application program (task A231, task K232, task L233, etc. in the figure), an operating system (first OS (Operating System) 221 in the figure), A second OS 222, a third OS 223, etc.) and a privileged mode (hereinafter referred to as "supervisor mode") 220 for executing the hypervisor.
  • first OS Operating System
  • second OS 222 a privileged mode
  • supervisor mode privileged mode
  • the application program executed in the user mode 230 is time-sharing controlled by the operating system executed in the supervisor mode 220, and the operating system executed in the supervisor mode 220 is controlled by the hypervisor executed also in the supervisor mode 220. Split execution is controlled.
  • the ROM 103 is connected to the memory protection unit 107 and stores a program that defines the operation of the processor 101 and data used by the processor 101.
  • the RAM 104 is connected to the memory protection unit 107 and stores a program that defines the operation of the processor 101 and data used by the processor 101.
  • the cache memory 105 is connected to the processor 101, the MMU 106, and the internal bus 120, and is used by the processor 101.
  • the MMU 106 is connected to the processor 101, the cache memory 105, and the internal bus 120, and includes a physical address that specifies an address of a physical storage area of the memory 102 and a logical address that specifies an address of a logical storage area used by the processor 101. Has a conversion function.
  • the memory protection unit 107 is connected to the memory 102 and the internal bus 120, and refers to the function of storing the memory protection table and the memory protection information therein, and the memory protection table and the memory protection information to be stored. A function of controlling access to the storage area of the memory 102 from 120 bus masters (here, the processor 101 and the DMAC 109).
  • FIG. 3 is a data structure diagram showing the data structure of the memory protection table 300 stored by the memory protection unit 107.
  • the memory protection table 300 is configured by associating an area ID 310, a start address 320, and a size 330 with each other.
  • the area ID 310 is an identifier for identifying a predetermined storage area in the storage area of the memory 102.
  • the start address 320 is a start address of a predetermined storage area identified by the corresponding area ID 310.
  • the size 330 indicates the size of a predetermined storage area identified by the corresponding area ID 310 in megabytes.
  • a predetermined storage area whose area ID 310 is “1” is a storage area whose start address is “0x8000 — 0000” and whose size is 2 MB (Mega Byte). Show.
  • FIG. 4 is a data structure diagram showing the data structure of the memory protection information 400 stored by the memory protection unit 107.
  • the memory protection information 400 is configured by associating an area ID 410 and access information 420 with each other.
  • the area ID 410 is an identifier for identifying a predetermined storage area in the storage area of the memory 102, similarly to the area ID 310.
  • the access information 420 is information indicating restrictions on access to a predetermined storage area identified by the corresponding area ID 410, and (1) information indicating that both reading and writing are permitted (hereinafter referred to as “R”). / W ”) and (2) information indicating that reading is possible and writing is impossible (hereinafter referred to as“ RO ”) and (3) information indicating that reading is impossible and writing is possible (hereinafter“ WO ”). And 4) information indicating that both reading and writing are impossible (hereinafter referred to as “NA”).
  • a predetermined area where the area ID 410 is “1” cannot be read or written, and a predetermined area where the area ID 410 is “2” can be read or written.
  • the predetermined area where the area ID 410 is “3” is readable and writable, and the predetermined area where the area ID 410 is “4” is not readable and writable.
  • FIG. 5 is a storage area diagram of the memory 102 showing that control of access to the storage area of the memory 102 by the memory protection unit 107 is performed by being divided into a plurality of predetermined areas.
  • the storage area of the memory 102 is referred to by the memory protection unit 107 by referring to the memory protection table, the area A501 in which the area ID 310 is “1”, and the area B502 in which the area ID 310 is “2”.
  • the area ID 310 is divided into an area C 503 in which the area ID 310 is “3”, an area D 504 in which the area ID 310 is “4”, and the like.
  • the timer 108 is connected to the internal bus 120 and controlled by the processor 101.
  • the DMAC 109 is connected to the internal bus 120, an input device 131 connected to the first interface 121, an output device 132 connected to the second interface 122, an external integrated circuit connected to the third interface 123, and the like. It has a function of performing data transfer with the memory 102 without using the processor 101.
  • the internal bus 120 is connected to the MMU 106, the cache memory 105, the memory protection unit 107, the timer 108, the first interface 121, the second interface 122, the third interface 123, and the DMAC 109, and transmits signals between these connected circuits. It has the function to do.
  • the first interface 121, the second interface 122, and the third interface 123 are connected to the internal bus 120, respectively, and function to mediate the exchange of signals between the internal bus 120 and the input device 131, the internal bus 120 and the output. It has a function of mediating exchange of signals with the device 132 and a function of mediating exchange of signals with an external integrated circuit or the like.
  • the input device 131 includes a keyboard, a mouse, a camera, a sensor, and the like, is connected to the first interface 121, is controlled by the processor 101, and generates data corresponding to a user operation etc. through the keyboard, mouse, camera, sensor, It has a function of notifying that a user operation or the like has occurred and sending the generated data to the processor 101.
  • the output device 132 includes a display, a speaker, and the like, connected to the second interface 122, controlled by the processor 101, and has a function of displaying and outputting a character string, an image, a sound, and the like using the display, the speaker, and the like.
  • the virtual machine system 100 described above realizes various functions by the processor 101 executing programs stored in the ROM 103 and the RAM 104.
  • FIG. 6 is a block diagram showing program modules (hereinafter simply referred to as “modules”) to be executed on the processor 101 at a certain time t0.
  • a module group 600 is a set of modules to be executed by the processor 101. Each module included in the module group 600 has a corresponding program stored in the storage area of the memory 102. Yes.
  • Task 1A611, task 2A612, task 3A613, task 2B614, and task 3C615 are tasks executed in the user mode of the processor 101.
  • OS1A621, OS1B622, and OS1C623 is a multitasking operating system executed in the supervisor mode of the processor 101.
  • the hypervisor 630 is a hypervisor that is executed in the supervisor mode of the processor 101.
  • the application program is executed and controlled by the multitasking operating system executed in the supervisor mode and executed in the user mode.
  • the operating system is controlled by the hypervisor and executed in the supervisor mode.
  • the application program can request a predetermined process from the operating system by calling an operating system calling routine prepared in advance. Further, the operating system can request the hypervisor for a predetermined process by calling a hypervisor call routine prepared in advance.
  • the OS 1A 621 controls the execution of the task 1A 611, the task 2A 612, and the task 3A 613, and causes the system including the OS 1A 621, the task 1A 611, the task 2A 612, and the task 3A 613 to function as the first virtual machine 601.
  • the OS 1B 622 controls the execution of the task 2B 614 and causes the system including the OS 1B 622 and the task 2B 614 to function as the second virtual computer 602.
  • the OS 1C 623 controls the execution of the task 3C 615 and causes the system including the OS 1C 623 and the task 3C 615 to function as the third virtual machine 603.
  • the second virtual machine 602 is a child virtual machine generated by the fork method using the first virtual machine 601 as a parent virtual machine
  • the third virtual machine 603 uses the first virtual machine 601 as a parent virtual machine. This is a child virtual machine generated by the fork method. The generation of a virtual computer using the fork method will be described later.
  • the hypervisor 630 includes three modules, a VM (Virtual Machine) management table holding unit 640, a VM execution control unit 650, and a VM memory management unit 660.
  • the VM execution control unit 650 further includes a VM activation unit.
  • the VM memory management unit further includes a protection setting information holding unit 661, a protection setting unit 662, and COW (Copy On Write), including four modules 651, a VM execution unit 652, a VM end unit 653, and a request reception unit 654. Three modules with the processing unit 663 are included.
  • the VM management table holding unit 640 has a function of storing a predetermined application group management table, a predetermined virtual computer management table, and a virtual computer state table generated by the VM execution unit 652.
  • FIG. 7 is a data structure diagram showing a data structure of the application group management table 700 stored by the VM management table holding unit 640.
  • the application group management table 700 is configured such that an application group ID 710 and an application program name 720 are associated with each other.
  • Application program name 720 is the name of an application program that identifies the application program.
  • Application group ID 710 is an identifier for identifying the application program group to which the application program specified by the corresponding application program name 720 belongs.
  • application programs named as notepad, calculator, and terminal setting belong to an application program group whose application group ID is “1”, and an application named DTV (Digital Television) application.
  • the program indicates that it belongs to an application program group whose application group ID is “2”.
  • FIG. 8 is a data structure diagram showing the data structure of the virtual machine management table 800 stored by the VM management table holding unit 640.
  • the virtual machine management table 800 includes a VMID 810 and an application group ID 820 associated with each other.
  • Application group ID 820 is an identifier similar to application group ID 710.
  • VMID 810 is an identifier for identifying a virtual machine for executing an application program belonging to the application program group identified by the corresponding application group ID 820.
  • a virtual machine identified by VMID 810 “1” is identified by an application program belonging to an application program group identified by application group ID 820 “1” by “4”.
  • the virtual machine is for executing an application program belonging to the application program group.
  • FIG. 9 is a data structure diagram showing a data structure of the virtual machine state table 900 stored by the VM management table holding unit 640.
  • the virtual machine state table 900 is configured by associating a VMID 910 with an execution state 920.
  • VMID 910 is an identifier for identifying a virtual machine.
  • the execution state 920 is information indicating the execution state of the virtual machine identified by the corresponding VMID 910.
  • the virtual machine is activated and subjected to time division execution processing, and performs a new task process.
  • the termination process for terminating the virtual machine refers to a process for releasing a storage area secured by the hypervisor and the virtual machine itself in order to execute the virtual machine.
  • the request receiving unit 654 has a function of receiving a request for starting a new application program from the operating system of the virtual machine being executed and sending a signal indicating that the start request has been received to the VM starting unit 651.
  • the VM startup unit 651 has the following three functions.
  • Function 1 A function for generating a new child virtual machine by a fork method based on a parent virtual machine in order to execute a new application program.
  • fork-based virtual machine generation is a one-to-one correspondence between all storage areas assigned to a parent virtual machine and all storage areas assigned to a newly created virtual machine.
  • a new virtual machine is generated by mapping the storage area allocated to the parent virtual machine to the storage area of the newly generated virtual machine.
  • the storage area of the parent virtual machine and the newly created virtual machine storage area are managed by the COW processing unit 663 in a copy-on-write manner. It becomes. Details of storage area management by the COW processing unit 663 using the copy-on-write method will be described later.
  • Function 2 When a new child virtual machine is generated to execute a new application program, the application group management table 700 and the virtual machine management table 800 stored in the VM management table holding unit 640 are referred to.
  • the VMID which is an identifier for identifying the new child virtual machine, is assigned to the new virtual machine, and the virtual machine state table 900 stored in the VM management table holding unit 640 is assigned.
  • Function 3 VMID for generating a virtual machine that becomes a parent of all other virtual machines and identifying the created virtual machines when the VM booting unit 651 is started by initializing the processor 101 A function that sets “0”.
  • the VM execution unit 652 has a function of controlling the execution of a plurality of virtual machines using the timer 108 by a time-sharing execution control method.
  • the VM termination unit 653 receives a termination request that is a request for terminating the virtual machine from the virtual machine, and executes the termination process described above for the target virtual machine when the termination request is received. It has a function to terminate the virtual machine.
  • the protection setting information holding unit 661 has a function of storing access permission information.
  • FIG. 10 is a data structure diagram showing a data structure of the access permission information 1000 stored by the protection setting information holding unit 661.
  • the access permission information 1000 is configured by associating an area ID 1010, a VMID 1020, and access information (NA, R / W, RO, etc. in the figure).
  • the access permission information 1000 includes a predetermined original access information portion (a portion corresponding to the area ID 1010 corresponding to 1 to 6) and a portion added to the predetermined original access information by the COW processing unit 663.
  • Area ID 1010 is a portion corresponding to area ID 1010 other than 1 to 6).
  • the area ID 1010 is an identifier for identifying a predetermined storage area in the storage area of the memory 102, similarly to the area ID 310.
  • VMID 1020 is an identifier for identifying a virtual machine, similarly to VMID 910.
  • the access information is information indicating a restriction on access to the predetermined storage area identified by the corresponding area ID 1010 for the virtual machine identified by the corresponding VMID 1020. This is any one of four pieces of information of R / W, RO, WO, and NA.
  • this access permission information 1000 for example, for a virtual machine identified by VMID 1020 “1”, a predetermined area where area ID 1010 is “1” cannot be read or written, and area ID 1010 is “2”.
  • the predetermined area in which the area ID 1010 is “3” is readable and writable, and the predetermined area in which the area ID 1010 is “4” is readable. It is shown that writing is impossible.
  • the protection setting unit 662 has the following two functions.
  • Function 1 When switching virtual machines executed by the VM execution unit 652, each area ID 1010 corresponding to the VMID 1020 of the virtual machine to be switched from the access permission information 1000 stored by the protection setting information holding unit 661 A function of reading the attached access information, generating memory protection information 400 (see FIG. 4), and updating the memory protection information 400 stored in the memory protection unit 107 with the generated memory protection information 400.
  • Function 2 When the COW processing unit 663 updates the access permission information 1000 stored in the protection setting information holding unit 661, it is determined from the access permission information 1000 stored in the protection setting information holding unit 661 that The memory protection information 107 stored in the memory protection unit 107 is generated by reading the access information associated with each area ID 1010 for the VMID of the virtual machine that is created, and generating the memory protection information 400. A function of updating the information 400.
  • the COW processing unit 663 has the following two functions.
  • Function 1 A function that performs access management using the copy-on-write method for access to storage areas from virtual machines.
  • access management by the copy-on-write method means that a page that has not been rewritten by any virtual machine in the storage area of the parent virtual machine and the storage area of the child virtual machine is shared by both virtual machines.
  • the page rewritten by any of the virtual machines is an access management method in which a page used by a parent virtual machine and a page used by a child virtual machine are allocated to different storage areas and used.
  • Function 2 A function of updating the access permission information 1000 held by the protection setting information holding unit 661 when a new storage area is allocated to the virtual machine by performing access management by the copy-on-write method.
  • the access information corresponding to the VMID 1020 for identifying the target virtual machine becomes R / W, and the access permission information 1000 is updated, except for the target virtual machine.
  • the access information corresponding to the VMID 1020 for identifying all the virtual machines is set to NA.
  • the target virtual machine is a virtual machine that executes an unauthenticated application program
  • the execution of the virtual machine and the unauthenticated application program is monitored from the parent virtual machine or the virtual machine that executes the authenticated application program, etc.
  • the access information of the newly allocated memory area may be RO or R / W.
  • the second virtual machine 602 is a virtual machine generated by the VM starting unit 651 using the first virtual machine 601 as a parent virtual machine in order to execute the task 2B 614.
  • the third virtual machine 603 is a virtual machine generated by the VM starting unit 651 by using the first virtual machine 601 as a parent virtual machine in order to execute the task 3C615.
  • the task 2B 614 is a task generated based on the task 2A612 along with the generation of the second virtual computer 602.
  • the storage area used by the task 2A612 and the storage area used by the task 2B are the COW processing unit 663. Are managed in a copy-on-write manner.
  • the task 3C615 is a task generated based on the task 3A613 along with the generation of the third virtual machine 603.
  • the storage area used by the task 3A613 and the storage area used by the task 3C are the COW processing unit 663. Are managed in a copy-on-write manner.
  • the OS 1B 622 and the OS 1C 623 are operating systems corresponding to the OS 1A 621 of the first virtual computer 601.
  • the OS 1B 622 is generated along with the generation of the second virtual computer 602, and the OS 1C 623 is generated along with the generation of the third virtual computer 603.
  • the storage area used by the OS 1A 621, the storage area used by the OS 1B 622, and the storage area used by the OS 1C 623 are managed by the COW processing unit 663 in a copy-on-write manner.
  • the virtual machine system 100 configured as described above uses the storage area of the memory 102 in accordance with the method for using the storage area of the memory 102 described below.
  • FIG. 11 is a storage area diagram of the memory 102 showing how to use each storage area divided into predetermined areas in the storage area of the memory 102 at time t0.
  • a hypervisor allocation area 1101 is a predetermined storage area whose area ID 310 (see FIG. 3) is “1”, and corresponds to the area A501 in FIG. This area is set in advance so as to be an area for storing a code of the hypervisor 630 and to be a storage area used by the hypervisor 630. Further, by the original access information portion of the access permission information 1000 stored by the protection setting information holding unit 661, all virtual machines are set in advance as an area in which neither reading nor writing is possible.
  • the operating system allocation area 1102 is a predetermined storage area whose area ID 310 is “2”, and corresponds to the area B502 in FIG. This area is set in advance so that the code of the operating system to be executed by the processor 101 is stored, and the storage area is used by the operating system to be executed by the processor 101. Has been. This area is preset as an area accessible only by the processor 101 in the supervisor mode 220. Further, the virtual access machine whose VMID 1020 is “0” by the original access information part of the access permission information 1000 stored by the protection setting information holding unit 661 (that is, the first virtual machine that is the parent virtual machine of all other virtual machines). One virtual computer 601) is set in advance as an area where both reading and writing are possible, and all virtual machines other than this virtual machine are set as an area where reading and writing are not possible.
  • the first type program allocation area 1103 is a predetermined storage area in which the area ID 310 is “3”, and corresponds to the area C503 in FIG.
  • This area is an area for storing a program belonging to the application program group whose application group ID is “1” (hereinafter referred to as “first type program”), and by the first type program. It is set in advance to be a storage area to be used. Further, with respect to the virtual machine in which the VMID 1020 is “0” according to the original access information part of the access permission information 1000 stored by the protection setting information holding unit 661, an area where both reading and writing are possible, and the VMID 1020 is “1”. For the virtual machines to be read, areas that are readable and writable are set in advance, and for all other virtual machines, an area that is not readable and writable is set in advance.
  • the second type program allocation area 1104 is a predetermined storage area whose area ID 310 is “4”, and corresponds to the area D504 in FIG.
  • This area is set to be an area for storing programs belonging to the application program group whose application group ID is “2” (hereinafter referred to as “second type program”), and by the second type program. It is set in advance to be a storage area to be used. Further, with respect to the virtual machine in which the VMID 1020 is “0” according to the original access information part of the access permission information 1000 stored by the protection setting information holding unit 661, an area where both reading and writing are possible and the VMID 1020 is “2”. For the virtual machines to be read, areas that are readable and writable are set in advance, and for all other virtual machines, an area that is not readable and writable is set in advance.
  • the third type program allocation area 1105 is a predetermined storage area in which the area ID 310 is “5”, and corresponds to the area E505 in FIG.
  • This area is set to be an area for storing programs belonging to the application program group whose application group ID is “3” (hereinafter referred to as “third type program”), and by the third type program. It is set in advance to be a storage area to be used. Further, with respect to the virtual machine in which the VMID 1020 is “0” by the original access information portion of the access permission information 1000 stored by the protection setting information holding unit 661, an area where both reading and writing are possible, and the VMID 1020 is “3”. For the virtual machines to be read, areas that are readable and writable are set in advance, and for all other virtual machines, an area that is not readable and writable is set in advance.
  • the IO areas 1106 to 1108 are predetermined storage areas whose area IDs 310 are “K”, “L”, and “M”, and correspond to the areas K506, L507, and M508 in FIG.
  • This area is a method for sharing device control between virtual machines. Access settings that generate an exception when an I / O operation request is issued from an application program or operating system to a shared I / O register. The received exception is received by the hypervisor, and is set in advance to be an area for realizing I / O emulation in which the corresponding I / O operation is arbitrated and the proxy is performed by the hypervisor.
  • the IO areas 1106 to 1108 are both readable and writable for a virtual machine in which the VMID 1020 is “0” by the original access information part of the access permission information 1000 stored by the protection setting information holding unit 661.
  • the IO area 1106 is written to the IO area 1106 as an area where both reading and writing cannot be performed so that both the reading and writing can be shared.
  • the IO area 1108 can be an area that can only be read and written, and an area that can only be read and shared. Is set.
  • the allocation area 1111 for the first virtual machine of the second type program is a predetermined storage area in which the area ID 310 is “N”, and corresponds to the area N511 in FIG.
  • This area is an area newly allocated to the first virtual machine 601 by the COW processing unit 663 performing access management by the copy-on-write method related to the second type program, and the COW processing unit 663.
  • the access permission information 1000 stored by the protection setting information holding unit 661 is updated and set.
  • the second virtual computer allocation area 1112 of the second type program is a predetermined storage area with the area ID 310 of “N + 1”, and corresponds to the area N + 1 (512) in FIG.
  • This area is an area newly allocated to the second virtual machine 602 by the COW processing unit 663 performing access management by the copy-on-write method related to the second type program, and the COW processing unit 663.
  • the access permission information 1000 stored by the protection setting information holding unit 661 is updated and set.
  • the first virtual machine allocation area 1113 of the third type program is a predetermined storage area whose area ID 310 is “N + 2”, and corresponds to the area N + 2 (513) in FIG.
  • This area is an area that is newly allocated to the first virtual machine 601 by the COW processing unit 663 performing access management by the copy-on-write method related to the third type program, and the COW processing unit 663.
  • the access permission information 1000 stored by the protection setting information holding unit 661 is updated and set.
  • the third virtual computer allocation area 1114 of the third type program is a predetermined storage area whose area ID 310 is “N + 3”, and corresponds to the area N + 3 (514) in FIG.
  • This area is an area that is newly allocated to the third virtual machine 603 by the COW processing unit 663 performing access management by the copy-on-write method related to the third type program, and the COW processing unit 663.
  • the access permission information 1000 stored by the protection setting information holding unit 661 is updated and set.
  • the virtual machine switching process is a process for switching virtual machines to be executed by the processor 101.
  • FIG. 12 is a flowchart of the virtual machine switching process.
  • the processor 101 moves from the outside of the processor 101. This is started by the VM execution unit 652 when an interrupt request to a virtual machine that is not currently being executed is received.
  • the VM execution unit 652 identifies the virtual machine that is the switching destination (step S1200).
  • the VM execution unit 652 saves the register value of the processor 101 in a predetermined storage area associated with the currently executing virtual machine, and is currently executing.
  • the existing virtual machine is interrupted (step S1220).
  • this predetermined storage area is provided in a hypervisor allocation area 1101 that can be accessed only by the hypervisor 102 among the storage areas of the memory 102.
  • step S1220 When the processing in step S1220 is completed, the VM execution unit 652 performs a write-back process on the data stored in the cache memory 105 and flushes it (step S1230). In order to avoid a decrease in the execution speed due to the cache flush, the cache area that can be used for each virtual machine may be limited and step S1230 may be omitted.
  • the protection setting unit 662 handles each area ID 1010 for the VMID 1020 (see FIG. 10) that identifies the switching destination virtual machine specified by the VM execution unit 652 in the process of step S1200.
  • the attached access information is read to generate the memory protection information 400 (see FIG. 4), and the memory protection information 400 stored in the memory protection unit 107 is updated with the generated memory protection information 400 (step S1240).
  • the VM execution unit 652 restores the register value of the processor 101 saved in a predetermined storage area associated with the virtual machine to be switched to the register of the processor 101. (Step S1250), the virtual machine is activated (Step S1260). If the cache area that can be used for each virtual machine is limited and step S1230 is omitted, the cache area is switched in step S1260.
  • the virtual machine system 100 ends the virtual machine switching process.
  • the memory access process is an access control operation to the storage area of the memory 102 performed by the memory protection unit 107.
  • FIG. 13 is a flowchart of the memory access process.
  • the memory access process is started when the memory protection unit 107 receives an access request to the storage area of the memory 102 from the processor 101 via the internal bus 120.
  • the memory protection unit 107 refers to the stored memory protection table 300 (see FIG. 3), and the address of the received access request is a predetermined area identified by the area ID 310. Of which one of the predetermined areas is specified (step S1300).
  • the memory protection unit 107 refers to the stored memory protection information 400 (see FIG. 4), and the access type (either write or read) of the received access request,
  • the access information 420 associated with the area ID 410 identifying the identified area is compared (step S1310), and the access type of the received access request is associated with the area ID 410 identifying the identified area. It is checked whether the access information 420 is satisfied (step S1320).
  • step S1320 when the access type of the received access request satisfies the access information 420 associated with the area ID 410 that identifies the specified area (step S1320: Yes), the memory protection unit 107 executes the received access request (step S1330).
  • step S1320 if the access type of the received access request does not satisfy the access information 420 associated with the area ID 410 that identifies the specified area (step S1320: No), the memory protection unit 107 does not execute the received access request and notifies the processor 101 that the access to the memory area could not be executed (step S1340).
  • step S1330 When the memory protection unit 107 ends the process of step S1330 or when the process of step S1340 ends, the virtual machine system 100 ends the memory access process.
  • ⁇ Application program execution processing> In the application program execution process, when a request for starting a new application program is received from the operating system of the virtual machine being executed by the request receiving unit 654, the VM starting unit 651 executes the new application program. Is specified, and the specified virtual machine is instructed to execute the new application program.
  • the operating system of the virtual machine makes a request for starting a new application program to the request receiving unit 654, for example, when the user who uses the virtual machine system 100 operates the input device 131, the operating system There is a case where a task whose execution is controlled by the system requests the operating system to start a new application program.
  • FIG. 14 is a flowchart of application program execution processing.
  • the application program execution process is started when a request for starting a new application program is received from the operating system of the virtual machine being executed by the request receiving unit 654.
  • the request reception unit 654 When the request reception unit 654 receives a startup request for a new application program, the request reception unit 654 sends a signal indicating that the startup request has been received to the VM startup unit 651.
  • the VM activation unit 651 When the VM activation unit 651 receives a signal indicating that the activation request has been received, the VM activation unit 651 refers to the application group management table 700 (see FIG. 7) stored in the VM management table holding unit 640 and the application program to which the application program belongs. A group is specified (step S1400), and a virtual machine for executing an application program belonging to the specified application group with reference to the virtual machine management table 800 (see FIG. 8) stored by the VM management table holding unit 640 A computer is specified (step S1410).
  • the VM activation unit 651 refers to the virtual machine state table 900 (see FIG. 9) stored in the VM management table holding unit 640 and determines whether or not the identified virtual machine is being executed. This is checked (step S1420).
  • step S1420 if the identified virtual machine is not being executed (step S1420: No), the VM activation unit 651 further refers to the virtual machine state table 900 stored by the VM management table holding unit 640. Then, it is checked whether or not the identified virtual machine is in a termination process (step S1430).
  • step S1430 when the specified virtual machine is in the end process (step S1430: Yes), the VM activation unit 651 waits until the specified virtual machine is not in the end process (step S1430: Yes). Repeat the process.)
  • step S1430 when the specified virtual machine is not in the end process (step S1430: No), the VM activation unit 651 generates the specified virtual machine in the fork method (step S1440).
  • step S1420 when the identified virtual machine is being executed (step S1420: Yes) and when the process of step S1440 is completed, the VM activation unit 651 applies the target virtual machine operating system to the target operating system. A signal to start execution of the application to be sent is sent (step S1450).
  • step S1450 the virtual machine system 100 ends the application program execution process.
  • an application program whose application program name 720 is “Notepad” (hereinafter simply referred to as “Notepad”), and data used by the memopad are area IDs 1010 (FIG. 10).
  • Reference is stored in a predetermined area “3”
  • the application program name 720 is “mailer” (hereinafter simply referred to as “mailer”)
  • data used by the mailer is an area ID 1010.
  • the memo pad includes malware that activates the mailer and leaks personal information recorded in the address book to the outside. .
  • the virtual machine whose VMID 810 is “1” (see FIG. 7). (Hereinafter referred to as “virtual machine 1”) (see virtual machine management table 800 (see FIG. 8)).
  • the mailer and the data used by the mailer are stored in a predetermined area where the area ID 1010 is “5”, and access from the virtual machine 1 is prohibited by the memory protection unit 107 (FIG. 10). Access permission information 1000). For this reason, the malware cannot activate the mailer, tamper with the mailer, or access data used by the mailer. Therefore, the malware does not leak personal information recorded in the address book to the outside.
  • the virtual machine system 100 can attack the malware by the malware even if the malware is included in the application program to be executed by the virtual machine.
  • the risk that an application program that is not desired to be attacked can be kept lower than before.
  • a virtual machine system 1500 obtained by modifying a part of the virtual machine system 100 according to the first embodiment will be described as an embodiment of the virtual machine system according to the present invention.
  • the virtual computer system 1500 according to the second embodiment has a hardware configuration partially modified from the virtual computer system 100 according to the first embodiment, and a part of software to be executed is A part of the virtual computer system 100 according to the first embodiment is modified.
  • the virtual computer system 100 according to the first embodiment is an example of a configuration including the memory protection unit 107 that controls access to the storage area of the memory 102.
  • the virtual computer system 1500 according to the second embodiment includes a hardware This is an example in which a hypervisor executed by a processor without a memory protection unit as hardware has a function of controlling access to a storage area of the memory 102.
  • FIG. 15 is a block diagram showing the main hardware configuration of the virtual machine system 1500.
  • the virtual computer system 1500 is a computer device as hardware, like the virtual computer system 100, and the integrated circuit 110 is transformed into an integrated circuit 1510 from the virtual computer system 100 according to the first embodiment. It has been done.
  • FIG. 16 is a block diagram showing modules to be executed on the processor 101 at a certain time t0.
  • a module group 1600 is a set of modules to be executed by the processor 101. Each module included in the module group 1600 has a corresponding program stored in the storage area of the memory 102. Yes.
  • the module group 1600 in the virtual machine system 1500 is obtained by changing the hypervisor 630 to the hypervisor 1630 from the module group 600 in the virtual machine system 100 according to the first embodiment.
  • the hypervisor 1630 is modified such that the VM memory management unit 660 is changed to the VM memory management unit 1660 from the hypervisor 630 according to the first embodiment.
  • the VM memory management unit 1660 is modified so that a virtual MMU 1670 and a memory protection unit 1680 are added to the VM memory management unit 660 according to the first embodiment.
  • the virtual MMU 1670 cooperates with the MMU 106 to have a conversion function between a physical address that specifies the address of the physical storage area of the memory 102 and a logical address that specifies the address of the logical storage area used by the processor 101.
  • the virtual machine system 1500 assigns a logical storage area to each virtual machine and causes the virtual machine to execute (hereinafter, this logical storage area assigned to each virtual machine is referred to as a “primary logical storage area”, The address of the primary logical storage area is called “primary logical address”.) This primary logical address is set to be converted into a physical address used by the memory 102 by the MMU 106. .
  • this virtual MMU 1670 uses a logical storage address used in its own virtual machine (hereinafter, a logical storage area used by this virtual machine in its own virtual machine is referred to as “secondary logical storage”). This is a function for converting the address of the secondary logical storage area to the above-mentioned primary logical address.
  • the memory protection unit 1680 refers to the function of storing the memory protection table 300 (see FIG. 3) and the memory protection information 400 (see FIG. 4) therein, and the memory protection table 300 and the memory protection information 400 to be stored.
  • the virtual machine has a function of controlling access to the physical storage area of the memory 102 using the primary logical address.
  • the access control to the storage area of the memory 102 performed by the memory protection unit 1680 with reference to the memory protection table 300 and the memory protection information 400 is performed by the memory 102 performed by the memory protection unit 107 according to the first embodiment. This is similar to the control of access to the storage area (see ⁇ Memory Access Processing> in Embodiment 1), and the memory protection unit 107 is replaced with a memory protection unit 1680. Therefore, the description is omitted here.
  • the virtual machine system 1500 having the above-described configuration is similar to the virtual machine system 100 according to the first embodiment even when malware is included in the application program to be executed by the virtual machine. Therefore, the risk that an application program that is not originally intended to be executed can be suppressed to a lower level than before.
  • ⁇ Embodiment 3> ⁇ Overview>
  • a modified virtual machine system obtained by modifying a part of the virtual machine system 100 according to the first embodiment will be described as an embodiment of the virtual machine system according to the present invention.
  • the modified virtual machine system according to the third embodiment has the same hardware configuration as that of the virtual machine system 100 according to the first embodiment, but a part of the executed software is related to the first embodiment.
  • the virtual computer system 100 is partially modified.
  • this modified virtual machine system even when a plurality of virtual machines are executed, only one virtual machine (in this case, the first virtual machine) among the running virtual machines is used as a display, a keyboard, etc.
  • This is an example of a virtual computer system configured to directly control a device, and the other virtual computers indirectly control the device by requesting the first virtual computer to control the device.
  • FIG. 17 is a block diagram showing modules to be executed on the processor 101 at a certain time t0.
  • a module group 1700 is a set of modules to be executed by the processor 101. Each module included in the module group 1700 has a corresponding program stored in the storage area of the memory 102. Yes.
  • the module group 1700 in the modified virtual machine system is changed from the module group 600 in the virtual machine system 100 according to the first embodiment to the first virtual machine 601 being changed to the first virtual machine 1701, and the second virtual machine 602 being changed to the second virtual machine 602.
  • the computer 1702 is changed, and the third virtual computer 603 is changed to the third virtual computer 1703.
  • the first virtual machine 1701 is a parent virtual machine of all other virtual machines whose VMID 1020 is “0”, and the OS 1A 621 includes the device driver 1731 from the first virtual machine 601 in the first embodiment. It has been transformed to be changed.
  • the second virtual machine 1702 is a virtual machine generated by the fork method using the first virtual machine 1701 as a parent virtual machine by the VM activation unit 651 in order to execute the task 2B 614.
  • the second virtual machine 1702 in the first embodiment The OS 1B 622 is modified from the virtual machine 602 to be changed to OS 1B 1722 including a device driver 1732.
  • the third virtual machine 1703 is a virtual machine generated by the fork method using the first virtual machine 1701 as the parent virtual machine by the VM starting unit 651 in order to execute the task 3C615, and is the third virtual machine in the first embodiment.
  • the OS 1C 623 is modified from the virtual machine 603 to be changed to the OS 1C 1723 including the device driver 1733.
  • the device driver 1731 includes a front end unit 1741, a back end unit 1742, and a native unit 1743.
  • a device driver is a program that controls a so-called device.
  • the input / output functions of a virtual computer such as device control processing, file system processing, inter-process communication processing, and inter-virtual computer communication processing are used.
  • the program to be realized is also included.
  • the native unit 1743 is configured by an instruction code for directly controlling a target device and has a function of controlling the device.
  • the access information becomes R / W only for the first virtual computer 1701 by the access permission information 1000 (see FIG. 10) stored by the protection setting information holding unit 661.
  • the access information is set to be NA for other virtual machines.
  • the native unit 1743 is not executed by a virtual machine other than the first virtual machine 1701.
  • the back-end unit 1742 includes a front-end unit included in a virtual machine including itself, a function of communicating with a front-end unit included in a virtual machine other than the virtual machine including itself using a server client model, and a front-end unit that communicates Receives the operation command of the native unit 1743, outputs the received operation command of the native unit 1743 to the native unit 1743, and receives the data output from the native unit 1743 and transmits the received data to the front end unit for communication And a function of outputting.
  • the storage area of the memory 102 in which this program is stored has access information R / W only for the first virtual machine 1701 due to the access permission information 1000 stored by the protection setting information holding unit 661, and other virtual machines
  • the access information is set to be NA.
  • the back end unit 1742 is not executed by a virtual machine other than the first virtual machine 1701.
  • the front-end unit 1741 has a function of communicating with the back-end unit 1742 in a server client model, a function of sending an operation command of the native unit 1743 to the back-end unit 1742 to communicate, and data output from the back-end unit to communicate. It has the function to receive.
  • the storage area of the memory 102 in which this program is stored has access information R / W only for the first virtual machine 1701 due to the access permission information 1000 stored by the protection setting information holding unit 661, and other virtual machines
  • the access information is set to be RO. Accordingly, the front end unit can be executed by all virtual machines (corresponding to the front end unit 1741, the front end unit 1744, and the front end unit 1745 in FIG. 17).
  • the front end unit is executed by a plurality of virtual machines, the storage area of the memory 102 in which the front end unit is stored is managed by the COW processing unit 663 in a copy-on-write manner.
  • the device driver 1732 is generated based on the device driver 1731 in accordance with the generation of the second virtual machine 1702, and includes a front end unit 1744 generated based on the front end unit 1741.
  • the device driver 1732 does not include a native part and a back end part, but this includes a storage area of the memory 102 in which the native part 1743 is stored and a storage area of the memory 102 in which the back end part 1742 is stored. This is because the device driver 1732 cannot execute the native part and the back-end part because both reading and writing from the second virtual machine 1702 are disabled.
  • the device driver 1733 is generated based on the device driver 1731 in accordance with the generation of the third virtual machine 1703, and includes a front end unit 1745 generated based on the front end unit 1741.
  • the device driver 1733 does not include a native part and a back-end part, but this includes a storage area of the memory 102 in which the native part 1743 is stored and a storage area of the memory 102 in which the back-end part 1742 is stored. This is because the device driver 1733 cannot execute the native part and the back-end part because both reading from and writing to the third virtual machine 1703 are disabled.
  • the second virtual machine 1702 When the second virtual machine 1702 indirectly controls the device, the second virtual machine 1702 first outputs an operation command for the native unit 1743 to the front end unit 1744.
  • the front-end unit 1744 receives an operation command from the native unit 1743
  • the front-end unit 1744 communicates with the back-end unit 1742 using a server client model, and sends the operation command from the native unit 1743 to the back-end unit 1742.
  • the back end unit 1742 receives the operation command of the native unit 1743
  • the back end unit 1742 outputs the operation command of the native unit 1743 to the native unit 1743.
  • the second virtual computer operates the device.
  • the modified virtual machine system according to the third embodiment even if a plurality of virtual machines are the execution target, only the native unit 1743 of the first virtual machine 1701 directly connects the device. Therefore, device control can be performed exclusively.
  • the example of the three virtual computer systems has been described as an embodiment of the virtual computer system according to the present invention.
  • the present invention is not limited to the virtual machine system as shown in the above-described embodiment.
  • the hypervisor is not necessarily configured to execute a virtual machine in a time-sharing manner, and may be configured to execute a plurality of virtual machines in parallel.
  • the circuits are integrated in one integrated circuit 110. However, these circuits are not necessarily integrated in one integrated circuit.
  • the processor 101 and the cache memory 105 may be integrated on the first integrated circuit, and the other circuits may be integrated on the second integrated circuit.
  • the integrated circuits may be different from each other. It is also possible to have a configuration integrated in (3)
  • the case where the processor 101 is configured to include two operation modes has been described as an example.
  • the hypervisor has a higher privilege mode than the mode for executing the application program and the mode for executing the operating system.
  • the number of operation modes is not necessarily limited to two, and may be three or more, for example.
  • the operation mode for executing the hypervisor can be set to a privileged mode higher than that for executing the operating system, and the overhead of the virtual MMU processing and I / O emulation processing in the hypervisor can be greatly reduced. it can.
  • the case where the first virtual machine 601 is configured to be the parent of all other virtual machines has been described as an example. However, for each child virtual machine to be generated, storage in the memory 102 is performed. If the access restriction to the area can be realized, the parent virtual machine is not necessarily limited to the first virtual machine 601, for example, a virtual machine that is a child virtual machine of a certain virtual machine A configuration that can be a parent of a virtual machine may be used.
  • the case where the virtual computer is generated in the fork format has been described as an example. This is because the storage area of the memory 102 is efficiently used by generating the virtual machine in the fork format.
  • all the storage areas allocated to the parent virtual machine and all the storage areas allocated to the newly created virtual machine are allocated to the parent virtual machine so that there is a one-to-one correspondence.
  • a format for generating a new virtual machine by copying the stored storage area to a storage area of a newly created virtual machine can be considered.
  • the virtual MMU 1670 having the function of converting the secondary logical address to the primary logical address is included in the hypervisor 1630 has been described as an example. If the function of converting the logical address to the primary logical address can be realized, the virtual MMU 1670 does not necessarily need to be included in the hypervisor 1630. For example, in the integrated circuit 1510, the secondary logical address and the primary logical address are not included. A configuration including hardware having a function of performing conversion with a logical address may be employed. (7)
  • the configuration of the virtual machine system according to an embodiment of the present invention, modifications thereof, and each effect will be described.
  • a virtual computer system includes a storage device, a processor connected to the storage device, and a hyper that is executed on the processor and causes the processor to control the execution of a plurality of virtual computers.
  • a virtual machine system comprising a visor, comprising: an access control unit that controls access from a virtual machine to a storage area of the storage apparatus, wherein the storage apparatus stores a first type program And a second storage area for storing the second type program, wherein the hypervisor receives a start request for the first type program or the second type program from the virtual machine, and the processor
  • the activation request accepting unit executed by the command accepts the activation request for the first type program
  • the first type program is A virtual machine for executing the second type program when the generated virtual machine is managed as a first type virtual computer and a request for starting the second type program is received.
  • a virtual machine generation unit for generating a computer and managing the generated virtual machine as a second type virtual machine, wherein the access control unit executes the access control by the processor
  • the computer generation unit is configured to prohibit access to the second storage area from a virtual computer managed as the first type virtual computer.
  • the unauthenticated application program is stored in the first storage area as the first type program, and the authenticated application program is stored in the second storage area as the second type program.
  • the virtual machine that executes the unauthenticated application program cannot access the authenticated application program.
  • FIG. 18 is a schematic configuration diagram of a virtual machine system 1800 in the above modification.
  • the virtual machine system 1800 includes a processor 1801, an access control unit 1802, and a storage device 1803.
  • the storage device 1803 includes a first storage area 1811 and a second storage area 1812, and a hypervisor 1813 is loaded.
  • the hypervisor 1813 includes an activation request reception unit 1822 and a virtual machine generation unit 1822.
  • the processor 1801 is a processor connected to the storage device 1803 via the access control unit 1802. As an example, it is realized as the processor 101 (see FIG. 1) in the first embodiment.
  • the storage device 1803 includes a first storage area 1811 and a second storage area 1812. As an example, it is realized as the memory 102 (see FIG. 1) in the first embodiment.
  • the first storage area 1811 is a storage area for storing the first type program.
  • the first storage area 1811 is realized as an area C503 (see FIG. 5) in the first embodiment.
  • the first type program is realized as a memo pad (see FIG. 7) in the first embodiment as an example.
  • the second storage area 1812 is a storage area for storing the second type program.
  • the second storage area 1812 is realized as the area E505 (see FIG. 5) in the first embodiment.
  • the second type program is realized as a mailer (see FIG. 7) in the first embodiment as an example.
  • the hypervisor 1813 is a hypervisor that is executed on the processor 1801 and causes the processor 1801 to control the execution of a plurality of virtual machines, and includes an activation request reception unit 1822 and a virtual machine generation unit 1822.
  • this hypervisor 1813 is realized as the hypervisor 630 (see FIG. 6) in the first embodiment.
  • the activation request reception unit 1822 is a code group for receiving an activation request for the first type program or the second type program from the virtual machine. As an example, it is realized as the request reception unit 654 in the first embodiment.
  • the virtual machine generation unit 1823 generates a virtual machine for executing the first type program when the startup request reception unit 1822 executed by the 1801 processor receives a startup request for the first type program.
  • a virtual computer for executing the second type program is generated, and the generated virtual computer is generated.
  • the access control unit 1802 accesses the storage area of the storage device 1803 from the virtual computer from the virtual computer managed as the first type virtual computer by the virtual computer generation unit 1823 executed by the processor 1801. It has a function of controlling so that access to the second storage area is prohibited. As an example, this is realized as the memory protection unit 107 (see FIG. 1) in the first embodiment.
  • the access control unit includes a second area specifying information storage unit for storing second area specifying information for specifying an address of the second storage area, and the access control is performed using the second area specifying information storage unit.
  • the second region specifying information stored in the two region specifying information storage unit may be referred to.
  • the access control unit can specify the address of the second storage area without referring to the outside of the access control unit.
  • the storage device includes a program correspondence information storage area for storing program correspondence information for associating information for identifying a program and information for identifying a type of the program
  • the virtual computer generation unit includes: When the activation request accepting unit executed by the processor accepts a program activation request from a virtual machine, the type of the program is stored in the program correspondence information storage area.
  • the virtual machine generator can manage the type of virtual machine based on the program correspondence information stored in the program correspondence information storage area.
  • the virtual machine generation unit is configured to execute the virtual machine when the start request receiving unit executed by the processor receives a start request for the first type program or the second type program from the virtual computer.
  • the storage area in the storage device may be assigned to the virtual machine to be generated by a fork method based on the storage area in the storage device that is assigned to the requesting virtual computer of the activation request. Good.
  • the virtual machine generation unit executed by the processor assigns a storage area to the first virtual machine to the second virtual machine.
  • the access to the storage area in the storage device which is performed by the first virtual machine and the second virtual machine, is performed by the copy-on-write method.
  • a copy-on-write execution control unit for controlling access to the storage area in the storage device from the virtual machine may be included.
  • the first storage area further includes a storage area for storing data used when the first type program is executed by a virtual machine
  • the second storage area further includes the The second type program may include a storage area that stores data used by being executed by the virtual machine.
  • the storage device is executed by a virtual computer other than a virtual computer that executes the device driver stored in the device driver storage area and a device driver storage area that stores the device driver,
  • a device control program storage area that communicates with a virtual computer that executes the device driver and stores a device control program for causing the virtual computer that executes the device driver to control the device, and the access control unit includes: The access control may be performed so that access to the device driver storage area is permitted only for one virtual machine among virtual machines that are execution control targets.
  • the present invention can be widely used for virtual machine systems.
  • SYMBOLS 100 Virtual computer system 110 Integrated circuit 101 Processor 102 Memory 103 ROM 104 RAM 105 Cache memory 106 MMU 107 memory protection unit 108 timer 109 DMAC DESCRIPTION OF SYMBOLS 120 Internal bus 600 Module group 601 1st virtual machine 602 2nd virtual machine 603 3rd virtual machine 630 Hypervisor 640 VM management table holding

Abstract

 仮想計算機からメモリ領域へのアクセス制御を行うメモリ保護ユニットを備え、プロセッサによって実行されるハイパーバイザとメモリ保護ユニットとが協働して動作することで、仮想計算機それぞれについて、メモリの記憶領域へのアクセスを、それぞれ所定の領域へのアクセスが禁止されるように制御する。これにより、仮想計算機のそれぞれは、アクセスが禁止されている領域に格納されているプログラム、データ等にアクセスすることができなくなる。

Description

仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
 本発明は、仮想計算機システムに関し、特に、仮想計算機からの記憶領域へのアクセスの制御技術に関する。
 従来、仮想計算機システムとして、複数の仮想計算機を実行制御するシステムが知られている。
 このような仮想計算機システムにおいて、ハードウエア資源の利用効率を向上させる技術として、仮想計算機システムの処理負荷に応じて、仮想計算機の生成と終了とを動的に制御する技術がある。
 例えば、特許文献1では、親仮想計算機をフォークすることで子仮想計算機を生成する技術が開示され、特許文献2では、仮想計算機上で実行されているアプリケーションプログラムからの要求に基づいて、その仮想計算機をクローン化することで、子仮想計算機を生成する技術が開示されている。
特開2004-133894号公報 特開2008-165795号公報
 ところで、仮想計算機システムにおいて、実行対象となるアプリケーションプログラムの中に、マルウエアが含まれていないと認証されているアプリケーションプログラム(以下、「認証済アプリケーションプログラム」と呼ぶ。)と、マルウエアが含まれていないと認証されていないアプリケーションプログラム(以下、「未認証アプリケーションプログラム」と呼ぶ。)とが混在している場合がある。
 このような場合において、未認証アプリケーションプログラムにマルウエアが含まれているとき、このマルウエアが実行されてしまうことで、認証済アプリケーションプログラムが攻撃されることがある。
 認証済アプリケーションプログラムが攻撃される場合の例としては、例えば、認証済アプリケーションプログラムやデータが改竄されてしまう場合、認証済アプリケーションプログラムが不適切な方法で実行され、システムの管理者権限が奪われた結果、計算機システムを不正に乗っ取られてしまい、外部に対して秘匿されるべき情報、例えば、システムに保存された有料コンテンツ、個人情報、暗号キー等が読み出されてしまう場合等がある。
 従来の、仮想計算機を動的に生成する仮想計算機システムでは、新たなアプリケーションプログラムを実行させる場合において、そのアプリケーションプログラムを実行させるための仮想計算機が存在しないとき等に、親仮想計算機を基にして新たな子仮想計算機を生成し、その子仮想計算機に、そのアプリケーションプログラムを実行させる。
 このような場合には、親仮想計算機から生成される子仮想計算機は、親仮想計算機と同じ機能を持つこととなる。よって、親仮想計算機の実行対象となるアプリケーションプログラムの中に、認証済アプリケーションプログラムが含まれている場合には、未認証アプリケーションプログラムを実行させるために生成された子仮想計算機であっても、実行対象となるアプリケーションプログラムの中に、認証済アプリケーションプログラムが含まれてしまうこととなる。
 従って、従来の仮想計算機システムでは、子仮想計算機の実行する未認証アプリケーションプログラムの中にマルウエアが含まれてしまっている場合に、そのマルウエアによって、認証済アプリケーションプログラムが攻撃されてしまうことがある。
 そこで、本発明は係る問題に鑑みてなされたものであり、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、システムの乗っ取りやデータの盗難、および改竄の原因となる認証済アプリケーションプログラムに対する攻撃などの、ソフトウェアの不正実行を防止することができる仮想計算機システムを提供することを目的とする。
 上記課題を解決するために本発明に係る仮想計算機システムは、記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、
仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含み、前記ハイパーバイザは、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けるための起動要求受付部と、前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するための仮想計算機生成部とを含み、前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行うことを特徴とする。
 上述の構成を備える本発明に係る仮想計算機システムによると、未認証アプリケーションプログラムを第1種プログラムとして第1記憶領域に格納し、認証済アプリケーションプログラムを第2種プログラムとして第2記憶領域に格納することで、未認証アプリケーションプログラムを実行する仮想計算機は、認証済アプリケーションプログラムにアクセスすることができなくなる。
 従って、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、システムの乗っ取りデータの盗難、および改竄の原因となる認証済アプリケーションプログラムに対する攻撃などの、ソフトウェアの不正実行を防止することができる。
仮想計算機システム100の主要なハードウエア構成を示すブロック図 プロセッサ101が有する動作モードを示す動作モード図 メモリ保護テーブルのデータ構造を示すデータ構造図 メモリ保護情報のデータ構造を示すデータ構造図 メモリ102の記憶領域の区分けを示す記憶領域図 プロセッサ101上で実行対象となるプログラムモジュールを示すブロック図 アプリグループ管理テーブル700のデータ構造図 仮想計算機管理テーブル800のデータ構造図 仮想計算機状態テーブル900のデータ構造図 アクセス許可情報1000のデータ構造 メモリ102の記憶領域の区分けを示す記憶領域図 仮想計算機切替処理のフローチャート メモリアクセス処理のフローチャート アプリケーションプログラム実行処理のフローチャート 仮想計算機システム1500の主要なハードウエア構成を示すブロック図 プロセッサ101上で実行対象となるプログラムモジュールを示すブロック図 プロセッサ101上で実行対象となるプログラムモジュールを示すブロック図 変形例における仮想計算機システム1800の概略構成図
<実施の形態1>
 <概要>
 以下、本発明に係る仮想計算機システムの一実施形態として、アプリケーションプログラムを実行するユーザーモードと、ユーザーモードより上位のスーパーバイザモードとの2つのプログラム実行モードを有するプロセッサを備え、プロセッサのスーパーバイザモードで実行される複数のオペレーティングシステムを、プロセッサのスーパーバイザモードで実行されるハイパーバイザが時分割実行制御する仮想計算機システムについて説明する。
 この仮想計算機システムは、プロセッサに加えて、仮想計算機からメモリの記憶領域へのアクセス制御を行うメモリ保護ユニットを備える。そして、プロセッサによって実行されるハイパーバイザとメモリ保護ユニットとが協働して動作することで、仮想計算機それぞれについて、メモリの記憶領域へのアクセスを、それぞれ所定の領域へのアクセスが禁止されるように制御する。
 従って、この仮想計算機システムで実行される仮想計算機のそれぞれは、アクセスが禁止されている領域に格納されているプログラム、データ等にアクセスすることができなくなっている。
 以下、本実施の形態1に係る仮想計算機システムの構成について図面を参照しながら説明する。
 <ハードウエア構成>
 図1は、仮想計算機システム100の主要なハードウエア構成を示すブロック図である。
 同図に示す通り、仮想計算機システム100は、ハードウエアとしてはコンピュータ装置であり、集積回路110と入力装置131と出力装置132とから構成される。
 集積回路110は、プロセッサ101とメモリ102とキャッシュメモリ105とMMU(Memory Management Unit)106とメモリ保護ユニット107とタイマ108とDMAC(Direct Memory Access Controller)109と内部バス120と第1インタフェース121と第2インタフェース122と第3インタフェース123とを集積した半導体集積回路であって、入力装置131と出力装置132と外部の集積回路等とに接続する。そして、メモリ102は、ROM(Read Only Memory)103とRAM(Random Access Memory)104とから構成されている。
 プロセッサ101は、キャッシュメモリ105とMMU106とに接続され、ROM103又はRAM104に記憶されているプログラムを実行することで、ROM103、RAM104、キャッシュメモリ105、MMU106、メモリ保護ユニット107、タイマ108、入力装置131、出力装置132を制御して、様々な機能を実現する。
 図2は、プロセッサ101の備える動作モードを示す動作モード図である。
 同図に示されるように、プロセッサ101は、アプリケーションプログラム(図中のタスクA231、タスクK232、タスクL233等)を実行するユーザーモード230と、オペレーティングシステム(図中の第1OS(Operating System)221、第2OS222、第3OS223等)とハイパーバイザを実行する特権モード(以下、「スーパーバイザモード」と呼ぶ。)220とを有する。
 ユーザーモード230で実行されるアプリケーションプログラムは、スーパーバイザモード220で実行されるオペレーティングシステムによって時分割実行制御され、スーパーバイザモード220で実行されるオペレーティングシステムは、同じくスーパーバイザモード220で実行されるハイパーバイザによって時分割実行制御される。
 再び図1に戻って、仮想計算機システム100の構成についての説明を続ける。
 ROM103は、メモリ保護ユニット107に接続され、プロセッサ101の動作を規定するプログラムと、プロセッサ101が利用するデータとを記憶している。
 RAM104は、メモリ保護ユニット107に接続され、プロセッサ101の動作を規定するプログラムと、プロセッサ101が利用するデータとを記憶する。
 キャッシュメモリ105は、プロセッサ101とMMU106と内部バス120とに接続され、プロセッサ101によって利用される。
 MMU106は、プロセッサ101とキャッシュメモリ105と内部バス120とに接続され、メモリ102の物理記憶領域のアドレスを指定する物理アドレスと、プロセッサ101の利用する論理記憶領域のアドレスを指定する論理アドレスとの変換機能を有する。
 メモリ保護ユニット107は、メモリ102と内部バス120とに接続され、内部にメモリ保護テーブルとメモリ保護情報とを記憶する機能と、記憶するメモリ保護テーブルとメモリ保護情報とを参照して、内部バス120のバスマスタ(ここでは、プロセッサ101、DMAC109)からのメモリ102の記憶領域へのアクセスを制御する機能とを有する。
 図3は、メモリ保護ユニット107によって記憶されるメモリ保護テーブル300のデータ構造を示すデータ構造図である。
 同図に示されるように、メモリ保護テーブル300は、領域ID310と開始アドレス320とサイズ330とが対応付けられて構成されている。
 領域ID310は、メモリ102の記憶領域の中の、所定の記憶領域を識別するための識別子である。
 開始アドレス320は、対応する領域ID310によって識別される所定の記憶領域の開始アドレスである。
 サイズ330は、対応する領域ID310によって識別される所定の記憶領域のサイズをメガバイト単位で示すものである。
 このメモリ保護テーブル300によると、例えば、領域ID310が“1”となる所定の記憶領域は、開始アドレスが“0x8000_0000”であって、そのサイズが2MB(Mega Byte)となる記憶領域であることを示している。
 図4は、メモリ保護ユニット107によって記憶されるメモリ保護情報400のデータ構造を示すデータ構造図である。
 同図に示されるように、メモリ保護情報400は、領域ID410とアクセス情報420とが対応付けられて構成されている。
 領域ID410は、領域ID310と同様に、メモリ102の記憶領域の中の、所定の記憶領域を識別するための識別子である。
 アクセス情報420は、対応する領域ID410によって識別される所定の記憶領域に対して行われるアクセスの制限を示す情報であって、(1)読出し、書込み共に可の旨を示す情報(以下、「R/W」と呼ぶ。)と(2)読出し可、書込み不可の旨を示す情報(以下、「RO」と呼ぶ。)と(3)読出し不可、書込み可の旨を示す情報(以下、「WO」と呼ぶ。)と(4)読出し、書込み共に不可の旨を示す情報(以下、「NA」と呼ぶ。)との4つの情報のうちのいずれか1つの情報となる。
 このメモリ保護情報400によると、例えば、領域ID410が“1”となる所定の領域は、読出し、書込み共に不可であり、領域ID410が“2”となる所定の領域は、読出し、書込み共に可であり、領域ID410が“3”となる所定の領域は、読出し可、書込み不可であり、領域ID410が“4”となる所定の領域は、読出し、書込み共に不可であること等を示している。
 図5は、メモリ保護ユニット107による、メモリ102の記憶領域へのアクセスの制御が、複数の所定の領域に区分されて行われることを示す、メモリ102の記憶領域図である。
 同図に示される通り、メモリ102の記憶領域は、メモリ保護ユニット107によってメモリ保護テーブルを参照されることで、領域ID310が“1”となる領域A501、領域ID310が“2”となる領域B502、領域ID310が“3”となる領域C503、領域ID310が“4”となる領域D504等に区分される。
 なお、メモリ保護ユニット107の行うメモリ102の記憶領域へのアクセス制御動作についてのより詳細な内容については、後程<メモリアクセス処理>の項目の部分で、フローチャートを用いて説明する。
 再び図1に戻って、仮想計算機システム100の構成についての説明を続ける。
 タイマ108は、内部バス120に接続され、プロセッサ101によって制御される。
 DMAC109は、内部バス120に接続され、第1インタフェース121に接続される入力装置131、第2インタフェース122に接続される出力装置132、及び第3インタフェース123に接続される外部の集積回路等と、メモリ102との間のデータ転送を、プロセッサ101を介さずに行う機能を有する。
 内部バス120は、MMU106とキャッシュメモリ105とメモリ保護ユニット107とタイマ108と第1インタフェース121と第2インタフェース122と第3インタフェース123とDMAC109とに接続され、これら接続される回路間の信号を伝達する機能を有する。
 第1インタフェース121と第2インタフェース122と第3インタフェース123とは、それぞれ内部バス120に接続され、それぞれ内部バス120と入力装置131との間の信号のやり取りを仲介する機能、内部バス120と出力装置132との間の信号のやり取りを仲介する機能、外部の集積回路等との間の信号のやり取りを仲介する機能を有する。
 入力装置131は、キーボード、マウス、カメラ、センサー等を含み、第1インタフェース121に接続され、プロセッサ101によって制御され、キーボード、マウス、カメラ、センサー等を通じてユーザー操作等に応じたデータを生成し、ユーザー操作等が発生したこと示す通知や、生成したデータをプロセッサ101に送る機能を有する。
 出力装置132は、ディスプレイ、スピーカー等を含み、第2インタフェース122に接続され、プロセッサ101によって制御され、ディスプレイ、スピーカー等を用いて文字列、画像、音声等を表示、出力する機能を有する。
 上述の仮想計算機システム100は、プロセッサ101が、ROM103、RAM104に記憶されているプログラムを実行することによって、様々な機能を実現する。
 <プログラムモジュール構成>
 図6は、ある時刻t0において、プロセッサ101上で実行対象となるプログラムモジュール(以下、単に「モジュール」と呼ぶ。)を示すブロック図である。
 同図において、モジュール群600は、プロセッサ101において実行対象となっているモジュールの集合であって、モジュール群600に含まれるモジュールのそれぞれは、対応するプログラムが、メモリ102の記憶領域に格納されている。
 タスク1A611、タスク2A612、タスク3A613、タスク2B614、タスク3C615のそれぞれは、プロセッサ101のユーザーモードで実行されるタスクである。
 OS1A621、OS1B622、OS1C623のそれぞれは、プロセッサ101のスーパーバイザモードにおいて実行されるマルチタスク対応オペレーティングシステムである。
 ハイパーバイザ630は、プロセッサ101のスーパーバイザモードで実行されるハイパーバイザである。
 仮想計算機システム100において、アプリケーションプログラムは、スーパーバイザモードで実行されるマルチタスク対応オペレーティングシステムによって実行制御され、ユーザーモードで実行される。また、オペレーティングシステムは、ハイパーバイザによって実行制御され、スーパーバイザモードで実行される。
 アプリケーションプログラムは、予め用意されたオペレーティングステム呼び出しルーチンを呼び出すことで、オペレーティングシステムに対して所定の処理を依頼することができる。また、オペレーティングシステムは、予め用意されたハイパーバイザ呼び出しルーチンを呼び出すことで、ハイパーバイザに対して所定の処理を依頼することができる。
 また、仮想計算機システムの実行に際して発生した例外や、外部装置から発生した割込みは、ハイパーバイザで処理し、必要に応じて仮想計算機上のオペレーティングシステムに対して再配送する。
 OS1A621は、タスク1A611とタスク2A612とタスク3A613とを実行制御し、OS1A621とタスク1A611とタスク2A612とタスク3A613とからなるシステムを第1仮想計算機601として機能させている。
 OS1B622は、タスク2B614を実行制御し、OS1B622とタスク2B614とからなるシステムを第2仮想計算機602として機能させている。
 OS1C623は、タスク3C615を実行制御し、OS1C623とタスク3C615とからなるシステムを第3仮想計算機603として機能させている。
 ここで、第2仮想計算機602は、第1仮想計算機601を親仮想計算機として、フォーク方式で生成された子仮想計算機であり、第3仮想計算機603は、第1仮想計算機601を親仮想計算機として、フォーク方式で生成された子仮想計算機である。フォーク方式での仮想計算機の生成については後述する。
 ハイパーバイザ630は、内部に、VM(Virtual Machine)管理テーブル保持部640とVM実行制御部650とVMメモリ管理部660との3つのモジュールを含み、VM実行制御部650は、さらに、VM起動部651とVM実行部652とVM終了部653と要求受付部654との4つのモジュールを含み、VMメモリ管理部は、さらに、保護設定情報保持部661と保護設定部662とCOW(Copy On Write)処理部663との3つのモジュールを含む。
 VM管理テーブル保持部640は、予め定められたアプリグループ管理テーブルと、予め定められた仮想計算機管理テーブルと、VM実行部652によって生成される仮想計算機状態テーブルとを記憶する機能を有する。
 図7は、VM管理テーブル保持部640によって記憶されるアプリグループ管理テーブル700のデータ構造を示すデータ構造図である。
 同図に示されるように、アプリグループ管理テーブル700は、アプリグループID710とアプリケーションプログラム名720とが対応付けられて構成されている。
 アプリケーションプログラム名720は、アプリケーションプログラムを特定するアプリケーションプログラムの名前である。
 アプリグループID710は、対応するアプリケーションプログラム名720で特定されるアプリケーションプログラムが属するアプリケーションプログラムグループを識別するための識別子である。
 このアプリグループ管理テーブル700によると、例えば、メモ帳、電卓、端末設定という名前のアプリケーションプログラムは、アプリグループIDが“1”であるアプリケーションプログラムグループに属し、DTV(Digital Television)アプリという名前のアプリケーションプログラムは、アプリグループIDが“2”であるアプリケーションプログラムグループに属することを示している。
 図8は、VM管理テーブル保持部640によって記憶される仮想計算機管理テーブル800のデータ構造を示すデータ構造図である。
 同図に示されるように、仮想計算機管理テーブル800は、VMID810とアプリグループID820とが対応付けられて構成されている。
 アプリグループID820は、アプリグループID710と同様の識別子である。
 VMID810は、対応するアプリグループID820によって識別されるアプリケーションプログラムグループに属するアプリケーションプログラムを実行するための仮想計算機を識別するための識別子である。
 この仮想計算機管理テーブル800によると、例えば、VMID810が“1”で識別される仮想計算機は、アプリグループID820が“1”で特定されるアプリケーションプログラムグループに属するアプリケーションプログラムと、“4”で特定されるアプリケーションプログラムグループに属するアプリケーションプログラムとを実行するための仮想計算機であることを示している。
 図9は、VM管理テーブル保持部640によって記憶される仮想計算機状態テーブル900のデータ構造を示すデータ構造図である。
 同図に示されるように、仮想計算機状態テーブル900は、VMID910と実行状態920とが対応付けられて構成されている。
 VMID910は、仮想計算機を識別するための識別子である。
 実行状態920は、対応するVMID910によって識別される仮想計算機の実行状態を示す情報であって、(1)仮想計算機が起動されて時分割実行処理の対象となっており、新たなタスク処理を行うことができる状態の旨を示す情報(以下、「実行中」と呼ぶ。)と(2)仮想計算機が起動されていない状態の旨を示す情報(以下、「未起動」と呼ぶ。)と(3)仮想計算機が起動されて時分割実行処理の対象となっているが、その仮想計算機を終了させるための終了処理が実行中であり、新たなタスク処理を行うことができない状態の旨を示す情報(以下、「終了処理中」と呼ぶ。)との3つの情報のうちのいずれか1つの情報となる。ここで、仮想計算機を終了させるための終了処理とは、その仮想計算機を実行するために、ハイパーバイザと仮想計算機自身によって確保した記憶領域を解放する処理のことをいう。
 再び図6に戻って、プロセッサ101上で実行対象となるモジュールの説明を続ける。
 要求受付部654は、実行中の仮想計算機のオペレーティングシステムから、新たなアプリケーションプログラムの起動要求を受け付け、起動要求を受け付けた旨の信号をVM起動部651へ送る機能を有する。
 VM起動部651は、以下の3つの機能を有する。
 機能1:新たなアプリケーションプログラムを実行させるために、親となる仮想計算機を基にして、フォーク方式で新たな子仮想計算機を生成する機能。
 ここで、フォーク方式での仮想計算機の生成とは、親となる仮想計算機に割り当てられている全ての記憶領域と、新たに生成する仮想計算機に割り当てる全ての記憶領域とが、1対1に対応するように、親となる仮想計算機に割り当てられている記憶領域を、新たに生成する仮想計算機の記憶領域にマッピングすることによって、新たな仮想計算機を生成することである。なお、新たに仮想計算機が生成された後は、親となる仮想計算機の記憶領域と、新たに生成された仮想計算機の記憶領域とは、COW処理部663によってコピーオンライト方式で管理されることとなる。このCOW処理部663による記憶領域のコピーオンライト方式による管理についての詳細については後述する。
 機能2:新たなアプリケーションプログラムを実行させるために新たな子仮想計算機を生成した場合に、VM管理テーブル保持部640に記憶されている、アプリグループ管理テーブル700と仮想計算機管理テーブル800とを参照して、その新たな子仮想計算機を識別するための識別子であるVMIDを、その新たな仮想計算機に付与して、VM管理テーブル保持部640に記憶されている仮想計算機状態テーブル900を、付与したVMIDに対応付けられている実行状態920が“実行中”となるように更新する機能。
 機能3:プロセッサ101が初期化されることで、VM起動部651が起動された場合に、他の全ての仮想計算機の親となる仮想計算機を生成し、生成した仮想計算機を識別するためのVMIDを“0”とする機能。
 VM実行部652は、タイマ108を用いて、複数の仮想計算機を、時分割実行制御方式で実行制御する機能を有する。
 VM終了部653は、仮想計算機から、その仮想計算機を終了させる要求である終了要求を受け付ける機能と、終了要求を受け付けた場合に、対象となる仮想計算機に対して前述の終了処理を実行し、その仮想計算機を終了させる機能を有する。
 保護設定情報保持部661は、アクセス許可情報を記憶する機能を有する。
 図10は、保護設定情報保持部661によって記憶されるアクセス許可情報1000のデータ構造を示すデータ構造図である。
 同図に示されるように、アクセス許可情報1000は、領域ID1010とVMID1020とアクセス情報(図中のNA、R/W、RO等)とが対応付けられて構成されている。
 このアクセス許可情報1000は、予め定められたオリジナルアクセス情報の部分(領域ID1010が1~6に対応する部分)と、COW処理部663によって、予め定められたオリジナルアクセス情報に対して追記された部分(領域ID1010が1~6以外の領域ID1010に対応する部分)とによって構成される。
 領域ID1010は、領域ID310と同様に、メモリ102の記憶領域の中の、所定の記憶領域を識別するための識別子である。
 VMID1020は、VMID910と同様に、仮想計算機を識別するための識別子である。
 アクセス情報は、対応するVMID1020によって識別される仮想計算機についての、対応する領域ID1010によって識別される所定の記憶領域に対して行われるアクセスの制限を示す情報であって、アクセス情報420と同様に、R/WとROとWOとNAとの4つの情報のうちのいずれか1つの情報となる。
 このアクセス許可情報1000によると、例えば、VMID1020が“1”で識別される仮想計算機について、領域ID1010が“1”となる所定の領域は、読出し、書込み共に不可であり、領域ID1010が“2”となる所定の領域は、読出し可、書込み不可であり、領域ID1010が“3”となる所定の領域は、読出し可、書込み不可であり、領域ID1010が“4”となる所定の領域は、読出し、書込み共に不可であること等が示されている。
 保護設定部662は、以下の2つの機能を有する。
 機能1:VM実行部652が実行する仮想計算機を切り替える場合に、保護設定情報保持部661によって記憶されているアクセス許可情報1000から、切り替え先となる仮想計算機のVMID1020についての、領域ID1010それぞれについて対応付けられているアクセス情報を読み出して、メモリ保護情報400(図4参照)を生成し、生成したメモリ保護情報400で、メモリ保護ユニット107が記憶するメモリ保護情報400を更新する機能。
 機能2:COW処理部663が保護設定情報保持部661によって記憶されているアクセス許可情報1000を更新する場合に、保護設定情報保持部661によって記憶されているアクセス許可情報1000から、現在実行中となっている仮想計算機のVMIDについての、領域ID1010それぞれについて対応付けられているアクセス情報を読み出して、メモリ保護情報400を生成し、生成したメモリ保護情報400で、メモリ保護ユニット107が記憶するメモリ保護情報400を更新する機能。
 COW処理部663は、以下の2つの機能を有する。
 機能1:仮想計算機からの記憶領域へのアクセスについて、コピーオンライト方式によるアクセス管理を行う機能。
 ここで、コピーオンライト方式によるアクセス管理とは、親仮想計算機の記憶領域と、子仮想計算機の記憶領域とについて、いずれの仮想計算機によっても書き換えられていないページは、双方の仮想計算機によって共用させ、いずれかの仮想計算機によって書き換えられたページは、親仮想計算機が利用するページと、子仮想計算機が利用するページとを、互いに異なる記憶領域に割り当てて利用させるアクセス管理方法のことである。
 機能2:コピーオンライト方式によるアクセス管理を行うことで、仮想計算機に新たな記憶領域を割り当てた場合に、保護設定情報保持部661が保持するアクセス許可情報1000を更新する機能。
 この際、アクセス許可情報1000の更新が、新たに割り当てた記憶領域に対応する領域ID1010について、対象となる仮想計算機を識別するVMID1020に対応するアクセス情報がR/Wとなり、対象となる仮想計算機以外の全ての仮想計算機を識別するVMID1020に対応するアクセス情報がNAとなるように行う。
 なお、対象となる仮想計算機が未認証アプリケーションプログラムを実行する仮想計算機である場合に、親仮想計算機または認証アプリケーションプログラムを実行する仮想計算機から、その仮想計算機および未認証アプリケーションプログラムの実行を監視する等の目的で、新たに割り当てるメモリ領域のアクセス情報をRO、または、R/Wとしても良い。
 ここで、図6に戻り、第2仮想計算機602と第3仮想計算機603とについての説明を補足する。
 第2仮想計算機602は、タスク2B614を実行させるために、VM起動部651によって、第1仮想計算機601を親仮想計算機としてフォーク方式で生成された仮想計算機である。
 また、第3仮想計算機603は、タスク3C615を実行させるために、VM起動部651によって、第1仮想計算機601を親仮想計算機としてフォーク方式で生成された仮想計算機である。
 タスク2B614は、第2仮想計算機602の生成に伴って、タスク2A612を基に生成されたタスクであって、タスク2A612の利用する記憶領域とタスク2Bの利用する記憶領域とは、COW処理部663によってコピーオンライト方式で管理されている。
 タスク3C615は、第3仮想計算機603の生成に伴って、タスク3A613を基に生成されたタスクであって、タスク3A613の利用する記憶領域とタスク3Cの利用する記憶領域とは、COW処理部663によってコピーオンライト方式で管理されている。
 OS1B622とOS1C623とは、第1仮想計算機601のOS1A621に対応するオペレーティングシステムであって、OS1B622は、第2仮想計算機602の生成に伴って生成され、OS1C623は、第3仮想計算機603の生成に伴って生成され、OS1A621の利用する記憶領域とOS1B622の利用する記憶領域とOS1C623の利用する記憶領域とは、COW処理部663によってコピーオンライト方式で管理されている。
 以上のように構成される仮想計算機システム100は、以下に示すメモリ102の記憶領域の利用方法に従って、メモリ102の記憶領域を利用する。
 <メモリ102の記憶領域の利用方法>
 ここでは、仮想計算機システム100における、メモリ102の記憶領域の利用方法について、図面を用いて説明する。
 図11は、時刻t0において、メモリ102の記憶領域における、所定の領域に区分された記憶領域それぞれについての利用方法を示す、メモリ102の記憶領域図である。
 同図において、ハイパーバイザ割当領域1101は、領域ID310(図3参照)が“1”となる所定の記憶領域であって、図5における領域A501に対応している。そして、この領域が、ハイパーバイザ630のコードが格納される領域となるように、又ハイパーバイザ630によって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。
 オペレーティングシステム割当領域1102は、領域ID310が“2”となる所定の記憶領域であって、図5における領域B502に対応している。そして、この領域が、プロセッサ101の実行対象となるオペレーティングシステムのコードが格納される領域となるように、又プロセッサ101の実行対象となるオペレーティングシステムによって利用される記憶領域となるように、予め設定されている。また、この領域は、スーパーバイザモード220のプロセッサ101によってのみアクセス可能な領域として予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機(すなわち、他の仮想計算機全ての親仮想計算機である第1仮想計算機601)について、読出し、書込み共に可の領域、この仮想計算機以外の全ての仮想計算機について、読出し可、書込み不可の領域と予め設定されている。
 第1種プログラム割当領域1103は、領域ID310が“3”となる所定の記憶領域であって、図5における領域C503に対応している。そして、この領域が、アプリグループIDが“1”であるアプリケーションプログラムグループに属するプログラム(以後、「第1種プログラム」と呼ぶ。)が格納される領域となるように、又第1種プログラムによって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機について、読出し、書込み共に可の領域、VMID1020が“1”となる仮想計算機について、読出し可、書込み不可の領域、これら以外の全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。
 第2種プログラム割当領域1104は、領域ID310が“4”となる所定の記憶領域であって、図5における領域D504に対応している。そして、この領域が、アプリグループIDが“2”であるアプリケーションプログラムグループに属するプログラム(以後、「第2種プログラム」と呼ぶ。)が格納される領域となるように、又第2種プログラムによって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機について、読出し、書込み共に可の領域、VMID1020が“2”となる仮想計算機について、読出し可、書込み不可の領域、これら以外の全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。
 第3種プログラム割当領域1105は、領域ID310が“5”となる所定の記憶領域であって、図5における領域E505に対応している。そして、この領域が、アプリグループIDが“3”であるアプリケーションプログラムグループに属するプログラム(以後、「第3種プログラム」と呼ぶ。)が格納される領域となるように、又第3種プログラムによって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機について、読出し、書込み共に可の領域、VMID1020が“3”となる仮想計算機について、読出し可、書込み不可の領域、これら以外の全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。
 IO領域1106乃至1108は、領域ID310が“K”、“L”、“M”、となる所定の記憶領域であって、図5における領域K506、L507、M508に対応している。この領域は、仮想計算機間でデバイス制御を共有するための一方式である、共有するI/Oレジスタに対して、アプリケーションプログラムやオペレーティングシステムからのI/O操作要求時に例外を発生させるアクセス設定を行い、発生した例外をハイパーバイザで受信し、該当するI/O操作の調停および代理をハイパーバイザ行うI/Oエミュレーションを実現するための領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機について、IO領域1106乃至1108は、読出し、書込み共に可の領域、この仮想計算機以外の全ての仮想計算機については、IO領域1106を、読出し、書込み共に共有を実現するための領域となるように、読出し、書込み共に不可の領域として、IO領域1107を、書込みのみ共有を実現するための領域となるように、読出し可、書込み不可の領域として、IO領域1108を読出しのみ共有を実現するための領域となるように、読出し不可、書込み可の領域として、予め設定されている。
 第2種プログラムの第1仮想計算機用割当領域1111は、領域ID310が“N”となる所定の記憶領域であって、図5における領域N511に対応している。この領域は、COW処理部663が、第2種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第1仮想計算機601に新たに割り当てることとなった領域であって、COW処理部663によって、保護設定情報保持部661によって記憶されるアクセス許可情報1000が更新されることで設定されている。
 第2種プログラムの第2仮想計算機用割当領域1112は、領域ID310が“N+1”となる所定の記憶領域であって、図5における領域N+1(512)に対応している。この領域は、COW処理部663が、第2種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第2仮想計算機602に新たに割り当てることとなった領域であって、COW処理部663によって、保護設定情報保持部661によって記憶されるアクセス許可情報1000が更新されることで設定されている。
 第3種プログラムの第1仮想計算機用割当領域1113は、領域ID310が“N+2”となる所定の記憶領域であって、図5における領域N+2(513)に対応している。この領域は、COW処理部663が、第3種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第1仮想計算機601に新たに割り当てることとなった領域であって、COW処理部663によって、保護設定情報保持部661によって記憶されるアクセス許可情報1000が更新されることで設定されている。
 第3種プログラムの第3仮想計算機用割当領域1114は、領域ID310が“N+3”となる所定の記憶領域であって、図5における領域N+3(514)に対応している。この領域は、COW処理部663が、第3種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第3仮想計算機603に新たに割り当てることとなった領域であって、COW処理部663によって、保護設定情報保持部661によって記憶されるアクセス許可情報1000が更新されることで設定されている。
 以下、図面を参照しながら、仮想計算機システム100の行う動作について説明する。
 <動作>
 ここでは、仮想計算機システム100の行う動作のうち、特徴的な動作である、仮想計算機切替処理とメモリアクセス処理とアプリケーションプログラム実行処理とについて説明する。
  <仮想計算機切替処理>
 仮想計算機切替処理は、プロセッサ101に実行させる仮想計算機を切り替える処理である。
 図12は、仮想計算機切替処理のフローチャートである。
 仮想計算機切替処理は、仮想計算機の時分割実行処理を行っているVM実行部652が、タイマ108を用いて計測している時間が所定時間を経過した場合、プロセッサ101が、プロセッサ101の外部から、現在実行されていない仮想計算機への割込み要求を受け付けた場合等に、VM実行部652によって開始される。
 仮想計算機切替処理が開始されると、VM実行部652は、切り替え先となる仮想計算機を特定する(ステップS1200)。
 ステップS1200の処理が終わると、VM実行部652は、プロセッサ101のレジスタ値を、現在実行中となっている仮想計算機に対応付けられた所定の記憶領域に退避して、現在実行中となっている仮想計算機を中断させる(ステップS1220)。ここで、この所定の記憶領域は、メモリ102の記憶領域のうちの、ハイパーバイザ102によってのみアクセス可能となるハイパーバイザ割当て領域1101に設けられている。
 ステップS1220の処理が終わると、VM実行部652は、キャッシュメモリ105に記憶されているデータについて、ライトバック処理した後にフラッシュする(ステップS1230)。なお、キャッシュフラッシュによる実行速度の低下を回避するために、仮想計算機毎に利用できるキャッシュ領域を制限し、ステップS1230を省略しても良い。
 ステップS1230の処理が終わると、保護設定部662は、ステップS1200の処理においてVM実行部652によって特定された切り替え先となる仮想計算機を識別するVMID1020(図10参照)についての、領域ID1010それぞれについて対応付けられているアクセス情報を読み出して、メモリ保護情報400(図4参照)を生成し、生成したメモリ保護情報400で、メモリ保護ユニット107が記憶するメモリ保護情報400を更新する(ステップS1240)。
 ステップS1240の処理が終わると、VM実行部652は、切り替え先となる仮想計算機に対応付けられた所定の記憶領域に退避されている、プロセッサ101のレジスタ値を、プロセッサ101のレジスタに復旧して(ステップS1250)、その仮想計算機を起動する(ステップS1260)。なお、仮想計算機毎に利用できるキャッシュ領域の制限し、ステップS1230を省略している場合、本ステップS1260において、キャッシュ領域を切り替える。
 VM実行部652がステップS1260の処理を終了すると、仮想計算機システム100は、その仮想計算機切替処理を終了する。
  <メモリアクセス処理>
 メモリアクセス処理は、メモリ保護ユニット107の行うメモリ102の記憶領域へのアクセス制御動作である。
 図13は、メモリアクセス処理のフローチャートである。
 メモリアクセス処理は、メモリ保護ユニット107が、内部バス120を介してプロセッサ101からのメモリ102の記憶領域へのアクセス要求を受けることによって開始される。
 メモリアクセス処理が開始されると、メモリ保護ユニット107は、記憶しているメモリ保護テーブル300(図3参照)を参照して、受けたアクセス要求のアドレスが、領域ID310によって識別される所定の領域のうちの、いずれの所定の領域に含まれているかを特定する(ステップS1300)。
 ステップS1300の処理が終わると、メモリ保護ユニット107は、記憶しているメモリ保護情報400(図4参照)を参照して、受けたアクセス要求のアクセス種(書込みと読出しとのいずれか)と、特定された領域を識別する領域ID410に対応付けられているアクセス情報420とを比較して(ステップS1310)、受けたアクセス要求のアクセス種が、特定された領域を識別する領域ID410に対応付けられているアクセス情報420を満たしているか否かを調べる(ステップS1320)。
 ステップS1320の処理において、受けたアクセス要求のアクセス種が、特定された領域を識別する領域ID410に対応付けられているアクセス情報420を満たしている場合には(ステップS1320:Yes)、メモリ保護ユニット107は、受けたアクセス要求を実行する(ステップS1330)。
 ステップS1320の処理において、受けたアクセス要求のアクセス種が、特定された領域を識別する領域ID410に対応付けられているアクセス情報420を満たしていない場合には(ステップS1320:No)、メモリ保護ユニット107は、受けたアクセス要求を実行せずに、プロセッサ101に対して、メモリ領域へのアクセスを実行できなかった旨の例外通知を行う(ステップS1340)。
 メモリ保護ユニット107がステップS1330の処理を終了した場合、又はステップS1340の処理を終了した場合には、仮想計算機システム100は、そのメモリアクセス処理を終了する。
  <アプリケーションプログラム実行処理>
 アプリケーションプログラム実行処理は、要求受付部654が実行中の仮想計算機のオペレーティングシステムから、新たなアプリケーションプログラムの起動要求を受け付けた場合に、VM起動部651が、その新たなアプリケーションプログラムを実行させる仮想計算機を特定し、特定した仮想計算機に、その新たなアプリケーションプログラムの実行を指示する処理である。
 仮想計算機のオペレーティングシステムが、要求受付部654に新たなアプリケーションプログラムの起動要求を行う場合の例としては、例えば、仮想計算機システム100を利用するユーザーから、入力装置131が操作されることで、オペレーティングシステムによって実行制御されているタスクが、オペレーティングシステムに、新たなアプリケーションプログラムの起動の要求を依頼した場合等がある。
 図14は、アプリケーションプログラム実行処理のフローチャートである。
 アプリケーションプログラム実行処理は、要求受付部654が実行中の仮想計算機のオペレーティングシステムから、新たなアプリケーションプログラムの起動要求を受け付けることによって開始される。
 要求受付部654は、新たなアプリケーションプログラムの起動要求を受け付けると、起動要求を受け付けた旨の信号をVM起動部651へ送る。
 VM起動部651は、起動要求を受け付けた旨の信号を受けると、VM管理テーブル保持部640によって記憶されるアプリグループ管理テーブル700(図7参照)を参照して、そのアプリケーションプログラムが属するアプリケーションプログラムグループを特定し(ステップS1400)、さらに、VM管理テーブル保持部640によって記憶される仮想計算機管理テーブル800(図8参照)を参照して、特定したアプリケーショングループに属するアプリケーションプログラムを実行するための仮想計算機を特定する(ステップS1410)。
 ステップS1410の処理が終了すると、VM起動部651は、VM管理テーブル保持部640によって記憶される仮想計算機状態テーブル900(図9参照)を参照して、特定した仮想計算機が実行中であるか否かを調べる(ステップS1420)。
 ステップS1420の処理において、特定した仮想計算機が実行中でない場合に(ステップS1420:No)、VM起動部651は、さらに、VM管理テーブル保持部640によって記憶される仮想計算機状態テーブル900を参照して、特定した仮想計算機が終了処理中であるか否かを調べる(ステップS1430)。
 ステップS1430の処理において、特定した仮想計算機が終了処理中である場合には(ステップS1430:Yes)、VM起動部651は、特定した仮想計算機が終了処理中でなくなるまで待機する(ステップS1430:Yesの処理を繰り返す)。
 ステップS1430の処理において、特定した仮想計算機が終了処理中でない場合には(ステップS1430:No)、VM起動部651は、特定した仮想計算機をフォーク方式で生成する(ステップS1440)。
 ステップS1420の処理において、特定した仮想計算機が実行中の場合(ステップS1420:Yes)と、ステップS1440の処理が終了した場合とに、VM起動部651は、特定した仮想計算機のオペレーティングシステムに、対象となるアプリケーションの実行を開始させる旨の信号を送る(ステップS1450)。
 VM起動部651がステップS1450の処理を終了すると、仮想計算機システム100は、そのアプリケーションプログラム実行処理を終了する。
 <考察>
 以下、具体例を用いて、仮想計算機システム100の動作について考察する。
 具体例として、アプリケーションプログラム名720(図7参照)が「メモ帳」となるアプリケーションプログラム(以下、単に「メモ帳」と呼ぶ。)、及びメモ帳によって利用されるデータが、領域ID1010(図10参照)が“3”となる所定の領域に格納され、アプリケーションプログラム名720が「メーラ」となるアプリケーションプログラム(以下、単に「メーラ」と呼ぶ。)、及びメーラによって利用されるデータが、領域ID1010が“5”となる所定の領域に格納されている場合において、メモ帳に、メーラを起動してアドレス帳に記録されている個人情報を外部に流出させるというマルウエアが含まれているときを考える。
 仮想計算機システム100において、メモ帳は、アプリグループID710が“1”となるアプリケーションプログラムグループに属するため(アプリグループ管理テーブル700(図7参照)を参照)、VMID810が“1”となる仮想計算機(以下、「仮想計算機1」と呼ぶ。)によって実行される(仮想計算機管理テーブル800(図8参照)を参照)。
 メモ帳を実行する仮想計算機1において、メモ帳に含まれるマルウエアが実行されてしまった場合に、このマルウエアは、メーラを起動させようと試みる。
 しかしながら、メーラ、及びメーラによって利用されるデータは、領域ID1010が“5”となる所定の領域に格納されており、メモリ保護ユニット107によって、仮想計算機1からのアクセスが禁止されている(図10のアクセス許可情報1000を参照)。このため、マルウエアは、メーラを起動させること、メーラを改竄すること、及びメーラによって利用されるデータにアクセスすることができない。よって、マルウエアはアドレス帳に記録されている個人情報を外部に流出させることはない。
 このように、本実施の形態1に係る仮想計算機システム100は、仮想計算機が実行対象とするアプリケーションプログラムの中にマルウエアが含まれてしまっている場合であっても、そのマルウエアによって、マルウエアによって攻撃されたくないアプリケーションプログラムが攻撃されてしまう危険性を、従来よりも低く抑えることができる。
<実施の形態2>
 <概要>
 以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態1における仮想計算機システム100の一部を変形した仮想計算機システム1500について説明する。
 実施の形態2に係る仮想計算機システム1500は、そのハードウエア構成が、実施の形態1に係る仮想計算機システム100から一部変形されており、また、実行されるソフトウエアの一部が、実施の形態1に係る仮想計算機システム100から一部変形されている。
 実施の形態1に係る仮想計算機システム100は、メモリ102の記憶領域へのアクセスを制御するメモリ保護ユニット107を備える構成の例であったが、実施の形態2に係る仮想計算機システム1500は、ハードウエアとしてのメモリ保護ユニットを備えず、プロセッサによって実行されるハイパーバイザが、メモリ102の記憶領域へのアクセスを制御する機能を有している場合の例である。
 以下、本実施の形態2に係る仮想計算機システム1500の構成について、図面を参照しながら、実施の形態1に係る仮想計算機システム100の構成との相違点を中心に説明する。
 <ハードウエア構成>
 図15は、仮想計算機システム1500の主要なハードウエア構成を示すブロック図である。
 同図に示す通り、仮想計算機システム1500は、仮想計算機システム100と同様に、ハードウエアとしてはコンピュータ装置であり、実施の形態1に係る仮想計算機システム100から、集積回路110が集積回路1510に変形されたものである。
 <プログラムモジュール構成>
 図16は、ある時刻t0において、プロセッサ101上で実行対象となるモジュールを示すブロック図である。
 同図において、モジュール群1600は、プロセッサ101において実行対象となっているモジュールの集合であって、モジュール群1600に含まれるモジュールのそれぞれは、対応するプログラムが、メモリ102の記憶領域に格納されている。
 仮想計算機システム1500におけるモジュール群1600は、実施の形態1に係る仮想計算機システム100におけるモジュール群600から、ハイパーバイザ630がハイパーバイザ1630に変更されたものとなっている。
 ハイパーバイザ1630は、実施の形態1に係るハイパーバイザ630から、VMメモリ管理部660がVMメモリ管理部1660に変更されるように変形されている。
 VMメモリ管理部1660は、実施の形態1に係るVMメモリ管理部660に対して、仮想MMU1670とメモリ保護部1680とが追加されるように変形されている。
 仮想MMU1670は、MMU106と協働して、メモリ102の物理記憶領域のアドレスを指定する物理アドレスと、プロセッサ101の利用する論理記憶領域のアドレスを指定する論理アドレスとの変換機能を有する。
 仮想計算機システム1500は、仮想計算機毎に個別に論理記憶領域を割り当てて仮想計算機を実行させる(以下、この仮想計算機毎に個別に割り当てる論理記憶領域のことを、「一次論理記憶領域」と呼び、一次論理記憶領域のアドレスを、「一次論理アドレス」と呼ぶ。)ように設定されており、この一次論理アドレスは、MMU106によって、メモリ102の利用する物理アドレスに変換されるように設定されている。
 この仮想MMU1670の有する機能は、各仮想計算機が、自仮想計算機内で利用している論理記憶アドレス(以下、この仮想計算機が自仮想計算機内で利用する論理記憶領域のことを「二次論理記憶領域」と呼び、二次論理記憶領域のアドレスを、「二次論理アドレス」と呼ぶ。)を、上述の一次論理アドレスに変換する機能である。
 メモリ保護部1680は、内部にメモリ保護テーブル300(図3参照)とメモリ保護情報400(図4参照)とを記憶する機能と、記憶するメモリ保護テーブル300とメモリ保護情報400とを参照して、仮想計算機が一次論理アドレスを用いて行うメモリ102の物理記憶領域へのアクセスを制御する機能とを有する。
 ここで、メモリ保護部1680の、メモリ保護テーブル300とメモリ保護情報400とを参照して行うメモリ102の記憶領域へのアクセス制御は、実施の形態1に係るメモリ保護ユニット107の行うメモリ102の記憶領域へのアクセスの制御(実施の形態1における、<メモリアクセス処理>項目参照)と同様のものであり、メモリ保護ユニット107をメモリ保護部1680と置き換えたものである。よって、ここではその説明を省略する。
 上述の構成の仮想計算機システム1500は、実施の形態1に係る仮想計算機システム100と同様に、仮想計算機が実行対象とするアプリケーションプログラムの中に、マルウエアが含まれてしまっている場合であっても、本来実行されたくないアプリケーションプログラムが実行されてしまう危険性を、従来よりも低く抑えることができる。
<実施の形態3>
 <概要>
 以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態1における仮想計算機システム100の一部を変形した変形仮想計算機システムについて説明する。
 実施の形態3に係る変形仮想計算機システムは、そのハードウエア構成が、実施の形態1に係る仮想計算機システム100と同一であるが、実行されるソフトウエアの一部が、実施の形態1に係る仮想計算機システム100から一部変形されている。
 この変形仮想計算機システムは、仮想計算機が複数実行されている場合であっても、実行している仮想計算機の中の1つの仮想計算機のみ(ここでは、第1仮想計算機)がディスプレイ、キーボード等のデバイスを直接制御し、それ以外の仮想計算機は、第1仮想計算機にデバイスの制御を依頼することで、間接的にデバイスを制御するという構成の仮想計算機システムの例である。
 以下、本実施の形態3に係る変形仮想計算機システムの構成について、図面を参照しながら、実施の形態1に係る仮想計算機システム100の構成との相違点を中心に説明する。
 図17は、ある時刻t0において、プロセッサ101上で実行対象となるモジュールを示すブロック図である。
 同図において、モジュール群1700は、プロセッサ101において実行対象となっているモジュールの集合であって、モジュール群1700に含まれるモジュールのそれぞれは、対応するプログラムが、メモリ102の記憶領域に格納されている。
 変形仮想計算機システムにおけるモジュール群1700は、実施の形態1に係る仮想計算機システム100におけるモジュール群600から、第1仮想計算機601が第1仮想計算機1701に変更され、第2仮想計算機602が第2仮想計算機1702に変更され、第3仮想計算機603が第3仮想計算機1703に変更されている。
 第1仮想計算機1701は、VMID1020が“0”となる、他の全ての仮想計算機の親仮想計算機であって、実施の形態1における第1仮想計算機601から、OS1A621が、デバイスドライバ1731を含むOS1A1721に変更されるように変形されている。
 第2仮想計算機1702は、タスク2B614を実行させるために、VM起動部651によって、第1仮想計算機1701を親仮想計算機としてフォーク方式で生成された仮想計算機であって、実施の形態1における第2仮想計算機602から、OS1B622が、デバイスドライバ1732を含むOS1B1722に変更されるように変形されている。
 第3仮想計算機1703は、タスク3C615を実行させるために、VM起動部651によって、第1仮想計算機1701を親仮想計算機としてフォーク方式で生成された仮想計算機であって、実施の形態1における第3仮想計算機603から、OS1C623が、デバイスドライバ1733を含むOS1C1723に変更されるように変形されている。
 デバイスドライバ1731は、フロントエンド部1741とバックエンド部1742とネイティブ部1743とから構成されている。なお、デバイスドライバとは、いわゆるデバイスを制御するプログラムのことであるが、ここでは、デバイス制御処理、ファイルシステム処理、プロセス間通信処理、仮想計算機間通信処理等の、仮想計算機の入出力機能を実現するプログラムをも含んでいる。
 ネイティブ部1743は、対象となるデバイスを直接制御するための命令コード等によって構成され、デバイスを制御する機能を有する。
 このプログラムが格納されているメモリ102の記憶領域は、保護設定情報保持部661によって記憶されるアクセス許可情報1000(図10参照)によって、第1仮想計算機1701対してのみアクセス情報がR/Wとなり、他の仮想計算機に対してアクセス情報がNAとなるように設定されている。これにより、ネイティブ部1743は、第1仮想計算機1701以外の仮想計算機によって実行されることはない。
 バックエンド部1742は、自らを含む仮想計算機に含まれるフロントエンド部、及び、自らを含む仮想計算機以外の仮想計算機に含まれるフロントエンド部とサーバクライアントモデルで通信する機能と、通信するフロントエンド部から、ネイティブ部1743の操作コマンドを受け取り、受け取ったネイティブ部1743の操作コマンドをネイティブ部1743に出力する機能と、ネイティブ部1743から出力されたデータを受け取り、通信するフロントエンド部へ、受け取ったデータを出力する機能とを有する。
 このプログラムが格納されているメモリ102の記憶領域は、保護設定情報保持部661によって記憶されるアクセス許可情報1000によって、第1仮想計算機1701対してのみアクセス情報がR/Wとなり、他の仮想計算機に対してアクセス情報がNAとなるように設定されている。これにより、バックエンド部1742は、第1仮想計算機1701以外の仮想計算機によって実行されることはない。
 フロントエンド部1741は、バックエンド部1742とサーバクライアントモデルで通信する機能と、通信するバックエンド部1742へ、ネイティブ部1743の操作コマンドを送る機能と、通信するバックエンド部から出力されたデータを受け取る機能とを有する。
 このプログラムが格納されているメモリ102の記憶領域は、保護設定情報保持部661によって記憶されるアクセス許可情報1000によって、第1仮想計算機1701対してのみアクセス情報がR/Wとなり、他の仮想計算機に対してアクセス情報がROとなるように設定されている。これにより、フロントエンド部は、全ての仮想計算機によって実行されることができる(図17中のフロントエンド部1741、フロントエンド部1744、フロントエンド部1745に対応)。また、複数の仮想計算機によってフロントエンド部が実行される場合には、フロントエンド部が格納されているメモリ102の記憶領域は、COW処理部663によってコピーオンライト方式で管理されることとなる。
 デバイスドライバ1732は、第2仮想計算機1702の生成に伴って、デバイスドライバ1731を基に生成されたものであって、フロントエンド部1741を基に生成されたフロントエンド部1744を含んでいる。
 デバイスドライバ1732は、ネイティブ部とバックエンド部とを含んでいないが、これは、ネイティブ部1743が格納されているメモリ102の記憶領域とバックエンド部1742が格納されているメモリ102の記憶領域とは、第2仮想計算機1702から読出し、書込み共に不可となっているため、デバイスドライバ1732は、ネイティブ部とバックエンド部とを実行することができなくなっているためである。
 デバイスドライバ1733は、第3仮想計算機1703の生成に伴って、デバイスドライバ1731を基に生成されたものであって、フロントエンド部1741を基に生成されたフロントエンド部1745を含んでいる。
 デバイスドライバ1733は、ネイティブ部とバックエンド部とを含んでいないが、これは、ネイティブ部1743が格納されているメモリ102の記憶領域とバックエンド部1742が格納されているメモリ102の記憶領域とは、第3仮想計算機1703から読出し、書込み共に不可となっているため、デバイスドライバ1733は、ネイティブ部とバックエンド部とを実行することができなくなっているためである。
 <デバイス制御例>
 ここでは、ネイティブ部1743を含まない仮想計算機、例えば第2仮想計算機1702が、デバイスを間接的に制御する場合について説明する。
 第2仮想計算機1702は、デバイスを間接的に制御する場合に、まずフロントエンド部1744にネイティブ部1743の操作コマンドを出力する。フロントエンド部1744は、ネイティブ部1743の操作コマンドを受けると、サーバクライアントモデルでバックエンド部1742と通信し、ネイティブ部1743の操作コマンドをバックエンド部1742に送る。バックエンド部1742は、ネイティブ部1743の操作コマンドを受けると、ネイティブ部1743に、ネイティブ部1743の操作コマンドを出力する。これにより、第2仮想計算機は、デバイスを操作することとなる。
 このように、本実施の形態3に係る変形仮想計算機システムによれば、複数の仮想計算機が実行対象となっている場合であっても、第1仮想計算機1701のネイティブ部1743のみがデバイスを直接制御することとなり、デバイス制御を排他的に行うことができる。
<補足>
 以上、本発明に係る仮想計算機システムの一実施形態として、実施の形態1、実施の形態2、実施の形態3において、3つの仮想計算機システムの例について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの仮想計算機システムに限られないことはもちろんである。
(1)実施の形態1において、仮想計算機システム100が1つのプロセッサを備える場合の例について説明したが、ハイパーバイザが複数の仮想計算機の実行制御をすることができれば、必ずしもプロセッサの数は1つに限られる必要はなく、例えば、2つ、3つといった複数個であっても構わない。プロセッサの数が複数個の場合には、ハイパーバイザは、仮想計算機の実行を必ずしも時分割で行う構成である必要はなく、複数の仮想計算機を並列に実行させる構成であっても構わない。
(2)実施の形態1において、プロセッサ101とメモリ102とキャッシュメモリ105とMMU106とメモリ保護ユニット107とタイマ108とDMAC109と内部バス120と第1インタフェース121と第2インタフェース122と第3インタフェース123とが1つの集積回路110に集積されている場合の例について説明したが、これらの回路が必ずしも1つの集積回路に集積されている必要はない。例えば、プロセッサ101とキャッシュメモリ105とが第1の集積回路に集積され、その他の回路が第2の集積回路に集積される構成されていても構わないし、例えば、各回路がそれぞれ互いに異なる集積回路に集積される構成であっても構わない。
(3)実施の形態1において、プロセッサ101が2つの動作モードを備える構成の場合を例として説明したが、アプリケーションプログラムを実行するモードとオペレーティングシステムを実行するモードとよりも高い特権モードでハイパーバイザを実行することができる構成であれば、必ずしも動作モードの数は2つに限られる必要はなく、例えば、3つ以上であっても構わない。その場合、ハイパーバイザを実行する動作モードを、オペレーティングシステムを実行するよりも高い特権モードとすることができ、ハイパーバイザにおける仮想MMU処理や、I/Oエミュレーション処理のオーバーヘッドを大幅に軽減することができる。
(4)実施の形態1において、第1仮想計算機601が、他の全ての仮想計算機の親となる構成の場合を例として説明したが、生成される子仮想計算機のそれぞれついて、メモリ102の記憶領域へのアクセス制限を実現することができれば、必ずしも親となる仮想計算機が第1仮想計算機601に限られる必要はなく、例えば、ある仮想計算機の子仮想計算機となっている仮想計算機が、他の仮想計算機の親となり得る構成であっても構わない。
(5)実施の形態1において、仮想計算機の生成をフォーク形式で行う構成の場合を例として説明した。これは、仮想計算機の生成をフォーク形式で行うことによって、メモリ102の記憶領域が効率的に利用されることとなるためである。
 しかしながら、メモリ102の記憶領域の利用効率の非効率性を許容することができれば、親となる仮想計算機を元にして子仮想計算機を生成する場合に、必ずしもフォーク形式で行う必要はない。
 一例として、親となる仮想計算機に割り当てられている全ての記憶領域と、新たに生成する仮想計算機に割り当てる全ての記憶領域とが、1対1に対応するように、親となる仮想計算機に割り当てられている記憶領域を、新たに生成する仮想計算機の記憶領域にコピーすることによって、新たな仮想計算機を生成する形式等が考えられる。
 また、このように、子仮想計算機の記憶領域が親仮想計算機の記憶領域からコピーされたものである場合等には、これらの記憶領域は、必ずしもコピーオンライト方式で管理される必要はなくなる。
(6)実施の形態2において、二次論理アドレスと一次論理アドレスとの変換を行う機能を有する仮想MMU1670が、ハイパバイザ1630の内部に含まれている構成の場合を例として説明したが、二次論理アドレスと一次論理アドレスとの変換を行う機能を実現することができれば、必ずしもハイパバイザ1630の内部に仮想MMU1670が含まれている必要はなく、例えば、集積回路1510内に、二次論理アドレスと一次論理アドレスとの変換を行う機能を有するハードウエアを備える構成であっても構わない。
(7)以下、さらに本発明の一実施形態に係る仮想計算機システムの構成及びその変形例と各効果について説明する。
 (a)本発明の一実施形態に係る仮想計算機システムは、記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含み、前記ハイパーバイザは、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けるための起動要求受付部と、前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するための仮想計算機生成部とを含み、前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行うことを特徴とする。
 上述の構成を備える本実施形態に係る仮想計算機システムによると、未認証アプリケーションプログラムを第1種プログラムとして第1記憶領域に格納し、認証済アプリケーションプログラムを第2種プログラムとして第2記憶領域に格納することで、未認証アプリケーションプログラムを実行する仮想計算機は、認証済アプリケーションプログラムにアクセスすることができなくなる。
 従って、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、認証済アプリケーションプログラムが攻撃されてしまう危険性を従来よりも低く抑えることができる。
 図18は上記変形例における仮想計算機システム1800の概略構成図である。
 同図に示されるように、仮想計算機システム1800は、プロセッサ1801とアクセス制御部1802と記憶装置1803とから構成される。そして、記憶装置1803は、第1記憶領域1811と第2記憶領域1812とを含み、ハイパーバイザ1813がロードされている。また、ハイパーバイザ1813は、起動要求受付部1822と仮想計算機生成部1822とを含んでいる。
 プロセッサ1801は、アクセス制御部1802を介して、記憶装置1803に接続されるプロセッサである。一例として、実施の形態1におけるプロセッサ101(図1参照)として実現される。
 記憶装置1803は、第1記憶領域1811と第2記憶領域1812とを含む。一例として、実施の形態1におけるメモリ102(図1参照)として実現される。
 第1記憶領域1811は、第1種プログラムを格納する記憶領域である。この第1記憶領域1811は、一例として、実施の形態1における領域C503(図5参照)として実現される。また、第1種プログラムは、一例として、実施の形態1におけるメモ帳(図7参照)として実現される。
 第2記憶領域1812は、第2種プログラムを格納する記憶領域である。この第2記憶領域1812は、一例として、実施の形態1における領域E505(図5参照)として実現される。また、第2種プログラムは、一例として実施の形態1におけるメーラ(図7参照)として実現される。
 ハイパーバイザ1813は、プロセッサ1801上で実行され、プロセッサ1801に複数の仮想計算機の実行制御をさせるハイパーバイザであって、起動要求受付部1822と仮想計算機生成部1822とを含む。このハイパーバイザ1813は、一例として、実施の形態1におけるハイパーバイザ630(図6参照)として実現される。
 起動要求受付部1822は、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けるためのコード群である。一例として、実施の形態1における要求受付部654として実現される。
 仮想計算機生成部1823は、1801プロセッサによって実行される起動要求受付部1822が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するためのコード群である。一例として、実施の形態1におけるVM起動部651とVM実行部652として実現される。
 アクセス制御部1802は、仮想計算機からの、記憶装置1803の記憶領域へのアクセスを、プロセッサ1801によって実行される仮想計算機生成部1823によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように制御する機能を有する。一例として、実施の形態1におけるメモリ保護ユニット107(図1参照)として実現される。
 (b)また、前記アクセス制御部は、前記第2記憶領域のアドレスを特定する第2領域特定情報を記憶するための第2領域特定情報記憶部を有し、前記アクセスの制御を、前記第2領域特定情報記憶部に記憶されている前記第2領域特定情報を参照して行うとしてもよい。
 このような構成にすることによって、アクセス制御部は、第2記憶領域のアドレスを、アクセス制御部の外部を参照することなく特定することができるようになる。
 (c)また、前記記憶装置は、プログラムを特定する情報と、プログラムの種別を特定する情報とを対応付けるプログラム対応情報を記憶するためのプログラム対応情報記憶領域を含み、前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、プログラムの起動要求を受け付けた場合に、当該プログラムが、いずれの種別のプログラムであるかを、前記プログラム対応情報記憶領域に記憶されているプログラム対応情報に基づいて特定するためのプログラム種特定部を含み、前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第1種仮想計算機としての管理と、前記プロセッサによって実行される前記起動要求受付部が、第2種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第2種仮想計算機としての管理とを、前記プログラム種特定部によって特定されたプログラムの種別に基づいて行うとしてもよい。
 このような構成にすることによって、仮想計算機生成部は、プログラム対応情報記憶領域に記憶されているプログラム対応情報に基づいて、仮想計算機の種別管理を行うことができるようになる。
 (d)また、前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けた場合において、仮想計算機を生成するときに、当該生成する仮想計算機に対する、前記記憶装置における記憶領域の割り当てを、前記起動要求の要求元仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行うとしてもよい。
 このような構成にすることによって、新たな仮想計算機の生成をフォーク方式で行われることとなるため、記憶装置の記憶領域の利用効率を向上することができるようになる。
 (e)また、前記ハイパーバイザは、前記プロセッサによって実行される前記仮想計算機生成部が、第1の仮想計算機に対する記憶領域の割り当てを、第2の仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行った場合に、前記第1の仮想計算機と前記第2の仮想計算機とによって行われる、前記記憶装置における記憶領域へのアクセスが、コピーオンライト方式で行われるように、仮想計算機からの、前記記憶装置における記憶領域へのアクセスを制御するためのコピーオンライト実行制御部を含むとしてもよい。
 このような構成にすることによって、親仮想計算機による記憶領域へのアクセスと、親仮想計算機を元にしてフォーク方式で生成された子仮想計算機による記憶領域への管理とがコピーオンライト方式で行われることとなるため、記憶装置の記憶領域の利用効率を向上することができるようになる。
 (f)また、前記第1記憶領域は、さらに、前記第1種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含み、前記第2記憶領域は、さらに、前記第2種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含むとしてもよい。
 このような構成にすることによって、第1種プログラムを実行する仮想計算機に、第2種プログラムを実行する仮想計算機が利用するデータを、利用させないようにすることができるようになる。
 (g)また、前記記憶装置は、デバイスドライバを記憶するデバイスドライバ記憶領域と、前記デバイスドライバ記憶領域に記憶されている前記デバイスドライバを実行する仮想計算機以外の仮想計算機によって実行されることで、前記デバイスドライバを実行する仮想計算機と通信し、前記デバイスドライバを実行する仮想計算機に、デバイスの制御をさせるためのデバイス制御プログラムを記憶するデバイス制御プログラム記憶領域とを含み、前記アクセス制御部は、前記アクセスの制御を、実行制御対象である仮想計算機の中の1つの仮想計算機に限って、前記デバイスドライバ記憶領域へのアクセスが許可されるように行うとしてもよい。
 このような構成にすることによって、複数の仮想計算機によるデバイス制御を排他的に行うことができる。
 本発明は、仮想計算機システムに広く利用することができる。
 100 仮想計算機システム
 110 集積回路
 101 プロセッサ
 102 メモリ
 103 ROM
 104 RAM
 105 キャッシュメモリ
 106 MMU
 107 メモリ保護ユニット
 108 タイマ
 109 DMAC
 120 内部バス
 600 モジュール群
 601 第1仮想計算機
 602 第2仮想計算機
 603 第3仮想計算機
 630 ハイパーバイザ
 640 VM管理テーブル保持部
 650 VM実行制御部
 651 VM起動部
 652 VM実行部
 653 VM終了部
 654 要求受付部
 660 VMメモリ管理部
 661 保護設定情報保持部
 662 保護設定部
 663 COW処理部

Claims (10)

  1.  記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、
     仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、
     前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含み、
     前記ハイパーバイザは、
     仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けるための起動要求受付部と、
     前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するための仮想計算機生成部とを含み、
     前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行う
     ことを特徴とする仮想計算機システム。
  2.  前記アクセス制御部は、前記第2記憶領域のアドレスを特定する第2領域特定情報を記憶するための第2領域特定情報記憶部を有し、前記アクセスの制御を、前記第2領域特定情報記憶部に記憶されている前記第2領域特定情報を参照して行う
     ことを特徴とする請求項1記載の仮想計算機システム。
  3.  前記記憶装置は、プログラムを特定する情報と、プログラムの種別を特定する情報とを対応付けるプログラム対応情報を記憶するためのプログラム対応情報記憶領域を含み、
     前記仮想計算機生成部は、
     前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、プログラムの起動要求を受け付けた場合に、当該プログラムが、いずれの種別のプログラムであるかを、前記プログラム対応情報記憶領域に記憶されているプログラム対応情報に基づいて特定するためのプログラム種特定部を含み、
     前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第1種仮想計算機としての管理と、前記プロセッサによって実行される前記起動要求受付部が、第2種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第2種仮想計算機としての管理とを、前記プログラム種特定部によって特定されたプログラムの種別に基づいて行う
     ことを特徴とする請求項2記載の仮想計算機システム。
  4.  前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けた場合において、仮想計算機を生成するときに、当該生成する仮想計算機に対する、前記記憶装置における記憶領域の割り当てを、前記起動要求の要求元仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行う
     ことを特徴とする請求項3記載の仮想計算機システム。
  5.  前記ハイパーバイザは、
     前記プロセッサによって実行される前記仮想計算機生成部が、第1の仮想計算機に対する記憶領域の割り当てを、第2の仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行った場合に、前記第1の仮想計算機と前記第2の仮想計算機とによって行われる、前記記憶装置における記憶領域へのアクセスが、コピーオンライト方式で行われるように、仮想計算機からの、前記記憶装置における記憶領域へのアクセスを制御するためのコピーオンライト実行制御部を含む
     ことを特徴とする請求項4記載の仮想計算機システム。
  6.  前記第1記憶領域は、さらに、前記第1種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含み、
     前記第2記憶領域は、さらに、前記第2種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含む
     ことを特徴とする請求項5記載の仮想計算機システム。
  7.  前記記憶装置は、
     デバイスドライバを記憶するデバイスドライバ記憶領域と、
     前記デバイスドライバ記憶領域に記憶されている前記デバイスドライバを実行する仮想計算機以外の仮想計算機によって実行されることで、前記デバイスドライバを実行する仮想計算機と通信し、前記デバイスドライバを実行する仮想計算機に、デバイスの制御をさせるためのデバイス制御プログラムを記憶するデバイス制御プログラム記憶領域とを含み、
     前記アクセス制御部は、前記アクセスの制御を、実行制御対象である仮想計算機の中の1つの仮想計算機に限って、前記デバイスドライバ記憶領域へのアクセスが許可されるように行う
     ことを特徴とする請求項5記載の仮想計算機システム。
  8.  記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含む仮想計算機システムを制御する仮想計算機制御方法であって、
     前記ハイパーバイザが、第1種プログラム又は第2種プログラムの起動要求を受け付ける起動要求受付ステップと、
     前記ハイパーバイザが、前記起動要求受付ステップにおいて、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理する仮想計算機生成ステップと、
     前記アクセス制御部が、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行うアクセス制御ステップとを含む
     ことを特徴とする仮想計算機制御方法。
  9.  記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含む仮想計算機システムを制御するための仮想計算機制御プログラムであって、
     前記ハイパーバイザが、第1種プログラム又は第2種プログラムの起動要求を受け付ける起動要求受付ステップと、
     前記ハイパーバイザが、前記起動要求受付ステップにおいて、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理する仮想計算機生成ステップと、
     前記アクセス制御部が、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行うアクセス制御ステップとを含む
     ことを特徴とする仮想計算機制御プログラム。
  10.  記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える半導体集積回路であって、
     仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、
     前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含み、
     前記ハイパーバイザは、
     仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けるための起動要求受付部と、
     前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するための仮想計算機生成部とを含み、
     前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行う
     ことを特徴とする半導体集積回路。
PCT/JP2011/005108 2011-03-02 2011-09-12 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路 WO2012117465A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012539103A JP5981845B2 (ja) 2011-03-02 2011-09-12 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
CN201180020496.3A CN102859502B (zh) 2011-03-02 2011-09-12 虚拟计算机系统、虚拟计算机控制方法、及半导体集成电路
US13/583,151 US20120331465A1 (en) 2011-03-02 2011-09-12 Virtual machine system, virtual machine control method, virtual machine control application, and semiconductor integrated circuit

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2011-045323 2011-03-02
JP2011045323 2011-03-02

Publications (1)

Publication Number Publication Date
WO2012117465A1 true WO2012117465A1 (ja) 2012-09-07

Family

ID=46757435

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/005108 WO2012117465A1 (ja) 2011-03-02 2011-09-12 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路

Country Status (4)

Country Link
US (1) US20120331465A1 (ja)
JP (1) JP5981845B2 (ja)
CN (1) CN102859502B (ja)
WO (1) WO2012117465A1 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012203654A (ja) * 2011-03-25 2012-10-22 Nec Corp ホスト計算機、分散処理システム、及びi/o制御方法
WO2013125222A1 (ja) * 2012-02-22 2013-08-29 パナソニック株式会社 仮想計算機システム、秘匿情報保護方法及び秘匿情報保護プログラム
US20130297901A1 (en) * 2012-05-01 2013-11-07 Renesas Electronics Corporation Memory protection circuit, processing unit, and memory protection method
JP2016537695A (ja) * 2013-05-10 2016-12-01 ファイヤアイ インク マルウェアコンテンツ検出システム内の仮想マシンへの最適化されたリソース割当て
JP2017004522A (ja) * 2015-06-09 2017-01-05 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ
JP2017505483A (ja) * 2014-02-07 2017-02-16 オラクル・インターナショナル・コーポレイション クラウドサービスカスタム実行環境
JP2018169683A (ja) * 2017-03-29 2018-11-01 アドソル日進株式会社 コンピュータ装置
JP2019522298A (ja) * 2016-07-29 2019-08-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated コンピューティングデバイスのメモリ内のページに対するアクセス制御
JP2020149597A (ja) * 2019-03-15 2020-09-17 株式会社デンソーテン 制御装置および制御方法

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262195B2 (en) * 2012-02-28 2016-02-16 Red Hat Israel, Ltd. Manageable external wake of virtual machines
US9009705B2 (en) 2012-10-01 2015-04-14 International Business Machines Corporation Authenticated distribution of virtual machine images
EP2960784A4 (en) * 2013-02-21 2016-09-14 Nec Corp VIRTUALIZATION SYSTEM
US8875295B2 (en) 2013-02-22 2014-10-28 Bitdefender IPR Management Ltd. Memory introspection engine for integrity protection of virtual machines
US9529612B2 (en) * 2013-03-18 2016-12-27 International Business Machines Corporation Scalable policy assignment in an edge virtual bridging (EVB) environment
US9535728B2 (en) * 2013-03-18 2017-01-03 International Business Machines Corporation Scalable policy management in an edge virtual bridging (EVB) environment
CN104657193B (zh) * 2013-11-21 2018-07-20 华为技术有限公司 一种访问物理资源的方法和装置
US10977063B2 (en) 2013-12-20 2021-04-13 Vmware, Inc. Elastic compute fabric using virtual machine templates
US9323565B2 (en) 2013-12-20 2016-04-26 Vmware, Inc. Provisioning customized virtual machines without rebooting
KR20150101683A (ko) * 2014-02-27 2015-09-04 삼성전자주식회사 자기 암호화 드라이브 및 그것을 포함한 유저 장치
US9588796B2 (en) * 2014-06-28 2017-03-07 Vmware, Inc. Live migration with pre-opened shared disks
US9578032B2 (en) * 2014-08-23 2017-02-21 Vmware, Inc. Application publishing using memory state sharing
US9513949B2 (en) * 2014-08-23 2016-12-06 Vmware, Inc. Machine identity persistence for users of non-persistent virtual desktops
CN104573421B (zh) * 2014-12-30 2017-12-22 北京兆易创新科技股份有限公司 一种基于若干分区的mcu芯片信息保护方法和装置
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539435B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539436B (en) * 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
GB201513039D0 (en) * 2015-07-23 2015-09-09 Eaton Ind France Sas Shutting down of a virtual system
JP6504984B2 (ja) * 2015-09-28 2019-04-24 ルネサスエレクトロニクス株式会社 データ処理装置
WO2017209856A1 (en) 2016-05-31 2017-12-07 Brocade Communications Systems, Inc. Multichannel input/output virtualization
US10261821B2 (en) * 2016-12-02 2019-04-16 Dell Products L.P. System and method to expose remote virtual media partitions to virtual machines
JP2020149526A (ja) * 2019-03-15 2020-09-17 株式会社東芝 処理装置、処理方法及びプログラム
CN113141777A (zh) * 2019-09-25 2021-07-20 株式会社日立制作所 计算机系统、数据控制方法及存储介质
DE102022205137A1 (de) 2022-05-23 2023-11-23 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Überwachen von Zugriffsanfragen für sicherheitskritische Zugriffe in einer Recheneinheit
CN116107668B (zh) * 2023-04-13 2023-08-15 紫光同芯微电子有限公司 一种应用程序运行方法及其系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171565A (ja) * 2002-11-18 2004-06-17 Arm Ltd マルチドメインプロセッサのための診断データ捕捉制御
JP2008165795A (ja) * 2006-12-29 2008-07-17 Intel Corp バーチャルマシーンの動的生成
JP2010055318A (ja) * 2008-08-27 2010-03-11 Hitachi Ltd ハイパバイザを有する計算機システム
JP2010191681A (ja) * 2009-02-18 2010-09-02 Ntt Docomo Inc データ処理装置、データ処理方法、データ処理プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
JP2002073358A (ja) * 2000-09-04 2002-03-12 Hitachi Ltd 仮想計算機主記憶のアクセス制御方法
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US7984438B2 (en) * 2006-02-08 2011-07-19 Microsoft Corporation Virtual machine transitioning from emulating mode to enlightened mode
WO2007136021A1 (ja) * 2006-05-24 2007-11-29 Nec Corporation 仮想マシン管理装置、仮想マシン管理方法およびプログラム
US8856782B2 (en) * 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
JP4557178B2 (ja) * 2007-03-02 2010-10-06 日本電気株式会社 仮想マシン管理システム、その方法及びそのプログラム
US20090300599A1 (en) * 2008-05-30 2009-12-03 Matthew Thomas Piotrowski Systems and methods of utilizing virtual machines to protect computer systems
EP3009941B1 (en) * 2009-12-14 2017-07-26 Citrix Systems Inc. Methods and systems for communicating between trusted and non-trusted virtual machines
US8689349B2 (en) * 2010-05-05 2014-04-01 Intel Corporation Information flow tracking and protection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171565A (ja) * 2002-11-18 2004-06-17 Arm Ltd マルチドメインプロセッサのための診断データ捕捉制御
JP2008165795A (ja) * 2006-12-29 2008-07-17 Intel Corp バーチャルマシーンの動的生成
JP2010055318A (ja) * 2008-08-27 2010-03-11 Hitachi Ltd ハイパバイザを有する計算機システム
JP2010191681A (ja) * 2009-02-18 2010-09-02 Ntt Docomo Inc データ処理装置、データ処理方法、データ処理プログラム

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012203654A (ja) * 2011-03-25 2012-10-22 Nec Corp ホスト計算機、分散処理システム、及びi/o制御方法
WO2013125222A1 (ja) * 2012-02-22 2013-08-29 パナソニック株式会社 仮想計算機システム、秘匿情報保護方法及び秘匿情報保護プログラム
JPWO2013125222A1 (ja) * 2012-02-22 2015-07-30 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 仮想計算機システム、秘匿情報保護方法及び秘匿情報保護プログラム
US9460276B2 (en) 2012-02-22 2016-10-04 Panasonic Intellectual Property Corporation Of America Virtual machine system, confidential information protection method, and confidential information protection program
US20130297901A1 (en) * 2012-05-01 2013-11-07 Renesas Electronics Corporation Memory protection circuit, processing unit, and memory protection method
US9465750B2 (en) * 2012-05-01 2016-10-11 Renesas Electronics Corporation Memory protection circuit, method and processing unit utilizing memory access information register to selectively allow access to memory areas by virtual machines
JP2016537695A (ja) * 2013-05-10 2016-12-01 ファイヤアイ インク マルウェアコンテンツ検出システム内の仮想マシンへの最適化されたリソース割当て
US10469512B1 (en) 2013-05-10 2019-11-05 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
JP2017505483A (ja) * 2014-02-07 2017-02-16 オラクル・インターナショナル・コーポレイション クラウドサービスカスタム実行環境
JP2017004522A (ja) * 2015-06-09 2017-01-05 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ
JP2019522298A (ja) * 2016-07-29 2019-08-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated コンピューティングデバイスのメモリ内のページに対するアクセス制御
JP7177038B2 (ja) 2016-07-29 2022-11-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド コンピューティングデバイスのメモリ内のページに対するアクセス制御
JP2018169683A (ja) * 2017-03-29 2018-11-01 アドソル日進株式会社 コンピュータ装置
JP2020149597A (ja) * 2019-03-15 2020-09-17 株式会社デンソーテン 制御装置および制御方法

Also Published As

Publication number Publication date
CN102859502A (zh) 2013-01-02
JP5981845B2 (ja) 2016-08-31
JPWO2012117465A1 (ja) 2014-07-07
CN102859502B (zh) 2016-03-23
US20120331465A1 (en) 2012-12-27

Similar Documents

Publication Publication Date Title
JP5981845B2 (ja) 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
KR102355213B1 (ko) 운영 체제 공격으로부터 애플리케이션 기밀사항을 보호하는 기법
KR101782398B1 (ko) 보안된 가상 머신간 공유된 메모리 통신을 위한 기술
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
Peinado et al. NGSCB: A trusted open system
EP3706361B1 (en) Loading and virtualizing cryptographic keys
US9454676B2 (en) Technologies for preventing hook-skipping attacks using processor virtualization features
CN110622138B (zh) 一种数据迁移方法及装置
KR101323858B1 (ko) 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법
US10360386B2 (en) Hardware enforcement of providing separate operating system environments for mobile devices
US10552345B2 (en) Virtual machine memory lock-down
US11442770B2 (en) Formally verified trusted computing base with active security and policy enforcement
KR20120061249A (ko) 하이퍼바이저를 활용한 사용자 어플리케이션 메모리 보호방법
EP3123388B1 (en) Virtualization based intra-block workload isolation
US10140148B1 (en) Copy based IOMMU emulation for out-of-process emulated devices
WO2013189180A1 (zh) 虚拟化系统中关闭中断的方法和装置
Naik Xen-Cap: A Capability Framework for Xen
CN117708832A (zh) 高性能异构可信执行环境实现方法及系统
KR20220080126A (ko) 프로세서에서 하이퍼바이저 보안 이벤트 핸들링

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201180020496.3

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 2012539103

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 13583151

Country of ref document: US

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

Ref document number: 11860100

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11860100

Country of ref document: EP

Kind code of ref document: A1