JP4140286B2 - 計算機システム - Google Patents
計算機システム Download PDFInfo
- Publication number
- JP4140286B2 JP4140286B2 JP2002162280A JP2002162280A JP4140286B2 JP 4140286 B2 JP4140286 B2 JP 4140286B2 JP 2002162280 A JP2002162280 A JP 2002162280A JP 2002162280 A JP2002162280 A JP 2002162280A JP 4140286 B2 JP4140286 B2 JP 4140286B2
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- host
- emulator
- guest
- computer
- 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.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は特定の命令セットアーキテクチャを有する計算機上で異なる命令セットアーキテクチャ向けに開発されたプログラムを実行するプロセッサエミュレータに係り、特にソフトウェアやハードウェアからの割込みによって、上記の異なる命令セットアーキテクチャ向けに開発されたプログラムが異常終了してしまうことを防止するソフトウェア技術に係わる。
【0002】
【従来の技術】
エミュレータに代表される仮想計算機技術では、ある特定の命令セットアーキテクチャを有する計算機(以下ホスト計算機と呼ぶ)上で、異なる命令セットアーキテクチャ向けに開発されたプログラム(以下アプリケーションプログラムと呼ぶ)を実行することができる。この種の技術は、たとえば特開平11−65854に開示されているように、ホスト計算機上で稼動するエミュレータプログラムがアプリケーションプログラムをメモリ上に配置し、命令語一つ一つを解読し、アプリケーションプログラムの意図する動作を実現する。つまり、エミュレータはアプリケーションプログラムが前提としている命令セットアーキテクチャの計算機をホスト計算機上に仮想計算機として実現する手段である。
【0003】
より詳細には、ホスト計算機上にはホスト計算機向けのオペレーティングシステム(以下ホストOSと呼ぶ)が稼動しており、エミュレータは、このホストOS上の一プログラムとして稼動する。仮想計算機上でも仮想計算機向けのオペレーティングシステム(以降ゲストOSと呼ぶ)が動作しており、仮想計算機向けのアプリケーションプログラムの実行環境を提供する。
【0004】
以上のような構成により、仮想計算機の範囲内で機能が完結しているアプリケーションプログラムを実行することができる。しかし、利用するハードウェアに依存した動作あるいは機能に関しては、エミュレータによって提供される仮想計算機が実現している範囲を越えて想定外の動作をすることがある。たとえば、先に引例とした特開平11−65854では、ホストOSやエミュレータ自身に不備があり、CPUから割込み処理が発生した場合、ホストOSが異常処理を実施する。具体的には、不正命令の実行のように重大なエラーが発生した場合、ホストOSはエミュレータの実行を即時停止し、メモリのダンプ等の例外処理を実行する。
【0005】
【発明が解決しようとする課題】
上述のように、重大なエラーの検出などでホストOSにCPUから割込みが発生した場合には、エミュレータ自身が停止してしまうため、アプリケーションプログラムの側からは仮想計算機が突然停止してしまったかのように見える。しかし、正しくはゲストOSの例外処理によってアプリケーションプログラムの後処理が行われるべきであって、ホストOSの例外処理によってエミュレータが停止し、ゲストOSの例外処理が起動される機会を奪うことが問題である。
【0006】
そこで、本発明の課題としては、CPUなどから割込みが発生した場合に、ホストOSの例外処理を回避し、ゲストOSの例外処理によってアプリケーションプログラムの適切な後処理を実現することにある。
【0007】
【課題を解決するための手段】
上記の課題は次の手段により解決される。特定の命令セットアーキテクチャを有する計算機上で異なる命令セットアーキテクチャ向けに開発されたプログラムを実行可能な仮想計算機環境を提供する計算機システムであって、ホスト計算機上で稼動するホストOSと、仮想計算機環境を提供するエミュレータと、エミュレータ上で稼動するゲストOSと、仮想計算機の命令セットアーキテクチャ向けに開発されたアプリケーションプログラムとからなる計算機システムにおいて、ハードウェアとホストOSとの間に介在し、ホスト計算機から発生する割込み情報を受け取り、エミュレータに通知する割込みモニタを設けることで、計算機から発生した割込みを、ホストOSの処理を回避してゲストOSの機能にて例外処理を行わせる。
【0008】
【発明の実施の形態】
図1に本発明の第1の実施例を示す。ハードウェアが異常を検知して割込み100が発生すると、割込みモニタで割込み先判定101が行なわれる。割込み先判定101は、割込み要因を調べ、ホストOSで処理すべき割込み要因なのか、ゲストOSで処理すべき割込み要因なのかを判定する。この時、ホストOSがエミュレータに通知を行う割込み要因であれば、ホストOSで処理すべきであると判断し、ホストOSがエミュレータに割込み通知を行わない割込み要因であれば、ゲストOSで処理すべきであると判断する。
【0009】
上記ホストOSで処理すべき割込み要因である場合は、割込みモニタはホストOSに制御を移す。ホストOSは割込み(例外)処理103を行い、割込みを終了する(処理104)。上記ゲストOSで処理すべき割込み要因である場合は、割込みモニタはエミュレータに割込み通知102を行う。具体的には、エミュレータ内の割込みフラグを1にすることでエミュレータへの割込み通知を行う。割込み通知102が完了すると、割込みを終了する(処理104)。
【0010】
割込みが終了し、エミュレータが動作可能になると、エミュレータ内で定期的に実行される割込通知判定105が行われる。事前にエミュレータに割込み通知102が実行されていなければ、エミュレーションの継続109を行う。事前にエミュレータへの割込み通知102が実行されていれば、エミュレータはハードウェアが発生した割込みの要因をゲストOSでの割込み要因に割り当てるため、ゲストOSの割込み要因への変換106を行う。
【0011】
たとえばメモリ障害の割込みについて、ホストOSの稼働するハードウェアでは割込み要因が3と定義されており、ゲストOSの稼働するハードウェア(エミュレータ)では1と定義されていた場合、割込み要因3(メモリ障害)が発生すると、エミュレータは割込み要因1としてゲストOSに割込みの通知を行う。さらに、エミュレータは変換した割込み要因を用いてゲストOSに割込み通知107を行う。ゲストOSに通知が行われると、ゲストOSは割込み(例外)処理108を行う。割込み(例外)処理108が終了すると、エミュレーションの継続109を行う。
【0012】
図5に本実施例における割込み処理の流れを示す。本実施例では、ハードウェア605が異常を検知して割込みを発生した際、ホストOS603がエミュレータ602に対して割込みの通知を行わない割込み要因であっても、割込みモニタ604がエミュレータ602に割込みを通知することで、エミュエータ602が動作可能になった時にゲストOS601がアプリケーションプログラム600の後処理を行うことができる。
【0013】
図2に本実施例における割込み発生の詳細を示す。同図(a)のように、ハードウェアから割込み200が発生すると、プロセッサは割込み種別毎に異なるアドレスに分岐し、割込み種別毎の割込み処理命令を実行する。すなわち、割込み種別判定201を行い、割込み種別に対応する割込み処理アドレス計算202を行い、計算で求めた割込み処理アドレスへ分岐203する。メモリ204には、同図(b)のように割込み種別ごとに決まる割込み処理アドレスから割込み処理命令が格納されている。これによって、割込み種別毎の割込み処理が可能になっている。
【0014】
図3に本実施例におけるメモリ204の割込み処理命令の設定手順である起動時処理の詳細を示す。本システムの起動時には、割込みモニタのロード、ホストOSのロードと割込み処理命令の設定が行なわれる。
【0015】
まずプログラムローダをディスクからメモリに転送し、プログラムローダ起動300を行う。プログラムローダは、割込みモニタをディスクからメモリに転送し、割込みモニタ起動301を行う。割込みモニタは、割込み命令変更302でメモリ204の割込み処理命令に、割込みモニタへの分岐命令を格納する。さらに、割込みモニタは割込み命令の変更をメモリ保護機構を用いて監視するために、特権レベル取得303とメモリ保護設定304を行い、割込み処理命令が格納されているアドレスへの書き込み、読み出しがある場合にメモリ保護割込みが発生するように設定する。
【0016】
続いて、プログラムローダは、ホストOSをディスクからメモリに転送し、ホストOS起動305を行う。ホストOSは割込み命令変更306でメモリ204の割込み処理命令に、ホストOSへの分岐命令を格納する。この時、割込みモニタが割込み処理命令が格納されているアドレスへの書き込み、読み出しでメモリ保護割込みが発生する。割込みモニタは、ホストOSへの分岐命令をホストOSによる割込み処理の実行103に格納する。
【0017】
以上の手順により、すべての割込みは、割込みモニタに分岐するようにできる。また、割込みモニタ内で割込み処理をホストOSで実行すると判断した場合に、ホストOS内の割込み処理命令に分岐することができる。
【0018】
図4に本発明の第2の実施例における割込み処理の詳細を示す。本実施例では、ゲストOSへ割込み通知を行う際、ハードウェアで発生した割込み要因のままホストOSに割込みを通知するとホストOSがエミュレータに対して割込みを発生しない場合には、割込み内容を変換し、ソフトウェア割込みを用いてホストOSに割込みを通知し、ホストOSからエミュレータに割込み通知が行なわれる様にする点が第1の実施形態と異なる。
【0019】
以下では、第1の実施例と異なる部分のみ詳細に説明する。ある割込み要因によって、ハードウェアが割込み500を発生させると、割込みモニタで割込み先判定501が行なわれる。
【0020】
割込み先判定501は、割込み要因を調べ、ホストOSで処理すべき割込み要因なのか、ゲストOSで処理すべき割込み要因なのかを判定する。この時、ホストOSがエミュレータに通知を行う割込み要因であれば、ホストOSで処理すべきであると判断し、ホストOSがエミュレータに通知を行わない割込み要因であれば、ゲストOSで処理すべきであると判断する。
【0021】
ホストOSで処理すべき割込み要因である場合は、割込みモニタはホストOSに制御を移す。ホストOSは割込み(例外)処理の実行507を呼び出して、割込みを終了する。
【0022】
ゲストOSで処理すべき割込み要因である場合は、割込みモニタはホストOSからエミュレータに割込み通知が行なわれる割込み要因とするため割込み要因の変更502を行う。
【0023】
さらに、得られた割込み要因を用いてソフト割込み503を実行する。ソフト割込み503が実行されると、ホストOSはエミュレータに割込み通知を行う。エミュレータは、割込み要因をゲストOSの割込み要因に変更504し、得られた割込み要因でゲストOSへ割込み通知505を行い、ゲストOSによる割込み処理506を呼び出して、割込みを終了する。
【0024】
【発明の効果】
本発明によれば、計算機の発生する割込みを一旦割込みモニタが受け取り、エミュレータに制御を渡すため、ホストOSの割込み処理(例外処理)を回避してゲストOSによる例外処理を実行できる。これにより、不正な命令や不正なメモリアドレス参照による割込みにより、ホストOSがエミュレータ自体の動作を停止させ、ユーザのアプリケーションプログラムが何の後処理も無く停止してしまうことを防止できる。
【図面の簡単な説明】
【図1】本発明の一実施例の割込み処理を示すフローチャート。
【図2】システムの割込み発生時の動作説明図。
【図3】システム起動時の割込みベクトル変更方法の説明図。
【図4】本発明の他の実施例の割込み処理を示すフローチャート。
【図5】本発明における割込み処理の流れを示すフローチャート。
【符号の説明】
200…割込み、201…割込み種別判定、202…割込み処理アドレス判定、203…割込み処理アドレスに分岐。
Claims (2)
- ホストOSを稼働させるホスト計算機と、前記ホストOS上で動作するエミュレータであって、前記ホスト計算機とは異なる命令セットアーキテクチャを有する計算機の動作を模擬するエミュレータと、当該エミュレータ上で稼動するゲストOSとを備え、当該ゲストOS上でアプリケーションプログラムが実行される計算機システムにおいて、
前記ホスト計算機上で動作する割り込みモニタを備え、
該割り込みモニタは、
前記ホスト計算機が有するハードウェアにおいて発生した割り込みを検出し、
当該検出された割り込みの割り込み先が前記ホストOSか前記ゲストOSかを判定し、
当該割り込み先が前記ゲストOSであった場合には、前記割り込みを前記エミュレータに通知することを特徴とする計算機システム。 - 請求項1に記載の計算機システムにおいて、
前記割り込みモニタは、
前記判定された前記割り込み先が前記ゲストOSであった場合には、
前記検出された割り込みの割り込み要因番号を特定の割り込み要因番号に変更して前記ホストOSに通知し、
前記ホストOSは、
当該通知された割り込みの割り込み要因番号が前記特定の割り込み要因番号であった場合には、当該通知された割り込みを前記エミュレータに通知することを特徴とする計算機システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002162280A JP4140286B2 (ja) | 2002-06-04 | 2002-06-04 | 計算機システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002162280A JP4140286B2 (ja) | 2002-06-04 | 2002-06-04 | 計算機システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004013240A JP2004013240A (ja) | 2004-01-15 |
JP4140286B2 true JP4140286B2 (ja) | 2008-08-27 |
Family
ID=30431060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002162280A Expired - Fee Related JP4140286B2 (ja) | 2002-06-04 | 2002-06-04 | 計算機システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4140286B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5245539B2 (ja) * | 2008-05-27 | 2013-07-24 | 富士通株式会社 | 仮想マシンの入出力エミュレーション機構 |
GB2462258B (en) * | 2008-07-28 | 2012-02-08 | Advanced Risc Mach Ltd | Interrupt control for virtual processing apparatus |
WO2014118940A1 (ja) * | 2013-01-31 | 2014-08-07 | 三菱電機株式会社 | 計算機装置及び計算機装置の制御方法 |
-
2002
- 2002-06-04 JP JP2002162280A patent/JP4140286B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004013240A (ja) | 2004-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2765411B2 (ja) | 仮想計算機方式 | |
KR100940335B1 (ko) | 멀티프로세서에서 복수의 인스트럭션 스트림/복수의 데이터 스트림 확장을 인에이블링하는 방법, 시스템 및 기계-판독 가능한 매체 | |
JP2002268914A (ja) | 特権命令の実行を監視する方法 | |
US9465617B1 (en) | Implementing upcall from secure to non-secure mode by injecting exception into non-secure mode | |
US9864708B2 (en) | Safely discovering secure monitors and hypervisor implementations in systems operable at multiple hierarchical privilege levels | |
US7437613B2 (en) | Protecting an operating system kernel from third party drivers | |
JP4140286B2 (ja) | 計算機システム | |
US9535772B2 (en) | Creating a communication channel between different privilege levels using wait-for-event instruction in systems operable at multiple levels hierarchical privilege levels | |
JP5215655B2 (ja) | データ処理装置及びデータ処理装置におけるバスアクセス制御方法 | |
US9959225B2 (en) | Computer apparatus and control method of computer apparatus | |
JP6996748B2 (ja) | デバッグシステム、bios、情報処理装置及びデバッグ方法 | |
JPH064417A (ja) | メモリのバッテリバックアップ制御方式 | |
JP2008077388A (ja) | マルチプロセッサ制御システム、方法、およびプログラム | |
JP2786215B2 (ja) | 再開処理制御方式 | |
JP3102381B2 (ja) | タスクデバッグ装置、タスクデバッグ方法及びその記録媒体 | |
KR20130042914A (ko) | 컴퓨터 시스템의 주변장치 가상화 시스템 | |
JPH04364545A (ja) | メモリダンプ方法 | |
JP3183982B2 (ja) | ディジタル制御装置 | |
JPH02244345A (ja) | 情報処理装置 | |
JPH0527963A (ja) | 異種の浮動小数点演算命令の同時サポート方法 | |
JPH08153018A (ja) | 半導体システム | |
JPS6116338A (ja) | 仮想計算機システムにおける割込み処理方式 | |
RU2005115082A (ru) | Типы исключительных ситуаций в защищенной системе обработки | |
JP2009282726A (ja) | デバッグシステム | |
JPH0553879A (ja) | プログラム障害情報収集方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050311 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060419 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071122 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071218 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080304 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080321 |
|
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: 20080520 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080602 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110620 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110620 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110620 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120620 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120620 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130620 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |