JP7729672B2 - Virtual Machine Container Device, Virtual Machine Container Control Method, Program, and Recording Medium - Google Patents
Virtual Machine Container Device, Virtual Machine Container Control Method, Program, and Recording MediumInfo
- Publication number
- JP7729672B2 JP7729672B2 JP2021174546A JP2021174546A JP7729672B2 JP 7729672 B2 JP7729672 B2 JP 7729672B2 JP 2021174546 A JP2021174546 A JP 2021174546A JP 2021174546 A JP2021174546 A JP 2021174546A JP 7729672 B2 JP7729672 B2 JP 7729672B2
- Authority
- JP
- Japan
- Prior art keywords
- virtual machine
- system call
- kernel
- application
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
本発明は、仮想マシンコンテナ装置、仮想マシンコンテナの制御方法、プログラム及び記録媒体に関する。 The present invention relates to a virtual machine container device, a virtual machine container control method, a program, and a recording medium.
OS(オペレーティングシステム)を実現するH/W(ハードウエア)環境を仮想化する技術として、仮想マシン型仮想化が知られている。前記仮想マシン型仮想化では、H/W(ハードウエア)が提供する仮想化機能を用いて仮想マシン環境を構成する。また、前記仮想マシン型仮想化では、各仮想マシン内でゲストOSを起動する。そのため、前記仮想マシン型仮想化では、ホストOSにかかわらず、各仮想マシン内で任意のOSを実行することができる。 Virtual machine virtualization is known as a technology for virtualizing the H/W (hardware) environment that realizes an OS (operating system). With virtual machine virtualization, a virtual machine environment is constructed using the virtualization functions provided by the H/W (hardware). Furthermore, with virtual machine virtualization, a guest OS is started within each virtual machine. Therefore, with virtual machine virtualization, any OS can be run within each virtual machine, regardless of the host OS.
また、OSが提供するプロセス実行環境を仮想化する技術として、コンテナ型仮想化が知られている(特許文献1)。前記コンテナ型仮想化では、ホストOSの機能を用いてアプリケーションの実行環境であるコンテナを構成する。各コンテナは、独立したリソースを持つ。 Container-based virtualization is also known as a technology for virtualizing the process execution environment provided by an OS (Patent Document 1). In container-based virtualization, the functions of the host OS are used to create containers, which are the execution environments for applications. Each container has independent resources.
さらに、コンテナ型仮想化と同様の実行環境を有する技術として、Unikernelコンテナ型仮想化も知られている。前記Unikernelコンテナ型仮想化では、OS機能をエミュレーションするライブラリ(エミュレーションライブラリともいう)をアプリケーションと結合してコンテナ内に配置する。そして、エミュレーションライブラリがゲストOSのシステムコール機能をエミュレーションする。また、前記Unikernelコンテナ型仮想化では、必要に応じて、ゲストOSのシステムコールをホストOSのシステムコールに変換して実行する。 Unikernel container virtualization is also known as a technology that has a similar execution environment to container virtualization. In this type of container virtualization, a library that emulates OS functions (also known as an emulation library) is combined with an application and placed inside a container. The emulation library then emulates the system call functions of the guest OS. In this type of container virtualization, the guest OS's system calls are converted into host OS system calls as necessary and then executed.
しかしながら、前記仮想マシン型仮想化では、フルスペックのゲストOSを動かすため多くのリソースが必要になり、起動に時間がかかるという問題がある。これに対し、前記コンテナ型仮想化では、各コンテナはOS機能を持たないので、少ないリソースで動作し、高速に起動できる。しかしながら、前記コンテナ型仮想化では、複数のコンテナが同一のホストOSを共有しているので、ホストOSと異なるOS用のコンテナの処理を実行できないという問題がある。前記Unikernelコンテナ型仮想化は、前述のエミュレーションにより、前記コンテナ型仮想化の低リソース、高速起動のメリットを保ちつつ、ホストOSと異なるOSのアプリケーションを実行できる。しかしながら、前記Unikernelコンテナ型仮想化では、ゲストOS毎にエミュレーションライブラリの開発が必要になる。また、コンテナで実行するアプリケーションの改変、ライブラリとの結合が必要で、既存のアプリケーションをそのままコンテナ内で実行できないという問題がある。同様に、市販のアプリケーションが実行できないという問題もある。 However, with virtual machine-based virtualization, running a full-spec guest OS requires a lot of resources, resulting in slow startup times. In contrast, with container-based virtualization, each container does not have OS functionality, so it operates with fewer resources and can start up quickly. However, with container-based virtualization, multiple containers share the same host OS, meaning that container processing for an OS different from the host OS cannot be executed. Unikernel container-based virtualization, through the emulation described above, can execute applications for an OS different from the host OS while maintaining the low resource requirements and fast startup benefits of container-based virtualization. However, with uniform container-based virtualization, emulation libraries must be developed for each guest OS. Furthermore, applications to be executed in the container must be modified and integrated with libraries, meaning that existing applications cannot be executed as is within the container. Similarly, commercially available applications cannot be executed.
そこで、本発明は、コンテナ型仮想化環境において、ホストOSとは異なるOS用のコンテナを実行可能な仮想マシンコンテナ装置、仮想マシンコンテナの制御方法、プログラム及び記録媒体を提供することを目的とする。 The present invention therefore aims to provide a virtual machine container device, a virtual machine container control method, a program, and a recording medium that can run a container for an OS different from the host OS in a container-based virtualization environment.
前記目的を達成するために、本発明の仮想マシンコンテナ装置は、
仮想マシンコンテナ部、仮想マシンモニタ部、システムコール制御部、ホストOSカーネル部、及びOSカーネルエミュレート部を含み、
前記仮想マシンコンテナ部は、ロードされたアプリケーションを実行可能であり、
前記仮想マシンモニタ部は、前記アプリケーションのプロセスが生成するシステムコールを取得可能であり、
前記システムコール制御部は、前記仮想マシンモニタ部が取得した前記システムコールにより前記アプリケーションのOS及び前記ホストOSカーネル部のOSの異同を判断し、
前記異同の判断において同じと判断した場合、前記ホストOSカーネル部は、前記システムコールを実行し、前記実行結果を前記プロセスに返却し、
前記異同の判断において異なると判断した場合、前記OSカーネルエミュレート部は、前記システムコールを前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、装置である。
In order to achieve the above object, the virtual machine container device of the present invention comprises:
The virtual machine container unit includes a virtual machine monitor unit, a system call control unit, a host OS kernel unit, and an OS kernel emulation unit.
the virtual machine container unit is capable of executing a loaded application;
the virtual machine monitor unit is capable of acquiring a system call generated by a process of the application;
the system call control unit determines whether an OS of the application and an OS of the host OS kernel unit are the same or different from each other based on the system call acquired by the virtual machine monitor unit;
If it is determined that the processes are the same in the determination of whether they are different or the same, the host OS kernel executes the system call and returns the execution result to the process;
If it is determined that the applications are different in the determination of whether they are the same or different, the OS kernel emulation unit emulates the system call in accordance with the OS of the application, and returns the result of the emulation to the process.
本発明の仮想マシンコンテナの制御方法は、
仮想マシンコンテナ工程、仮想マシンモニタ工程、システムコール制御工程、ホストOSカーネル工程、及びOSカーネルエミュレート工程を含み、
前記仮想マシンコンテナ工程は、仮想マシンコンテナにロードされたアプリケーションを実行し、
前記仮想マシンモニタ工程は、前記アプリケーションのプロセスが生成するシステムコールを取得し、
前記システムコール制御工程は、前記仮想マシンモニタ工程が取得した前記システムコールにより前記アプリケーションのOS及び前記ホストOSカーネル工程が取り扱うOSの異同を判断し、
前記異同の判断において同じと判断した場合、前記ホストOSカーネル工程は、前記システムコールを実行し、前記実行結果を前記プロセスに返却し、
前記異同の判断において異なると判断した場合、前記OSカーネルエミュレート工程は、前記システムコールを前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、方法である。
The method for controlling a virtual machine container of the present invention includes:
The process includes a virtual machine container process, a virtual machine monitor process, a system call control process, a host OS kernel process, and an OS kernel emulation process;
The virtual machine container process executes an application loaded into the virtual machine container;
The virtual machine monitor process acquires a system call generated by a process of the application,
the system call control step determines whether an OS of the application and an OS handled by the host OS kernel step are different from each other based on the system call acquired by the virtual machine monitor step;
If it is determined that the processes are the same in the determination of whether they are different or the same, the host OS kernel process executes the system call and returns the execution result to the process;
If it is determined that the two applications are different in the determination of whether they are the same or different, the OS kernel emulation step emulates the system call in accordance with the OS of the application, and returns the result of the emulation to the process.
本発明によれば、コンテナ型仮想化環境において、ホストOSとは異なるOS用のコンテナを実行することができる。 According to the present invention, it is possible to run a container for an OS different from the host OS in a container-based virtualization environment.
本発明の仮想マシンコンテナ装置において、例えば、
前記システムコール制御部は、前記異同の判断において、前記アプリケーションのOSと前記ホストOSカーネル部のOSの互換性を判断し、前記アプリケーションのOSの一部に前記ホストOSカーネル部のOSとの非互換性があり、その他の部分は互換性があると判断した場合、
前記ホストOSカーネル部は、前記システムコールの前記互換性の部分を実行し、前記実行結果を前記プロセスに返却し、
前記OSカーネルエミュレート部は、前記システムコールの前記非互換性の部分を前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、という態様であってもよい。
In the virtual machine container device of the present invention, for example,
When the system call control unit determines compatibility between the OS of the application and the OS of the host OS kernel unit in the determination of whether they are different or the same, and determines that a part of the OS of the application is incompatible with the OS of the host OS kernel unit and the other parts are compatible,
the host OS kernel executes the compatible part of the system call and returns the execution result to the process;
The OS kernel emulation unit may emulate the incompatible part of the system call in accordance with the OS of the application, and return the result of the emulation to the process.
本発明の仮想マシンコンテナ装置は、例えば、
さらに、通信部を含み、
前記通信部は、外部ネットワークを介して他の装置と通信可能であり、
前記システムコール制御部は、前記異同の判断において、前記アプリケーションのOSが前記ホストOSカーネル部のOSと異なり、かつ前記OSカーネルエミュレート部でのエミュレートが不可と判断した場合、前記通信部を介して、前記アプリケーションのOSを実行可能な前記他の装置に前記システムコールを実行させ、前記実行結果を前記プロセスに返却させる、という態様であってもよい。
The virtual machine container device of the present invention includes, for example:
Further, a communication unit is included,
the communication unit is capable of communicating with other devices via an external network;
If the system call control unit determines, in the determination of whether the OS of the application is different from the OS of the host OS kernel unit and cannot be emulated by the OS kernel emulation unit, it may cause the other device that can execute the OS of the application to execute the system call via the communication unit, and return the execution result to the process.
本発明の仮想マシンコンテナ装置において、例えば、
前記仮想マシンコンテナ部は、ハードウエア仮想化機能により生成されたものである、という態様であってもよい。
In the virtual machine container device of the present invention, for example,
The virtual machine container unit may be generated by a hardware virtualization function.
本発明の仮想マシンコンテナ方法において、例えば、
前記システムコール制御工程は、前記異同の判断において、前記アプリケーションのOSと前記ホストOSカーネル工程が取り扱うOSの互換性を判断し、前記アプリケーションのOSの一部に前記ホストOSカーネル工程が取り扱うOSとの非互換性があり、その他の部分は互換性があると判断した場合、
前記ホストOSカーネル工程は、前記システムコールの前記互換性の部分を実行し、前記実行結果を前記プロセスに返却し、
前記OSカーネルエミュレート工程は、前記システムコールの前記非互換性の部分を前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、という態様であってもよい。
In the virtual machine container method of the present invention, for example,
In the determination of similarity or difference, the system call control process determines compatibility between the OS of the application and the OS handled by the host OS kernel process, and when it is determined that a part of the OS of the application is incompatible with the OS handled by the host OS kernel process and the other part is compatible,
The host OS kernel process executes the compatible portion of the system call and returns the execution result to the process;
The OS kernel emulation step may emulate the incompatible part of the system call in accordance with the OS of the application, and return the result of the emulation to the process.
本発明の仮想マシンコンテナ方法は、例えば、
前記システムコール制御工程は、前記異同の判断において、前記アプリケーションのOSが前記ホストOSカーネル工程が取り扱うOSと異なり、かつ前記OSカーネルエミュレート工程でのエミュレートが不可と判断した場合、通信部を介して、前記アプリケーションのOSを実行可能な他の装置に前記システムコールを実行させ、前記実行結果を前記プロセスに返却させる、という態様であってもよい。
The virtual machine container method of the present invention includes, for example,
If the system call control process determines in the determination of whether the OS of the application is different from the OS handled by the host OS kernel process and cannot be emulated in the OS kernel emulation process, the system call control process may have another device capable of executing the OS of the application execute the system call via a communication unit and return the execution result to the process.
本発明の仮想マシンコンテナ方法において、例えば、
前記仮想マシンコンテナ工程が取り扱う前記仮想マシンコンテナは、ハードウエア仮想化機能により生成されたものである、という態様であってもよい。
In the virtual machine container method of the present invention, for example,
The virtual machine container handled by the virtual machine container process may be generated by a hardware virtualization function.
本発明のプログラムは、本発明の方法の各工程を、手順として、コンピュータに実行させるためのプログラムである。 The program of the present invention is a program that causes a computer to execute each step of the method of the present invention as a procedure.
本発明の記録媒体は、本発明のプログラムを記録しているコンピュータ読み取り可能な記録媒体である。 The recording medium of the present invention is a computer-readable recording medium on which the program of the present invention is recorded.
本発明において、「OS」とは、オペレーティングシステムを意味する略語である。 In this invention, "OS" is an abbreviation for operating system.
次に、本発明の実施形態について図を用いて説明する。本発明は、以下の実施形態には限定されない。以下の各図において、同一部分には、同一符号を付している。また、各実施形態の説明は、特に言及がない限り、互いの説明を援用でき、各実施形態の構成は、特に言及がない限り、組合せ可能である。本明細書において「部」とは、例えば、広義の回路によって実施されるハードウエア資源と、これらのハードウエア資源によって具体的に実現されうるソフトウエアの情報処理とを合わせたものも含みうる。 Next, embodiments of the present invention will be described using the drawings. The present invention is not limited to the following embodiments. In the following drawings, identical parts are designated by the same reference numerals. Furthermore, unless otherwise specified, the descriptions of each embodiment can be used interchangeably, and the configurations of each embodiment can be combined unless otherwise specified. In this specification, the term "unit" can include, for example, a combination of hardware resources implemented by a circuit in the broad sense and software information processing that can be specifically realized by these hardware resources.
[実施形態1]
図1は、本実施形態の仮想マシンコンテナ装置10の構成の一例を示すブロック図である。図1に示すように、本装置10は、仮想マシンコンテナ部11、仮想マシンモニタ部12、システムコール制御部13、ホストOSカーネル部14、及びOSカーネルエミュレート部15を含む。また、本装置10は、任意の構成として、さらに、通信部16等を含んでもよい。
[Embodiment 1]
1 is a block diagram showing an example of the configuration of a virtual machine container device 10 according to this embodiment. As shown in FIG. 1, the device 10 includes a virtual machine container unit 11, a virtual machine monitor unit 12, a system call control unit 13, a host OS kernel unit 14, and an OS kernel emulation unit 15. The device 10 may further include a communication unit 16 or the like as an optional component.
本装置10は、例えば、前記各部を含む1つの装置でもよいし、前記各部が、通信回線網を介して接続可能な装置でもよい。本態様の場合、前記各部は、例えば、内部バスにより相互に接続されていてもよい。 The device 10 may be, for example, a single device including each of the above-mentioned components, or a device in which each of the above-mentioned components can be connected via a communications network. In this embodiment, the components may be interconnected, for example, by an internal bus.
また、本装置10は、前記通信回線網を介して、後述する外部装置と接続可能である。前記通信回線網は、特に制限されず、公知のネットワークを使用でき、例えば、有線でも無線でもよい。前記通信回線網は、例えば、インターネット回線、WWW(World Wide Web)、電話回線、LAN(Local Area Network)、SAN(Storage Area Network)、DTN(Delay Tolerant Networking)、LPWA(Low Power Wide Area)、L5G(ローカル5G)、等があげられる。無線通信としては、例えば、Wi-Fi(登録商標)、Bluetooth(登録商標)、ローカル5G、LPWA等が挙げられる。前記無線通信としては、各装置が直接通信する形態(Ad Hoc通信)、インフラストラクチャ(infrastructure通信)、アクセスポイントを介した間接通信等であってもよい。 The device 10 can also connect to external devices (described later) via the communication network. The communication network is not particularly limited and can be any known network, whether wired or wireless. Examples of communication networks include the Internet, WWW (World Wide Web), telephone lines, LAN (Local Area Network), SAN (Storage Area Network), DTN (Delay Tolerant Networking), LPWA (Low Power Wide Area), and L5G (Local 5G). Examples of wireless networks include Wi-Fi (registered trademark), Bluetooth (registered trademark), Local 5G, and LPWA. The wireless communication may be in the form of direct communication between devices (ad hoc communication), infrastructure communication, indirect communication via an access point, etc.
本装置10は、例えば、システムとしてサーバに組み込まれていてもよい。 The device 10 may, for example, be incorporated into a server as a system.
本装置10は、例えば、本発明のプログラムがインストールされたパーソナルコンピュータ(PC、例えば、デスクトップ型、ノート型)、スマートフォン、タブレット端末、ウエアラブル端末等であってもよい。本態様の場合、本装置10は、例えば、メインメモリ上にロードされたソフトウエア(本発明のプログラム等)によって前記各部の機能を実現可能である。 The device 10 may be, for example, a personal computer (PC, e.g., desktop or laptop) on which the program of the present invention is installed, a smartphone, a tablet terminal, a wearable terminal, etc. In this embodiment, the device 10 can realize the functions of each of the above-mentioned parts, for example, by software (e.g., the program of the present invention) loaded onto the main memory.
本装置10の各部の全部又は一部が、クラウド上で実現されてもよい。本装置10は、例えば、前記各部のうち少なくとも一つがサーバ上にあり、その他の前記各部が端末上にあるような、クラウドコンピューティングやエッジコンピューティング等の形態であってもよい。 All or part of the components of the device 10 may be implemented on the cloud. The device 10 may be implemented in a form such as cloud computing or edge computing, in which, for example, at least one of the components is located on a server and the other components are located on a terminal.
図2に、本装置10のハードウエア構成のブロック図を例示する。本装置10は、例えば、中央処理装置(CPU、GPU等)101、メモリ102、バス103、記憶装置104、入力装置105、出力装置106、及び通信デバイス107等を含んでもよい。なお、これらは例示であって、本装置10のハードウエア構成は、前記各部の処理を実行可能であれば、これに限定されない。また、本装置10に含まれる中央処理装置101等の数も図2の例示に限定されるものではなく、例えば、複数の中央処理装置101が本装置10に含まれていてもよい。本装置10のハードウエア構成の各部は、それぞれのインタフェース(I/F)により、バス103を介して相互に接続されている。 Figure 2 shows an example block diagram of the hardware configuration of the device 10. The device 10 may include, for example, a central processing unit (CPU, GPU, etc.) 101, memory 102, bus 103, storage device 104, input device 105, output device 106, and communication device 107. Note that these are examples, and the hardware configuration of the device 10 is not limited to this as long as it is capable of executing the processing of each of the above-mentioned units. Furthermore, the number of central processing units 101, etc. included in the device 10 is not limited to the example shown in Figure 2; for example, the device 10 may include multiple central processing units 101. The units in the hardware configuration of the device 10 are connected to each other via their respective interfaces (I/F) and bus 103.
中央処理装置101は、本装置10の全体の制御を担う。本装置10において、中央処理装置101により、例えば、本発明のプログラムやその他のプログラムが実行され、また、各種情報の読み込みや書き込みが行われる。中央処理装置101は、例えば、本装置10の各部の機能を実行する。 The central processing unit 101 is responsible for overall control of the device 10. In the device 10, the central processing unit 101 executes, for example, the program of the present invention and other programs, and also reads and writes various types of information. The central processing unit 101 executes, for example, the functions of each part of the device 10.
バス103は、例えば、外部装置とも接続できる。前記外部装置は、例えば、外部記憶装置(外部データベース等)、外部入力装置、外部出力装置、等があげられる。本装置10は、例えば、バス103に接続された通信デバイス107により、外部ネットワーク(前記通信回線網)に接続でき、外部ネットワークを介して、他の装置と接続することもできる。通信デバイス107は、例えば、通信部16として機能する。 The bus 103 can also be connected to, for example, an external device. Examples of the external device include an external storage device (such as an external database), an external input device, and an external output device. The device 10 can be connected to an external network (the communication line network) via, for example, a communication device 107 connected to the bus 103, and can also be connected to other devices via the external network. The communication device 107 functions, for example, as the communication unit 16.
メモリ102は、例えば、メインメモリ(主記憶装置)が挙げられる。中央処理装置101が処理を行う際には、例えば、後述する記憶装置104に記憶されている本発明のプログラム等の種々の動作プログラムを、メモリ102が読み込み、中央処理装置101は、メモリ102からデータを受け取って、プログラムを実行する。前記メインメモリは、例えば、RAM(ランダムアクセスメモリ)である。また、メモリ102は、例えば、ROM(読み出し専用メモリ)であってもよい。 The memory 102 may be, for example, a main memory (primary storage device). When the central processing unit 101 performs processing, the memory 102 reads various operating programs, such as the program of the present invention, stored in the storage device 104 (described below), and the central processing unit 101 receives data from the memory 102 and executes the programs. The main memory may be, for example, a RAM (random access memory). The memory 102 may also be, for example, a ROM (read-only memory).
記憶装置104は、例えば、前記メインメモリ(主記憶装置)に対して、いわゆる補助記憶装置ともいう。前述のように、記憶装置104には、本発明のプログラムを含む動作プログラムが格納されている。記憶装置104は、例えば、記録媒体と、記録媒体に読み書きするドライブとの組合せであってもよい。前記記録媒体は、特に制限されず、例えば、内蔵型でも外付け型でもよく、HD(ハードディスク)、CD-ROM、CD-R、CD-RW、MO、DVD、フラッシュメモリー、メモリーカード等が挙げられる。記憶装置104は、例えば、記録媒体とドライブとが一体化されたハードディスクドライブ(HDD)、及びソリッドステートドライブ(SSD)であってもよい。 The storage device 104 is also referred to as an auxiliary storage device, in contrast to the main memory (primary storage device). As mentioned above, the storage device 104 stores operating programs, including the program of the present invention. The storage device 104 may be, for example, a combination of a recording medium and a drive that reads and writes from and to the recording medium. The recording medium is not particularly limited and may be internal or external, and examples include HD (hard disk), CD-ROM, CD-R, CD-RW, MO, DVD, flash memory, and memory card. The storage device 104 may be, for example, a hard disk drive (HDD) or solid state drive (SSD) that integrates the recording medium and drive.
本装置10において、メモリ102及び記憶装置104は、ログ情報、外部データベース(図示せず)や外部の装置から取得した情報、本装置10の各処理によって生じた情報、本装置10が各処理を実行する際に用いる情報等の種々の情報を記憶することも可能である。なお、少なくとも一部の情報は、例えば、メモリ102及び記憶装置104以外の外部サーバに記憶されていてもよいし、複数の端末にブロックチェーン技術等を用いて分散して記憶されていてもよい。 In the device 10, the memory 102 and storage device 104 can also store various information, such as log information, information obtained from an external database (not shown) or external device, information generated by each process of the device 10, and information used by the device 10 when executing each process. Note that at least some of the information may be stored, for example, on an external server other than the memory 102 and storage device 104, or may be stored in a distributed manner across multiple terminals using blockchain technology, etc.
本装置10は、例えば、さらに、入力装置105、及び出力装置106を含んでもよい。入力装置105は、例えば、文字、数字、画面上に表示された物の位置、画像、音等を入力する装置であり、具体的には、デジタイザ(タッチパネル等)、キーボード、マウス、スキャナ、撮像装置、マイク、センサ等が挙げられる。出力装置106は、例えば、表示装置(LEDディスプレイ、液晶ディスプレイ)、プリンター、スピーカー等が挙げられる。 The device 10 may further include, for example, an input device 105 and an output device 106. The input device 105 is a device for inputting, for example, letters, numbers, the position of an object displayed on the screen, an image, sound, etc., and specific examples include a digitizer (touch panel, etc.), a keyboard, a mouse, a scanner, an imaging device, a microphone, a sensor, etc. The output device 106 is, for example, a display device (LED display, LCD display), a printer, a speaker, etc.
つぎに、本実施形態の仮想マシンコンテナの制御方法(以下、単に、制御方法ともいう)の一例を、図3のフローチャートに基づき説明する。本実施形態の制御方法は、例えば、図1の仮想マシンコンテナ装置10を用いて、次のように実施する。なお、本実施形態の制御方法は、図1の仮想マシンコンテナ装置10の使用には限定されない。 Next, an example of a virtual machine container control method (hereinafter simply referred to as a control method) of this embodiment will be described based on the flowchart in Figure 3. The control method of this embodiment is implemented, for example, as follows using the virtual machine container device 10 of Figure 1. Note that the control method of this embodiment is not limited to use with the virtual machine container device 10 of Figure 1.
以下において、前記仮想マシンコンテナ工程は、例えば、仮想マシンコンテナ部11により実行でき、前記仮想マシンモニタ工程は、例えば、仮想マシンモニタ部12により実行でき、前記システムコール制御工程は、例えば、システムコール制御部13により実行でき、前記ホストOSカーネル工程は、例えば、ホストOSカーネル部14により実行でき、前記OSカーネルエミュレート工程は、例えば、OSカーネルエミュレート部15により実行できる。 In the following, the virtual machine container process can be executed, for example, by the virtual machine container unit 11, the virtual machine monitor process can be executed, for example, by the virtual machine monitor unit 12, the system call control process can be executed, for example, by the system call control unit 13, the host OS kernel process can be executed, for example, by the host OS kernel unit 14, and the OS kernel emulation process can be executed, for example, by the OS kernel emulation unit 15.
まず、仮想マシンコンテナ部11により、ロードされたアプリケーションを実行する(S11)。次に、仮想マシンモニタ部12により、前記アプリケーションのプロセスが生成するシステムコールを取得する(S12)。次に、システムコール制御部13により、仮想マシンモニタ部12が取得した前記システムコールにより前記アプリケーションのOS及びホストOSカーネル部14のOS(すなわち、ホストOS)の異同を判断する(S13)。前記異同の判断において同じと判断した場合(A)、ホストOSカーネル部14により、前記システムコールを実行し、前記実行結果を前記プロセスに返却し(S14)、終了する(END)。ホストOSカーネル部14による「前記システムコールの実行」は、例えば、「前記システムコールに応える」ともいえる。一方で、前記異同の判断において異なると判断した場合(B)、OSカーネルエミュレート部15は、前記システムコールを前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却し(S15)、終了する(END)。 First, the virtual machine container unit 11 executes the loaded application (S11). Next, the virtual machine monitor unit 12 acquires a system call generated by the application process (S12). Next, the system call control unit 13 determines whether the OS of the application and the OS of the host OS kernel unit 14 (i.e., the host OS) are the same or different based on the system call acquired by the virtual machine monitor unit 12 (S13). If the determination determines that they are the same (A), the host OS kernel unit 14 executes the system call and returns the execution result to the process (S14), and the process terminates (END). The "execution of the system call" by the host OS kernel unit 14 can also be referred to as, for example, "responding to the system call." On the other hand, if the determination determines that they are different (B), the OS kernel emulation unit 15 emulates the system call according to the OS of the application, returns the execution result of the emulation to the process (S15), and the process terminates (END).
仮想マシンコンテナ部11は、例えば、ハードウエア仮想化機能(ハードウエアの仮想化機能)により生成されたものであってもよい。前記ハードウエア仮想化機能は、例えば、ハードウエアが提供する機能であって、仮想マシンコンテナを有する仮想マシン機能を実現する機能である。ここで、仮想マシンコンテナとは、稼働中のOSの一部を分離して他と隔離された仮想マシン上のアプリケーションの実行環境をいう。仮想マシンコンテナ部11がハードウエア仮想化機能により生成されたものである場合、仮想マシンモニタ部12は、例えば、前記ハードウエア仮想化機能を利用して、前記アプリケーションのプロセスが生成するシステムコールを取得する。このように、前記ハードウエア仮想化機能による前記仮想マシン機能を利用することで、ソフトウエアの変更を必要とせずとも、前記システムコールをトラップ可能である。また、前記ハードウエア仮想化機能による前記仮想マシン機能を利用することで、ソフトウエアの実行時のオーバーヘッドを高めずに前記システムコールをトラップ可能である。 The virtual machine container unit 11 may be generated, for example, by a hardware virtualization function (hardware virtualization function). The hardware virtualization function is, for example, a function provided by hardware that realizes a virtual machine function having a virtual machine container. Here, a virtual machine container refers to an application execution environment on a virtual machine that is isolated by separating a part of a running OS. When the virtual machine container unit 11 is generated by a hardware virtualization function, the virtual machine monitor unit 12, for example, uses the hardware virtualization function to obtain system calls generated by the application process. In this way, by using the virtual machine function provided by the hardware virtualization function, it is possible to trap the system calls without requiring software modifications. Furthermore, by using the virtual machine function provided by the hardware virtualization function, it is possible to trap the system calls without increasing the overhead during software execution.
本発明において、前記仮想マシンコンテナは、例えば、OS(ゲストOS)を含んでいてもよいが、OS(ゲストOS)を含んでいなくともよい。 In the present invention, the virtual machine container may include, for example, an OS (guest OS), but it does not have to include an OS (guest OS).
ここで、アプリケーション及びシステムコールについて説明する。前記アプリケーションは、OSの中核であるカーネルの機能を呼び出して動作する。このような前記カーネルに対する呼び出しをシステムコールという。 Here, we will explain applications and system calls. Applications run by calling functions from the kernel, which is the core of the OS. Such calls to the kernel are called system calls.
仮想マシンモニタ部12は、ハイパーバイザーともいえる。仮想マシンモニタ部12の具体的な処理については、後述の実施形態2にて説明する。 The virtual machine monitor unit 12 can also be considered a hypervisor. Specific processing by the virtual machine monitor unit 12 will be described in embodiment 2 below.
システムコール制御部13において、「前記アプリケーションのOS及びホストOSカーネル部14のOSの異同」とは、具体的に、OSの種類の異同である。そして、OSの種別に応じて、ホストOSカーネル部14及びOSカーネルエミュレート部15が前述のように動作する。システムコール制御部13は、例えば、ディスパッチャともいい、仮想マシンモニタ部12の一部であってもよい。 In the system call control unit 13, "the difference between the OS of the application and the OS of the host OS kernel unit 14" specifically refers to the difference between the types of OS. Then, depending on the type of OS, the host OS kernel unit 14 and the OS kernel emulation unit 15 operate as described above. The system call control unit 13 is also called a dispatcher, for example, and may be part of the virtual machine monitor unit 12.
システムコール制御部13は、例えば、前記異同の判断(S13)に加えて、前記アプリケーションのOSとホストOSカーネル部14のOSの互換性を判断してもよい。そして、前記アプリケーションのOSの一部にホストOSカーネル部14のOSとの非互換性があり、その他の部分は互換性があると判断した場合(C)、ホストOSカーネル部14は、前記システムコールの前記互換性の部分を実行し、前記実行結果を前記プロセスに返却してもよい(S16)。一方で、OSカーネルエミュレート部15は、前記システムコールの前記非互換性の部分を前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却してもよい(S16)。そして、前記工程S16を実行した後に、終了する(END)。前述のように、前記非互換性のシステムコールだけエミュレートし、前記互換性のあるシステムコールはホストOSで実行する態様によれば、エミュレータの開発が簡略化できる。 For example, in addition to determining whether the OS is the same or different (S13), the system call control unit 13 may determine the compatibility between the OS of the application and the OS of the host OS kernel unit 14. If it is determined that part of the OS of the application is incompatible with the OS of the host OS kernel unit 14 and the other parts are compatible (C), the host OS kernel unit 14 may execute the compatible part of the system call and return the execution result to the process (S16). On the other hand, the OS kernel emulation unit 15 may emulate the incompatible part of the system call in accordance with the OS of the application and return the execution result of the emulation to the process (S16). Then, after executing step S16, the process ends (END). As described above, by emulating only the incompatible system calls and executing the compatible system calls on the host OS, emulator development can be simplified.
OSカーネルエミュレート部15によるエミュレーション(エミュレート)について説明する。前記エミュレーションは、アプリケーションの動作対象のOS(以下、対象OSともいう)とホストOSとが同一の機能を提供しているが、機能のインターフェイスが異なる場合に、前記ホストOSが提供する機能のインターフェイスに合わせるように、前記対象OSが提供する機能のインターフェイスの変換を行ったうえで、前記ホストOSにシステムコールを発行する。具体的に、エミュレーションには、例えば、各インターフェイスの差異の程度に応じて、下記(1)~(4)に説明する方式のうちいずれかを実行する。 The following describes emulation by the OS kernel emulation unit 15. When the OS on which an application runs (hereinafter also referred to as the target OS) and the host OS provide the same functions but the interfaces of the functions differ, the emulation converts the interface of the functions provided by the target OS to match the interface of the functions provided by the host OS, and then issues a system call to the host OS. Specifically, the emulation executes one of the methods described below in (1) to (4), depending on the degree of difference between the interfaces.
(1)システムコール呼び出し時のパラメータの順序が異なる場合
前記アプリケーションが発行したシステムコールのパラメータを、前記ホストOSが期待する順序に変換する。
(1) When the order of parameters when invoking a system call is different The parameters of the system call issued by the application are converted into the order expected by the host OS.
(2)システムコール呼び出し時のパラメータの値とその意味の対応付けが異なる場合
前記アプリケーションが発行したシステムコールのパラメータの値を、変換表や変換規則に基づいて、前記ホストOSが期待する値に変換する。
(2) When the correspondence between the parameter value and its meaning when the system call is invoked is different The parameter value of the system call issued by the application is converted into the value expected by the host OS based on a conversion table or conversion rules.
(3)前記ホストOSが提供する機能を組合せることで前記対象OSが提供する機能と同一機能を実現できる場合
要求されたシステムコールの機能を前記ホストOSで実現するために、前記ホストOSの一連のシステムコール呼び出しに変換する。また、必要に応じて、システムコール呼び出し時のパラメータも前記ホストOSが期待する順序及び値に変換する。
(3) When the same function as the function provided by the target OS can be realized by combining functions provided by the host OS, the requested system call is converted into a series of system call invocations of the host OS in order to realize the function in the host OS. If necessary, the parameters at the time of the system call invocation are also converted into the order and values expected by the host OS.
(4)前記ホストOSのシステムコールだけでは前記対象OSが提供する機能と同一の機能を提供できない場合
前記同一機能を提供するためのプログラムをエミュレータ内または外部コンポーネントとして実装し、それを利用する。
(4) When the system calls of the host OS alone cannot provide the same functions as those provided by the target OS, a program for providing the same functions is implemented within the emulator or as an external component and used.
前述のように、本装置10は、例えば、さらに、通信部16を含んでもよい。通信部16は、外部ネットワークを介して他の装置と通信可能である。通信部16を含む態様において、システムコール制御部13は、例えば、前記異同の判断(S13)に加えて、OSカーネルエミュレート部15でのエミュレートが可能か否かを判断してもよい。前記アプリケーションのOSがホストOSカーネル部14のOSと異なり、かつOSカーネルエミュレート部15でのエミュレートが不可と判断した場合(D)、システムコール制御部13は、例えば、通信部16を介して、前記アプリケーションのOSを実行可能な前記他の装置に前記システムコールを実行させ、前記実行結果を前記プロセスに返却させ(S17)、終了してもよい(END)。前記他の装置は、特に制限されず、仮想マシンでもよいし、物理マシンでもよい。「OSカーネルエミュレート部15でのエミュレートが不可」とは、完全に不可の場合に加え、エミュレートによって本装置10の性能が低下する場合、エミュレート機能を開発することにコストや労力がかかる場合等が含まれる。本態様によれば、前述のような場合であっても、前記システムコールを実行可能である。一方で、例えば、前記アプリケーションのOSがホストOSカーネル部14のOSと異なり、かつOSカーネルエミュレート部15でのエミュレートが可能と判断した場合は、例えば、前記工程S15と同様の処理を実行してもよい。 As described above, the device 10 may further include, for example, a communication unit 16. The communication unit 16 is capable of communicating with other devices via an external network. In an embodiment including the communication unit 16, the system call control unit 13 may, in addition to determining whether the OS kernel emulation unit 15 is capable of emulation (S13), determine whether the OS kernel emulation unit 15 is capable of emulation. If the OS of the application differs from the OS of the host OS kernel unit 14 and it is determined that emulation by the OS kernel emulation unit 15 is not possible (D), the system call control unit 13 may, for example, cause the other device capable of executing the OS of the application to execute the system call via the communication unit 16, return the execution result to the process (S17), and terminate (END). The other device is not particularly limited and may be a virtual machine or a physical machine. "Emulation by the OS kernel emulation unit 15 is not possible" refers to cases where emulation is completely impossible, as well as cases where emulation would degrade the performance of the device 10 or where developing an emulation function would require cost or effort. According to this aspect, the system call can be executed even in the above-mentioned case. On the other hand, if, for example, it is determined that the OS of the application is different from the OS of the host OS kernel unit 14 and can be emulated by the OS kernel emulation unit 15, processing similar to step S15 may be executed.
システムコール制御部13は、例えば、前記アプリケーションのOSとホストOSカーネル部14のOSとの前記非互換性の部分がOSカーネルエミュレート部15でエミュレート可能か否かを判断してもよい。前記非互換性の部分のエミュレートが不可と判断した場合、システムコール制御部13は、例えば、前記システムコールの前記非互換性の部分を前記他の装置にエミュレーションさせ、前記他の装置に前記システムコールの前記非互換性の部分を実行させてもよい。 The system call control unit 13 may, for example, determine whether the incompatible part between the OS of the application and the OS of the host OS kernel unit 14 can be emulated by the OS kernel emulation unit 15. If it determines that the incompatible part cannot be emulated, the system call control unit 13 may, for example, have the other device emulate the incompatible part of the system call and have the other device execute the incompatible part of the system call.
本実施形態の発明は、例えば、以下の効果を奏する。 The invention of this embodiment provides the following advantages, for example:
(1)リソース及びオーバーヘッド等
本実施形態によれば、各仮想マシンコンテナ部11にOSがなくともよいので、従来の仮想マシン型仮想化の環境より少ないリソース及び低いオーバーヘッドで複数のOSのアプリケーションを単一のホストOS上で実行可能である。オーバーヘッドが低いということは、起動速度が速くなることを意味する。また、本実施形態によれば、前記エミュレーションにより、前記複数のOSが前記ホストOSと異なる場合であっても、前記アプリケーションを実行可能である。
(1) Resources, Overhead, etc. According to this embodiment, each virtual machine container unit 11 does not need to have an OS, so applications for multiple OSs can be executed on a single host OS with fewer resources and lower overhead than in a conventional virtual machine-based virtualization environment. Lower overhead means faster startup speed. Furthermore, according to this embodiment, the emulation allows the applications to be executed even if the multiple OSs are different from the host OS.
(2)設計自由度等
本実施形態によれば、複数の仮想マシンコンテナで構成するアプリケーション設計の自由度が上がる。例えば、ウェブサーバはOSとしてLinux(登録商標)を有するコンテナ、データベースはOSとしてWindows(登録商標)を有するコンテナ、といった構成が可能になる。また、コンテナで実行するアプリケーションの改変及びライブラリとの結合なしに既存のアプリケーションや市販のアプリケーションをそのままコンテナ内で実行可能である。
(2) Design Flexibility, etc. According to this embodiment, the degree of freedom in designing an application configured with multiple virtual machine containers is increased. For example, a web server can be configured as a container with Linux (registered trademark) as the OS, and a database can be configured as a container with Windows (registered trademark) as the OS. Furthermore, existing applications and commercially available applications can be executed in the container as is without modifying the application to be executed in the container or combining it with a library.
(3)構築コスト及び運用コスト等
本装置10の各部(仮想マシンコンテナ部11、仮想マシンモニタ部12、システムコール制御部13、ホストOSカーネル部14、及びOSカーネルエミュレート部15)の処理がメインメモリ上にロードされたソフトウエアで実現される態様の場合、コンテナを実行するために必要なハードウエア(または仮想マシン)及びホストOSの構築コスト及び運用コストが削減できる。具体的に、OSの種類毎にOSが動作するハードウエア環境を準備し、その上にOS環境を構築し、これらを管理及び運用するコストが削減できる。また、ホストOSを統一することにより低コストでクラスタ構築及び冗長性向上を実行可能である。さらに、エミュレーションライブラリの開発も不要である。
(3) Construction Costs and Operation Costs, etc. When the processing of each part of the device 10 (the virtual machine container unit 11, the virtual machine monitor unit 12, the system call control unit 13, the host OS kernel unit 14, and the OS kernel emulation unit 15) is realized by software loaded on main memory, the construction costs and operation costs of the hardware (or virtual machine) and the host OS required to run the container can be reduced. Specifically, the costs of preparing a hardware environment on which the OS runs for each type of OS, building the OS environment on that, and managing and operating these can be reduced. Furthermore, by standardizing the host OS, cluster construction and improved redundancy can be achieved at low cost. Furthermore, there is no need to develop an emulation library.
(4)通信速度
本実施形態によれば、異なるOS用コンテナ間の通信を高速化できる。この点について、より具体的に説明する。従来の仮想マシン型仮想化の環境では、OS間通信となるのでオーバーヘッドが大きくなる。しかしながら、同一ホスト上のコンテナ間通信は、メモリ間コピーで実現できるので、本実施形態によれば、異なるOS用コンテナ間の通信が従来の仮想マシン型仮想化と比べて高速となる。
(4) Communication Speed According to this embodiment, communication between containers for different OSs can be accelerated. This point will be explained in more detail. In a conventional virtual machine-based virtualization environment, communication is between OSs, which results in large overhead. However, communication between containers on the same host can be achieved by memory-to-memory copying. Therefore, according to this embodiment, communication between containers for different OSs is faster than in conventional virtual machine-based virtualization.
[実施形態2]
前記実施形態1の仮想マシンコンテナ装置10及び制御方法をより具体的に説明する。
[Embodiment 2]
The virtual machine container apparatus 10 and the control method according to the first embodiment will now be described in more detail.
図3に示す本実施形態の制御方法の一例を図4A及び図4Bを用いてより具体的に説明する。図4Aは、本実施形態の制御方法における仮想マシンコンテナの実行の一例を示すフローチャートである。まず、準備段階として、図4Aに示す工程S21~S23を実行する。前記工程S21は、仮想マシンコンテナ部11を生成する工程である。仮想マシンコンテナ部11は、前述のように、ハードウエア仮想化機能により生成可能である。前記工程S22は、仮想マシンコンテナ部11におけるシステムコールをトラップするように設定する工程である。前記システムコールは、後述の工程S23にてロードされるアプリケーションのプロセスが生成するものである。前記工程S23は、仮想マシンコンテナ部11のメモリ空間にアプリケーションをロードする工程である。そして、仮想マシンコンテナ部11内で前記アプリケーションが実行される(S24)。 An example of the control method of this embodiment shown in Figure 3 will be described in more detail using Figures 4A and 4B. Figure 4A is a flowchart showing an example of executing a virtual machine container in the control method of this embodiment. First, as a preparation stage, steps S21 to S23 shown in Figure 4A are executed. Step S21 is a step of generating the virtual machine container unit 11. As described above, the virtual machine container unit 11 can be generated using a hardware virtualization function. Step S22 is a step of setting the virtual machine container unit 11 to trap system calls. The system calls are generated by the application process loaded in step S23, which will be described later. Step S23 is a step of loading the application into the memory space of the virtual machine container unit 11. The application is then executed within the virtual machine container unit 11 (S24).
次に、仮想マシンコンテナ部11の実行段階として、図4Aに示す工程S25~S28を実行する。これらの工程は、例えば、仮想マシンコンテナ部11に対応するハードウエア(例えば、中央処理装置101)にて実行される。前記工程S25は、前記アプリケーションによる命令を取得する工程である。前記工程S26は、前記命令が特定の命令(システムコールに関する命令を含む)であるか否かを判定する工程である。前記特定の命令とは、例えば、仮想マシンコンテナ部11内で前記アプリケーションをそのまま実行させるとシステムに問題が発生する可能性のある命令である。より具体的には、例えば、特別な権限が必要な命令、許可されていないメモリ領域にアクセスする命令、等がある。前記アプリケーションが前記特定の命令をしようとしていることは、例えば、ハードウエア仮想化機能が検知する。前記工程S27は、前記命令が前記特定の命令ではない場合(NO)、仮想マシンコンテナ部11内で前記命令を実行する工程である。前記工程S28は、前記命令が前記特定の命令である場合(YES)、仮想マシンコンテナ部11内での前記特定の命令の実行を一時中断し、仮想マシンモニタ部12に前記特定の命令に関する処理を移す工程である。そして、前記特定の命令がシステムコールに関する命令であれば、図3にて説明したように、仮想マシンモニタ部12による前記システムコールの取得等の処理が実行され、前記システムコールが実行される(S29)。前記特定の命令がシステムコールに関する命令でない場合の処理については、図6を用いて後述する。本実施形態の制御方法における仮想マシンコンテナの実行は、例えば、前記工程S27又は前記工程S29のいずれか一方が実行された後に終了する(END)。本実施形態の制御方法は、例えば、前記工程S27及び前記工程S29の後、前記工程S25から繰り返し処理を実行してもよい。 Next, steps S25 to S28 shown in FIG. 4A are executed as the execution stage of the virtual machine container unit 11. These steps are executed, for example, by hardware (e.g., the central processing unit 101) corresponding to the virtual machine container unit 11. Step S25 is a step of acquiring an instruction issued by the application. Step S26 is a step of determining whether the instruction is a specific instruction (including an instruction related to a system call). The specific instruction is, for example, an instruction that could cause a problem in the system if the application were to be executed as is within the virtual machine container unit 11. More specifically, examples of the specific instruction include an instruction that requires special privileges or an instruction that accesses an unauthorized memory area. The application's attempt to execute the specific instruction is detected, for example, by a hardware virtualization function. Step S27 is a step of executing the instruction within the virtual machine container unit 11 if the instruction is not the specific instruction (NO). Step S28 is a step of temporarily suspending execution of the specific instruction within the virtual machine container unit 11 and transferring processing related to the specific instruction to the virtual machine monitor unit 12 if the instruction is the specific instruction (YES). If the specific command is a command related to a system call, the virtual machine monitor unit 12 executes processing such as acquiring the system call, as described in FIG. 3, and the system call is executed (S29). Processing when the specific command is not a command related to a system call will be described later using FIG. 6. Execution of the virtual machine container in the control method of this embodiment ends (END) after, for example, either step S27 or step S29 is executed. In the control method of this embodiment, for example, after steps S27 and S29, processing may be repeated from step S25.
図4Bは、本実施形態の制御方法におけるシステムコールの実行の一例を示すフローチャートである。まず、前段階として、工程S31では、図4Aにて説明したように、前記特定の命令の処理に関する制御が仮想マシンモニタ部12に移行される。次に、工程S32では、前記移行(以下、制御移行ともいう)が前記システムコールに起因するものか否か、すなわち、前記特定の命令がシステムコールに関する命令であるか否かを判定する。前記工程S32は、例えば、仮想マシンモニタ部12により実行される。前記制御移行が前記システムコールに起因するものではない場合(NO)、工程S33に進む。 Figure 4B is a flowchart showing an example of system call execution in the control method of this embodiment. First, as a preliminary step, in step S31, control related to the processing of the specific command is transferred to the virtual machine monitor unit 12, as described in Figure 4A. Next, in step S32, it is determined whether the transfer (hereinafter also referred to as control transfer) is due to the system call, i.e., whether the specific command is a command related to a system call. Step S32 is executed, for example, by the virtual machine monitor unit 12. If the control transfer is not due to the system call (NO), the process proceeds to step S33.
図6は、前記制御移行が前記システムコールに起因するものではない場合における仮想マシンモニタ部12の処理の一例を示すフローチャートである。前記工程S33は、例えば、図6に示す工程S33-1~S33-3を含む工程である。まず、前記アプリケーションが実行しようとしている前記特定の命令を確認し、前記特定の命令の実行を許可するか否かを判断する(工程S33-1)。前記判断の結果、前記特定の命令の実行を許可しない場合(NO)、仮想マシンモニタ部12は、例えば、状況に応じて前記アプリケーションにエラーを返却又は前記アプリケーションを終了させ(工程S33-2)、終了する(END)。一方で、前記判断の結果、前記特定の命令の実行を許可する場合(YES)、仮想マシンモニタ部12は、例えば、仮想マシンコンテナ部11内の前記アプリケーションに制御を戻して、仮想マシンコンテナ部11内において前記特定の命令の実行を再開させ(工程S33-3)、終了する(END)。より具体的に、「前記命令の実行を許可する」とは、例えば、前記命令の実行に際し、特別な権限を与えること、メモリ領域にアクセスすることを許可すること等をいう。また、前記アプリケーションが実行しようとしている特定の命令によっては、仮想マシンモニタ部12が前記特定の命令を安全な方法で代理実行して前記アプリケーションに結果を返却してもよい。 Figure 6 is a flowchart showing an example of the processing of the virtual machine monitor unit 12 when the control transfer is not caused by the system call. Step S33, for example, includes steps S33-1 to S33-3 shown in Figure 6. First, the specific command that the application is attempting to execute is confirmed, and a determination is made as to whether or not to permit execution of the specific command (step S33-1). If the determination result is that execution of the specific command is not permitted (NO), the virtual machine monitor unit 12, for example, returns an error to the application or terminates the application depending on the circumstances (step S33-2), and terminates (END). On the other hand, if the determination result is that execution of the specific command is permitted (YES), the virtual machine monitor unit 12, for example, returns control to the application in the virtual machine container unit 11, resumes execution of the specific command within the virtual machine container unit 11 (step S33-3), and terminates (END). More specifically, "permitting execution of the command" refers to, for example, granting special privileges or permitting access to a memory area when executing the command. Additionally, depending on the specific command that the application is attempting to execute, the virtual machine monitor unit 12 may execute the specific command in a safe manner and return the result to the application.
図4Bの前記工程S32において、前記制御移行が前記システムコールに起因するものである場合(YES)、工程S34に進む。前記工程S34は、仮想マシンコンテナ部11のOS種別を取得する工程である。前記工程S34は、例えば、システムコール制御部13により実行される。次に、工程S35では、システムコール制御部13により前記アプリケーションのOSがホストOSと同一であるか否かを判定する。同一のOSであると判定された場合(YES)、工程S36において、前記命令に関する制御がホストOSカーネル部14のOS(ホストOS)に移行され、ホストOSカーネル部14により前記システムコールが実行される。一方で、異なるOSであると判定された場合(NO)、工程S37において、前記アプリケーションのOSがエミュレーション可能なOSか否かの判定が行われる。前記工程S37における前記判定は、例えば、システムコール制御部13により実行される。エミュレーション可能なOSであると判定された場合(YES)、工程S38において、前記命令に関する制御がOSカーネルエミュレート部15のエミュレーションに移行され、前記エミュレーションにより前記システムコールが実行される。一方で、エミュレーション不可能なOSであると判定された場合(NO)、工程S39において、前記アプリケーションのOSがリモート(通信部16との通信)実行可能なOSか否かの判定が行われる。前記工程S39は、例えば、システムコール制御部13により実行される。リモート実行可能なOSであると判定された場合(YES)、工程S40において、前記命令に関する制御が前記他の装置のOSに移行され、前記他の装置により前記システムコールが実行される。一方で、リモート実行不可能なOSであると判定された場合(NO)、工程S41において、システムコール制御部13によりエラーが前記プロセスに返却される。前記エラーは、前記システムコールを実行できないことを意味する。前記工程S41の実行後、例えば、前記システムコールの実行に関する処理を終了する(END)。前記工程S36、前記工程S38、又は前記工程S40のいずれか一つを実行した後、前記システムコールの実行結果が前記プロセスに返却される(S42)。そして、その後、終了する(END)。 In step S32 of FIG. 4B, if the control transfer is due to the system call (YES), the process proceeds to step S34. Step S34 is a step of obtaining the OS type of the virtual machine container unit 11. Step S34 is executed, for example, by the system call control unit 13. Next, in step S35, the system call control unit 13 determines whether the OS of the application is the same as the host OS. If it is determined that they are the same OS (YES), in step S36, control related to the command is transferred to the OS (host OS) of the host OS kernel unit 14, and the host OS kernel unit 14 executes the system call. On the other hand, if it is determined that they are different OSs (NO), in step S37, it is determined whether the OS of the application is an OS that can be emulated. The determination in step S37 is executed, for example, by the system call control unit 13. If it is determined that the OS is emulatable (YES), in step S38, control for the command is transferred to emulation by the OS kernel emulation unit 15, and the system call is executed by the emulation. On the other hand, if it is determined that the OS is incapable of emulation (NO), in step S39, it is determined whether the OS of the application is an OS that can be remotely executed (communication with the communication unit 16). Step S39 is executed, for example, by the system call control unit 13. If it is determined that the OS is remotely executable (YES), in step S40, control for the command is transferred to the OS of the other device, and the system call is executed by the other device. On the other hand, if it is determined that the OS is incapable of remote execution (NO), in step S41, an error is returned to the process by the system call control unit 13. The error means that the system call cannot be executed. After execution of step S41, for example, the processing related to the execution of the system call is terminated (END). After executing step S36, step S38, or step S40, the execution result of the system call is returned to the process (S42). Then, the process ends (END).
仮想マシン型仮想化、コンテナ型仮想化、Unikernelコンテナ型仮想化、本実施形態の仮想マシンコンテナ装置10についてより具体的に説明する。図5Aは、仮想マシン型仮想化における仮想化環境及びシステムコール実行の一例を示す模式図である。図5Bは、コンテナ型仮想化における仮想化環境及びシステムコール実行の一例を示す模式図である。図5Cは、Unikernelコンテナ型仮想化における仮想化環境及びシステムコール実行の一例を示す模式図である。図5Dは、本実施形態の仮想マシンコンテナ装置10における仮想化環境及びシステムコール実行の一例を示す模式図である。図5A~Dにおいて、アプリは、アプリケーションの略であり、SVCは、システムコール(スーパーバイザコール)の略である。また、以下の説明及び図5A~Dにおいて、OS-A、OS―B、OS-Cは、OSの種類を意味する。 We will now provide a more detailed explanation of virtual machine-based virtualization, container-based virtualization, and unikernel container-based virtualization, as well as the virtual machine container device 10 of this embodiment. Figure 5A is a schematic diagram showing an example of a virtualization environment and system call execution in virtual machine-based virtualization. Figure 5B is a schematic diagram showing an example of a virtualization environment and system call execution in container-based virtualization. Figure 5C is a schematic diagram showing an example of a virtualization environment and system call execution in unikernel container-based virtualization. Figure 5D is a schematic diagram showing an example of a virtualization environment and system call execution in the virtual machine container device 10 of this embodiment. In Figures 5A to 5D, app is an abbreviation for application, and SVC is an abbreviation for system call (supervisor call). In the following explanation and Figures 5A to 5D, OS-A, OS-B, and OS-C refer to types of OS.
まず、図5Aを用いて仮想マシン型仮想化について説明する。本例において、仮想マシン1は、図5A(A)に示すように、OS-AであるホストOS(ホストOSカーネル14A)上に構築され、OS-C用のアプリケーション2c、及びゲストOSカーネル3を有するものとする。ゲストOSは、OS-Cである。仮想マシン型仮想化では、ゲストOSカーネル3がアプリケーション2cからシステムコールを取得する。ゲストOSカーネル3は、ハードウエアアクセス等を実行する。前記ハードウエアアクセス等が実行されると、ハードウエア仮想化機能がそれをトラップし、仮想マシンモニタ12Aに制御が移ることになる。そして、仮想マシン型仮想化では、仮想マシンモニタ12Aにより、前記システムコールを実行する。このように、仮想マシン型仮想化では、ゲストOSカーネル3を介する必要があるため、前述したように、ゲストOSを動かすため多くのリソースが必要になり、起動に時間がかかる。 First, we will explain virtual machine-based virtualization using Figure 5A. In this example, as shown in Figure 5A (A), virtual machine 1 is built on a host OS (host OS kernel 14A), which is OS-A, and has an application 2c for OS-C and a guest OS kernel 3. The guest OS is OS-C. In virtual machine-based virtualization, guest OS kernel 3 receives a system call from application 2c. Guest OS kernel 3 executes hardware access, etc. When such hardware access, etc. is executed, the hardware virtualization function traps it, and control is transferred to virtual machine monitor 12A. Then, in virtual machine-based virtualization, the virtual machine monitor 12A executes the system call. As such, virtual machine-based virtualization requires the intervention of guest OS kernel 3, and as mentioned above, this requires many resources to run the guest OS, and startup takes time.
次に、図5Bを用いてコンテナ型仮想化について説明する。本例において、コンテナ4は、OS-AであるホストOS(ホストOSカーネル14B)上に構築され、OS-A用のアプリケーション2aを有するものとする。コンテナ4は、コンテナランタイム5によって生成及び操作される。コンテナ型仮想化では、ホストOSカーネル14Bが、アプリケーション2aのプロセスが生成するシステムコールをアプリケーション2aから直接受け取り、前記システムコールを実行する。このように、コンテナ型仮想化では、複数のコンテナ4が同一のホストOS(ホストOSカーネル14B)を共有しているため、前述したように、ホストOSと異なるOS用のアプリケーションを有するコンテナの処理を実行できない。 Next, container-based virtualization will be explained using Figure 5B. In this example, container 4 is constructed on a host OS (host OS kernel 14B), which is OS-A, and has application 2a for OS-A. Container 4 is created and operated by container runtime 5. In container-based virtualization, host OS kernel 14B directly receives a system call generated by the process of application 2a from application 2a and executes the system call. In this way, in container-based virtualization, multiple containers 4 share the same host OS (host OS kernel 14B), and as mentioned above, it is not possible to execute processing for a container that has an application for an OS different from the host OS.
次に、図5Cを用いてUnikernelコンテナ型仮想化について説明する。本例において、Unikernelコンテナ6は、OS-AであるホストOS(ホストOSカーネル14C)上に構築され、OS-C用のアプリケーション2c及びOS-C用のカーネルエミュレーションライブラリ7を有するものとする。Unikernelコンテナ型仮想化では、アプリケーション2cが、カーネルエミュレーションライブラリ7を呼び出す。そして、ホストOSカーネル14Cは、カーネルエミュレーションライブラリ7からシステムコールを取得して、前記システムコールを実行する。カーネルエミュレーションライブラリ7とは、ホストOSのOSカーネル(ホストOSカーネル14C)が提供していたシステムコール機能を、アプリケーションと結合可能なライブラリプログラムの形態で実装したものである。このように、Unikernelコンテナ型仮想化では、前述したように、アプリケーション2cのOS毎にカーネルエミュレーションライブラリ7の開発が必要になる。 Next, we will explain Unikernel container-based virtualization using Figure 5C. In this example, Unikernel container 6 is built on the host OS (host OS kernel 14C), which is OS-A, and has an application 2c for OS-C and a kernel emulation library 7 for OS-C. In Unikernel container-based virtualization, application 2c calls the kernel emulation library 7. The host OS kernel 14C then obtains a system call from the kernel emulation library 7 and executes the system call. The kernel emulation library 7 implements the system call functions provided by the OS kernel of the host OS (host OS kernel 14C) in the form of a library program that can be combined with applications. As described above, in Unikernel container-based virtualization, a kernel emulation library 7 must be developed for each OS of application 2c.
最後に、図5Dを用いて本実施形態の仮想マシンコンテナ装置10について説明する。図5Dにおいて、仮想マシンコンテナ11A~Cは、仮想マシンコンテナ部11に相当し、仮想マシンモニタ12Dは、仮想マシンモニタ部12に相当し、ディスパッチャ13Dは、システムコール制御部13に相当する。ホストOSカーネル14Dは、ホストOSカーネル部14に相当し、OSカーネルエミュレータ15D及び仮想マシン8は、OSカーネルエミュレート部15に相当する。本例において、ホストOSカーネル14DにおけるホストOSの種別は、OS-Aである。なお、本発明は、本例示に限定されるものではない。 Finally, the virtual machine container device 10 of this embodiment will be described using Figure 5D. In Figure 5D, the virtual machine containers 11A-C correspond to the virtual machine container unit 11, the virtual machine monitor 12D corresponds to the virtual machine monitor unit 12, and the dispatcher 13D corresponds to the system call control unit 13. The host OS kernel 14D corresponds to the host OS kernel unit 14, and the OS kernel emulator 15D and virtual machine 8 correspond to the OS kernel emulation unit 15. In this example, the host OS type in the host OS kernel 14D is OS-A. Note that the present invention is not limited to this example.
まず、OS-A用のアプリケーション2aを有する仮想マシンコンテナ11Aを例に挙げて説明する。仮想マシンモニタ12Dは、仮想マシンコンテナ11A内のアプリケーション2aのプロセスが生成するシステムコールを取得する。より具体的には、例えば、アプリケーション2aのプロセスがシステムコールを発行すると、ハードウエア仮想化機能がそれをトラップし、仮想マシンモニタ12Dに制御が移ることになる。その後、ディスパッチャ13Dは、アプリケーション2aのOSがホストOSと同一であると判断し、ホストOSカーネル14Dに前記システムコールを受け渡す。そして、ホストOSカーネル14Dは、前記システムコールを実行する。 First, we will explain using an example of a virtual machine container 11A that has application 2a for OS-A. The virtual machine monitor 12D obtains system calls generated by the process of application 2a within the virtual machine container 11A. More specifically, for example, when the process of application 2a issues a system call, the hardware virtualization function traps it and control is transferred to the virtual machine monitor 12D. The dispatcher 13D then determines that the OS of application 2a is the same as the host OS and passes the system call to the host OS kernel 14D. The host OS kernel 14D then executes the system call.
次に、OS-B用のアプリケーション2bを有する仮想マシンコンテナ11Bを例に挙げて説明する。仮想マシンモニタ12Dは、仮想マシンコンテナ11B内のアプリケーション2bのプロセスが生成するシステムコールを取得する。より具体的には、例えば、アプリケーション2bのプロセスがシステムコールを発行すると、ハードウエア仮想化機能がそれをトラップし、仮想マシンモニタ12Dに制御が移ることになる。本例では、アプリケーション2bのOSがOS-Bであり、ホストOSカーネル14DのOSがOS-Aであるため、ディスパッチャ13Dにより、アプリケーション2bのOSがホストOSと異なると判断される。前記判断の後、OSカーネルエミュレータ15Dは、OS-B用の前記システムコールをOS-A用のシステムコールにエミュレーションする。そして、ホストOSカーネル14Dは、前記OS-A用のシステムコールを実行する。また、ディスパッチャ13Dにより、アプリケーション2bのOSの一部にホストOSとの非互換性があり、その他の部分は互換性があると判断された場合、ホストOSカーネル14Dは、前記システムコールの前記互換性の部分を実行してもよい。一方で、OSカーネルエミュレータ15Dは、OS-B用の前記システムコールのうち前記非互換性の部分をOS-A用のシステムコールにエミュレートしてもよい。そして、ホストOSカーネル14Dは、OS-A用のシステムコールにエミュレートされた前記非互換性の部分のシステムコールを実行する。なお、図5Cにおけるカーネルエミュレーションライブラリ7は、アプリケーションが必要とするOS機能のみ実装している点、アプリケーションと結合して実行されてアプリケーションから直接呼び出される点において、OSカーネルエミュレータ15Dと相違する。 Next, we will use an example of a virtual machine container 11B that has application 2b for OS-B. The virtual machine monitor 12D acquires a system call generated by the process of application 2b within the virtual machine container 11B. More specifically, for example, when the process of application 2b issues a system call, the hardware virtualization function traps it and control is transferred to the virtual machine monitor 12D. In this example, because the OS of application 2b is OS-B and the OS of the host OS kernel 14D is OS-A, the dispatcher 13D determines that the OS of application 2b is different from the host OS. After this determination, the OS kernel emulator 15D emulates the system call for OS-B into a system call for OS-A. The host OS kernel 14D then executes the system call for OS-A. Furthermore, if dispatcher 13D determines that part of application 2b's OS is incompatible with the host OS, but the other parts are compatible, host OS kernel 14D may execute the compatible part of the system call. Meanwhile, OS kernel emulator 15D may emulate the incompatible part of the system call for OS-B into a system call for OS-A. Then, host OS kernel 14D executes the system call for the incompatible part emulated into the system call for OS-A. Note that kernel emulation library 7 in Figure 5C differs from OS kernel emulator 15D in that it implements only the OS functions required by the application, and in that it is executed in conjunction with the application and is called directly by the application.
最後に、OS-C用のアプリケーション2cを有する仮想マシンコンテナ11Cを例に挙げて説明する。仮想マシンモニタ12Dは、仮想マシンコンテナ11C内のアプリケーション2cのプロセスが生成するシステムコールを取得する。より具体的には、例えば、アプリケーション2cのプロセスがシステムコールを発行すると、ハードウエア仮想化機能がそれをトラップし、仮想マシンモニタ12Dに制御が移ることになる。本例では、アプリケーション2cのOSがOS-Cであり、ホストOSカーネル14DのOSがOS-Aであるため、ディスパッチャ13Dにより、アプリケーション2cのOSがホストOSと異なると判断される。このディスパッチャ13Dによる異同判断に加えて、ディスパッチャ13Dにより、OSカーネルエミュレータ15Dでのエミュレートが不可と判断された場合、ディスパッチャ13Dは、例えば、通信部16を介して、他の装置20に前記システムコールをエミュレーションさせ、前記システムコールを実行させる。他の装置20は、ホストOS(カーネル)としてOS-Cを有する。一方で、ディスパッチャ13Dは、例えば、ゲストOS9としてOS-Cを有する仮想マシン8に前記システムコールをエミュレーションさせ、前記システムコールを実行させてもよい。すなわち、仮想マシン8もOSカーネルエミュレート部15として機能し得る。 Finally, we will use an example of a virtual machine container 11C containing application 2c for OS-C. The virtual machine monitor 12D intercepts system calls generated by the process of application 2c within the virtual machine container 11C. More specifically, when the process of application 2c issues a system call, the hardware virtualization function traps it and control is transferred to the virtual machine monitor 12D. In this example, because application 2c's OS is OS-C and the host OS kernel 14D's OS is OS-A, the dispatcher 13D determines that application 2c's OS is different from the host OS. In addition to this determination by the dispatcher 13D, if the dispatcher 13D determines that emulation by the OS kernel emulator 15D is not possible, the dispatcher 13D, for example, via the communication unit 16, causes another device 20 to emulate and execute the system call. The other device 20 has OS-C as its host OS (kernel). On the other hand, the dispatcher 13D may, for example, have a virtual machine 8 having OS-C as the guest OS 9 emulate the system call and execute the system call. In other words, the virtual machine 8 can also function as the OS kernel emulation unit 15.
[実施形態3]
本実施形態のプログラムは、本発明の方法の各工程を、手順として、コンピュータに実行させるためのプログラムである。本発明において、「手順」は、「処理」と読み替えてもよい。また、本実施形態のプログラムは、例えば、コンピュータ読み取り可能な記録媒体に記録されていてもよい。前記記録媒体は、例えば、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)である。前記記録媒体としては、特に限定されず、例えば、読み出し専用メモリ(ROM)、ハードディスク(HD)、光ディスク等が挙げられる。
[Embodiment 3]
The program of this embodiment is a program for causing a computer to execute each step of the method of the present invention as a procedure. In the present invention, "procedure" may be read as "processing." The program of this embodiment may be recorded on, for example, a computer-readable recording medium. The recording medium is, for example, a non-transitory computer-readable storage medium. The recording medium is not particularly limited, and examples thereof include a read-only memory (ROM), a hard disk (HD), an optical disk, etc.
以上、実施形態を参照して本発明を説明したが、本発明は、上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をできる。 The present invention has been described above with reference to the embodiments, but the present invention is not limited to the above embodiments. Various modifications that would be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention.
<付記>
上記の実施形態の一部または全部は、以下の付記のように記載されうるが、以下には限られない。
(付記1)
仮想マシンコンテナ部、仮想マシンモニタ部、システムコール制御部、ホストOSカーネル部、及びOSカーネルエミュレート部を含み、
前記仮想マシンコンテナ部は、ロードされたアプリケーションを実行可能であり、
前記仮想マシンモニタ部は、前記アプリケーションのプロセスが生成するシステムコールを取得可能であり、
前記システムコール制御部は、前記仮想マシンモニタ部が取得した前記システムコールにより前記アプリケーションのOS及び前記ホストOSカーネル部のOSの異同を判断し、
前記異同の判断において同じと判断した場合、前記ホストOSカーネル部は、前記システムコールを実行し、前記実行結果を前記プロセスに返却し、
前記異同の判断において異なると判断した場合、前記OSカーネルエミュレート部は、前記システムコールを前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、
仮想マシンコンテナ装置。
(付記2)
前記システムコール制御部は、前記異同の判断において、前記アプリケーションのOSと前記ホストOSカーネル部のOSの互換性を判断し、前記アプリケーションのOSの一部に前記ホストOSカーネル部のOSとの非互換性があり、その他の部分は互換性があると判断した場合、
前記ホストOSカーネル部は、前記システムコールの前記互換性の部分を実行し、前記実行結果を前記プロセスに返却し、
前記OSカーネルエミュレート部は、前記システムコールの前記非互換性の部分を前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、
付記1記載の仮想マシンコンテナ装置。
(付記3)
さらに、通信部を含み、
前記通信部は、外部ネットワークを介して他の装置と通信可能であり、
前記システムコール制御部は、前記異同の判断において、前記アプリケーションのOSが前記ホストOSカーネル部のOSと異なり、かつ前記OSカーネルエミュレート部でのエミュレートが不可と判断した場合、前記通信部を介して、前記アプリケーションのOSを実行可能な前記他の装置に前記システムコールを実行させ、前記実行結果を前記プロセスに返却させる、
付記1又は2記載の仮想マシンコンテナ装置。
(付記4)
前記仮想マシンコンテナ部は、ハードウエア仮想化機能により生成されたものである、
付記1から3のいずれかに記載の仮想マシンコンテナ装置。
(付記5)
仮想マシンコンテナ工程、仮想マシンモニタ工程、システムコール制御工程、ホストOSカーネル工程、及びOSカーネルエミュレート工程を含み、
前記仮想マシンコンテナ工程は、仮想マシンコンテナにロードされたアプリケーションを実行し、
前記仮想マシンモニタ工程は、前記アプリケーションのプロセスが生成するシステムコールを取得し、
前記システムコール制御工程は、前記仮想マシンモニタ工程が取得した前記システムコールにより前記アプリケーションのOS及び前記ホストOSカーネル工程が取り扱うOSの異同を判断し、
前記異同の判断において同じと判断した場合、前記ホストOSカーネル工程は、前記システムコールを実行し、前記実行結果を前記プロセスに返却し、
前記異同の判断において異なると判断した場合、前記OSカーネルエミュレート工程は、前記システムコールを前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、
仮想マシンコンテナの制御方法。
(付記6)
前記システムコール制御工程は、前記異同の判断において、前記アプリケーションのOSと前記ホストOSカーネル工程が取り扱うOSの互換性を判断し、前記アプリケーションのOSの一部に前記ホストOSカーネル工程が取り扱うOSとの非互換性があり、その他の部分は互換性があると判断した場合、
前記ホストOSカーネル工程は、前記システムコールの前記互換性の部分を実行し、前記実行結果を前記プロセスに返却し、
前記OSカーネルエミュレート工程は、前記システムコールの前記非互換性の部分を前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、
付記5記載の仮想マシンコンテナの制御方法。
(付記7)
前記システムコール制御工程は、前記異同の判断において、前記アプリケーションのOSが前記ホストOSカーネル工程が取り扱うOSと異なり、かつ前記OSカーネルエミュレート工程でのエミュレートが不可と判断した場合、通信部を介して、前記アプリケーションのOSを実行可能な他の装置に前記システムコールを実行させ、前記実行結果を前記プロセスに返却させる、
付記5又は6記載の仮想マシンコンテナの制御方法。
(付記8)
前記仮想マシンコンテナ工程が取り扱う前記仮想マシンコンテナは、ハードウエア仮想化機能により生成されたものである、
付記5から7のいずれかに記載の仮想マシンコンテナの制御方法。
(付記9)
コンピュータに、仮想マシンコンテナ手順、仮想マシンモニタ手順、システムコール制御手順、ホストOSカーネル手順、及びOSカーネルエミュレート手順を含む手順を実行させるためのプログラム;
前記仮想マシンコンテナ手順は、仮想マシンコンテナにロードされたアプリケーションを実行し、
前記仮想マシンモニタ手順は、前記アプリケーションのプロセスが生成するシステムコールを取得し、
前記システムコール制御手順は、前記仮想マシンモニタ手順が取得した前記システムコールにより前記アプリケーションのOS及び前記ホストOSカーネル手順が取り扱うOSの異同を判断し、
前記異同の判断において同じと判断した場合、前記ホストOSカーネル手順は、前記システムコールを実行し、前記実行結果を前記プロセスに返却し、
前記異同の判断において異なると判断した場合、前記OSカーネルエミュレート手順は、前記システムコールを前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する。
(付記10)
前記システムコール制御手順は、前記異同の判断において、前記アプリケーションのOSと前記ホストOSカーネル手順が取り扱うOSの互換性を判断し、前記アプリケーションのOSの一部に前記ホストOSカーネル手順が取り扱うOSとの非互換性があり、その他の部分は互換性があると判断した場合、
前記ホストOSカーネル手順は、前記システムコールの前記互換性の部分を実行し、前記実行結果を前記プロセスに返却し、
前記OSカーネルエミュレート手順は、前記システムコールの前記非互換性の部分を前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、
付記9記載のプログラム。
(付記11)
前記システムコール制御手順は、前記異同の判断において、前記アプリケーションのOSが前記ホストOSカーネル手順が取り扱うOSと異なり、かつ前記OSカーネルエミュレート手順でのエミュレートが不可と判断した場合、通信部を介して、前記アプリケーションのOSを実行可能な他の装置に前記システムコールを実行させ、前記実行結果を前記プロセスに返却させる、
付記9又は10記載のプログラム。
(付記12)
前記仮想マシンコンテナ手順が取り扱う仮想マシンコンテナは、ハードウエア仮想化機能により生成されたものである、
付記9から11のいずれかに記載のプログラム。
(付記13)
付記9から12のいずれかに記載のプログラムを記録しているコンピュータ読み取り可能な記録媒体。
<Additional Notes>
Some or all of the above embodiments can be described as, but not limited to, the following supplementary notes.
(Appendix 1)
The virtual machine container unit includes a virtual machine monitor unit, a system call control unit, a host OS kernel unit, and an OS kernel emulation unit.
the virtual machine container unit is capable of executing a loaded application;
the virtual machine monitor unit is capable of acquiring a system call generated by a process of the application;
the system call control unit determines whether an OS of the application and an OS of the host OS kernel unit are the same or different from each other based on the system call acquired by the virtual machine monitor unit;
If it is determined that the processes are the same in the determination of whether they are different or the same, the host OS kernel executes the system call and returns the execution result to the process;
If it is determined that the applications are different in the determination of whether they are the same or different, the OS kernel emulation unit emulates the system call in accordance with the OS of the application and returns the result of the emulation to the process.
Virtual machine container device.
(Appendix 2)
When the system call control unit determines compatibility between the OS of the application and the OS of the host OS kernel unit in the determination of whether they are different or the same, and determines that a part of the OS of the application is incompatible with the OS of the host OS kernel unit and the other parts are compatible,
the host OS kernel executes the compatible part of the system call and returns the execution result to the process;
the OS kernel emulation unit emulates the incompatible part of the system call in accordance with the OS of the application, and returns the result of the emulation to the process;
2. The virtual machine container apparatus of claim 1.
(Appendix 3)
Further, a communication unit is included,
the communication unit is capable of communicating with other devices via an external network;
When the system call control unit determines in the determination whether the OS of the application is different from the OS of the host OS kernel unit and cannot be emulated by the OS kernel emulation unit, the system call control unit causes the other device capable of executing the OS of the application to execute the system call via the communication unit, and returns the execution result to the process.
3. The virtual machine container apparatus according to claim 1 or 2.
(Appendix 4)
The virtual machine container unit is generated by a hardware virtualization function.
4. The virtual machine container apparatus according to claim 1.
(Appendix 5)
The process includes a virtual machine container process, a virtual machine monitor process, a system call control process, a host OS kernel process, and an OS kernel emulation process;
The virtual machine container process executes an application loaded into the virtual machine container;
The virtual machine monitor process acquires a system call generated by a process of the application,
the system call control step determines whether an OS of the application and an OS handled by the host OS kernel step are different from each other based on the system call acquired by the virtual machine monitor step;
If it is determined that the processes are the same in the determination of whether they are different or the same, the host OS kernel process executes the system call and returns the execution result to the process;
If it is determined that the applications are different in the determination of whether they are the same or different, the OS kernel emulation step emulates the system call in accordance with the OS of the application and returns the execution result of the emulation to the process.
How to control virtual machine containers.
(Appendix 6)
In the determination of similarity or difference, the system call control process determines compatibility between the OS of the application and the OS handled by the host OS kernel process, and when it is determined that a part of the OS of the application is incompatible with the OS handled by the host OS kernel process and the other part is compatible,
The host OS kernel process executes the compatible portion of the system call and returns the execution result to the process;
the OS kernel emulation step emulates the incompatible part of the system call in accordance with the OS of the application, and returns the emulation execution result to the process;
6. The method for controlling a virtual machine container according to claim 5.
(Appendix 7)
When the system call control step determines in the determination whether the OS of the application is different from the OS handled by the host OS kernel step and that emulation by the OS kernel emulation step is not possible, the system call control step causes another device capable of executing the OS of the application to execute the system call via a communication unit, and returns the execution result to the process.
7. The method for controlling a virtual machine container according to claim 5 or 6.
(Appendix 8)
The virtual machine container handled by the virtual machine container process is generated by a hardware virtualization function.
8. A method for controlling a virtual machine container according to any one of appendices 5 to 7.
(Appendix 9)
a program for causing a computer to execute procedures including a virtual machine container procedure, a virtual machine monitor procedure, a system call control procedure, a host OS kernel procedure, and an OS kernel emulation procedure;
The virtual machine container procedure executes an application loaded into the virtual machine container;
The virtual machine monitor procedure obtains a system call generated by a process of the application;
the system call control procedure determines whether an OS of the application and an OS handled by the host OS kernel procedure are the same or different from each other based on the system call acquired by the virtual machine monitor procedure;
If it is determined that the processes are the same in the determination of whether they are different or the same, the host OS kernel procedure executes the system call and returns the execution result to the process;
If it is determined that the two applications are different, the OS kernel emulation procedure emulates the system call in accordance with the OS of the application, and returns the result of the emulation to the process.
(Appendix 10)
In the determination of similarity or difference, the system call control procedure determines the compatibility of the OS of the application with the OS handled by the host OS kernel procedure, and if it determines that a part of the OS of the application is incompatible with the OS handled by the host OS kernel procedure and the other part is compatible,
The host OS kernel procedure executes the compatible portion of the system call and returns the execution result to the process;
the OS kernel emulation procedure emulates the incompatible part of the system call in accordance with the OS of the application, and returns the emulation execution result to the process;
10. The program according to claim 9.
(Appendix 11)
If the system call control procedure determines in the determination of whether the OS of the application is different from the OS handled by the host OS kernel procedure and that emulation by the OS kernel emulation procedure is not possible, the system call control procedure causes another device capable of executing the OS of the application to execute the system call via a communication unit, and returns the execution result to the process.
11. The program according to claim 9 or 10.
(Appendix 12)
The virtual machine container handled by the virtual machine container procedure is generated by a hardware virtualization function.
12. The program according to any one of appendices 9 to 11.
(Appendix 13)
A computer-readable recording medium having recorded thereon the program according to any one of appendices 9 to 12.
本発明によれば、ホストOSとは異なるOS用のコンテナを実行可能である。このため、本発明は、例えば、コンテナ型仮想化環境においてアプリケーションを実行する場合に特に有用である。 This invention makes it possible to run containers for operating systems different from the host OS. Therefore, this invention is particularly useful, for example, when running applications in a container-based virtualization environment.
1、8 仮想マシン
2a、2b、2c アプリケーション
3 ゲストOSカーネル
4 コンテナ
5 コンテナランタイム
6 Unikernelコンテナ
7 カーネルエミュレーションライブラリ
9 ゲストOS
10 仮想マシンコンテナ装置
11 仮想マシンコンテナ部
11A、11B、11C 仮想マシンコンテナ
12 仮想マシンモニタ部
12A、12D 仮想マシンモニタ
13 システムコール制御部
13D ディスパッチャ
14 OSホストカーネル部
14A、14B、14C、14D ホストOSカーネル
15 OSカーネルエミュレート部
15D OSカーネルエミュレータ
16 通信部
20 他の装置
101 中央処理装置
102 メモリ
103 バス
104 記憶装置
105 入力装置
106 出力装置
107 通信デバイス
1, 8 Virtual Machines 2a, 2b, 2c Applications 3 Guest OS Kernel 4 Container 5 Container Runtime 6 Unikernel Container 7 Kernel Emulation Library 9 Guest OS
10 Virtual Machine Container Device 11 Virtual Machine Container Unit 11A, 11B, 11C Virtual Machine Container 12 Virtual Machine Monitor Unit 12A, 12D Virtual Machine Monitor 13 System Call Control Unit 13D Dispatcher 14 OS Host Kernel Unit 14A, 14B, 14C, 14D Host OS Kernel 15 OS Kernel Emulator Unit 15D OS Kernel Emulator 16 Communication Unit 20 Other Devices 101 Central Processing Unit 102 Memory 103 Bus 104 Storage Device 105 Input Device 106 Output Device 107 Communication Device
Claims (10)
前記仮想マシンコンテナ部は、ロードされたアプリケーションを実行可能であり、
前記仮想マシンモニタ部は、前記アプリケーションのプロセスが生成するシステムコールを取得可能であり、
前記システムコール制御部は、前記仮想マシンモニタ部が取得した前記システムコールにより前記アプリケーションのOS及び前記ホストOSカーネル部のOSの異同を判断し、
前記異同の判断において同じと判断した場合、前記ホストOSカーネル部は、前記システムコールを実行し、前記実行結果を前記プロセスに返却し、
前記異同の判断において異なると判断した場合、前記OSカーネルエミュレート部は、前記システムコールを前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、
仮想マシンコンテナ装置。 The virtual machine container unit includes a virtual machine monitor unit, a system call control unit, a host OS kernel unit, and an OS kernel emulation unit.
the virtual machine container unit is capable of executing a loaded application;
the virtual machine monitor unit is capable of acquiring a system call generated by a process of the application;
the system call control unit determines whether an OS of the application and an OS of the host OS kernel unit are the same or different from each other based on the system call acquired by the virtual machine monitor unit;
If it is determined that the processes are the same in the determination of whether they are different or the same, the host OS kernel executes the system call and returns the execution result to the process;
If it is determined that the applications are different in the determination of whether they are the same or different, the OS kernel emulation unit emulates the system call in accordance with the OS of the application and returns the execution result of the emulation to the process.
Virtual machine container device.
前記ホストOSカーネル部は、前記システムコールの前記互換性の部分を実行し、前記実行結果を前記プロセスに返却し、
前記OSカーネルエミュレート部は、前記システムコールの前記非互換性の部分を前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、
請求項1記載の仮想マシンコンテナ装置。 When the system call control unit determines compatibility between the OS of the application and the OS of the host OS kernel unit in the determination of whether they are different or the same, and determines that a part of the OS of the application is incompatible with the OS of the host OS kernel unit and the other parts are compatible,
the host OS kernel executes the compatible part of the system call and returns the execution result to the process;
the OS kernel emulation unit emulates the incompatible part of the system call in accordance with the OS of the application, and returns the result of the emulation to the process;
The virtual machine container device according to claim 1 .
前記通信部は、外部ネットワークを介して他の装置と通信可能であり、
前記システムコール制御部は、前記異同の判断において、前記アプリケーションのOSが前記ホストOSカーネル部のOSと異なり、かつ前記OSカーネルエミュレート部でのエミュレートが不可と判断した場合、前記通信部を介して、前記アプリケーションのOSを実行可能な前記他の装置に前記システムコールを実行させ、前記実行結果を前記プロセスに返却させる、
請求項1又は2記載の仮想マシンコンテナ装置。 Further, a communication unit is included,
the communication unit is capable of communicating with other devices via an external network;
When the system call control unit determines in the determination whether the OS of the application is different from the OS of the host OS kernel unit and cannot be emulated by the OS kernel emulation unit, the system call control unit causes the other device capable of executing the OS of the application to execute the system call via the communication unit, and returns the execution result to the process.
3. The virtual machine container device according to claim 1.
請求項1から3のいずれか一項に記載の仮想マシンコンテナ装置。 The virtual machine container unit is generated by a hardware virtualization function.
The virtual machine container device according to claim 1 .
前記仮想マシンコンテナ工程は、仮想マシンコンテナにロードされたアプリケーションを実行し、
前記仮想マシンモニタ工程は、前記アプリケーションのプロセスが生成するシステムコールを取得し、
前記システムコール制御工程は、前記仮想マシンモニタ工程が取得した前記システムコールにより前記アプリケーションのOS及び前記ホストOSカーネル工程が取り扱うOSの異同を判断し、
前記異同の判断において同じと判断した場合、前記ホストOSカーネル工程は、前記システムコールを実行し、前記実行結果を前記プロセスに返却し、
前記異同の判断において異なると判断した場合、前記OSカーネルエミュレート工程は、前記システムコールを前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、
仮想マシンコンテナの制御方法。 The process includes a virtual machine container process, a virtual machine monitor process, a system call control process, a host OS kernel process, and an OS kernel emulation process;
The virtual machine container process executes an application loaded into the virtual machine container;
The virtual machine monitor process acquires a system call generated by a process of the application,
the system call control step determines whether an OS of the application and an OS handled by the host OS kernel step are different from each other based on the system call acquired by the virtual machine monitor step;
If it is determined that the processes are the same in the determination of whether they are different or the same, the host OS kernel process executes the system call and returns the execution result to the process;
If it is determined that the applications are different in the determination of whether they are the same or different, the OS kernel emulation step emulates the system call in accordance with the OS of the application and returns the result of the emulation to the process.
How to control virtual machine containers.
前記ホストOSカーネル工程は、前記システムコールの前記互換性の部分を実行し、前記実行結果を前記プロセスに返却し、
前記OSカーネルエミュレート工程は、前記システムコールの前記非互換性の部分を前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、
請求項5記載の仮想マシンコンテナの制御方法。 In the determination of similarity or difference, the system call control process determines compatibility between the OS of the application and the OS handled by the host OS kernel process, and when it is determined that a part of the OS of the application is incompatible with the OS handled by the host OS kernel process and the other part is compatible,
The host OS kernel process executes the compatible portion of the system call and returns the execution result to the process;
the OS kernel emulation step emulates the incompatible part of the system call in accordance with the OS of the application, and returns the emulation execution result to the process;
The method for controlling a virtual machine container according to claim 5.
請求項5又は6記載の仮想マシンコンテナの制御方法。 When the system call control step determines in the determination whether the OS of the application is different from the OS handled by the host OS kernel step and that emulation by the OS kernel emulation step is not possible, the system call control step causes another device capable of executing the OS of the application to execute the system call via a communication unit, and returns the execution result to the process.
7. The method for controlling a virtual machine container according to claim 5 or 6.
請求項5から7のいずれか一項に記載の仮想マシンコンテナの制御方法。 The virtual machine container handled by the virtual machine container process is generated by a hardware virtualization function.
The method for controlling a virtual machine container according to any one of claims 5 to 7.
前記仮想マシンコンテナ手順は、仮想マシンコンテナにロードされたアプリケーションを実行し、
前記仮想マシンモニタ手順は、前記アプリケーションのプロセスが生成するシステムコールを取得し、
前記システムコール制御手順は、前記仮想マシンモニタ手順が取得した前記システムコールにより前記アプリケーションのOS及び前記ホストOSカーネル手順が取り扱うOSの異同を判断し、
前記異同の判断において同じと判断した場合、前記ホストOSカーネル手順は、前記システムコールを実行し、前記実行結果を前記プロセスに返却し、
前記異同の判断において異なると判断した場合、前記OSカーネルエミュレート手順は、前記システムコールを前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する。 a program for causing a computer to execute procedures including a virtual machine container procedure, a virtual machine monitor procedure, a system call control procedure, a host OS kernel procedure, and an OS kernel emulation procedure;
The virtual machine container procedure executes an application loaded into the virtual machine container;
The virtual machine monitor procedure obtains a system call generated by a process of the application;
the system call control procedure determines whether an OS of the application and an OS handled by the host OS kernel procedure are the same or different from each other based on the system call acquired by the virtual machine monitor procedure;
If it is determined that the processes are the same in the determination of whether they are different or the same, the host OS kernel procedure executes the system call and returns the execution result to the process;
If it is determined that the two applications are different, the OS kernel emulation procedure emulates the system call in accordance with the OS of the application, and returns the result of the emulation to the process.
前記ホストOSカーネル手順は、前記システムコールの前記互換性の部分を実行し、前記実行結果を前記プロセスに返却し、
前記OSカーネルエミュレート手順は、前記システムコールの前記非互換性の部分を前記アプリケーションのOSに応じてエミュレートし、前記エミュレートの実行結果を前記プロセスに返却する、
請求項9記載のプログラム。 In the determination of similarity or difference, the system call control procedure determines the compatibility of the OS of the application with the OS handled by the host OS kernel procedure, and if it determines that a part of the OS of the application is incompatible with the OS handled by the host OS kernel procedure and the other part is compatible,
The host OS kernel procedure executes the compatible portion of the system call and returns the execution result to the process;
the OS kernel emulation procedure emulates the incompatible part of the system call in accordance with the OS of the application, and returns the execution result of the emulation to the process;
The program according to claim 9.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2021174546A JP7729672B2 (en) | 2021-10-26 | 2021-10-26 | Virtual Machine Container Device, Virtual Machine Container Control Method, Program, and Recording Medium |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2021174546A JP7729672B2 (en) | 2021-10-26 | 2021-10-26 | Virtual Machine Container Device, Virtual Machine Container Control Method, Program, and Recording Medium |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2023064327A JP2023064327A (en) | 2023-05-11 |
| JP7729672B2 true JP7729672B2 (en) | 2025-08-26 |
Family
ID=86271653
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2021174546A Active JP7729672B2 (en) | 2021-10-26 | 2021-10-26 | Virtual Machine Container Device, Virtual Machine Container Control Method, Program, and Recording Medium |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP7729672B2 (en) |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009288864A (en) | 2008-05-27 | 2009-12-10 | Fujitsu Ltd | Input/output emulation mechanism of virtual machine |
| JP2019021185A (en) | 2017-07-20 | 2019-02-07 | 富士通株式会社 | Information processing apparatus, information processing system, information processing apparatus control method, and information processing apparatus control program |
| US20200192692A1 (en) | 2018-12-18 | 2020-06-18 | Vmware, Inc. | Containerized workload scheduling |
| US20210326253A1 (en) | 2020-04-17 | 2021-10-21 | Microsoft Technology Licensing, Llc | Computer memory management in computing devices |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP5382450B2 (en) * | 2008-02-14 | 2014-01-08 | 日本電気株式会社 | Access control apparatus, method and information recording medium |
| JP6059330B2 (en) * | 2013-02-18 | 2017-01-11 | 株式会社レイトロン | Application transfer system, application transfer method, terminal, and program |
-
2021
- 2021-10-26 JP JP2021174546A patent/JP7729672B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009288864A (en) | 2008-05-27 | 2009-12-10 | Fujitsu Ltd | Input/output emulation mechanism of virtual machine |
| JP2019021185A (en) | 2017-07-20 | 2019-02-07 | 富士通株式会社 | Information processing apparatus, information processing system, information processing apparatus control method, and information processing apparatus control program |
| US20200192692A1 (en) | 2018-12-18 | 2020-06-18 | Vmware, Inc. | Containerized workload scheduling |
| US20210326253A1 (en) | 2020-04-17 | 2021-10-21 | Microsoft Technology Licensing, Llc | Computer memory management in computing devices |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2023064327A (en) | 2023-05-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP3568772B1 (en) | Field-programmable gate array virtualization | |
| US9672060B2 (en) | Managing virtual machine migration | |
| US8332848B2 (en) | Mechanism for staged upgrades of a virtual machine system | |
| EP1209564B1 (en) | Kernel emulator for non-native program modules | |
| US8830228B2 (en) | Techniques for enabling remote management of servers configured with graphics processors | |
| EP2843552B1 (en) | Method and system for executing callback functions delivered via a communication between a user-space application and the operating system kernel | |
| CN101271401B (en) | A server farm system with a single system image | |
| JP5893029B2 (en) | How to enable hypervisor control in a cloud computing environment | |
| CN104350466B (en) | Virtual machine image writes lease | |
| US20090265708A1 (en) | Information Processing Apparatus and Method of Controlling Information Processing Apparatus | |
| US8613000B2 (en) | Method and apparatus for dynamically assigning I/O device in virtual machine system | |
| JP2009506462A (en) | Hierarchical virtualization using a multi-layered virtualization mechanism | |
| KR20140065837A (en) | Apparatus and system for providing software service using software virtualization and method thereof | |
| JP2010521034A (en) | How to abstract an operating environment from an operating system | |
| CA2761563A1 (en) | Annotating virtual application processes | |
| US11635970B2 (en) | Integrated network boot operating system installation leveraging hyperconverged storage | |
| US20130318528A1 (en) | Information processing method | |
| US20250278290A1 (en) | Container hot migration method and container hot migration apparatus | |
| CN106844008A (en) | A kind of method of data manipulation, equipment and system | |
| US9195518B1 (en) | System and method for communicating production virtual machine access events to a service appliance in a virtualized environment | |
| EP4660794A1 (en) | Instance startup acceleration method and related apparatus | |
| JP7729672B2 (en) | Virtual Machine Container Device, Virtual Machine Container Control Method, Program, and Recording Medium | |
| US7689566B1 (en) | Method for defining non-native operating environments | |
| CN119065792A (en) | Container virtualization method, device, equipment and storage medium based on edge computing | |
| EP3593252B1 (en) | Managing guest partition access to physical devices |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20220630 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240909 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20250630 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20250715 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20250807 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7729672 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |