JPH0447854B2 - - Google Patents
Info
- Publication number
- JPH0447854B2 JPH0447854B2 JP268783A JP268783A JPH0447854B2 JP H0447854 B2 JPH0447854 B2 JP H0447854B2 JP 268783 A JP268783 A JP 268783A JP 268783 A JP268783 A JP 268783A JP H0447854 B2 JPH0447854 B2 JP H0447854B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- handshake
- parent
- special
- child
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
Description
【発明の詳細な説明】
本発明は、仮想計算機システムに関連するもの
であり、更に詳しくいえば、親OSのもとで動作
する子OSから親OSで提供している機能を実行で
きるようにする、いわゆるOSのハンドシエイク
機能の実現方式に関するものである。
であり、更に詳しくいえば、親OSのもとで動作
する子OSから親OSで提供している機能を実行で
きるようにする、いわゆるOSのハンドシエイク
機能の実現方式に関するものである。
仮想計算機は、計算機システムを使つている複
数のユーザがあたかも自分が計算機システムを専
有しているような環境を1台のハードウエア上で
実現するものでこれを使うことにより、仮想計算
機の制御プログラム(以下これを親OSと呼ぶ)
のもとに、複数個のオペレーテイングシステム
(以下これを子OSと呼ぶ)を走らせることができ
る。
数のユーザがあたかも自分が計算機システムを専
有しているような環境を1台のハードウエア上で
実現するものでこれを使うことにより、仮想計算
機の制御プログラム(以下これを親OSと呼ぶ)
のもとに、複数個のオペレーテイングシステム
(以下これを子OSと呼ぶ)を走らせることができ
る。
元来、仮想計算機システムは、既存のOSに何
らの変更も加えることなく、親OSのもとで子OS
として動作させ得るようにしたものであり、これ
を実現するために、たとえび次のような方法がと
られている。即ち、子OSで実行される命令のう
ち、実マシン上の資源に対する直接の動作を指令
するものが、特権命令のうちのあるものに限られ
ることを利用して、子OSで特権命令が発行され
ると親OSに対して割込みが発生するようにして
おき、これにより親OSが発行された特権命令を
解析し、その動作を親OS上で擬似的に実行(シ
ミユレート)している。
らの変更も加えることなく、親OSのもとで子OS
として動作させ得るようにしたものであり、これ
を実現するために、たとえび次のような方法がと
られている。即ち、子OSで実行される命令のう
ち、実マシン上の資源に対する直接の動作を指令
するものが、特権命令のうちのあるものに限られ
ることを利用して、子OSで特権命令が発行され
ると親OSに対して割込みが発生するようにして
おき、これにより親OSが発行された特権命令を
解析し、その動作を親OS上で擬似的に実行(シ
ミユレート)している。
一方、子OSは本来実マシン上で実行されるこ
とを想定して作成されたものであるので一般には
実資源を有効に、かつ使い易い形で利用できるよ
うな種々のOS機能が組込まれている。しかしな
がら子OSとして実行される場合には子OSは実資
源を直接制御できないためこれらの機能は実質的
には意味をもたない。
とを想定して作成されたものであるので一般には
実資源を有効に、かつ使い易い形で利用できるよ
うな種々のOS機能が組込まれている。しかしな
がら子OSとして実行される場合には子OSは実資
源を直接制御できないためこれらの機能は実質的
には意味をもたない。
一方、親OSも特にこれが統合型の仮想計算機
システム用に実現されている場合には、親OSも
通常のジョブを効率よく実行する必要があるので
実マシンを効率よく取扱うために同様な機能が組
込まれており、このため子OSにおいて、実資源
に関する操作要求があつた場合には、まず子OS
における管理をうけ、次に親OSにより同様な管
理をうけ二重の管理が行われることになり実資源
の有効利用、処理時間の観点からも無駄が大き
い。
システム用に実現されている場合には、親OSも
通常のジョブを効率よく実行する必要があるので
実マシンを効率よく取扱うために同様な機能が組
込まれており、このため子OSにおいて、実資源
に関する操作要求があつた場合には、まず子OS
における管理をうけ、次に親OSにより同様な管
理をうけ二重の管理が行われることになり実資源
の有効利用、処理時間の観点からも無駄が大き
い。
親OSと子OSが類似のOSの場合には、子OSで
の機能をバイパスし直接親OSの機能を利用する
ことにより、管理のオーバヘツト時間を少くでき
るとともに親OSによる全システム資源の有効な
管理が実現できることが多い。
の機能をバイパスし直接親OSの機能を利用する
ことにより、管理のオーバヘツト時間を少くでき
るとともに親OSによる全システム資源の有効な
管理が実現できることが多い。
以下、子OSの機能をバイパスし直接親OSの機
能を利用することを、OSハンドシエイクと呼ぶ。
能を利用することを、OSハンドシエイクと呼ぶ。
しかしながら、従来の仮想計算機は、元のOS
に何らの変更も加えずに、仮想計算機を実現しよ
うとした場合には特定の機械語命令の発行を検出
し、機械語命令レベルでシミユレートするという
形しか取り得ないために子OSの中で行われる特
定のOS機能(通常マクロ命令として定義される)
を機能レベルで検出することができないため、前
述のようなマクロレベルでの親OSの機能の利用
が困難であつた。
に何らの変更も加えずに、仮想計算機を実現しよ
うとした場合には特定の機械語命令の発行を検出
し、機械語命令レベルでシミユレートするという
形しか取り得ないために子OSの中で行われる特
定のOS機能(通常マクロ命令として定義される)
を機能レベルで検出することができないため、前
述のようなマクロレベルでの親OSの機能の利用
が困難であつた。
従つて、本発明の目的は、OSハンドシエイク
を容易に行うことのできる仮想計算機システムを
提供することにより、子OSとして実行する場合
においても、そうでない場合においても同一のプ
ログラムを用いて子OSとして使用する場合には、
OSハンドシエイク機能を実現できる仮想計算機
システムを提供することにある。
を容易に行うことのできる仮想計算機システムを
提供することにより、子OSとして実行する場合
においても、そうでない場合においても同一のプ
ログラムを用いて子OSとして使用する場合には、
OSハンドシエイク機能を実現できる仮想計算機
システムを提供することにある。
本発明は、子OS上で実行された場合には、命
令のオペランド部で指定された処理の親OSでの
ハンドシエイクによる処理を要求し、親OS上で
実行された場合には、通常のサブルーチンへのブ
ランチ命令(以下エンタ命令と呼ぶ)と等価の機
能をもつ第1の特別の機械語命令、 親OSでのハンドシエイク処理の完了時に発行
された場合には、ハンドシエイクの後処理を起動
し、ハンドシエイク処理でない場合には通常のサ
ブルーチンからのリターン命令(以下単にリター
命令とよぶ)と等価の機能をもつ第2の特別の機
械語命令、 および、子OSで発行された前記第1の特別の
機械語命令により起動され、前記第1の機械語命
令のオペランド部で指定された機能を親OSで実
行するため必要な処理を行つたうえで親OSの対
応する処理ルーチンを呼び、前記第2の特別の機
械語命令で再起動され、必要な後処理を行つた
後、子OSを指定された処理が終了した状態に設
定し子OSの再開を要求するためのハンドシエイ
ク機構を設けたものであり、子OSとして実行さ
れる場合には、それを親OSの機能によつて代行
できるような機能に対してはあらかじめ、OS上
のこの機能を実行するサブルーチンへのブランチ
命令即ち特殊エンタ命令を埋め込んでおくことに
より、このOSが子OSとして動く場合には、特定
の機能は子OSでの処理を行わず親OSで実行し、
子OSとして動いていない場合には、従来通り、
そのOSの機能を実行できるようにしたものであ
る。即ち、子OSとして実行されるか否かにかか
わらず同一のプログラムを使用することが可能で
ある。次に第1図により本発明の一実施例を説明
する。
令のオペランド部で指定された処理の親OSでの
ハンドシエイクによる処理を要求し、親OS上で
実行された場合には、通常のサブルーチンへのブ
ランチ命令(以下エンタ命令と呼ぶ)と等価の機
能をもつ第1の特別の機械語命令、 親OSでのハンドシエイク処理の完了時に発行
された場合には、ハンドシエイクの後処理を起動
し、ハンドシエイク処理でない場合には通常のサ
ブルーチンからのリターン命令(以下単にリター
命令とよぶ)と等価の機能をもつ第2の特別の機
械語命令、 および、子OSで発行された前記第1の特別の
機械語命令により起動され、前記第1の機械語命
令のオペランド部で指定された機能を親OSで実
行するため必要な処理を行つたうえで親OSの対
応する処理ルーチンを呼び、前記第2の特別の機
械語命令で再起動され、必要な後処理を行つた
後、子OSを指定された処理が終了した状態に設
定し子OSの再開を要求するためのハンドシエイ
ク機構を設けたものであり、子OSとして実行さ
れる場合には、それを親OSの機能によつて代行
できるような機能に対してはあらかじめ、OS上
のこの機能を実行するサブルーチンへのブランチ
命令即ち特殊エンタ命令を埋め込んでおくことに
より、このOSが子OSとして動く場合には、特定
の機能は子OSでの処理を行わず親OSで実行し、
子OSとして動いていない場合には、従来通り、
そのOSの機能を実行できるようにしたものであ
る。即ち、子OSとして実行されるか否かにかか
わらず同一のプログラムを使用することが可能で
ある。次に第1図により本発明の一実施例を説明
する。
本実施例においては、プロセツサが親OSを実
行しているか、子OSを実行しているかを示すた
めにモードフリツプフロツプ5(以下MFFと略
す)が設けられる。プロセツサ上のOSを切換え
るためのVM切換え機構4は、子OSの実行に際
しては、MFFを子OSモードにセツトする
(MFF=1)親OSへの切換えに際しては、親OS
モードにセツトする(MFF=0)。なお、この
MFFは、プロセツサが仮想計算機環境で動作し
ていない場合も、親OSモード(MFF=0)にセ
ツトされる。
行しているか、子OSを実行しているかを示すた
めにモードフリツプフロツプ5(以下MFFと略
す)が設けられる。プロセツサ上のOSを切換え
るためのVM切換え機構4は、子OSの実行に際
しては、MFFを子OSモードにセツトする
(MFF=1)親OSへの切換えに際しては、親OS
モードにセツトする(MFF=0)。なお、この
MFFは、プロセツサが仮想計算機環境で動作し
ていない場合も、親OSモード(MFF=0)にセ
ツトされる。
本実施例では、OSハンドシエイクをサポート
するために、OSハンドシエイクを要求する第1
の特別の機械語として、特殊エンタ命令、ハンド
シエイクによる親OSでの処理の終了を通知する
ための、第2の特別の機械語命令として、特殊リ
ターン命令が用意される。
するために、OSハンドシエイクを要求する第1
の特別の機械語として、特殊エンタ命令、ハンド
シエイクによる親OSでの処理の終了を通知する
ための、第2の特別の機械語命令として、特殊リ
ターン命令が用意される。
本実施例においては、特殊エンタ命令でのパラ
メータの引渡しは、すべてスタツクを介して行わ
れるものとする。即ち、特殊エンタ命令の実行に
際しては、呼ばれたルーチンで必要とされる入力
データはすべてスタツク上に準備されており、ま
た呼ばれたルーチンでの実行結果で、呼出し側の
必要とする出力データはすべてスタツク上に置か
れたうえでリターンが行われる構造となつている
ものとする。
メータの引渡しは、すべてスタツクを介して行わ
れるものとする。即ち、特殊エンタ命令の実行に
際しては、呼ばれたルーチンで必要とされる入力
データはすべてスタツク上に準備されており、ま
た呼ばれたルーチンでの実行結果で、呼出し側の
必要とする出力データはすべてスタツク上に置か
れたうえでリターンが行われる構造となつている
ものとする。
また、特殊エンタ命令で呼ばれたルーチンから
の戻りアドレス情報は、スタツク上の特定位置に
置かれるものとする。
の戻りアドレス情報は、スタツク上の特定位置に
置かれるものとする。
この戻りアドレス情報としては特殊エンタ命令
により呼ばれたルーチンの処理が終了した時点で
リターン命令の次に実行すべきアドレスととも
に、このルーチンがハンドシエイク処理を実行中
である、即ち、子OSからの要求によりこのルー
チンを実行中であり、処理の終了した後では子
OSに制御を戻すべきであることを示すために、
特別なビツトが用意される。(以下これをハンド
シエイクビツトと呼ぶ) ハンドシエイク処理を実行中にはハンドシエイ
クビツトが1にセツトされる。
により呼ばれたルーチンの処理が終了した時点で
リターン命令の次に実行すべきアドレスととも
に、このルーチンがハンドシエイク処理を実行中
である、即ち、子OSからの要求によりこのルー
チンを実行中であり、処理の終了した後では子
OSに制御を戻すべきであることを示すために、
特別なビツトが用意される。(以下これをハンド
シエイクビツトと呼ぶ) ハンドシエイク処理を実行中にはハンドシエイ
クビツトが1にセツトされる。
特殊リターン命令は命令コード部として、この
命令が特殊リターン命令であることを示すための
値をもつフイールドを備えており、命令解読実行
機構1は特殊リターン命令の実行に際し、特殊リ
ターン命令を発行したプロセスのスタツクの特定
位置にある戻り先番地が、子OS上のアドレスを
指定していた場合にはシミユレーシヨン機構を起
動し戻り番地が親OSのアドレスを示している場
合には、通常のリターン命令として動作する。
命令が特殊リターン命令であることを示すための
値をもつフイールドを備えており、命令解読実行
機構1は特殊リターン命令の実行に際し、特殊リ
ターン命令を発行したプロセスのスタツクの特定
位置にある戻り先番地が、子OS上のアドレスを
指定していた場合にはシミユレーシヨン機構を起
動し戻り番地が親OSのアドレスを示している場
合には、通常のリターン命令として動作する。
そして、OSにおいては、このOSが子OSとし
てで実行される場合に、親OSでのハンドシエイ
クによる処理を行う可能性がある特定の処理(以
下候補処理と呼ぶ)についてはこの候補処理を行
うサブルーチンへのエンタ命令のかわりに特殊エ
ンタ命令があらかじめ埋め込まれており、このオ
ペランドにはサブルーチンのアドレスが設定され
ていることを想定している。
てで実行される場合に、親OSでのハンドシエイ
クによる処理を行う可能性がある特定の処理(以
下候補処理と呼ぶ)についてはこの候補処理を行
うサブルーチンへのエンタ命令のかわりに特殊エ
ンタ命令があらかじめ埋め込まれており、このオ
ペランドにはサブルーチンのアドレスが設定され
ていることを想定している。
また、親OSとして実行される場合に子OSから
のハンドシエイクの要求により、子OSのハンド
シエイク処理として実行される可能性のある特定
の処理についてはこの候補処理を行うサブルーチ
ンからのリターン命令のかわりに、特殊リターン
命令があらかじめ組込まれていることを想定して
いる。
のハンドシエイクの要求により、子OSのハンド
シエイク処理として実行される可能性のある特定
の処理についてはこの候補処理を行うサブルーチ
ンからのリターン命令のかわりに、特殊リターン
命令があらかじめ組込まれていることを想定して
いる。
また、本実施例においては、親OSによるハン
ドシエイクをサポートするために、主記憶上にハ
ンドシエイク制御テーブル3が設けられる。この
テーブルの各エントリjは子OSの識別番号
(VMIDj)および子OS上でのサブルーチンのア
ドレス(ASPj)をキイとしてもち、親OS上での
対応するサブルーチンのアドレス(AMj)をデ
ータ部としてもつ。
ドシエイクをサポートするために、主記憶上にハ
ンドシエイク制御テーブル3が設けられる。この
テーブルの各エントリjは子OSの識別番号
(VMIDj)および子OS上でのサブルーチンのア
ドレス(ASPj)をキイとしてもち、親OS上での
対応するサブルーチンのアドレス(AMj)をデ
ータ部としてもつ。
ハンドシエイク制御テーブル3のキイ部である
VMIDフイールドには、現在実行中のVM番号を
保持するVM識別レジスタの出力が印加されてお
り、同じくキイ部を構成するサブルーチンアドレ
ス部には、特殊エンタ命令のオペランドよりサブ
ルーチンアドレスがハンドシエイク機構2を介し
て印加されるように構成され、データ部の親OS
上のサブルーチンアドレス部の値は、ハンドシエ
イク制御機構2に印加されている。
VMIDフイールドには、現在実行中のVM番号を
保持するVM識別レジスタの出力が印加されてお
り、同じくキイ部を構成するサブルーチンアドレ
ス部には、特殊エンタ命令のオペランドよりサブ
ルーチンアドレスがハンドシエイク機構2を介し
て印加されるように構成され、データ部の親OS
上のサブルーチンアドレス部の値は、ハンドシエ
イク制御機構2に印加されている。
このテーブルにはあらかじめ、そのシステムに
おいてサポートすべきハンドシエイク機能が登録
されているものとする。
おいてサポートすべきハンドシエイク機能が登録
されているものとする。
即ち、VMIDで指定される特定のVM上のASP
で指定される特定のサブルーチンの機能がハンド
シエイクにより親OS上のAMで指定されるサブ
ルーチンでサポートされている場合にはこれが、
ハンドシエイク制御テーブルのいずれかのエント
リjに登録されているものとする。
で指定される特定のサブルーチンの機能がハンド
シエイクにより親OS上のAMで指定されるサブ
ルーチンでサポートされている場合にはこれが、
ハンドシエイク制御テーブルのいずれかのエント
リjに登録されているものとする。
本実施例においては、ハンドシエイク機構2
は、フアームウエアで実現され、子OSで発生し
たハンドシエイク要求を受取り、ハンドシエイク
制御テーブル3をサーチし親OS、子OSの状態を
設定し対応する前処理部に制御を引渡すための前
処理部、 ハンドシエイクの結果により、親OS、子OSの
状態を設定する後処理部からなる。
は、フアームウエアで実現され、子OSで発生し
たハンドシエイク要求を受取り、ハンドシエイク
制御テーブル3をサーチし親OS、子OSの状態を
設定し対応する前処理部に制御を引渡すための前
処理部、 ハンドシエイクの結果により、親OS、子OSの
状態を設定する後処理部からなる。
VM切換え機構4はハンドシエイク機構2によ
り起動され、各VMの状態を識別し次に実行すべ
きOSを決定し、この決定に基づきOSの切換えが
必要な場合には、現在実行中のVMの状態をセイ
ブし(ロールアウト)次に実行すべきVMの状態
を復元(ロールイン)することにより、親OSと
子OS間、あるいは子OS間の制御の切換えを行
う。
り起動され、各VMの状態を識別し次に実行すべ
きOSを決定し、この決定に基づきOSの切換えが
必要な場合には、現在実行中のVMの状態をセイ
ブし(ロールアウト)次に実行すべきVMの状態
を復元(ロールイン)することにより、親OSと
子OS間、あるいは子OS間の制御の切換えを行
う。
このとき、次に実行すべきVMが子OSである
場合には、子OSモードをセツトし(MFF=1)、
親OSである場合には親OSモードをセツトする
(MFF=0)、とともに、 次に実行すべきVMの識別番号(VMID)を
VM識別レジスタ6にセツトする。
場合には、子OSモードをセツトし(MFF=1)、
親OSである場合には親OSモードをセツトする
(MFF=0)、とともに、 次に実行すべきVMの識別番号(VMID)を
VM識別レジスタ6にセツトする。
また、本実施例においては、親OS上に、各子
OS対応に1個のプロセスが用意される。
OS対応に1個のプロセスが用意される。
子OSからのハンドシエイクを要求された処理
は親OSからは、対応するサポートプロセスから
の要求に対する処理として取扱われることにな
る。このために、子OSからのハンドシエイク要
求に際しては子OSからの要求を代行プロセスか
らの要求として親OSから識別できる形に変換し、
親OSでの処理の完了時点で、サポートプロセス
に対して行われた処理結果を子OSから認識でき
る形に変換する処理が行われる。
は親OSからは、対応するサポートプロセスから
の要求に対する処理として取扱われることにな
る。このために、子OSからのハンドシエイク要
求に際しては子OSからの要求を代行プロセスか
らの要求として親OSから識別できる形に変換し、
親OSでの処理の完了時点で、サポートプロセス
に対して行われた処理結果を子OSから認識でき
る形に変換する処理が行われる。
次に、本実施例における動作を説明する。プロ
グラムの実行中に、特殊エンタ命令があらわれる
と、即ち、命令解読実行機構1が、実行しようと
した命令が、特殊エンタ命令であることを検出し
た場合には次の処理が行われる。
グラムの実行中に、特殊エンタ命令があらわれる
と、即ち、命令解読実行機構1が、実行しようと
した命令が、特殊エンタ命令であることを検出し
た場合には次の処理が行われる。
プロセツサが親OSモードにある場合(MFF=
0のとき)には、命令解読、実行機構1は、通常
のエンタ命令と同様の動作を行う。即ち、命令の
オペランド部で指定されるプロセジヤへのブラン
チが行われる。
0のとき)には、命令解読、実行機構1は、通常
のエンタ命令と同様の動作を行う。即ち、命令の
オペランド部で指定されるプロセジヤへのブラン
チが行われる。
プロセツサが子OSモードにある場合(MFF=
1のとき)には、特殊エンタ命令であることが検
出されると、命令解読実行機構1は、ハンドシエ
イク機構2を起動する。起動されたハンドシエイ
ク機構2は次の処理を行う。
1のとき)には、特殊エンタ命令であることが検
出されると、命令解読実行機構1は、ハンドシエ
イク機構2を起動する。起動されたハンドシエイ
ク機構2は次の処理を行う。
特殊エンタ命令により起動されたハンドシエイ
ク機構2の前処理部は、子OSを実行不可能な状
態に設定し、VM識別レジスタ6上にセツトされ
ている特殊エンタ命令を発行した子OSのID
(VMID)および特殊エンタ命令のオペランド部
の値(ASP)をキイとしてハンドシエイク制御
テーブル3をサーチし、キイ部に、同一の値をも
つエントリを見出す。同一値をもつエントリjが
見出された場合、即ち、子OS(VMIDj)上の特
殊エンタ命令のオペランド部(ASPj)で指定さ
れた処理がハンドシエイク処理により親OSのル
ーチンAMjでサポートされている場合には、次
の処理を行う。
ク機構2の前処理部は、子OSを実行不可能な状
態に設定し、VM識別レジスタ6上にセツトされ
ている特殊エンタ命令を発行した子OSのID
(VMID)および特殊エンタ命令のオペランド部
の値(ASP)をキイとしてハンドシエイク制御
テーブル3をサーチし、キイ部に、同一の値をも
つエントリを見出す。同一値をもつエントリjが
見出された場合、即ち、子OS(VMIDj)上の特
殊エンタ命令のオペランド部(ASPj)で指定さ
れた処理がハンドシエイク処理により親OSのル
ーチンAMjでサポートされている場合には、次
の処理を行う。
ここでは、まず、特殊エンタ命令を発行した子
OS対応の代行プロセスのスタツクに、特殊エン
タ命令を発行したプロセスのスタツク上のパラメ
ータを移送、代行プロセスのスタツクを更新す
る。
OS対応の代行プロセスのスタツクに、特殊エン
タ命令を発行したプロセスのスタツク上のパラメ
ータを移送、代行プロセスのスタツクを更新す
る。
次に代行プロセスのスタツクのトツプに、リタ
ーンアドレス情報として戻り先が子OSであるこ
とを示すための識別のため、ハンドシエイクビツ
トを1にセツトし戻りアドレスARjとして、特殊
エンタ命令の次の命令アドレスにセツトし、ハン
ドシエイク制御テーブル3上の一致番地jのデー
タ部に登録されている親OS処理ルーチンアドレ
スAM0を読出し、これを親OSの命令カウンタ領
域にセツトしたうえで、代行プロセスを実行可能
な状態にセツトし、VM切換え機構4を起動す
る。
ーンアドレス情報として戻り先が子OSであるこ
とを示すための識別のため、ハンドシエイクビツ
トを1にセツトし戻りアドレスARjとして、特殊
エンタ命令の次の命令アドレスにセツトし、ハン
ドシエイク制御テーブル3上の一致番地jのデー
タ部に登録されている親OS処理ルーチンアドレ
スAM0を読出し、これを親OSの命令カウンタ領
域にセツトしたうえで、代行プロセスを実行可能
な状態にセツトし、VM切換え機構4を起動す
る。
VM切換え機構4は、現在実行中の(子OS)
が実行不可能な状態になつたことを検知し、この
子OSの状態を主記憶上に退避し(ロールアウ
ト)、次に実行すべきOSを決定し、決定された
OSの状態をプロセツサ上にロードする(ロール
イン)。
が実行不可能な状態になつたことを検知し、この
子OSの状態を主記憶上に退避し(ロールアウ
ト)、次に実行すべきOSを決定し、決定された
OSの状態をプロセツサ上にロードする(ロール
イン)。
この結果として、親OSが実行されたとき、代
行プロセスは、実行可能な状態にあるので、この
プロセスが実行対象として選ばれたとき、代行プ
ロセス上で、拡張エンタ命令で指定された親OS
機能が実行されることになる。
行プロセスは、実行可能な状態にあるので、この
プロセスが実行対象として選ばれたとき、代行プ
ロセス上で、拡張エンタ命令で指定された親OS
機能が実行されることになる。
親OS上の代行プロセスによる処理の完了時に
特殊リターン命令が発行され、スタツク上の戻り
アドレス情報に、子OSへのリターンであること
を示す特別の識別子がセツトされている場合に
は、ハンドシエイク機構2が起動される。
特殊リターン命令が発行され、スタツク上の戻り
アドレス情報に、子OSへのリターンであること
を示す特別の識別子がセツトされている場合に
は、ハンドシエイク機構2が起動される。
起動されたハンドシエイク機構2は、この特殊
リターン命令を発行した代行プロセスに対応する
子OSの退避情報により、ハンドシエイクを要求
したプロセスを得、このプロセスのスタツクに、
代行プロセスのスタツクのパラメータエリアの内
容を移送するとともに、スタツク上に先に退避さ
れていた戻り番地の値ARjを対応するプロセスの
命令カウンタ領域に、セツトする。このあと、親
OS上の対応する代行プロセスを、待ち状態にセ
ツトし、対応する子OSを実行可能な状態とした
うえでVM切換え機構4を起動する。
リターン命令を発行した代行プロセスに対応する
子OSの退避情報により、ハンドシエイクを要求
したプロセスを得、このプロセスのスタツクに、
代行プロセスのスタツクのパラメータエリアの内
容を移送するとともに、スタツク上に先に退避さ
れていた戻り番地の値ARjを対応するプロセスの
命令カウンタ領域に、セツトする。このあと、親
OS上の対応する代行プロセスを、待ち状態にセ
ツトし、対応する子OSを実行可能な状態とした
うえでVM切換え機構4を起動する。
VM切換え機構により、対応する子OSに制御
がわたると、特殊エンタ命令の次の命令から処理
が再開され、かつ、スタツク上には、特殊エンタ
命令で指定した処理の親OSにより実行結果がセ
ツトされており、あたかも子OSで実行されたか
のように処理がなされていることになる。
がわたると、特殊エンタ命令の次の命令から処理
が再開され、かつ、スタツク上には、特殊エンタ
命令で指定した処理の親OSにより実行結果がセ
ツトされており、あたかも子OSで実行されたか
のように処理がなされていることになる。
なお、特殊エンタ命令により起動されたハンド
シエイク機構2における、ハンドシエイク制御テ
ーブル3のサーチにおいて、キイ部に、特殊エン
タ命令のオペランド部と同一の値をもつエントリ
が見出されない場合には通常のエンタ命令と同じ
処理を行う。即ち、特殊エンタ命令にの次のアド
レスを戻り番地としてスタツクにセツトした後、
命令カウンタに、特殊エンタ命令のオペランド部
で示されるサブルーチンアドレスをセツトする。
これにより、特殊エンタ命令で指定された処理の
親OSでのハンドシエイクがサポートされていな
い場合には通常のエンタ命令として子OS内での
処理が行われることになる。
シエイク機構2における、ハンドシエイク制御テ
ーブル3のサーチにおいて、キイ部に、特殊エン
タ命令のオペランド部と同一の値をもつエントリ
が見出されない場合には通常のエンタ命令と同じ
処理を行う。即ち、特殊エンタ命令にの次のアド
レスを戻り番地としてスタツクにセツトした後、
命令カウンタに、特殊エンタ命令のオペランド部
で示されるサブルーチンアドレスをセツトする。
これにより、特殊エンタ命令で指定された処理の
親OSでのハンドシエイクがサポートされていな
い場合には通常のエンタ命令として子OS内での
処理が行われることになる。
以上本発明の一実施例を説明したが、本説明で
明らかなように本発明の主旨は子OS上で実行さ
れた場合には、命令のオペランド部で指定された
処理の親OSでのハンドシエイクによる処理を要
求し、親OS上で実行された場合には、通常のサ
ブルーチンへのブランチ命令(エンタ命令)と等
価の機能をもつ第1の特別の機械語命令、 親OSでのハンドシエイク処理の完了時に発行
された場合には、ハンドシエイクの後処理を起動
し、ハンドシエイク処理でない場合には通常のサ
ブルーチンからのリターン命令(リターン命令)
と等価の機能をもつ第2の特別の機械語命令、 および、子OSで発行された前記第1の特別の
機械語命令により起動され、前記第1の機械語命
令のオペランド部で指定された機能を親OSで実
行するための必要な処理を行つてうえで親OSの
対応する処理ルーチンを呼び、前記第2の特別の
機械語命令で再起動され、必要な後処理を行つた
後子OSを指定された処理が終了した状態に設定
し子OSの再開を要求するためのハンドシエイク
機構を設け、子OSとして実行される場合には、
それを親OSの状態によつて代行できるような機
能に対してはあらかじめ、OS上のこの機能を実
行するサブルーチンへのブランチのための特別な
機械語命令を埋め込んでおくことにより、この
OSが子OSとして動く場合には、特定の機能は子
OSでの処理を行わず親OSで実行し、子OSとし
て動いていない場合には、従来通り、そのOSの
機能を実行できるようにしたものである 即ち、
子OSとして実行されるか否かにかかわらず同一
のプログラムを使用することを可能にしたもので
ある。
明らかなように本発明の主旨は子OS上で実行さ
れた場合には、命令のオペランド部で指定された
処理の親OSでのハンドシエイクによる処理を要
求し、親OS上で実行された場合には、通常のサ
ブルーチンへのブランチ命令(エンタ命令)と等
価の機能をもつ第1の特別の機械語命令、 親OSでのハンドシエイク処理の完了時に発行
された場合には、ハンドシエイクの後処理を起動
し、ハンドシエイク処理でない場合には通常のサ
ブルーチンからのリターン命令(リターン命令)
と等価の機能をもつ第2の特別の機械語命令、 および、子OSで発行された前記第1の特別の
機械語命令により起動され、前記第1の機械語命
令のオペランド部で指定された機能を親OSで実
行するための必要な処理を行つてうえで親OSの
対応する処理ルーチンを呼び、前記第2の特別の
機械語命令で再起動され、必要な後処理を行つた
後子OSを指定された処理が終了した状態に設定
し子OSの再開を要求するためのハンドシエイク
機構を設け、子OSとして実行される場合には、
それを親OSの状態によつて代行できるような機
能に対してはあらかじめ、OS上のこの機能を実
行するサブルーチンへのブランチのための特別な
機械語命令を埋め込んでおくことにより、この
OSが子OSとして動く場合には、特定の機能は子
OSでの処理を行わず親OSで実行し、子OSとし
て動いていない場合には、従来通り、そのOSの
機能を実行できるようにしたものである 即ち、
子OSとして実行されるか否かにかかわらず同一
のプログラムを使用することを可能にしたもので
ある。
この主旨に反しないかぎりいくつかの実現方法
があることは明らかであろう。
があることは明らかであろう。
本実施例においては、ハンドシエイクすべき処
理を行うサブルーチンと、このサブルーチンのコ
ーラとのパラメータの受渡しは、すべてスタツク
を介して行うものとしておりまたパラメータとし
ては、単なるデータだけが引渡されるものとして
いる。即ち、ポインタ等がパラメータに含まれて
いないものとする。子OSでのスタツクと親OSの
代行タスクのスタツクとの移送により、親OSと
子OS間でのパラメータの受渡しを可能にしてい
るが、パラメータがポインタを含む場合、あるい
は、スタツク以外にパラメータがある場合には、
これらを親OSの対応サブルーチンから正しい親
OS上のアドレスで参照できるようにするために
ハンドシエイク機構2において、各機能対応にあ
るいは、子OS上のアドレス空間から親OS上のア
ドレス空間への移送、子OSアドレスの親OSアド
レスへの変換等の処理を行うことが必要となろ
う。
理を行うサブルーチンと、このサブルーチンのコ
ーラとのパラメータの受渡しは、すべてスタツク
を介して行うものとしておりまたパラメータとし
ては、単なるデータだけが引渡されるものとして
いる。即ち、ポインタ等がパラメータに含まれて
いないものとする。子OSでのスタツクと親OSの
代行タスクのスタツクとの移送により、親OSと
子OS間でのパラメータの受渡しを可能にしてい
るが、パラメータがポインタを含む場合、あるい
は、スタツク以外にパラメータがある場合には、
これらを親OSの対応サブルーチンから正しい親
OS上のアドレスで参照できるようにするために
ハンドシエイク機構2において、各機能対応にあ
るいは、子OS上のアドレス空間から親OS上のア
ドレス空間への移送、子OSアドレスの親OSアド
レスへの変換等の処理を行うことが必要となろ
う。
また、本実施例においては、特殊エンタ命令の
実行に際して、代行タスクのスタツク上に、子
OS上での戻り番地とともに、子OSからのコール
であることを示すフラグがセツトされるものとし
ているが必ずしもこのようにする必要はなく、親
OSでの処理の終了に際して、親OSからコールさ
れた場合には、親OSでの戻り先が識別でき子OS
からコールされた場合には、子OSからコールさ
れたものであるかどうかが識別できる情報、親
OSからコールされた場合には、親OS上での戻り
番地が識別できるようになつていればどのように
構成されてもよい。
実行に際して、代行タスクのスタツク上に、子
OS上での戻り番地とともに、子OSからのコール
であることを示すフラグがセツトされるものとし
ているが必ずしもこのようにする必要はなく、親
OSでの処理の終了に際して、親OSからコールさ
れた場合には、親OSでの戻り先が識別でき子OS
からコールされた場合には、子OSからコールさ
れたものであるかどうかが識別できる情報、親
OSからコールされた場合には、親OS上での戻り
番地が識別できるようになつていればどのように
構成されてもよい。
図は、本発明の一実施例を示すもので、
1は命令解読実行機構、2はハンドシエイク機
構、3はハンドシエイク制御テーブル、4はVM
切換え機構、5はモードフリツプフロツプ、6は
VM識別レジスタを示す。
構、3はハンドシエイク制御テーブル、4はVM
切換え機構、5はモードフリツプフロツプ、6は
VM識別レジスタを示す。
Claims (1)
- 【特許請求の範囲】 1 複数存在する仮想計算機(以下VM)および
該仮想計算機を制御するVM制御プログラム(以
下親OS)のうちのいずれにプロセツサの制御を
与えるべきかを決定し、当該親OSあるいはVM
にプロセツサを与えるVM切り換え手段と、 前記VM切り換え手段により、プロセツサが
VMに切り換えられる場合にはVMモードに設定
され、親OSに切り換えられる場合には親OSモー
ドに設定されるプロセツサ状態保持手段と、 主記憶上に格納された機械語命令を解読し実行
するに当たつて、該命令が特殊エンタ命令であつ
た場合には、前記プロセツサの状態が親OSモー
ドにあるならば通常のサブルーチンへのブランチ
命令として実行し、VMモードにあるならば親
OSでのハンドシエイクによる処理要求をハンド
シエイク手段に通知し、 該命令が特殊リターン命令であつた場合には、
プロセツサがハンドシエイク処理実行中でないと
きには通常のサブルーチンからのリターン命令と
して実行し、ハンドシエイク処理実行中であつた
ならハンドシエイク処理の終了をハンドシエイク
手段に通知する命令解読実行手段と、 前記特殊エンタ命令および特殊リターン命令を
処理した前記命令解読実行手段からの通知により
起動され、特殊エンタ命令のオペランド部で指定
される処理の親OSでのハンドシエイクによる実
行を制御し、特殊リターン命令によつて起動され
た場合はハンドシエイクの後処理を行つてハンド
シエイクを起動したVMを実行可能状態にするハ
ンドシエイク手段とを備えることを特徴とする仮
想計算機システム。 2 前記ハンドシエイク手段は、 前記特殊エンタ命令および特殊リターン命令を
処理した前記命令解読実行手段からの通知により
起動され、特殊エンタ命令により起動された場合
には、該命令を発行したVMに対応して親OS上
に用意されているサポートプロセスを該命令で指
定された処理を要求している状態に設定し、該命
令を発行したVMの状態をサスペンド状態にした
上で前記VM切り換え手段を起動し、 特殊リターン命令により起動された場合には、
前記親OS上の対応するサポートプロセス上で実
行完了した処理の結果を、対応するVM上で完了
した場合の形式に変換し、これを対応するVM上
に反映させ、該VMを実行可能な状態にし、親
OS上のサポートプロセスをサスペンド状態にし
たうえで前記VM切り換え手段を起動することに
より、 前記特殊エンタ命令のオペランド部で指定され
る処理の親OSでのハンドシエイクによる実行を
制御する特許請求の範囲第1項記載の仮想計算機
システム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP268783A JPS59127156A (ja) | 1983-01-11 | 1983-01-11 | 仮想計算機システム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP268783A JPS59127156A (ja) | 1983-01-11 | 1983-01-11 | 仮想計算機システム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS59127156A JPS59127156A (ja) | 1984-07-21 |
| JPH0447854B2 true JPH0447854B2 (ja) | 1992-08-05 |
Family
ID=11536193
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP268783A Granted JPS59127156A (ja) | 1983-01-11 | 1983-01-11 | 仮想計算機システム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS59127156A (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6336304A (ja) * | 1986-07-30 | 1988-02-17 | Omron Tateisi Electronics Co | プログラマブル・コントロ−ラ・システム |
| JP2008108075A (ja) * | 2006-10-25 | 2008-05-08 | Matsushita Electric Ind Co Ltd | タスク切替え制御方法及びコンピュータシステム |
-
1983
- 1983-01-11 JP JP268783A patent/JPS59127156A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS59127156A (ja) | 1984-07-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6772419B1 (en) | Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS | |
| JP2692609B2 (ja) | マルチタスクのプログラムデバッグ方法とその装置 | |
| US9092255B2 (en) | Multi-core processor system, computer product, and control method for interrupt execution | |
| US20100299472A1 (en) | Multiprocessor system and computer program product | |
| JPH0792761B2 (ja) | 仮想計算機システムの入出力制御方法 | |
| JPH0814795B2 (ja) | マルチプロセッサ仮想計算機システム | |
| JP2539352B2 (ja) | 階層型多重計算機システム | |
| JPH05216689A (ja) | コンピュータ装置およびコンピュータ装置を動作させる方法 | |
| JP2870254B2 (ja) | 仮想計算機の入出力割り込み処理方式 | |
| JP4247228B2 (ja) | ヘテロマルチプロセッサシステムおよびそのos構成方法 | |
| JPH0447854B2 (ja) | ||
| JP4026667B2 (ja) | マルチos構成方法 | |
| JP2001216172A (ja) | マルチos構成方法 | |
| JP2553526B2 (ja) | マルチタスク処理装置 | |
| JPS603229B2 (ja) | 情報処理方式 | |
| JPH0363768B2 (ja) | ||
| JPH08272757A (ja) | マルチプロセッサシステム及びプログラム起動方法 | |
| JPS62221041A (ja) | 仮想計算機システムにおけるデイスパツチ制御装置 | |
| JPH08320809A (ja) | 外乱プロセス排除方式 | |
| JPH0754469B2 (ja) | 仮想計算機システムのための入出力命令実行装置 | |
| JPH0518140B2 (ja) | ||
| JP2581327B2 (ja) | 仮想計算機の入出力割込み処理方式 | |
| JPH02187830A (ja) | 割り込み制御方式 | |
| JPS5938993A (ja) | 仮想計算機システム | |
| JPH0762828B2 (ja) | エミュレーション方法 |