JPWO2011039887A1 - 計算機装置 - Google Patents
計算機装置 Download PDFInfo
- Publication number
- JPWO2011039887A1 JPWO2011039887A1 JP2011534020A JP2011534020A JPWO2011039887A1 JP WO2011039887 A1 JPWO2011039887 A1 JP WO2011039887A1 JP 2011534020 A JP2011534020 A JP 2011534020A JP 2011534020 A JP2011534020 A JP 2011534020A JP WO2011039887 A1 JPWO2011039887 A1 JP WO2011039887A1
- Authority
- JP
- Japan
- Prior art keywords
- privileged
- request
- processing unit
- management right
- priority
- 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.)
- Pending
Links
- 230000004043 responsiveness Effects 0.000 abstract description 11
- 238000012545 processing Methods 0.000 description 271
- 230000004913 activation Effects 0.000 description 62
- 238000000034 method Methods 0.000 description 38
- 238000004891 communication Methods 0.000 description 34
- 230000006870 function Effects 0.000 description 24
- 238000012546 transfer Methods 0.000 description 24
- 238000006243 chemical reaction Methods 0.000 description 17
- 230000005540 biological transmission Effects 0.000 description 12
- 230000004044 response Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 230000003213 activating effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
共有デバイス601の管理権を有しない非特権OS200に特定の共有デバイスを指定デバイスとして対応付け、非特権OS200の起動までは特権OS100に指定デバイスの管理権を与え、非特権OS200の起動時に、指定デバイスの管理権を特権OS100から非特権OS200に移し、非特権OS200が指定デバイスを使用する場合に、非特権OS200は直接指定デバイスに対して使用要求を出すことができ、VM300及び特権OS100の処理を待つ必要がなく、非特権OS200に必要なリアルタイム応答性を確保することができる。
Description
本発明は、複数のOS(Operating System)を搭載する計算機装置に関する。
近年、ファクトリオートメーション機器や車載機器などの組込み機器をはじめとする計算機装置では、従来機種に対する付加機能の追加や、システムの高機能化のため、処理能力の向上に対する要求がある。
こうした要求に対して、CPU(Central Processing Unit)の演算処理部(コア)を複数にすることで、消費電力を抑えながら、処理能力の向上を図る、マルチコアが導入されている。
マルチコアを搭載した計算機を効率的に利用するには、処理の並列度を向上させ、各コアに処理を分散させる必要がある。
この実現方法として、リアルタイム応答性の高いリアルタイムオペレーティングシステム(Real−Time Operating System)(以下RTOS)と豊富なアプリケーションを搭載した汎用OSといった、複数のOSにより構成する方法が考えられる。
従来、こうした複数のOSを搭載する組込み機器では、各OSがネットワーク用デバイスやシリアル通信用デバイスなどの入出力デバイスを占有して使用しており、こうしたデバイスを共有することはできなかった。
そこで、組込み機器向けにも、汎用機やPCサーバで培われたVM(Virtual Machine)による仮想化を行うことにより、RTOSと汎用OS間でデバイスの共有を行う取り組みがなされている。
こうした要求に対して、CPU(Central Processing Unit)の演算処理部(コア)を複数にすることで、消費電力を抑えながら、処理能力の向上を図る、マルチコアが導入されている。
マルチコアを搭載した計算機を効率的に利用するには、処理の並列度を向上させ、各コアに処理を分散させる必要がある。
この実現方法として、リアルタイム応答性の高いリアルタイムオペレーティングシステム(Real−Time Operating System)(以下RTOS)と豊富なアプリケーションを搭載した汎用OSといった、複数のOSにより構成する方法が考えられる。
従来、こうした複数のOSを搭載する組込み機器では、各OSがネットワーク用デバイスやシリアル通信用デバイスなどの入出力デバイスを占有して使用しており、こうしたデバイスを共有することはできなかった。
そこで、組込み機器向けにも、汎用機やPCサーバで培われたVM(Virtual Machine)による仮想化を行うことにより、RTOSと汎用OS間でデバイスの共有を行う取り組みがなされている。
図13は、従来のVMを搭載した計算機装置1000の構成を示すものである。計算機装置1000は、例えば、組み込み機器である。
なお、特権OSとは、機器上の全てのデバイスの管理権を保有するOSを示す。
逆に、非特権OSとは、機器上の全てのデバイスの利用に対して、制限が設けられているOSを示す。
つまり、図13において、特権OS1100は、計算機装置1000で使用する全てのデバイスの管理権を保有するOSである。
また、非特権OS1200および非特権OS1250は、計算機装置1000で使用されるデバイスへのアクセスが制限されているOSである。
以下、特権OS1100、非特権OS1200、非特権OS1250の各々の詳細を説明する。
逆に、非特権OSとは、機器上の全てのデバイスの利用に対して、制限が設けられているOSを示す。
つまり、図13において、特権OS1100は、計算機装置1000で使用する全てのデバイスの管理権を保有するOSである。
また、非特権OS1200および非特権OS1250は、計算機装置1000で使用されるデバイスへのアクセスが制限されているOSである。
以下、特権OS1100、非特権OS1200、非特権OS1250の各々の詳細を説明する。
特権OS1100は、特権OS共有デバイス処理部1101を保有する。
特権OS1100はシステム上に存在する全ての実デバイスを利用するための特権が与えられたOSである。
ここでは、特権OS1100として、実デバイスに対する豊富なデバイス処理機能を持つLinux(登録商標)などの汎用OSを想定している。
特権OS共有デバイス処理部1101は、自OSからのIO要求及び、VM1300上のOS間通信処理部1301からのIO要求を受け取り、共有デバイス1601へIO要求を送信する機能を備える。
なお、IO要求とは、共有デバイス1601の使用要求である。
特権OS1100はシステム上に存在する全ての実デバイスを利用するための特権が与えられたOSである。
ここでは、特権OS1100として、実デバイスに対する豊富なデバイス処理機能を持つLinux(登録商標)などの汎用OSを想定している。
特権OS共有デバイス処理部1101は、自OSからのIO要求及び、VM1300上のOS間通信処理部1301からのIO要求を受け取り、共有デバイス1601へIO要求を送信する機能を備える。
なお、IO要求とは、共有デバイス1601の使用要求である。
非特権OS1200は、非特権OS仮想デバイス処理部1201を保有する。
非特権OS1200は実デバイスへのアクセスが制限されたOSである。
ここでは、非特権OS1200として、リアルタイムOSを想定している。
非特権OS仮想デバイス処理部1201は、VM1300上の仮想デバイス1350に対し、IO要求を送信する機能を備える。
非特権OS1200は実デバイスへのアクセスが制限されたOSである。
ここでは、非特権OS1200として、リアルタイムOSを想定している。
非特権OS仮想デバイス処理部1201は、VM1300上の仮想デバイス1350に対し、IO要求を送信する機能を備える。
非特権OS1250は、非特権OS仮想デバイス処理部1251を保有する。
非特権OS1250は実デバイスへのアクセスが制限されたOSである。
ここでは、非特権OS1250として、汎用OSを想定している。
非特権OS仮想デバイス処理部1251は、VM1300上の仮想デバイス1350に対し、IO要求を送信する機能を備える。
非特権OS1250は実デバイスへのアクセスが制限されたOSである。
ここでは、非特権OS1250として、汎用OSを想定している。
非特権OS仮想デバイス処理部1251は、VM1300上の仮想デバイス1350に対し、IO要求を送信する機能を備える。
ハードウェア1400は、計算機装置1で使用されるデバイス群である。
ハードウェア1400は、二次記憶装置1500と共有デバイス1601と主メモリ1701を保有する。
主メモリ1701は、OS起動時に二次記憶装置上に保持されたOSイメージがロードされる領域である。
二次記憶装置1500は非特権OSを起動するためのファイルである、非特権OSイメージファイル1501及び、非特権OS起動情報ファイル1502を保有する。
非特権OSイメージファイル1501は非特権OSを起動する際に使用するバイナリファイルである。
非特権OS起動情報ファイル1502は非特権OSの起動に必要な情報が記載されている。
非特権OS起動情報ファイル1502には、必要なメモリサイズ、ページサイズ、CPU数、タイマ数、OS名、エントリアドレス等が含まれる。
共有デバイス1601は例えば、ネットワークデバイス、グラフィックデバイス、キーボード、シリアルインタフェース、マウス、赤外線インタフェース、USB(Universal Serial Bus)ポートなど、RTOSと汎用OSで共有される可能性のあるデバイスである。
非特権OSイメージファイル1501、非特権OS起動情報ファイル1502は、非特権OSごとに用意されている。
図13の例では、非特権OS1200の非特権OSイメージファイル1501、非特権OS起動情報ファイル1502があり、また、非特権OS1250の非特権OSイメージファイル1501、非特権OS起動情報ファイル1502がある。
ハードウェア1400は、二次記憶装置1500と共有デバイス1601と主メモリ1701を保有する。
主メモリ1701は、OS起動時に二次記憶装置上に保持されたOSイメージがロードされる領域である。
二次記憶装置1500は非特権OSを起動するためのファイルである、非特権OSイメージファイル1501及び、非特権OS起動情報ファイル1502を保有する。
非特権OSイメージファイル1501は非特権OSを起動する際に使用するバイナリファイルである。
非特権OS起動情報ファイル1502は非特権OSの起動に必要な情報が記載されている。
非特権OS起動情報ファイル1502には、必要なメモリサイズ、ページサイズ、CPU数、タイマ数、OS名、エントリアドレス等が含まれる。
共有デバイス1601は例えば、ネットワークデバイス、グラフィックデバイス、キーボード、シリアルインタフェース、マウス、赤外線インタフェース、USB(Universal Serial Bus)ポートなど、RTOSと汎用OSで共有される可能性のあるデバイスである。
非特権OSイメージファイル1501、非特権OS起動情報ファイル1502は、非特権OSごとに用意されている。
図13の例では、非特権OS1200の非特権OSイメージファイル1501、非特権OS起動情報ファイル1502があり、また、非特権OS1250の非特権OSイメージファイル1501、非特権OS起動情報ファイル1502がある。
VM1300は、OS間の通信機能および仮想デバイスを保有するVMである。
VM1300は、OS間通信処理部1301とOS起動処理部1302とデバイス要求変換処理部1303と仮想デバイス1350を保有する。
OS間通信処理部1301は、非特権OS1200又は非特権OS1250からのIO要求を特権OS1100に送信する機能を備える。
OS起動処理部1302は、特権OS1100の指示により、非特権OS1200および非特権OS1250を起動する機能を備える。
デバイス要求変換処理部1303は、非特権OS1200又は非特権OS1250から仮想デバイス1350へのIO要求を、共有デバイス1601に対するIO要求に変換する機能を備える。
仮想デバイス1350は、非特権OS1200及び非特権OS1250に対して共有デバイス1601をエミュレートする。
つまり、仮想デバイス1350は、非特権OS1200又は非特権OS1250からIO要求を受け取り、デバイス要求変換処理部1303を使用して共有デバイス1601に対するIO要求に変換し、OS間通信処理部1301を介して、変換後のIO要求を特権OS1100に送信する機能を備える。
VM1300は、OS間通信処理部1301とOS起動処理部1302とデバイス要求変換処理部1303と仮想デバイス1350を保有する。
OS間通信処理部1301は、非特権OS1200又は非特権OS1250からのIO要求を特権OS1100に送信する機能を備える。
OS起動処理部1302は、特権OS1100の指示により、非特権OS1200および非特権OS1250を起動する機能を備える。
デバイス要求変換処理部1303は、非特権OS1200又は非特権OS1250から仮想デバイス1350へのIO要求を、共有デバイス1601に対するIO要求に変換する機能を備える。
仮想デバイス1350は、非特権OS1200及び非特権OS1250に対して共有デバイス1601をエミュレートする。
つまり、仮想デバイス1350は、非特権OS1200又は非特権OS1250からIO要求を受け取り、デバイス要求変換処理部1303を使用して共有デバイス1601に対するIO要求に変換し、OS間通信処理部1301を介して、変換後のIO要求を特権OS1100に送信する機能を備える。
次に、従来技術における、特権OS1100上のアプリケーションプログラム(以下、単にアプリケーションという)が非特権OS1200を起動する手順を図14を用いて説明する。
まず、ステップS601において、特権OS1100上のアプリケーションは、VM300上のOS起動処理部1302に非特権OS1200の起動を依頼する。
その際、特権OS1100上のアプリケーションは、二次記憶装置1500上に存在する非特権OS1200の非特権OSイメージファイル1501及び非特権OS起動情報ファイル1502を指定する。
次に、ステップS602において、VM300上のOS起動処理部1302は、非特権OS起動情報ファイル1502から、OSの起動に必要なメモリサイズ、ページサイズ、CPU数、タイマ数、OS名、エントリアドレスを取得する。
次に、ステップS603において、VM1300上のOS起動処理部1302は、OSの起動に必要なデバイスの情報を取得した後、非特権OS1200に対しデバイスを割り当てる。
割り当てるデバイスはメモリ、CPU、タイマである。
次に、ステップS604において、VM1300上のOS起動処理部1302は、非特権OSイメージファイル1501を主メモリ1701に展開する。
次に、ステップS605において、VM1300上のOS起動処理部1302は、非特権OS1200のCPUに対し起動処理を行う。
これは例えば、非特権OS1200に割り当てたCPUのリセットベクタに対して、S602で取得したエントリアドレスを指定し、CPUにハードウェアリセットを送信することに相当する。
以上により、特権OS1100上のアプリケーションによる、非特権OS1200の起動が完了する。
その際、特権OS1100上のアプリケーションは、二次記憶装置1500上に存在する非特権OS1200の非特権OSイメージファイル1501及び非特権OS起動情報ファイル1502を指定する。
次に、ステップS602において、VM300上のOS起動処理部1302は、非特権OS起動情報ファイル1502から、OSの起動に必要なメモリサイズ、ページサイズ、CPU数、タイマ数、OS名、エントリアドレスを取得する。
次に、ステップS603において、VM1300上のOS起動処理部1302は、OSの起動に必要なデバイスの情報を取得した後、非特権OS1200に対しデバイスを割り当てる。
割り当てるデバイスはメモリ、CPU、タイマである。
次に、ステップS604において、VM1300上のOS起動処理部1302は、非特権OSイメージファイル1501を主メモリ1701に展開する。
次に、ステップS605において、VM1300上のOS起動処理部1302は、非特権OS1200のCPUに対し起動処理を行う。
これは例えば、非特権OS1200に割り当てたCPUのリセットベクタに対して、S602で取得したエントリアドレスを指定し、CPUにハードウェアリセットを送信することに相当する。
以上により、特権OS1100上のアプリケーションによる、非特権OS1200の起動が完了する。
次に、従来技術における、VM1300によるデバイス共有の手順を図15を用いて説明する。
まず、ステップS701において、非特権OS1250上のアプリケーションは、非特権OS仮想デバイス処理部1251にIO要求を行う。
次に、ステップS702において、非特権OS1250上の非特権OS仮想デバイス処理部1251は、VM300上のOS間通信処理部1301を介して、VM1300上の仮想デバイス1350にIO要求を行う。
次に、ステップS703において、VM1300は、仮想デバイス1350へのIO要求に対して、デバイス要求変換処理部1303を呼び出し、仮想デバイス1350へのIO要求から共有デバイス1601へのIO要求に変換する。
次に、ステップS704において、VM1300は、OS間通信処理部1301を介して、特権OS1100上の特権OS共有デバイス処理部1101に実IO要求を行う。
次に、ステップS705において、特権OS1100上の特権OS共有デバイス処理部1101は、共有デバイス1601に実IO要求を行う。
以上の処理により、デバイスの共有を行う。
次に、ステップS702において、非特権OS1250上の非特権OS仮想デバイス処理部1251は、VM300上のOS間通信処理部1301を介して、VM1300上の仮想デバイス1350にIO要求を行う。
次に、ステップS703において、VM1300は、仮想デバイス1350へのIO要求に対して、デバイス要求変換処理部1303を呼び出し、仮想デバイス1350へのIO要求から共有デバイス1601へのIO要求に変換する。
次に、ステップS704において、VM1300は、OS間通信処理部1301を介して、特権OS1100上の特権OS共有デバイス処理部1101に実IO要求を行う。
次に、ステップS705において、特権OS1100上の特権OS共有デバイス処理部1101は、共有デバイス1601に実IO要求を行う。
以上の処理により、デバイスの共有を行う。
次に、従来技術における、非特権OS1250からのIO要求と、非特権OS1200からのIO要求が競合した場合の、VM1300による処理を図16を用いて説明する。
まず、ステップS1601において、非特権OS1250上のアプリケーションは、非特権OS仮想デバイス処理部1251にIO要求を行う。
次に、ステップS1602において、非特権OS1250上の非特権OS仮想デバイス処理部1251は、VM1300上のOS間通信処理部1301を介して、VM1300上の仮想デバイス1350にIO要求を行う。
次に、ステップS1603において、VM1300は、仮想デバイス1350へのIO要求に対して、デバイス要求変換処理部1303を呼び出し、仮想デバイス1350へのIO要求から共有デバイス1601へのIO要求に変換する。
次に、ステップS1604において、VM1300は、OS間通信処理部1301を介して、特権OS1100上の特権OS共有デバイス処理部1101に実IO要求を行う。
ここで、ステップS1605において、非特権OS1200上のアプリケーションが、非特権OS仮想デバイス処理部1201にIO要求を行う。
これを受け、ステップS1606において、非特権OS1200上の非特権OS仮想デバイス処理部1201は、VM1300上のOS間通信処理部1301を介して、VM1300上の仮想デバイス1350にIO要求を行う。
次に、ステップS1607において、VM1300は、仮想デバイス1350へのIO要求に対して、デバイス要求変換処理部1303を呼び出し、仮想デバイス1350へのIO要求から共有デバイス1601へのIO要求に変換する。
次に、ステップS1608において、VM1300は、OS間通信処理部1301を介して、特権OS1100上の特権OS共有デバイス処理部1101に実IO要求を行う。
これを受け、ステップS1609において、特権OS1100上の特権OS共有デバイス処理部1101は、IO要求の到着順に処理を実施する。
図16の場合は、非特権OS1250からのIO要求を先に処理する。
最後に、ステップS1610において、特権OS1100上の特権OS共有デバイス処理部1101は、非特権OS1200のIO要求を処理する。
以上のように、IO要求が競合した場合、IO要求の到着順に実施される。
次に、ステップS1602において、非特権OS1250上の非特権OS仮想デバイス処理部1251は、VM1300上のOS間通信処理部1301を介して、VM1300上の仮想デバイス1350にIO要求を行う。
次に、ステップS1603において、VM1300は、仮想デバイス1350へのIO要求に対して、デバイス要求変換処理部1303を呼び出し、仮想デバイス1350へのIO要求から共有デバイス1601へのIO要求に変換する。
次に、ステップS1604において、VM1300は、OS間通信処理部1301を介して、特権OS1100上の特権OS共有デバイス処理部1101に実IO要求を行う。
ここで、ステップS1605において、非特権OS1200上のアプリケーションが、非特権OS仮想デバイス処理部1201にIO要求を行う。
これを受け、ステップS1606において、非特権OS1200上の非特権OS仮想デバイス処理部1201は、VM1300上のOS間通信処理部1301を介して、VM1300上の仮想デバイス1350にIO要求を行う。
次に、ステップS1607において、VM1300は、仮想デバイス1350へのIO要求に対して、デバイス要求変換処理部1303を呼び出し、仮想デバイス1350へのIO要求から共有デバイス1601へのIO要求に変換する。
次に、ステップS1608において、VM1300は、OS間通信処理部1301を介して、特権OS1100上の特権OS共有デバイス処理部1101に実IO要求を行う。
これを受け、ステップS1609において、特権OS1100上の特権OS共有デバイス処理部1101は、IO要求の到着順に処理を実施する。
図16の場合は、非特権OS1250からのIO要求を先に処理する。
最後に、ステップS1610において、特権OS1100上の特権OS共有デバイス処理部1101は、非特権OS1200のIO要求を処理する。
以上のように、IO要求が競合した場合、IO要求の到着順に実施される。
図13に示す構成では、非特権OS1200からのIO要求は、全てVM1300上の仮想デバイス1350を介して、特権OS1100上の特権OS共有デバイス処理部101で処理される。
特権OS1100に対しては、デバイスドライバが豊富なLinux(登録商標)などの汎用OSを利用することが一般的である。
図13の構成において、非特権OS1200がRTOSの場合、非特権OS1200からのIO要求が、汎用OSである特権OS1100上の特権OS共有デバイス処理部1101で実施される。このため、非特権OS1200が要求するリアルタイム応答性が保てないという課題がある。
つまり、非特権OS1200は直接共有デバイス1601にIO要求を行うことができず、非特権OS1200からのIO要求はVM1300及びRTOSではない特権OS1100の処理を経由して共有デバイス1601に伝達されるため、リアルタイム応答性を確保できない。
特権OS1100に対しては、デバイスドライバが豊富なLinux(登録商標)などの汎用OSを利用することが一般的である。
図13の構成において、非特権OS1200がRTOSの場合、非特権OS1200からのIO要求が、汎用OSである特権OS1100上の特権OS共有デバイス処理部1101で実施される。このため、非特権OS1200が要求するリアルタイム応答性が保てないという課題がある。
つまり、非特権OS1200は直接共有デバイス1601にIO要求を行うことができず、非特権OS1200からのIO要求はVM1300及びRTOSではない特権OS1100の処理を経由して共有デバイス1601に伝達されるため、リアルタイム応答性を確保できない。
この課題に対する一つ目の解決方法として、特権OS1100としてRTOSを利用することが考えられる。
しかし、一般的に、RTOSのデバイス対応は貧弱であり、特権OS1100としてRTOSを利用する場合には、RTOS上に計算機装置1000で共有される全てのデバイスに対するデバイス処理用のモジュールを追加する必要があるという課題がある。
しかし、一般的に、RTOSのデバイス対応は貧弱であり、特権OS1100としてRTOSを利用する場合には、RTOS上に計算機装置1000で共有される全てのデバイスに対するデバイス処理用のモジュールを追加する必要があるという課題がある。
二つ目の解決方法として、特権OS1100上の特権OS共有デバイス処理部1101のみをリアルタイム化する方式も考えられる。
しかし、一般的に、汎用OS上で動作する特定のデバイス処理部のみをリアルタイム化することはできず、汎用OSの内部構造を修正し、OS全体をリアルタイム化する必要がある。
図13の例では、特権OS1100全体のリアルタイム化が必要になる。
すなわち、共有デバイスのリアルタイム応答性確保のために、汎用OS全体をリアルタイム化しなければならないという課題がある。
しかし、一般的に、汎用OS上で動作する特定のデバイス処理部のみをリアルタイム化することはできず、汎用OSの内部構造を修正し、OS全体をリアルタイム化する必要がある。
図13の例では、特権OS1100全体のリアルタイム化が必要になる。
すなわち、共有デバイスのリアルタイム応答性確保のために、汎用OS全体をリアルタイム化しなければならないという課題がある。
本発明は、これらの課題を解決することを主な目的の一つとしており、非特権OSの要求するリアルタイム応答性を満足しながら、複数のOS間で効率的にデバイスを共有することを主な目的とする。
本発明に係る計算機装置は、
1つ以上のデバイスが接続されている計算機装置において、
各デバイスの管理権が付与されている特権OS(Operating System)と、
いずれのデバイスの管理権も付与されていない1つ以上の非特権OSと、
非特権OSと、前記非特権OSに対して指定されている指定デバイスとが示される指定デバイス情報を記憶する情報記憶部と、
前記特権OSが起動した後、いずれかの非特権OSが起動する際に、前記指定デバイス情報を参照し、起動する非特権OSに指定デバイスがある場合に、起動する非特権OSの指定デバイスの管理権を前記特権OSから起動する非特権OSに移す管理権制御部とを有することを特徴とする。
1つ以上のデバイスが接続されている計算機装置において、
各デバイスの管理権が付与されている特権OS(Operating System)と、
いずれのデバイスの管理権も付与されていない1つ以上の非特権OSと、
非特権OSと、前記非特権OSに対して指定されている指定デバイスとが示される指定デバイス情報を記憶する情報記憶部と、
前記特権OSが起動した後、いずれかの非特権OSが起動する際に、前記指定デバイス情報を参照し、起動する非特権OSに指定デバイスがある場合に、起動する非特権OSの指定デバイスの管理権を前記特権OSから起動する非特権OSに移す管理権制御部とを有することを特徴とする。
本発明によれば、非特権OSに特定のデバイスを指定デバイスとして対応付けておき、当該非特権OSの起動時に指定デバイスの管理権を特権OSから非特権OSに移すので、当該非特権OSは、直接指定デバイスに対して使用要求を出すことができ、特権OSの処理を待つ必要がなく、当該非特権OSに必要なリアルタイム応答性を確保することができる。
実施の形態1.
本実施の形態では、非特権OSにデバイス共有のための機能のみを追加することで、非特権OSの要求するリアルタイム応答性を満足しながら、デバイスの共有を図る方式を説明する。
より具体的には、本実施の形態では、共有デバイスの管理権を有しない非特権OSに特定の共有デバイスを指定デバイスとして対応付け、当該非特権OSの起動までは特権OSに指定デバイスの管理権を与え、当該非特権OSの起動時に、指定デバイスの管理権を特権OSから非特権OSに移す。
指定デバイスは、例えば、当該非特権OSでの使用頻度の高い共有デバイスである。
この管理権の移動により、当該非特権OSは、直接指定デバイスに対してIO要求を出すことができ、仮想マシン及び特権OSの処理を待つ必要がなく、当該非特権OSに必要なリアルタイム応答性を確保することができる。
なお、非特権OSに管理権が移動した後の指定デバイスを管理デバイスともいう。
また、IO要求とは、共有デバイスの使用要求である。
本実施の形態では、非特権OSにデバイス共有のための機能のみを追加することで、非特権OSの要求するリアルタイム応答性を満足しながら、デバイスの共有を図る方式を説明する。
より具体的には、本実施の形態では、共有デバイスの管理権を有しない非特権OSに特定の共有デバイスを指定デバイスとして対応付け、当該非特権OSの起動までは特権OSに指定デバイスの管理権を与え、当該非特権OSの起動時に、指定デバイスの管理権を特権OSから非特権OSに移す。
指定デバイスは、例えば、当該非特権OSでの使用頻度の高い共有デバイスである。
この管理権の移動により、当該非特権OSは、直接指定デバイスに対してIO要求を出すことができ、仮想マシン及び特権OSの処理を待つ必要がなく、当該非特権OSに必要なリアルタイム応答性を確保することができる。
なお、非特権OSに管理権が移動した後の指定デバイスを管理デバイスともいう。
また、IO要求とは、共有デバイスの使用要求である。
図1は、本実施の形態に係る計算機装置1の構成例を示す。
計算機装置1は例えば、組み込み機器である。
計算機装置1は例えば、組み込み機器である。
ハードウェア400は、計算機装置1で使用されるデバイス群である。
VM300は、OS間の通信機能および仮想デバイスを保有するVMである。
特権OS100は、計算機装置1で使用する全てのデバイスの管理権を保有するOSである。
非特権OS200および非特権OS250は、デバイスへのアクセスが制限されたOSである。
VM300は、OS間の通信機能および仮想デバイスを保有するVMである。
特権OS100は、計算機装置1で使用する全てのデバイスの管理権を保有するOSである。
非特権OS200および非特権OS250は、デバイスへのアクセスが制限されたOSである。
まず、ハードウェア400について説明する。
ハードウェア400は、二次記憶装置500と共有デバイス601と主メモリ701を保有する。
ハードウェア400は、二次記憶装置500と共有デバイス601と主メモリ701を保有する。
主メモリ701は、OS起動時に二次記憶装置500上に保持されたOSイメージがロードされる領域である。
共有デバイス601は、例えば、ネットワークデバイス、グラフィックデバイス、キーボード、シリアルインタフェース、マウス、赤外線インタフェース、USB(Universal Serial Bus)ポートなど、RTOSと汎用OSで共有される可能性のあるデバイスである。
共有デバイス601は複数存在してもよい。
また、共有デバイス601へのIO要求とは、共有デバイス1601の使用要求である。
共有デバイス601は、例えば、ネットワークデバイス、グラフィックデバイス、キーボード、シリアルインタフェース、マウス、赤外線インタフェース、USB(Universal Serial Bus)ポートなど、RTOSと汎用OSで共有される可能性のあるデバイスである。
共有デバイス601は複数存在してもよい。
また、共有デバイス601へのIO要求とは、共有デバイス1601の使用要求である。
二次記憶装置500は、非特権OS200及び非特権OS250を起動するために使用される、非特権OSイメージファイル501及び、非特権OS起動情報ファイル502を保有する。二次記憶装置500は情報記憶部の例である。
非特権OSイメージファイル501は、OSを起動する際に使用するバイナリファイルである。
非特権OS起動情報ファイル502は、OSの起動に必要な情報が記載されている。情報の内容としては、必要なメモリサイズ、ページサイズ、CPU数、タイマ数、OS名、エントリアドレスである。非OS起動情報ファイル502の例を図4に示す。
非特権OSイメージファイル501、非特権OS起動情報ファイル502は、非特権OSごとに用意されている。
図1の例では、非特権OS200の非特権OSイメージファイル501、非特権OS起動情報ファイル502があり、また、非特権OS250の非特権OSイメージファイル501、非特権OS起動情報ファイル502がある。
また、二次記憶装置500は、更に、非特権OSデバイス起動情報ファイル503を保有している。
非特権OSデバイス起動情報ファイル503には、非特権OSと、非特権OSに対して指定されているデバイス(指定デバイス)及び優先度が記載されている。
非特権OSデバイス起動情報ファイル503は指定デバイス情報の例であり、二次記憶装置500は情報記憶部の例である。
非特権OSデバイス起動情報ファイル503は、例えば図5に示す情報である。
非特権OSデバイス起動情報ファイル503は非特権OSごとに用意されている訳ではなく、1つの非特権OSにだけ非特権OSデバイス起動情報ファイル503が用意されている場合もある。
非特権OSイメージファイル501は、OSを起動する際に使用するバイナリファイルである。
非特権OS起動情報ファイル502は、OSの起動に必要な情報が記載されている。情報の内容としては、必要なメモリサイズ、ページサイズ、CPU数、タイマ数、OS名、エントリアドレスである。非OS起動情報ファイル502の例を図4に示す。
非特権OSイメージファイル501、非特権OS起動情報ファイル502は、非特権OSごとに用意されている。
図1の例では、非特権OS200の非特権OSイメージファイル501、非特権OS起動情報ファイル502があり、また、非特権OS250の非特権OSイメージファイル501、非特権OS起動情報ファイル502がある。
また、二次記憶装置500は、更に、非特権OSデバイス起動情報ファイル503を保有している。
非特権OSデバイス起動情報ファイル503には、非特権OSと、非特権OSに対して指定されているデバイス(指定デバイス)及び優先度が記載されている。
非特権OSデバイス起動情報ファイル503は指定デバイス情報の例であり、二次記憶装置500は情報記憶部の例である。
非特権OSデバイス起動情報ファイル503は、例えば図5に示す情報である。
非特権OSデバイス起動情報ファイル503は非特権OSごとに用意されている訳ではなく、1つの非特権OSにだけ非特権OSデバイス起動情報ファイル503が用意されている場合もある。
次に、VM300(仮想マシン)について説明する。
VM300は、OS間通信処理部301とOS起動処理部302とデバイス要求変換処理部303と仮想デバイス350に加え、デバイス割り当て処理部304、デバイス要求転送処理部305を保有する。
VM300は、OS間通信処理部301とOS起動処理部302とデバイス要求変換処理部303と仮想デバイス350に加え、デバイス割り当て処理部304、デバイス要求転送処理部305を保有する。
OS間通信処理部301は、非特権OS200からのIO要求を特権OS100に送信する機能を備える。
OS起動処理部302は、特権OS100の指示により、非特権OS200および非特権OS250を起動する機能を備える。
デバイス要求変換処理部303は、非特権OSから仮想デバイス350へのIO要求を、共有デバイス601に対するIO要求に変換する機能を備える。
仮想デバイス350は、非特権OS200及び非特権OS250に対して共有デバイス601をエミュレートする。
仮想デバイス350は、共有デバイス601の数と同じだけ存在する。
つまり、仮想デバイス350は非特権OS200及び非特権OS250からIO要求を受け取り、デバイス要求変換処理部303を使用して共有デバイス601に対するIO要求に変換し、デバイス要求転送処理部305にIO要求の処理を依頼する。
仮想デバイス350は、共有デバイス601の数と同じだけ存在する。
つまり、仮想デバイス350は非特権OS200及び非特権OS250からIO要求を受け取り、デバイス要求変換処理部303を使用して共有デバイス601に対するIO要求に変換し、デバイス要求転送処理部305にIO要求の処理を依頼する。
デバイス割り当て処理部304は、VM300上のOS起動処理部302から、非特権OSへのデバイス割り当て依頼を受け取り、非特権OSに共有デバイスを割り当てる。
例えば、VM300上のOS起動処理部302から、非特権OS200へのデバイス割り当て依頼を受け取り、二次記憶装置500上の非特権OS200の非特権OSデバイス起動情報ファイル503を読み出し、非特権OS200へ共有デバイス601を割り当てる。
例えば、VM300上のOS起動処理部302から、非特権OS200へのデバイス割り当て依頼を受け取り、二次記憶装置500上の非特権OS200の非特権OSデバイス起動情報ファイル503を読み出し、非特権OS200へ共有デバイス601を割り当てる。
デバイス要求転送処理部305は、デバイス管理権テーブル360から共有デバイス601の管理権を持つOSを特定し、該当するOSへIO要求を転送する。
VM300は、デバイス管理権テーブル360を管理する。
デバイス管理権テーブル360は、現在どのOSがどの共有デバイスの管理権を有するかを示すテーブルである。デバイス管理権テーブル360はデバイス管理権情報の例である。
つまり、デバイス管理権テーブル360は共有デバイス601ごとにいずれのOSが管理権を有しているのかを示すテーブルである。
デバイス管理権テーブル360はデバイス管理権情報の例である。
デバイス管理権テーブル360は、例えば図2に示す情報である。
デバイス管理権テーブル360は、現在どのOSがどの共有デバイスの管理権を有するかを示すテーブルである。デバイス管理権テーブル360はデバイス管理権情報の例である。
つまり、デバイス管理権テーブル360は共有デバイス601ごとにいずれのOSが管理権を有しているのかを示すテーブルである。
デバイス管理権テーブル360はデバイス管理権情報の例である。
デバイス管理権テーブル360は、例えば図2に示す情報である。
またVM300において、デバイス割り当て処理部304は、特権OS100が起動した後、いずれかの非特権OSが起動する際に、非特権OSデバイス起動情報ファイル503を参照し、起動する非特権OSに指定デバイスがある場合に、起動する非特権OSの指定デバイスの管理権を特権OS100から起動する非特権OSに移す。
また、OS間通信処理部301、デバイス要求転送処理部305及び仮想デバイス350は、協働により、いずれかのOSから出力されたいずれかの共有デバイス601に対するIO要求(使用要求)を入力し、デバイス管理権テーブル360を参照して、入力したIO要求が対象とする共有デバイス601の管理権を有しているOSを判別し、判別したOSにIO要求を出力する。
OS間通信処理部301、デバイス要求転送処理部305及び仮想デバイス350は、OS判別部の機能を実現する。
また、OS間通信処理部301、デバイス要求転送処理部305及び仮想デバイス350は、協働により、いずれかのOSから出力されたいずれかの共有デバイス601に対するIO要求(使用要求)を入力し、デバイス管理権テーブル360を参照して、入力したIO要求が対象とする共有デバイス601の管理権を有しているOSを判別し、判別したOSにIO要求を出力する。
OS間通信処理部301、デバイス要求転送処理部305及び仮想デバイス350は、OS判別部の機能を実現する。
次に、特権OS100について説明する。
特権OS100は、特権OS共有デバイス処理部101に加え、特権OS共有デバイス削除処理部102と特権OS仮想デバイス処理部103と特権OS仮想デバイス追加処理部104を保有する。
特権OS100はシステム上に存在する全ての実デバイスを利用するための特権が与えられたOSである。
つまり、特権OS100は、初期状態において、全ての共有デバイス601の管理権が付与されている。
特権OS100は、実デバイスに対する豊富なデバイス処理用モジュールを持つLinux(登録商標)などの汎用OSを想定している。
特権OS100は、特権OS共有デバイス処理部101に加え、特権OS共有デバイス削除処理部102と特権OS仮想デバイス処理部103と特権OS仮想デバイス追加処理部104を保有する。
特権OS100はシステム上に存在する全ての実デバイスを利用するための特権が与えられたOSである。
つまり、特権OS100は、初期状態において、全ての共有デバイス601の管理権が付与されている。
特権OS100は、実デバイスに対する豊富なデバイス処理用モジュールを持つLinux(登録商標)などの汎用OSを想定している。
特権OS共有デバイス処理部101は、自OSからのIO要求及び、VM300上のOS間通信処理部301からのIO要求を受け取り、共有デバイス601へIO要求を送信する機能を備える。
特権OS共有デバイス削除処理部102は、VM300からの指示により、特権OS100に管理権が割り当てられている共有デバイス601を特権OS100から切り離す処理を行う。
特権OS仮想デバイス処理部103は、VM300上の仮想デバイス350に対しIO要求を行う。
特権OS仮想デバイス追加処理部104は、VM300からの指示により、特権OS100に対し、VM300上の仮想デバイス350を割り当てる処理を行う。
特権OS共有デバイス削除処理部102は、VM300からの指示により、特権OS100に管理権が割り当てられている共有デバイス601を特権OS100から切り離す処理を行う。
特権OS仮想デバイス処理部103は、VM300上の仮想デバイス350に対しIO要求を行う。
特権OS仮想デバイス追加処理部104は、VM300からの指示により、特権OS100に対し、VM300上の仮想デバイス350を割り当てる処理を行う。
次に、非特権OS200について説明する。
非特権OS200は、非特権OS共有デバイス処理部202を保有する。
非特権OS200はリアルタイムOSを想定している。
なお、本実施の形態では、非特権OS200には指定デバイスがあり、非特権OS250には指定デバイスがない例を説明する。
つまり、非特権OS200は、非特権OSデバイス起動情報ファイル503に自OSが示され、また、指定デバイスが指定されており、指定デバイスに対する管理権が付与される。
一方、非特権OS250は、非特権OSデバイス起動情報ファイル503に自OSが示されておらず、また、指定デバイスが指定されていない。
なお、以下では、非特権OS200の指定デバイスを共有デバイスA601aとして説明する。
非特権OS200は、非特権OS共有デバイス処理部202を保有する。
非特権OS200はリアルタイムOSを想定している。
なお、本実施の形態では、非特権OS200には指定デバイスがあり、非特権OS250には指定デバイスがない例を説明する。
つまり、非特権OS200は、非特権OSデバイス起動情報ファイル503に自OSが示され、また、指定デバイスが指定されており、指定デバイスに対する管理権が付与される。
一方、非特権OS250は、非特権OSデバイス起動情報ファイル503に自OSが示されておらず、また、指定デバイスが指定されていない。
なお、以下では、非特権OS200の指定デバイスを共有デバイスA601aとして説明する。
非特権OS共有デバイス処理部202は、IO要求保持キュー370を管理し、IO要求が競合した場合は、IO要求の送信元OSの優先度に応じて、ハードウェア400上の共有デバイス601に対し、IO要求を送信する機能を備える。
非特権OS共有デバイス処理部202は、実施の形態2において実行制御部として動作する。
IO要求保持キュー370は、VM300上のデバイス要求転送処理部305及び自OSである非特権OS200からのIO要求を一時的に保有する機能を持つ。
非特権OS共有デバイス処理部202は、IO要求の送信元OSの優先度に応じて、キューの順番を変更する。
IO要求の送信元OSの優先度は、非特権OSデバイス起動情報ファイル503の共有デバイス601に対する優先度を使用する。
なお、非特権OSデバイス起動情報ファイル503が存在しない場合は最低優先度とする。
非特権OS共有デバイス処理部202は、実施の形態2において実行制御部として動作する。
IO要求保持キュー370は、VM300上のデバイス要求転送処理部305及び自OSである非特権OS200からのIO要求を一時的に保有する機能を持つ。
非特権OS共有デバイス処理部202は、IO要求の送信元OSの優先度に応じて、キューの順番を変更する。
IO要求の送信元OSの優先度は、非特権OSデバイス起動情報ファイル503の共有デバイス601に対する優先度を使用する。
なお、非特権OSデバイス起動情報ファイル503が存在しない場合は最低優先度とする。
次に、非特権OS250について説明する。
非特権OS250は実デバイスへのアクセスが制限されたOSである。
非特権OS250は汎用OSを想定している。
非特権OS250は、非特権OS仮想デバイス処理部251を保有する。
非特権OS仮想デバイス処理部251は、VM300上の仮想デバイス350に対し、IO要求を送信する機能を備える。
非特権OS250は実デバイスへのアクセスが制限されたOSである。
非特権OS250は汎用OSを想定している。
非特権OS250は、非特権OS仮想デバイス処理部251を保有する。
非特権OS仮想デバイス処理部251は、VM300上の仮想デバイス350に対し、IO要求を送信する機能を備える。
前述のように、本実施の形態では、非特権OS200には指定デバイスがあり、非特権OS250には指定デバイスがないため、非特権OS200には非特権OS共有デバイス処理部202が存在するが、非特権OS250には非特権OS共有デバイス処理部202に相当する要素がない。
代わりに、非特権OS250には、共有デバイス601に対するIO要求を仮想デバイス350に送信するための非特権OS仮想デバイス処理部251が設けられている。
代わりに、非特権OS250には、共有デバイス601に対するIO要求を仮想デバイス350に送信するための非特権OS仮想デバイス処理部251が設けられている。
図2は、VM300が備えるデバイス管理権テーブル360の内容の例を示している。
デバイス管理権テーブル360は、共有デバイスごとに、管理権を持つOSを示す。
デバイス管理権テーブル360のテーブルの項目としては、共有デバイス名、管理権を持つOS名、管理権を持つOSの優先度、現在の管理状況を示す管理権フラグである。
図2の例では、共有デバイスA601aについて、特権OS100が管理中であり、特権OS100の優先度が0であることを示している。
デバイス管理権テーブル360は、共有デバイスごとに、管理権を持つOSを示す。
デバイス管理権テーブル360のテーブルの項目としては、共有デバイス名、管理権を持つOS名、管理権を持つOSの優先度、現在の管理状況を示す管理権フラグである。
図2の例では、共有デバイスA601aについて、特権OS100が管理中であり、特権OS100の優先度が0であることを示している。
図5は、非特権OSデバイス起動情報ファイル503の例を示す。
非特権OSデバイス起動情報ファイル503のテーブルの項目としては、OS名、共有デバイス名、優先度がある。
図5の例では、非特権OS200に共有デバイスA601aについての優先度100が設定されていることが示されている。
なお、本実施の形態では優先度は値が大きいほど優先度が高いとする。
非特権OSデバイス起動情報ファイル503のテーブルの項目としては、OS名、共有デバイス名、優先度がある。
図5の例では、非特権OS200に共有デバイスA601aについての優先度100が設定されていることが示されている。
なお、本実施の形態では優先度は値が大きいほど優先度が高いとする。
次に、本実施の形態における、特権OS100上のアプリケーションが非特権OS200を起動する手順を図7を用いて説明する。
まず、ステップS801において、特権OS100は、VM300上のOS起動処理部302に非特権OS200の起動を依頼する。
その際、特権OS100は、二次記憶装置500上に存在する非特権OS200の非特権OSイメージファイル501、非特権OS起動情報ファイル502および非特権OSデバイス起動情報ファイル503を指定する。
次に、ステップS802において、VM300上のOS起動処理部302は、非特権OS起動情報ファイル502(図4)から、非特権OS200の起動に必要なメモリサイズ、ページサイズ、CPU数、タイマ数、OS名、エントリアドレスを取得する。
次に、ステップS803において、VM300上のOS起動処理部302は、非特権OS200の起動に必要なデバイスの情報を取得した後、非特権OS200に対しデバイスを割り当てる。
割り当てるデバイスはメモリ、CPU、タイマである。
次に、ステップS804において、VM300上のOS起動処理部302は、非特権OSイメージファイル501を主メモリ701に展開し、非特権OS200に割り当てたCPUのプログラムカウンタにエントリアドレスを指定する。
次に、ステップS805において、VM300上のデバイス割り当て処理部304は、非特権OSデバイス起動情報ファイル503(図5)から、非特権OS200の指定デバイス及び非特権OS200の優先度を取得する。
図5の場合は、非特権OS200の指定デバイスは共有デバイスA601aであり、非特権OS200に共有デバイスA601aについての優先度100が設定されている。
その際、特権OS100は、二次記憶装置500上に存在する非特権OS200の非特権OSイメージファイル501、非特権OS起動情報ファイル502および非特権OSデバイス起動情報ファイル503を指定する。
次に、ステップS802において、VM300上のOS起動処理部302は、非特権OS起動情報ファイル502(図4)から、非特権OS200の起動に必要なメモリサイズ、ページサイズ、CPU数、タイマ数、OS名、エントリアドレスを取得する。
次に、ステップS803において、VM300上のOS起動処理部302は、非特権OS200の起動に必要なデバイスの情報を取得した後、非特権OS200に対しデバイスを割り当てる。
割り当てるデバイスはメモリ、CPU、タイマである。
次に、ステップS804において、VM300上のOS起動処理部302は、非特権OSイメージファイル501を主メモリ701に展開し、非特権OS200に割り当てたCPUのプログラムカウンタにエントリアドレスを指定する。
次に、ステップS805において、VM300上のデバイス割り当て処理部304は、非特権OSデバイス起動情報ファイル503(図5)から、非特権OS200の指定デバイス及び非特権OS200の優先度を取得する。
図5の場合は、非特権OS200の指定デバイスは共有デバイスA601aであり、非特権OS200に共有デバイスA601aについての優先度100が設定されている。
次に、ステップS806において、VM300上のデバイス割り当て処理部304は、ステップS805で取得した起動中の非特権OS200の指定デバイス(共有デバイスA601a)をキーとして、デバイス管理権テーブル360(図2)から、当該デバイスの管理権を持つOS及びデバイスの管理権の変更が必要かどうかを判断する。
図2の例では、共有デバイスA601aの管理権を現在持っているOSは特権OS100であり、特権OS100の優先度は0である。
一方、図5に示すように、現在起動中の非特権OS200の共有デバイスA601aについての優先度は100であり、特権OS100の優先度よりも高い。
このため、デバイス割り当て処理部304は、非特権OS200に共有デバイスA601aの管理権を割り当てることを決定し、管理権の変更が必要と判断する。
管理権の変更が必要な場合はステップS807に処理が移行し、管理権の変更が必要でない場合はステップS812に処理が移行する。
図2の例では、共有デバイスA601aの管理権を現在持っているOSは特権OS100であり、特権OS100の優先度は0である。
一方、図5に示すように、現在起動中の非特権OS200の共有デバイスA601aについての優先度は100であり、特権OS100の優先度よりも高い。
このため、デバイス割り当て処理部304は、非特権OS200に共有デバイスA601aの管理権を割り当てることを決定し、管理権の変更が必要と判断する。
管理権の変更が必要な場合はステップS807に処理が移行し、管理権の変更が必要でない場合はステップS812に処理が移行する。
ステップS807では、VM300上のデバイス割り当て処理部304が、特権OS100上の特権OS共有デバイス削除処理部102を呼び出す。
次に、ステップS808において、特権OS100上の特権OS共有デバイス削除処理部102は、特権OS100の動作を継続したまま、特権OS100から共有デバイスA601aを切り離し、VM300上のデバイス割り当て処理部304に通知する。
次に、ステップS809において、VM300上のデバイス割り当て処理部304は、特権OS100上の特権OS仮想デバイス追加処理部104を呼び出す。
次に、ステップS810において、特権OS仮想デバイス追加処理部104は、特権OS100の動作を継続したまま、特権OS100と共有デバイスA601aに対応する仮想デバイス350とを対応付け、VM300上のデバイス割り当て処理部304に通知する。
次に、ステップS811において、VM300上のデバイス割り当て処理部304は、デバイス管理権テーブル360を更新する。
本例では、共有デバイスA601aの管理権が、特権OS100から非特権OS200へ移動したので、デバイス管理権テーブル360は図2から図3に変更になる。
最後に、ステップS812において、VM300上のOS起動処理部302は、非特権OS200のCPUに対し起動命令を行う。
以上により非特権OS200の起動が完了する。
次に、ステップS808において、特権OS100上の特権OS共有デバイス削除処理部102は、特権OS100の動作を継続したまま、特権OS100から共有デバイスA601aを切り離し、VM300上のデバイス割り当て処理部304に通知する。
次に、ステップS809において、VM300上のデバイス割り当て処理部304は、特権OS100上の特権OS仮想デバイス追加処理部104を呼び出す。
次に、ステップS810において、特権OS仮想デバイス追加処理部104は、特権OS100の動作を継続したまま、特権OS100と共有デバイスA601aに対応する仮想デバイス350とを対応付け、VM300上のデバイス割り当て処理部304に通知する。
次に、ステップS811において、VM300上のデバイス割り当て処理部304は、デバイス管理権テーブル360を更新する。
本例では、共有デバイスA601aの管理権が、特権OS100から非特権OS200へ移動したので、デバイス管理権テーブル360は図2から図3に変更になる。
最後に、ステップS812において、VM300上のOS起動処理部302は、非特権OS200のCPUに対し起動命令を行う。
以上により非特権OS200の起動が完了する。
なお、以上では、特権OS100から非特権OS200に共有デバイスA601aの管理権が移動する場合を説明したが、非特権OSから別の非特権OSに共有デバイスの管理権が移動することも可能である。
例えば、以上の手順により共有デバイスA601aの管理権が非特権OS200に移動した後に、非特権OS250が起動され、非特権OS250の共有デバイスA601についての優先度が200である場合は、非特権OS250の優先度の方が高いので、共有デバイスA601aの管理権が非特権OS250に移動する。
例えば、以上の手順により共有デバイスA601aの管理権が非特権OS200に移動した後に、非特権OS250が起動され、非特権OS250の共有デバイスA601についての優先度が200である場合は、非特権OS250の優先度の方が高いので、共有デバイスA601aの管理権が非特権OS250に移動する。
次に本実施の形態における、デバイスを共有する方法を図8を用いて説明する。
ここでは、非特権OS250が共有デバイスA601aを使用する場合について説明する。
ここでは、非特権OS250が共有デバイスA601aを使用する場合について説明する。
まず、ステップS901において、非特権OS250上のアプリケーションは、非特権OS仮想デバイス処理部251に対して、共有デバイスA601aのIO要求を行う。
次に、ステップS902において、非特権OS250上の非特権OS仮想デバイス処理部251は、VM300上のOS間通信処理部301を介して、VM300上の共有デバイスA601aに対応する仮想デバイス350にIO要求を行う。
次に、ステップS903において、VM300上の仮想デバイス350は、自身へのIO要求に対して、デバイス要求変換処理部303を呼び出し、デバイス要求変換処理部303が、仮想デバイス350へのIO要求から共有デバイスA601aへのIO要求に変換し、次に仮想デバイス350が、VM300上のデバイス要求転送処理部305を呼び出す。
次に、ステップS904において、VM300上のデバイス要求転送処理部305は、デバイス管理権テーブル360を参照し、共有デバイスA601aがどのOSに割り当てられているか調べ、仮想デバイス350に通知する。
デバイス管理権テーブル360が図3の状態であるとすると、デバイス要求転送処理部305は、共有デバイスA601aの管理権は非特権OS200に割り当てられていることを通知する。
次に、ステップS905において、VM300の仮想デバイス350は、OS間通信処理部301を介して、共有デバイスA601aの管理権を持つOS、すなわち非特権OS200上の非特権OS共有デバイス処理部202に実IO要求を行う。
非特権OS200上の非特権OS共有デバイス処理部202では、仮想デバイス350からの実IO要求(非特権OS250のIO要求)及び非特権OS250の優先度をIO要求保持キュー370に格納し、他のOS(特権OS100、非特権OS200)からの実IO要求の出力有無を調査する。
そして、他のOSからの実IO要求がないことを確認した後に、ステップS906において、非特権OS200上の非特権OS共有デバイス処理部202は、管理デバイスである共有デバイスA601aに実IO要求を行う。この後、非特権OS250上のアプリケーションは共有デバイスA601aを使用することができる。
なお、他のOSから実IO要求が出力されている場合の処理は図10を参照して後述する。
以上の処理により、デバイスの共有が行われる。
なお、特権OS100上のアプリケーションが共有デバイスA601のIO要求を出力する場合も、上記の非特権OS250の場合と同様の処理手順となる。
次に、ステップS902において、非特権OS250上の非特権OS仮想デバイス処理部251は、VM300上のOS間通信処理部301を介して、VM300上の共有デバイスA601aに対応する仮想デバイス350にIO要求を行う。
次に、ステップS903において、VM300上の仮想デバイス350は、自身へのIO要求に対して、デバイス要求変換処理部303を呼び出し、デバイス要求変換処理部303が、仮想デバイス350へのIO要求から共有デバイスA601aへのIO要求に変換し、次に仮想デバイス350が、VM300上のデバイス要求転送処理部305を呼び出す。
次に、ステップS904において、VM300上のデバイス要求転送処理部305は、デバイス管理権テーブル360を参照し、共有デバイスA601aがどのOSに割り当てられているか調べ、仮想デバイス350に通知する。
デバイス管理権テーブル360が図3の状態であるとすると、デバイス要求転送処理部305は、共有デバイスA601aの管理権は非特権OS200に割り当てられていることを通知する。
次に、ステップS905において、VM300の仮想デバイス350は、OS間通信処理部301を介して、共有デバイスA601aの管理権を持つOS、すなわち非特権OS200上の非特権OS共有デバイス処理部202に実IO要求を行う。
非特権OS200上の非特権OS共有デバイス処理部202では、仮想デバイス350からの実IO要求(非特権OS250のIO要求)及び非特権OS250の優先度をIO要求保持キュー370に格納し、他のOS(特権OS100、非特権OS200)からの実IO要求の出力有無を調査する。
そして、他のOSからの実IO要求がないことを確認した後に、ステップS906において、非特権OS200上の非特権OS共有デバイス処理部202は、管理デバイスである共有デバイスA601aに実IO要求を行う。この後、非特権OS250上のアプリケーションは共有デバイスA601aを使用することができる。
なお、他のOSから実IO要求が出力されている場合の処理は図10を参照して後述する。
以上の処理により、デバイスの共有が行われる。
なお、特権OS100上のアプリケーションが共有デバイスA601のIO要求を出力する場合も、上記の非特権OS250の場合と同様の処理手順となる。
次に、非特権OS200が共有デバイスA601aを使用する際の処理手順を図9を用いて説明する。
まず、ステップS1001において、非特権OS200上のアプリケーションは、非特権OS共有デバイス処理部202に共有デバイスA601aのIO要求を行う。なお、非特権OS200では、共有デバイスA601aの管理権が非特権OS200にあることを認識している。
次に、ステップS1002において、非特権OS共有デバイス処理部202は、非特権OS200上のアプリケーションからのIO要求と非特権OS200の優先度をIO要求保持キュー370に格納し、他のOS(特権OS100、非特権OS250)からの実IO要求の出力有無を調査する。
そして、他のOSからの実IO要求がないことを確認した後に、ステップS1003において、非特権OS共有デバイス処理部202は、共有デバイスA601aに実IO要求を行う。この後、非特権OS200上のアプリケーションは共有デバイスA601aを使用することができる。
なお、他のOSから実IO要求が出力されている場合の処理は図10を参照して後述する。
以上の処理により、デバイスの共有が行われる。
次に、ステップS1002において、非特権OS共有デバイス処理部202は、非特権OS200上のアプリケーションからのIO要求と非特権OS200の優先度をIO要求保持キュー370に格納し、他のOS(特権OS100、非特権OS250)からの実IO要求の出力有無を調査する。
そして、他のOSからの実IO要求がないことを確認した後に、ステップS1003において、非特権OS共有デバイス処理部202は、共有デバイスA601aに実IO要求を行う。この後、非特権OS200上のアプリケーションは共有デバイスA601aを使用することができる。
なお、他のOSから実IO要求が出力されている場合の処理は図10を参照して後述する。
以上の処理により、デバイスの共有が行われる。
次に本実施の形態における、非特権OS200と非特権OS250のIO要求が競合した場合の処理を図10を用いて説明する。
まず、ステップS1101において、非特権OS250上のアプリケーションは、非特権OS仮想デバイス処理部251に共有デバイスA601aのIO要求を行う。
次に、ステップS1102において、非特権OS250上の非特権OS仮想デバイス処理部251は、VM300上のOS間通信処理部301を介して、VM300上の共有デバイスA601aに対応する仮想デバイス350にIO要求を行う。
次に、ステップS1103において、VM300上の仮想デバイス350は、自身へのIO要求に対して、デバイス要求変換処理部303を呼び出し、デバイス要求変換処理部303が、仮想デバイス350へのIO要求から共有デバイスA601aへのIO要求に変換し、次に仮想デバイス350が、VM300上のデバイス要求転送処理部305を呼び出す。
次に、ステップS1104において、VM300上のデバイス要求転送処理部305は、デバイス管理権テーブル360を参照し、共有デバイスA601aがどのOSに割り当てられているか調べ、仮想デバイス350に通知する。
デバイス管理権テーブル360が図3の状態であるとすると、デバイス要求転送処理部305は、共有デバイスA601aの管理権は非特権OS200に割り当てられていることを通知する。
次に、ステップS1105において、VM300上の仮想デバイス350は、OS間通信処理部301を介して、共有デバイスA601aの管理権を持つOS、すなわち非特権OS200上の非特権OS共有デバイス処理部202に実IO要求を行う。
次に、ステップS1106において、非特権OS200上の非特権OS共有デバイス処理部202は、仮想デバイス350からの実IO要求(非特権OS250のIO要求)及び非特権OS250の優先度をIO要求保持キュー370に格納し、他のOS(特権OS100、非特権OS200)からの実IO要求の出力有無を調査する。
ここでは、IO要求保持キュー370には他のOSからのIO要求は存在していないので、ステップS1106のIO要求が先頭に格納される。
IO要求保持キュー370に格納するOS優先度は、非特権OSデバイス起動情報ファイル503の共有デバイス601に対する優先度を使用する。なお、非特権OSデバイス起動情報ファイル503が存在しない場合は最低優先度とする。
本例の場合、非特権OS250用の非特権OSデバイス起動情報ファイル503は存在していないので、最低優先度(0)とする。また、特権OS100の場合は、全ての共有デバイス601において最低優先度(0)とする。
次に、ステップS1102において、非特権OS250上の非特権OS仮想デバイス処理部251は、VM300上のOS間通信処理部301を介して、VM300上の共有デバイスA601aに対応する仮想デバイス350にIO要求を行う。
次に、ステップS1103において、VM300上の仮想デバイス350は、自身へのIO要求に対して、デバイス要求変換処理部303を呼び出し、デバイス要求変換処理部303が、仮想デバイス350へのIO要求から共有デバイスA601aへのIO要求に変換し、次に仮想デバイス350が、VM300上のデバイス要求転送処理部305を呼び出す。
次に、ステップS1104において、VM300上のデバイス要求転送処理部305は、デバイス管理権テーブル360を参照し、共有デバイスA601aがどのOSに割り当てられているか調べ、仮想デバイス350に通知する。
デバイス管理権テーブル360が図3の状態であるとすると、デバイス要求転送処理部305は、共有デバイスA601aの管理権は非特権OS200に割り当てられていることを通知する。
次に、ステップS1105において、VM300上の仮想デバイス350は、OS間通信処理部301を介して、共有デバイスA601aの管理権を持つOS、すなわち非特権OS200上の非特権OS共有デバイス処理部202に実IO要求を行う。
次に、ステップS1106において、非特権OS200上の非特権OS共有デバイス処理部202は、仮想デバイス350からの実IO要求(非特権OS250のIO要求)及び非特権OS250の優先度をIO要求保持キュー370に格納し、他のOS(特権OS100、非特権OS200)からの実IO要求の出力有無を調査する。
ここでは、IO要求保持キュー370には他のOSからのIO要求は存在していないので、ステップS1106のIO要求が先頭に格納される。
IO要求保持キュー370に格納するOS優先度は、非特権OSデバイス起動情報ファイル503の共有デバイス601に対する優先度を使用する。なお、非特権OSデバイス起動情報ファイル503が存在しない場合は最低優先度とする。
本例の場合、非特権OS250用の非特権OSデバイス起動情報ファイル503は存在していないので、最低優先度(0)とする。また、特権OS100の場合は、全ての共有デバイス601において最低優先度(0)とする。
ここで、ステップS1107において、非特権OS200上のアプリケーションが、非特権OS共有デバイス処理部202に共有デバイスA601aのIO要求を行ったとする。なお、非特権OS200では、共有デバイスA601aの管理権が非特権OS200にあることを認識している。
非特権OS200上の非特権OS共有デバイス処理部202は非特権OS200上のアプリケーションからのIO要求と非特権OS200の優先度をIO要求保持キュー370に格納し、他のOS(特権OS100、非特権OS250)からの実IO要求の出力有無を調査する。
図10の例では、非特権OS250からのIO要求がIO要求保持キュー370に先に格納されている。
このため、非特権OS共有デバイス処理部202は、OS優先度に基づいてIO要求保持キュー370内のIO要求の順序を入れ替える。
より具体的には、共有デバイスA601aに対する非特権OS250の優先度は最低であり、非特権OS200の優先度は100であるため、先行する非特権OS250の優先度よりも、非特権OS200の優先度の方が高い。
そのため、ステップS1108において、非特権OS200上の非特権OS共有デバイス処理部202は、IO要求の送信元のOS優先度に応じてIO要求保持キュー370へのIO要求の格納順序を変更する。
つまり、非特権OS共有デバイス処理部202は、非特権OS200からのIO要求をIO要求保持キュー370の先頭に格納する。
最後に、ステップS1109において、非特権OS200上の非特権OS共有デバイス処理部202は、IO要求保持キュー370の先頭に格納されているIO要求から順に管理デバイスである共有デバイスA601aに処理を依頼する。
図10の例の場合、まず、非特権OS200からのIO要求から共有デバイスA601aに依頼され、次に、非特権OS250からのIO要求が共有デバイスA601aに依頼される。
非特権OS200上の非特権OS共有デバイス処理部202は非特権OS200上のアプリケーションからのIO要求と非特権OS200の優先度をIO要求保持キュー370に格納し、他のOS(特権OS100、非特権OS250)からの実IO要求の出力有無を調査する。
図10の例では、非特権OS250からのIO要求がIO要求保持キュー370に先に格納されている。
このため、非特権OS共有デバイス処理部202は、OS優先度に基づいてIO要求保持キュー370内のIO要求の順序を入れ替える。
より具体的には、共有デバイスA601aに対する非特権OS250の優先度は最低であり、非特権OS200の優先度は100であるため、先行する非特権OS250の優先度よりも、非特権OS200の優先度の方が高い。
そのため、ステップS1108において、非特権OS200上の非特権OS共有デバイス処理部202は、IO要求の送信元のOS優先度に応じてIO要求保持キュー370へのIO要求の格納順序を変更する。
つまり、非特権OS共有デバイス処理部202は、非特権OS200からのIO要求をIO要求保持キュー370の先頭に格納する。
最後に、ステップS1109において、非特権OS200上の非特権OS共有デバイス処理部202は、IO要求保持キュー370の先頭に格納されているIO要求から順に管理デバイスである共有デバイスA601aに処理を依頼する。
図10の例の場合、まず、非特権OS200からのIO要求から共有デバイスA601aに依頼され、次に、非特権OS250からのIO要求が共有デバイスA601aに依頼される。
なお、特権OS100が管理権を有する共有デバイスに非特権OS200及び非特権OS250がIO要求を行う場合の処理手順は、図15及び図16に示したものと同じであり、説明を省略する。
また、以上では、非特権OS200に指定デバイスとして共有デバイスA601aが設定され、非特権OS200に非特権OS共有デバイス処理部202が設けられ、非特権OS250に非特権OS仮想デバイス処理部251が設けられている構成(図1)を説明した。
一方、非特権OS200に指定デバイスとして共有デバイスA601aが設定され、非特権OS250に指定デバイスとして共有デバイスB601bが設定されるようにしてもよい。
この場合は、図6に示すように、非特権OS200に非特権OS仮想デバイス処理部201と非特権OS共有デバイス処理部202が設けられ、非特権OS250に非特権OS仮想デバイス処理部251と非特権OS共有デバイス処理部252が設けられることになる。
図6の構成では、非特権OS200上のアプリケーションが共有デバイスB601bを使用する場合は、IO要求を非特権OS仮想デバイス処理部201に出力する。そして、非特権OS仮想デバイス処理部201が共有デバイスB601bのIO要求をVM300上の仮想デバイス350に出力する。
VM300上での処理は前述した通りであり、仮想デバイス350から非特権OS250上の非特権OS共有デバイス処理部252に共有デバイスB601bのIO要求が出力される。
非特権OS共有デバイス処理部252の処理自体は、非特権OS共有デバイス処理部202と同様であるため、説明を省略する。
一方、非特権OS200に指定デバイスとして共有デバイスA601aが設定され、非特権OS250に指定デバイスとして共有デバイスB601bが設定されるようにしてもよい。
この場合は、図6に示すように、非特権OS200に非特権OS仮想デバイス処理部201と非特権OS共有デバイス処理部202が設けられ、非特権OS250に非特権OS仮想デバイス処理部251と非特権OS共有デバイス処理部252が設けられることになる。
図6の構成では、非特権OS200上のアプリケーションが共有デバイスB601bを使用する場合は、IO要求を非特権OS仮想デバイス処理部201に出力する。そして、非特権OS仮想デバイス処理部201が共有デバイスB601bのIO要求をVM300上の仮想デバイス350に出力する。
VM300上での処理は前述した通りであり、仮想デバイス350から非特権OS250上の非特権OS共有デバイス処理部252に共有デバイスB601bのIO要求が出力される。
非特権OS共有デバイス処理部252の処理自体は、非特権OS共有デバイス処理部202と同様であるため、説明を省略する。
このように、本実施の形態のデバイス共有方式では、非特権OSに特定の共有デバイスを指定デバイスとして対応付けておき、当該非特権OSの起動時に指定デバイスの管理権を特権OSから非特権OSに移すので、当該非特権OSは、直接指定デバイスに対して使用要求を出すことができ、VMおよび特権OSの処理を待つ必要がなく、当該非特権OSに必要なリアルタイム応答性を確保することができる。
また、本実施の形態のデバイス共有方式では、非特権OSが使用するハードウェア情報を保有する領域と、IO要求の送信先OSを管理する領域と、IO要求及び要求元OS優先度を保有する領域を備え、非特権OS起動時に非特権OSに対しデバイスを割り当て、さらに、他のOSからのIO要求をデバイス管理権を持つ非特権OSへ送信し、IO要求が競合した場合には、IO要求送信元のOS優先度に応じてIO要求を実施する。
このため、共有デバイスへのIO要求が競合した場合でも、共有デバイスの管理権を持つOSへのリアルタイム応答性を確保することができる。
このため、共有デバイスへのIO要求が競合した場合でも、共有デバイスの管理権を持つOSへのリアルタイム応答性を確保することができる。
本実施の形態では、
(1)複数個のデバイスの共有が可能な仮想マシン(VM)、
(2)システム上の全てのデバイスを操作可能な一つのOS(特権OS)、
(3)システム上のあるデバイスを操作可能な複数個のOS(非特権OS)、
(4)各種データを保有する二次記憶装置、
(5)ハードウェア資源であるCPU、メモリ、
(6)共有デバイスに対するVM上の仮想デバイス、
を備えた構成において、以下の構成要素を備えた計算機装置を説明した。
(A)各共有デバイスに対するOSの優先度およびデバイスの管理状態が示されたデバイス管理権テーブル、
(B)非特権OSの使用する共有デバイス及び優先度が記述された非特権OSデバイス起動情報ファイル、
(C)非特権OSが起動する際に、被起動OSが使用するデバイスを割り当てるデバイス割り当て処理部、
(D)共有デバイスがどのOSへ割り当てられているかを判断し、該当するOSへIO要求を転送するデバイス要求転送処理部、
(E)IO要求の送信元OSの優先度とIO要求が格納されているIO要求保持キュー、
(F)IO要求の送信元OSの優先度に基づき共有デバイスにIO要求の処理を依頼する共有デバイス処理部。
(1)複数個のデバイスの共有が可能な仮想マシン(VM)、
(2)システム上の全てのデバイスを操作可能な一つのOS(特権OS)、
(3)システム上のあるデバイスを操作可能な複数個のOS(非特権OS)、
(4)各種データを保有する二次記憶装置、
(5)ハードウェア資源であるCPU、メモリ、
(6)共有デバイスに対するVM上の仮想デバイス、
を備えた構成において、以下の構成要素を備えた計算機装置を説明した。
(A)各共有デバイスに対するOSの優先度およびデバイスの管理状態が示されたデバイス管理権テーブル、
(B)非特権OSの使用する共有デバイス及び優先度が記述された非特権OSデバイス起動情報ファイル、
(C)非特権OSが起動する際に、被起動OSが使用するデバイスを割り当てるデバイス割り当て処理部、
(D)共有デバイスがどのOSへ割り当てられているかを判断し、該当するOSへIO要求を転送するデバイス要求転送処理部、
(E)IO要求の送信元OSの優先度とIO要求が格納されているIO要求保持キュー、
(F)IO要求の送信元OSの優先度に基づき共有デバイスにIO要求の処理を依頼する共有デバイス処理部。
また、本実施の形態では、
デバイス割り当て処理部は、非特権OS起動の際に、非特権OSデバイス起動情報ファイルから非特権OSが使用するデバイスおよびそのデバイスに対する優先度を取得し、デバイス管理権テーブルから現在のデバイスの管理権を持つOSとそのOSの優先度を特定し、優先度に応じて現在使用中のOSからデバイスを削除し、起動中の非特権OSへデバイスを割り当て、非特権OSに対し、デバイスの管理権を委譲し、デバイス管理権テーブルに管理権の移動を含む更新を行う計算機装置を説明した。
デバイス割り当て処理部は、非特権OS起動の際に、非特権OSデバイス起動情報ファイルから非特権OSが使用するデバイスおよびそのデバイスに対する優先度を取得し、デバイス管理権テーブルから現在のデバイスの管理権を持つOSとそのOSの優先度を特定し、優先度に応じて現在使用中のOSからデバイスを削除し、起動中の非特権OSへデバイスを割り当て、非特権OSに対し、デバイスの管理権を委譲し、デバイス管理権テーブルに管理権の移動を含む更新を行う計算機装置を説明した。
また、本実施の形態では、VM上のデバイス要求転送処理部は、デバイス管理権テーブルを利用し、共有デバイスがどのOSに割り当てられているかをチェックし、VM上のOS間通信処理部を介して、非特権OS上の非特権OS共有デバイス処理部に実IO要求を行うことで、OS間でデバイスの共有が可能となる計算機装置を説明した。
また、本実施の形態では、共有デバイス処理部は、IO要求の送信元OSの優先度により、IO要求を優先度順にIO要求保持キューに格納し、複数OSからのIO要求が競合した場合に、IO要求保持キューの先頭からIO要求を処理することで、共有デバイスに対するIO要求が競合した場合でも、デバイス管理権を所持する非特権OSのIO要求を優先的に実施する計算機装置を説明した。
実施の形態2.
次に、実施の形態2に係る計算機装置を説明する。
本実施の形態に係る計算機装置の構成は図1又は図6と同じである。
本実施の形態では、非特権OS共有デバイス処理部202の動作および共有デバイス601の動作以外は実施の形態1と同様である。
なお、本実施の形態では、非特権OS共有デバイス処理部202は実行制御部の例として動作する。
また、図6に示す構成では、非特権OS共有デバイス処理部252も実行制御部の例として動作する。
以下では、図1の構成に従って説明を進める。
次に、実施の形態2に係る計算機装置を説明する。
本実施の形態に係る計算機装置の構成は図1又は図6と同じである。
本実施の形態では、非特権OS共有デバイス処理部202の動作および共有デバイス601の動作以外は実施の形態1と同様である。
なお、本実施の形態では、非特権OS共有デバイス処理部202は実行制御部の例として動作する。
また、図6に示す構成では、非特権OS共有デバイス処理部252も実行制御部の例として動作する。
以下では、図1の構成に従って説明を進める。
本実施の形態では、共有デバイス601は、非特権OS共有デバイス処理部202から指示により、実行中のIO要求の実行をキャンセルする。
本実施の形態では、非特権OS共有デバイス処理部202は、いずれかのOSから発行されたIO要求が共有デバイスA601aで実行されている際に他のOSから共有デバイスA601aに対するIO要求が発行された場合に、新たに発行されたIO要求の発行元のOSの共有デバイスA601aに対する優先度と、実行中のIO要求の発行元のOSの共有デバイスA601aに対する優先度とを比較する。
そして、非特権OS共有デバイス処理部202は、新たに発行されたIO要求の発行元のOSの優先度の方が高い場合に、実行中のIO要求の実行を停止させ、新たに発行されたIO要求の実行を開始させる。
そして、非特権OS共有デバイス処理部202は、新たに発行されたIO要求の発行元のOSの優先度の方が高い場合に、実行中のIO要求の実行を停止させ、新たに発行されたIO要求の実行を開始させる。
より具体的には、本実施の形態における非特権OS共有デバイス処理部202は、VM300及び自OS200からのIO要求を受け付けると、まずIO要求保持キュー370にIO要求とIO要求の送信元OSのOS優先度を格納する。
その後、非特権OS共有デバイス処理部202は、以前の他OSからのIO要求を共有デバイスA601aが処理中かチェックし、処理していない場合は、共有デバイスA60a1に対しIO要求の実行を依頼する。
既に共有デバイスA601aが他のOSからのIO要求を実行中の場合には、非特権OS共有デバイス処理部202は、共有デバイスA601aが実行しているIO要求の要求元OSの優先度と、新たに受け付けたIO要求の要求元OSの優先度を比較する。
新たに受け付けたIO要求の要求元OSの優先度が高い場合には、非特権OS共有デバイス処理部202は、現在実行中のIO要求のキャンセルを共有デバイスA601aに指示し、優先度の高いIO要求の実施を共有デバイスA601aに指示する。
更に、非特権OS共有デバイス処理部202は、キャンセルの対象となったIO要求をIO要求保持キュー370から削除し、所定の退避領域にキャンセルの対象となったIO要求を退避させる。
次に、優先度の高いIO要求の実行が終了した後、非特権OS共有デバイス処理部202は、退避領域にあるIO要求を再度IO要求保持キュー370に格納し、キャンセルされたIO要求の実行を共有デバイスA601aに指示する。
その後、非特権OS共有デバイス処理部202は、以前の他OSからのIO要求を共有デバイスA601aが処理中かチェックし、処理していない場合は、共有デバイスA60a1に対しIO要求の実行を依頼する。
既に共有デバイスA601aが他のOSからのIO要求を実行中の場合には、非特権OS共有デバイス処理部202は、共有デバイスA601aが実行しているIO要求の要求元OSの優先度と、新たに受け付けたIO要求の要求元OSの優先度を比較する。
新たに受け付けたIO要求の要求元OSの優先度が高い場合には、非特権OS共有デバイス処理部202は、現在実行中のIO要求のキャンセルを共有デバイスA601aに指示し、優先度の高いIO要求の実施を共有デバイスA601aに指示する。
更に、非特権OS共有デバイス処理部202は、キャンセルの対象となったIO要求をIO要求保持キュー370から削除し、所定の退避領域にキャンセルの対象となったIO要求を退避させる。
次に、優先度の高いIO要求の実行が終了した後、非特権OS共有デバイス処理部202は、退避領域にあるIO要求を再度IO要求保持キュー370に格納し、キャンセルされたIO要求の実行を共有デバイスA601aに指示する。
本実施の形態における特権OS100上のアプリケーションが非特権OS200を起動する手順は図7と同様であり説明を割愛する。
また、本実施の形態におけるデバイスを共有する方法は、図8及び図9と同様であり説明を割愛する。
また、本実施の形態におけるデバイスを共有する方法は、図8及び図9と同様であり説明を割愛する。
次に、本実施の形態における、非特権OS200と非特権OS250のIO要求が競合した場合の処理について図11を用いて示す。
なお、ステップS1201〜S1206は、図10のステップS1101〜S1106と同様である。
また、ステップS1208は、図10のステップS1107と同様である。
図10との重複部分を含め、以下にて、ステップS1201〜S1213を説明する。
なお、ステップS1201〜S1206は、図10のステップS1101〜S1106と同様である。
また、ステップS1208は、図10のステップS1107と同様である。
図10との重複部分を含め、以下にて、ステップS1201〜S1213を説明する。
まず、ステップS1201において、非特権OS250上のアプリケーションは、非特権OS仮想デバイス処理部251に共有デバイスA601aのIO要求を行う。
次に、ステップS1202において、非特権OS250上の非特権OS仮想デバイス処理部251は、VM300上のOS間通信処理部301を介して、VM300上の共有デバイスA601aに対応する仮想デバイス350にIO要求を行う。
次に、ステップS1203において、VM300上の仮想デバイス350は、自身へのIO要求に対して、デバイス要求変換処理部303を呼び出し、デバイス要求変換処理部303が、仮想デバイス350へのIO要求から共有デバイスA601aへのIO要求に変換し、次に仮想デバイス350が、VM300上のデバイス要求転送処理部305を呼び出す。
次に、ステップS1204において、VM300上のデバイス要求転送処理部305は、デバイス管理権テーブル360を参照し、共有デバイスA601aがどのOSに割り当てられているか調べ、仮想デバイス350に通知する。
デバイス管理権テーブル360が図3の状態であるとすると、デバイス要求転送処理部305は、共有デバイスA601aの管理権は非特権OS200に割り当てられていることを通知する。
次に、ステップS1205において、VM300上の仮想デバイス350は、OS間通信処理部301を介して、共有デバイスA601aの管理権を持つOS、すなわち非特権OS200上の非特権OS共有デバイス処理部202に実IO要求を行う。
次に、ステップS1206において、非特権OS200上の非特権OS共有デバイス処理部202は、仮想デバイス350からの実IO要求(非特権OS250のIO要求)及び非特権OS250の優先度をIO要求保持キュー370に格納し、他のOS(特権OS100、非特権OS200)からの実IO要求の出力有無を調査する。
IO要求保持キュー370に格納するOS優先度は、非特権OSデバイス起動情報ファイル503の共有デバイス601に対する優先度を使用する。なお、非特権OSデバイス起動情報ファイル503が存在しない場合は最低優先度とする。
本例の場合、非特権OS250用の非特権OSデバイス起動情報ファイル503は存在していないので、最低優先度(0)とする。また、特権OS100の場合は、全ての共有デバイス601において最低優先度(0)とする。
次に、ステップS1202において、非特権OS250上の非特権OS仮想デバイス処理部251は、VM300上のOS間通信処理部301を介して、VM300上の共有デバイスA601aに対応する仮想デバイス350にIO要求を行う。
次に、ステップS1203において、VM300上の仮想デバイス350は、自身へのIO要求に対して、デバイス要求変換処理部303を呼び出し、デバイス要求変換処理部303が、仮想デバイス350へのIO要求から共有デバイスA601aへのIO要求に変換し、次に仮想デバイス350が、VM300上のデバイス要求転送処理部305を呼び出す。
次に、ステップS1204において、VM300上のデバイス要求転送処理部305は、デバイス管理権テーブル360を参照し、共有デバイスA601aがどのOSに割り当てられているか調べ、仮想デバイス350に通知する。
デバイス管理権テーブル360が図3の状態であるとすると、デバイス要求転送処理部305は、共有デバイスA601aの管理権は非特権OS200に割り当てられていることを通知する。
次に、ステップS1205において、VM300上の仮想デバイス350は、OS間通信処理部301を介して、共有デバイスA601aの管理権を持つOS、すなわち非特権OS200上の非特権OS共有デバイス処理部202に実IO要求を行う。
次に、ステップS1206において、非特権OS200上の非特権OS共有デバイス処理部202は、仮想デバイス350からの実IO要求(非特権OS250のIO要求)及び非特権OS250の優先度をIO要求保持キュー370に格納し、他のOS(特権OS100、非特権OS200)からの実IO要求の出力有無を調査する。
IO要求保持キュー370に格納するOS優先度は、非特権OSデバイス起動情報ファイル503の共有デバイス601に対する優先度を使用する。なお、非特権OSデバイス起動情報ファイル503が存在しない場合は最低優先度とする。
本例の場合、非特権OS250用の非特権OSデバイス起動情報ファイル503は存在していないので、最低優先度(0)とする。また、特権OS100の場合は、全ての共有デバイス601において最低優先度(0)とする。
その後、ステップS1207において、非特権OS200上の非特権OS共有デバイス処理部202は、共有デバイスA601aが既に他のIO要求を実施中か否か判断する。
ここでは、共有デバイスA601aは他のIO要求を実施していないとする。
そのため、非特権OS共有デバイス処理部202は非特権OS250からのIO要求を共有デバイスA601aに依頼する。
ここでは、共有デバイスA601aは他のIO要求を実施していないとする。
そのため、非特権OS共有デバイス処理部202は非特権OS250からのIO要求を共有デバイスA601aに依頼する。
ここで、ステップS1208において、非特権OS200上のアプリケーションが、非特権OS共有デバイス処理部202に共有デバイスA601aのIO要求を行ったとする。
なお、非特権OS200では、共有デバイスA601aの管理権が非特権OS200にあることを認識している。
次に、ステップS1209において、非特権OS200上の非特権OS共有デバイス処理部202は、IO要求を受け付けると、IO要求保持キュー370にIO要求およびIO要求の送信元のOS優先度を格納する。
IO要求の送信元のOS優先度は、非特権OSデバイス起動情報ファイル503の共有デバイスA601aに対する優先度を使用する。今回の場合、図5の非特権OSデバイス起動情報ファイル503をチェックし、OS優先度100を設定する。
次に、ステップS1210において、非特権OS200上の非特権OS共有デバイス処理部202は、共有デバイスA601aが既に他のIO要求を実施中か否かを判断する。
ここでは、共有デバイスA601aは既に非特権OS250からのIO要求を実施中なので、非特権OS共有デバイス処理部202は共有デバイスA601aに対し非特権OS250からのIO要求のキャンセルを依頼する。
このとき、非特権OS共有デバイス処理部202は、キャンセルの対象となったIO要求をIO要求保持キュー370から削除し、所定の退避領域にキャンセルの対象となったIO要求を退避させる。
なお、非特権OS200では、共有デバイスA601aの管理権が非特権OS200にあることを認識している。
次に、ステップS1209において、非特権OS200上の非特権OS共有デバイス処理部202は、IO要求を受け付けると、IO要求保持キュー370にIO要求およびIO要求の送信元のOS優先度を格納する。
IO要求の送信元のOS優先度は、非特権OSデバイス起動情報ファイル503の共有デバイスA601aに対する優先度を使用する。今回の場合、図5の非特権OSデバイス起動情報ファイル503をチェックし、OS優先度100を設定する。
次に、ステップS1210において、非特権OS200上の非特権OS共有デバイス処理部202は、共有デバイスA601aが既に他のIO要求を実施中か否かを判断する。
ここでは、共有デバイスA601aは既に非特権OS250からのIO要求を実施中なので、非特権OS共有デバイス処理部202は共有デバイスA601aに対し非特権OS250からのIO要求のキャンセルを依頼する。
このとき、非特権OS共有デバイス処理部202は、キャンセルの対象となったIO要求をIO要求保持キュー370から削除し、所定の退避領域にキャンセルの対象となったIO要求を退避させる。
ステップS1211において、共有デバイスA601aは、非特権OS200上の非特権OS共有デバイス処理部202からのIO要求のキャンセル依頼に応じて、これまで実施していたIO要求の実施を停止し、非特権OS共有デバイス処理部202に対しキャンセル完了を通知する。
次に、ステップS1212において、非特権OS200上の非特権OS共有デバイス処理部202は、共有デバイスA601aに自OSである非特権OS200からのIO要求を依頼する。
最後に、非特権OS200からのIO要求の実行が終了した後、ステップS1213において、非特権OS共有デバイス処理部202は、退避領域にあるIO要求を再度IO要求保持キュー370に格納し、キャンセルされたIO要求の実行を共有デバイスA601aに指示する。
次に、ステップS1212において、非特権OS200上の非特権OS共有デバイス処理部202は、共有デバイスA601aに自OSである非特権OS200からのIO要求を依頼する。
最後に、非特権OS200からのIO要求の実行が終了した後、ステップS1213において、非特権OS共有デバイス処理部202は、退避領域にあるIO要求を再度IO要求保持キュー370に格納し、キャンセルされたIO要求の実行を共有デバイスA601aに指示する。
このように、本実施の形態のデバイス共有方式では、非特権OSが使用するハードウェア情報を保有する領域と、IO要求の送信先OSを管理する領域と、IO要求及び要求元OS優先度を保有する領域を備え、非特権OS起動時に非特権OSに対しデバイスを割り当て、さらに、他のOSからのIO要求をデバイス管理権を持つ非特権OSへ送信する。
そして、IO要求が競合した場合には、IO要求送信元のOS優先度をチェックし、優先度が低いIO要求をキャンセルし、優先度の高いOSからのIO要求を優先的に実施するようにしたので、共有デバイスへのIO要求が競合した場合でも、共有デバイス管理権を持つOSへのリアルタイム応答性を確保することができる。
そして、IO要求が競合した場合には、IO要求送信元のOS優先度をチェックし、優先度が低いIO要求をキャンセルし、優先度の高いOSからのIO要求を優先的に実施するようにしたので、共有デバイスへのIO要求が競合した場合でも、共有デバイス管理権を持つOSへのリアルタイム応答性を確保することができる。
以上、本実施の形態では、以下の機能を備える計算機を説明した。
(1)共有デバイスは共有デバイス処理部からの要求により、これまで実施していたIO要求をキャンセルする機能を持つ。
(2)共有デバイス処理部は、IO要求の送信元OSの優先度と、共有デバイス上で実施されているIO要求の送信元OSのOS優先度を比較し、共有デバイス上で実施されているIO要求の送信元OSのOS優先度が低い場合には、共有デバイスに対し、それまで実施していた処理のキャンセルを依頼し、より優先度の高いOSからのIO要求を優先的に処理させることで、共有デバイスに対するIO要求が競合した場合でも、OSへのリアルタイム応答性を確保することができる。
(1)共有デバイスは共有デバイス処理部からの要求により、これまで実施していたIO要求をキャンセルする機能を持つ。
(2)共有デバイス処理部は、IO要求の送信元OSの優先度と、共有デバイス上で実施されているIO要求の送信元OSのOS優先度を比較し、共有デバイス上で実施されているIO要求の送信元OSのOS優先度が低い場合には、共有デバイスに対し、それまで実施していた処理のキャンセルを依頼し、より優先度の高いOSからのIO要求を優先的に処理させることで、共有デバイスに対するIO要求が競合した場合でも、OSへのリアルタイム応答性を確保することができる。
実施の形態3.
実施の形態1及び実施の形態2では、非特権OS200は自OSが共有デバイスA601aの管理権を有していることを認識しているが、本実施の形態では、非特権OS200が共有デバイスA601aの管理権を有しているOSを認識していない例を説明する。
実施の形態1及び実施の形態2では、非特権OS200は自OSが共有デバイスA601aの管理権を有していることを認識しているが、本実施の形態では、非特権OS200が共有デバイスA601aの管理権を有しているOSを認識していない例を説明する。
本実施の形態に係る計算機装置1の構成例は図6に示すものと同じである。
つまり、非特権OS200には、非特権OS仮想デバイス処理部201、非特権OS共有デバイス処理部202の両者が含まれている。
つまり、非特権OS200には、非特権OS仮想デバイス処理部201、非特権OS共有デバイス処理部202の両者が含まれている。
次に、本実施の形態に係る動作例を説明する。
非特権OS200上のアプリケーションは、どのOSが共有デバイスA601aの管理権を取得しているかを知らないので、非特権OS仮想デバイス処理部201に共有デバイスA601aのIO要求を行う。
非特権OS仮想デバイス処理部201は、デバイス管理権テーブル360の情報を読み出し、どのOSが共有デバイスA601aの管理権を持つかを判断する。
非特権OS仮想デバイス処理部201は、デバイス管理権テーブル360の参照の結果、自OS(非特権OS200)が共有デバイスA601aの管理権を持つことを検知し、非特権OS共有デバイス処理部202に対し、共有デバイスA601aの実I/O要求を行う。
また、非特権OS200上のアプリケーションが共有デバイスB601bのIO要求を行う場合は、非特権OS仮想デバイス処理部201がデバイス管理権テーブル360の参照の結果、他方の非特権OS250が共有デバイスB601bの管理権を持つことを検知し、非特権OS仮想デバイス処理部201は、他方の非特権OS250の非特権OS共有デバイス処理部252に対し、共有デバイスB601bの実I/O要求を行う。
非特権OS仮想デバイス処理部201は、デバイス管理権テーブル360の情報を読み出し、どのOSが共有デバイスA601aの管理権を持つかを判断する。
非特権OS仮想デバイス処理部201は、デバイス管理権テーブル360の参照の結果、自OS(非特権OS200)が共有デバイスA601aの管理権を持つことを検知し、非特権OS共有デバイス処理部202に対し、共有デバイスA601aの実I/O要求を行う。
また、非特権OS200上のアプリケーションが共有デバイスB601bのIO要求を行う場合は、非特権OS仮想デバイス処理部201がデバイス管理権テーブル360の参照の結果、他方の非特権OS250が共有デバイスB601bの管理権を持つことを検知し、非特権OS仮想デバイス処理部201は、他方の非特権OS250の非特権OS共有デバイス処理部252に対し、共有デバイスB601bの実I/O要求を行う。
また、非特権OS250においても同様であり、非特権OS250上のアプリケーションが共有デバイスB601bのIO要求を行う場合は、非特権OS仮想デバイス処理部251がデバイス管理権テーブル360の参照の結果、自OS(非特権OS250)が共有デバイスB601bの管理権を持つことを検知し、非特権OS共有デバイス処理部252に対し、共有デバイスB601bの実I/O要求を行う。
また、非特権OS250上のアプリケーションが共有デバイスA601aのIO要求を行う場合は、非特権OS仮想デバイス処理部251がデバイス管理権テーブル360の参照の結果、他方の非特権OS200が共有デバイスA601aの管理権を持つことを検知し、非特権OS仮想デバイス処理部251は、他方の非特権OS200の非特権OS共有デバイス処理部202に対し、共有デバイスA601aの実I/O要求を行う。
また、非特権OS250上のアプリケーションが共有デバイスA601aのIO要求を行う場合は、非特権OS仮想デバイス処理部251がデバイス管理権テーブル360の参照の結果、他方の非特権OS200が共有デバイスA601aの管理権を持つことを検知し、非特権OS仮想デバイス処理部251は、他方の非特権OS200の非特権OS共有デバイス処理部202に対し、共有デバイスA601aの実I/O要求を行う。
このように、非特権OSにおいて、共有デバイスの管理権を有するOSを把握していなくても、デバイス管理権テーブルを参照することで、共有デバイスの管理権を有するOSを知ることができ、適切なOSにIO要求を行うことができる。
最後に、実施の形態1〜3に示した計算機装置1のハードウェア構成例について説明する。
図12は、実施の形態1〜3に示す計算機装置1のハードウェア資源の一例を示す図である。
なお、図12の構成は、あくまでも計算機装置1のハードウェア構成の一例を示すものであり、計算機装置1のハードウェア構成は図12に記載の構成に限らず、他の構成であってもよい。
図12は、実施の形態1〜3に示す計算機装置1のハードウェア資源の一例を示す図である。
なお、図12の構成は、あくまでも計算機装置1のハードウェア構成の一例を示すものであり、計算機装置1のハードウェア構成は図12に記載の構成に限らず、他の構成であってもよい。
図12において、計算機装置1は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜3で説明した「主メモリ701」は、例えば、RAM914により実現され、「二次記憶装置500」は磁気ディスク装置920により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力部、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜3で説明した「主メモリ701」は、例えば、RAM914により実現され、「二次記憶装置500」は磁気ディスク装置920により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力部、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、ネットワークに接続されている。例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されていても構わない。
また、RAM914には、CPU911に実行させるプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
計算機装置1の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムにより仮想マシン921(VM)が起動される。
計算機装置1の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムにより仮想マシン921(VM)が起動される。
磁気ディスク装置920には、仮想マシン921(VM)、特権OS922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911が仮想マシン921、特権OS922を利用しながら実行する。
プログラム群923のプログラムは、CPU911が仮想マシン921、特権OS922を利用しながら実行する。
仮想マシン921(VM)には、図1や図6のVM300に含まれる要素である、OS間通信処理部301、OS起動処理部302、デバイス要求変換処理部303、デバイス割り当て処理部304、仮想デバイス要求転送処理部305、仮想デバイス350を実現するプログラムが記憶されている。
また、特権OS922には、図1や図6の特権OS100に含まれる要素である、特権OS共有デバイス処理部101、特権OS共有デバイス削除処理部102、特権OS仮想デバイス処理部103、特権OS仮想デバイス追加処理部104を実現するプログラムが記憶されている。
また、特権OS922には、図1や図6の特権OS100に含まれる要素である、特権OS共有デバイス処理部101、特権OS共有デバイス削除処理部102、特権OS仮想デバイス処理部103、特権OS仮想デバイス追加処理部104を実現するプログラムが記憶されている。
また、プログラム群923には、図1や図6の非特権OS200及び非特権OS250に含まれる要素である、非特権OS仮想デバイス処理部201、非特権OS共有デバイス処理部202、非特権OS仮想デバイス処理部251、非特権OS共有デバイス処理部252を実現するプログラムが記憶されている。
また、プログラム群923には、特権OS及び非特権OSで実施されるアプリケーションプログラムも記憶されている。
仮想マシン921(VM)のプログラム、特権OS922のプログラム、プログラム群923のプログラムは、CPU911により読み出され実行される。
また、プログラム群923には、特権OS及び非特権OSで実施されるアプリケーションプログラムも記憶されている。
仮想マシン921(VM)のプログラム、特権OS922のプログラム、プログラム群923のプログラムは、CPU911により読み出され実行される。
ファイル群924には、図1や図6で示した非特権OSイメージファイル501、非特権OS起動情報ファイル502、非特権OSデバイス起動情報ファイル503、デバイス管理権テーブル360、IO要求保持キュー370が含まれる。
また、ファイル群924には、実施の形態1〜3の説明において、「〜の判断」、「〜の判定」、「〜の計算」、「〜の比較」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の変更」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜3で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜3で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
このように、実施の形態1〜3に示す計算機装置1は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
1 計算機装置、100 特権OS、101 特権OS共有デバイス処理部、102 特権OS共有デバイス削除処理部、103 特権OS仮想デバイス処理部、104 特権OS仮想デバイス追加処理部、200 非特権OS、201 非特権OS仮想デバイス処理部、202 非特権OS共有デバイス処理部、251 非特権OS仮想デバイス処理部、252 非特権OS共有デバイス処理部、300 VM、301 OS間通信処理部、302 OS起動処理部、303 デバイス要求変換処理部、304 デバイス割り当て処理部、305 デバイス要求転送処理部、350 仮想デバイス、360 デバイス管理権テーブル、370 IO要求保持キュー、400 ハードウェア、500 二次記憶装置、501 非特権OSイメージファイル、502 非特権OS起動情報ファイル、503 非特権OSデバイス起動情報ファイル、601 共有デバイス、701 主メモリ。
Claims (10)
- 1つ以上のデバイスが接続されている計算機装置において、
各デバイスの管理権が付与されている特権OS(Operating System)と、
いずれのデバイスの管理権も付与されていない1つ以上の非特権OSと、
非特権OSと、前記非特権OSに対して指定されている指定デバイスとが示される指定デバイス情報を記憶する情報記憶部と、
前記特権OSが起動した後、いずれかの非特権OSが起動する際に、前記指定デバイス情報を参照し、起動する非特権OSに指定デバイスがある場合に、起動する非特権OSの指定デバイスの管理権を前記特権OSから起動する非特権OSに移す管理権制御部とを有することを特徴とする計算機装置。 - 前記特権OSは、
デバイスごとに、優先度が設定されており、
前記情報記憶部は、
非特権OSと、指定デバイスと、前記指定デバイスに対する前記非特権OSの優先度とが示される指定デバイス情報を記憶し、
前記管理権制御部は、
前記特権OSが起動した後、いずれかの非特権OSが起動する際に、前記指定デバイス情報を参照し、起動する非特権OSに指定デバイスがある場合に、起動する非特権OSの指定デバイスに対する優先度と前記特権OSの前記指定デバイスに対する優先度を比較し、起動する非特権OSの優先度の方が高い場合に、起動する非特権OSに前記指定デバイスの管理権を移すことを特徴とする請求項1に記載の計算機装置。 - 前記管理権制御部は、
いずれかデバイスの管理権をいずれかの非特権OSに移した後に、指定デバイス情報に前記デバイスが指定デバイスとして示されている非特権OSが起動する際に、起動する非特権OSの前記デバイスに対する優先度と管理権を有している非特権OSの前記デバイスに対する優先度を比較し、起動する非特権OSの優先度の方が高い場合に、起動する非特権OSに前記デバイスの管理権を移すことを特徴とする請求項2に記載の計算機装置。 - 各非特権OSは、
前記特権OSが管理権を有しているデバイスを使用する場合は、使用対象デバイスに対する使用要求を前記特権OSを介して前記使用対象デバイスに出力した後に前記使用対象デバイスを使用し、前記管理権制御部により管理権が自OSに移り自OSが管理権を有しているデバイスを使用する場合は、使用対象デバイスに対する使用要求を前記特権OS及び他のいずれの非特権OSも介さずに前記使用対象デバイスに出力した後に前記使用対象デバイスを使用することを特徴とする請求項1に記載の計算機装置。 - 各非特権OSは、
他の非特権OSが管理権を有しているデバイスを使用する場合は、使用対象デバイスに対する使用要求を前記他の非特権OSを介して前記使用対象デバイスに出力した後に前記使用対象デバイスを使用することを特徴とする請求項4に記載の計算機装置。 - 各非特権OSは、
自OSが管理権を有する管理デバイスに対する他のOSからの使用要求を入力した際に、入力した使用要求を前記管理デバイスに出力することを特徴とする請求項5に記載の計算機装置。 - 前記計算機装置は、更に、
いずれかのOSから出力されたいずれかのデバイスに対する使用要求を入力し、デバイスごとにいずれのOSが管理権を有しているのかを示すデバイス管理権情報を参照して、入力した前記使用要求が対象とするデバイスの管理権を有しているOSを判別し、判別したOSに前記使用要求を出力するOS判別部を有することを特徴とする請求項5に記載の計算機装置。 - 前記管理権制御部は、
デバイスの管理権を移す度に、前記デバイス管理権情報を更新することを特徴とする請求項7に記載の計算機装置。 - 前記特権OS及び各非特権OSには、デバイスごとに優先度が設定されており、
前記計算機装置は、更に、
いずれかのOSから発行されたいずれかのデバイスに対する使用要求が実行されている際に他のOSから前記デバイスに対する使用要求が発行された場合に、新たに発行された使用要求の発行元のOSの前記デバイスに対する優先度と、実行中の使用要求の発行元のOSの前記デバイスに対する優先度とを比較し、新たに発行された使用要求の発行元のOSの優先度の方が高い場合に、実行中の使用要求の実行を停止させ、新たに発行された使用要求の実行を開始させる実行制御部を有することを特徴とする請求項1に記載の計算機装置。 - 前記計算機装置は、
前記特権OS及び各非特権OSの動作させる仮想マシンを有し、
前記管理権制御部は、
前記仮想マシンに含まれていることを特徴とする請求項1に記載の計算機装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2009/067182 WO2011039887A1 (ja) | 2009-10-01 | 2009-10-01 | 計算機装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2011039887A1 true JPWO2011039887A1 (ja) | 2013-02-21 |
Family
ID=43825741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011534020A Pending JPWO2011039887A1 (ja) | 2009-10-01 | 2009-10-01 | 計算機装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20120179901A1 (ja) |
EP (1) | EP2472396A1 (ja) |
JP (1) | JPWO2011039887A1 (ja) |
KR (1) | KR20120062854A (ja) |
CN (1) | CN102576312A (ja) |
WO (1) | WO2011039887A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6089349B2 (ja) * | 2013-05-28 | 2017-03-08 | ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. | マルチコアアーキテクチャでのリソース分離を支援するための方法およびシステム |
JP6241178B2 (ja) * | 2013-09-27 | 2017-12-06 | 富士通株式会社 | ストレージ制御装置,ストレージ制御方法及びストレージ制御プログラム |
CN104298546A (zh) * | 2014-08-25 | 2015-01-21 | 宇龙计算机通信科技(深圳)有限公司 | 一种硬件通信装置的共享方法及终端 |
US9904580B2 (en) | 2015-05-29 | 2018-02-27 | International Business Machines Corporation | Efficient critical thread scheduling for non-privileged thread requests |
JP6645212B2 (ja) * | 2016-01-27 | 2020-02-14 | 株式会社リコー | 情報処理方法、および、情報処理装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008033877A (ja) * | 2006-06-29 | 2008-02-14 | Mitsubishi Electric Corp | 情報処理装置及びos起動方法及びプログラム |
JP2008052713A (ja) * | 2006-07-25 | 2008-03-06 | Ntt Docomo Inc | ペリフェラル切替装置及びペリフェラル切替制御装置 |
JP2008146566A (ja) * | 2006-12-13 | 2008-06-26 | Hitachi Ltd | 計算機、仮想デバイスの制御方法およびそのプログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0792761B2 (ja) * | 1985-07-31 | 1995-10-09 | 株式会社日立製作所 | 仮想計算機システムの入出力制御方法 |
JPS6278631A (ja) | 1985-10-02 | 1987-04-10 | Hitachi Ltd | 複数オペレ−テイングシステムにおける入出力制御方式 |
US8549513B2 (en) * | 2005-06-29 | 2013-10-01 | Microsoft Corporation | Model-based virtual system provisioning |
US8112527B2 (en) * | 2006-05-24 | 2012-02-07 | Nec Corporation | Virtual machine management apparatus, and virtual machine management method and program |
-
2009
- 2009-10-01 KR KR1020127008286A patent/KR20120062854A/ko not_active Application Discontinuation
- 2009-10-01 WO PCT/JP2009/067182 patent/WO2011039887A1/ja active Application Filing
- 2009-10-01 EP EP09850076A patent/EP2472396A1/en not_active Withdrawn
- 2009-10-01 CN CN2009801617896A patent/CN102576312A/zh active Pending
- 2009-10-01 US US13/395,915 patent/US20120179901A1/en not_active Abandoned
- 2009-10-01 JP JP2011534020A patent/JPWO2011039887A1/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008033877A (ja) * | 2006-06-29 | 2008-02-14 | Mitsubishi Electric Corp | 情報処理装置及びos起動方法及びプログラム |
JP2008052713A (ja) * | 2006-07-25 | 2008-03-06 | Ntt Docomo Inc | ペリフェラル切替装置及びペリフェラル切替制御装置 |
JP2008146566A (ja) * | 2006-12-13 | 2008-06-26 | Hitachi Ltd | 計算機、仮想デバイスの制御方法およびそのプログラム |
Also Published As
Publication number | Publication date |
---|---|
CN102576312A (zh) | 2012-07-11 |
KR20120062854A (ko) | 2012-06-14 |
US20120179901A1 (en) | 2012-07-12 |
WO2011039887A1 (ja) | 2011-04-07 |
EP2472396A1 (en) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6355114B2 (ja) | リソース処理方法、オペレーティング・システム、およびデバイス | |
JP5015665B2 (ja) | カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム | |
US9063793B2 (en) | Virtual server and virtual machine management method for supporting zero client by providing host interfaces from classified resource pools through emulation or direct connection modes | |
JP6029550B2 (ja) | 計算機の制御方法及び計算機 | |
WO2015114745A1 (ja) | 計算機及び計算機のi/o制御方法 | |
US20100192214A1 (en) | Information processing apparatus, information processing method, and recording medium including computer program | |
US20130174151A1 (en) | Information processing apparatus and method of controlling virtual machine | |
JP2016541072A5 (ja) | ||
JP2010108271A (ja) | 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム | |
JP2016167143A (ja) | 情報処理システムおよび情報処理システムの制御方法 | |
JP2013041409A (ja) | 情報処理装置、割込み制御方法および割込み制御プログラム | |
US20110107344A1 (en) | Multi-core apparatus and load balancing method thereof | |
JP2017227969A (ja) | 制御プログラム、システム、及び方法 | |
WO2011039887A1 (ja) | 計算機装置 | |
CN107528871B (zh) | 存储系统中的数据分析 | |
JP2010134710A (ja) | 仮想マシンの移行方法、サーバ、及び、プログラム | |
KR101535792B1 (ko) | 운영체제 구성 장치 및 방법 | |
US20220066827A1 (en) | Disaggregated memory pool assignment | |
JP5518143B2 (ja) | 仮想マシンの移行方法、サーバ、プログラム、及び、仮想マシンシステム | |
US10185679B2 (en) | Multi-queue device assignment to virtual machine groups | |
US9088569B2 (en) | Managing access to a shared resource using client access credentials | |
US20140245291A1 (en) | Sharing devices assigned to virtual machines using runtime exclusion | |
US10909044B2 (en) | Access control device, access control method, and recording medium containing access control program | |
JP2011221634A (ja) | 計算機システム、論理区画管理方法及び論理分割処理プログラム | |
JP2019164661A (ja) | 情報処理装置、情報処理方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130521 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130613 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130716 |