JP5328410B2 - 被起動オペレーティングシステム(os)動作計算機、計算機のos起動方法およびos起動プログラム - Google Patents
被起動オペレーティングシステム(os)動作計算機、計算機のos起動方法およびos起動プログラム Download PDFInfo
- Publication number
- JP5328410B2 JP5328410B2 JP2009038183A JP2009038183A JP5328410B2 JP 5328410 B2 JP5328410 B2 JP 5328410B2 JP 2009038183 A JP2009038183 A JP 2009038183A JP 2009038183 A JP2009038183 A JP 2009038183A JP 5328410 B2 JP5328410 B2 JP 5328410B2
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- unit
- booted
- initial
- boot
- 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
Landscapes
- Stored Programmes (AREA)
Description
OSは単独で計算機資源を管理することを前提としており、複数のOSの共存は何らかの機構なしには不可能である。
仮想計算機方式では、全ての計算機資源を計算機制御プログラムが占有して管理し、OSには仮想的な計算機として一部の資源が提供される。これにより、複数のOSそれぞれがあたかも異なる計算機上で単独に動作するため、複数のOSを並行動作させることができる。しかし、計算機資源の一部のみを提供する特別なハードウェア支援と特権命令のエミュレーションとが必要であるため、オーバヘッドが存在する。
この発明では、第一OSの初期化処理において、第二OS,第三OSが必要とする物理メモリ・外部デバイスなどの計算機資源を予約する。第二OS,第三OSの起動処理では予約された計算機資源のみを占有して管理する。また、独立した管理プログラムが外部割込みを横取りして、割込み要因に応じて各OSへ伝達する。これらにより、計算機資源を分割し、各OSを並行動作させることができる。
この方式では、計算機資源を分割して各OSを並行動作させるために、各OSが事前に割り振られたCPU上で動作する。さらに、割込みを割り振られた先のCPUに通知するか、割込みを第一のOSから第二,第三のOSへ伝播する。
また、割込み管理は初期起動OSにて割込みの全てを自CPUに通知されるように設定し、被起動OSの割込み管理処理では自CPUに入った割込みの伝播先として自OSを登録するように変更されている。別CPUにて被起動OSが動作した場合、割込みをどのCPUへ通知するかを設定していないため、別CPUに割り込みが通知されず、別CPUで独立動作する際に割り込みを受けることが出来ないという課題があった。
既存の発明では、これらを解決するために被起動OSの起動処理を変更している(非特許文献2)。
1つのCPU(Central Proccessing Unit)で動作するように作られた複数のOS(Operating System)を複数のCPUで動作させるマルチOS拡張方式について説明する。
実施の形態1におけるマルチCPU計算機100の構成について、図1に基づいて以下に説明する。
被起動CPU111は第2のOS(後述する「被起動OS」)が起動するときに起動し、第2のOSを動作させるCPUである。
外部デバイス(191〜194)とは、ハードディスク、キーボード、ディスプレイ装置、ネットワークインタフェースカードなど、計算機(コンピュータ)に接続される機器のことである。
以下、主記憶装置120の記憶領域を「メモリ領域」という。
初期起動OS200および複数の被起動OSは、CPUが一つである計算機において互いに切り替わりながら一つのCPU上で動作するように作られたマルチOSである。
被起動OSは、初期起動OS200によりCPUが初期化されることを前提に動作し、CPUが初期化されていないと誤動作を起こす。
CPUの初期化とは、例えば、所定のレジスタを初期設定することである。
初期起動OS起動部201は、初期起動OS200を起動する起動処理を初期起動CPU110を用いて実行する。初期起動OS起動部201による起動処理では、初期起動CPU110の初期化、被起動OSa210用の計算機資源の予約などが行われる。
被起動OS起動部211は、被起動OSを起動する起動処理を初期起動CPU110または被起動CPU111(自OSが動作する方)を用いて実行する。被起動OS起動部211による起動処理では、被起動OSa210用に予約された計算機資源の確認などが行われる。但し、被起動CPU111の初期化は行われない。
例えば、非動作中のOSとは、未起動のOSや待機中のOS(起動済であるがCPUの割り当てを待っているOS)である。
被起動CPU起動部310は、被起動CPU初期起動部311(CPU起動部の一例)と被起動CPU初期化部312(CPU初期化部の一例)とを備える。
被起動CPU初期起動部311は、起動後の初期起動CPU110を用いて未起動である被起動CPU111を起動する。
被起動CPU初期化部312は、被起動CPU初期起動部311により起動された被起動CPU111を初期化し、被起動OS起動部211を呼出して被起動OSを被起動CPU111で起動させる。
外部デバイス予約テーブル410は、各外部デバイスと当該外部デバイスを割り当てられたOSとの関係を管理するためのテーブルである。
OS動作CPUテーブル420は、各OSと当該OSが動作中のCPUとの関係を管理するためのテーブルである。
1つのCPUで動作するように作られた初期起動OS200と被起動OSとを初期起動CPU110と被起動CPU111とで動作させるマルチOS拡張方式(OS起動方法の一例)について、図2に基づいて以下に説明する。
その後、特定のタイミングにおいて初期起動CPU110で被起動CPU起動部310が被起動CPU111を起動し(S130、S140)、被起動CPU111で被起動OSが起動する(S150)。
OSを切り替える必要があるときには(S160)、いずれかのCPUでOS切替部300がOSを切り替える(S170)。
マルチCPU計算機100に電源が入ると、マルチCPU計算機100の起動処理により初期起動CPU110が起動される。
S110の後、処理はS120に進む。
初期起動CPU110が起動すると、マルチCPU計算機100の起動処理により初期起動OS起動部201が初期起動CPU110で動作して初期起動OS200が起動する。
初期起動OS起動処理(S120)について、図3に基づいて以下に説明する。
以下に説明する各処理(S121〜S125)は、初期起動OS起動部201が初期起動CPU110を用いて実行する。
初期起動OS起動部201は、初期起動CPU110を初期化する。
CPUの初期化とは、主記憶装置120に記憶される割込みテーブル(図示省略)のメモリアドレスの設定や動作モード(16ビットモードまたは32ビットモードまたは64ビットモード)の設定など、CPUのアーキテクチャ依存部分に関する初期設定を行うことである。
例えば、初期起動OS起動部201は初期起動CPU110の所定のレジスタに所定の初期値を設定する。
S121の後、処理はS122に進む。
初期起動OS起動部201は、各外部デバイスを所定の処理により初期化する。
例えば、初期起動OS起動部201は、各外部デバイス内のコントローラ(制御プログラム)にCPUへのデータ転送速度などの動作モードを初期設定する。
S122の後、処理はS123に進む。
初期起動OS起動部201は、被起動OS(210、220)用の計算機資源を予約する。
例えば、初期起動OS起動部201は、外部デバイス予約テーブル410に基づいて被起動OS用の外部デバイスを予約する。
実施の形態1における外部デバイス予約テーブル410の構造について、図4に基づいて以下に説明する。
以下、外部デバイス番号411として各外部デバイスの符号を用い、OS番号412として各OSの符号を用いて説明する。
図4の外部デバイス予約テーブル410は、初期起動OS200に外部デバイスa191と外部デバイスb192とが割り当てられ、被起動OSa210に外部デバイスc193が割り当てられ、被起動OSb220に外部デバイスd194が割り当てられていることを示している。
これにより、初期起動OS起動部201が他のOSに割り当てられた外部デバイスを使用することはなく、被起動OS用の外部デバイスが予約される。
初期起動OS起動部201は、初期起動OS200のデータ構造を初期化する。
例えば、初期起動OS起動部201は、初期起動OS200用のメモリ管理テーブルや割込みテーブル(図示省略)を初期設定する。
また、初期起動OS起動部201は、OS管理テーブル400に自OSが起動したことを設定し、OS動作CPUテーブル420に自OSが初期起動CPU110で起動したことを設定する。
実施の形態1におけるOS管理テーブル400の構造について、図5に基づいて以下に説明する。
OS番号401には、各OSを識別する番号が設定される。以下、OS番号401として各OSの符号を用いて説明する。
OS起動情報402には、当該OSの起動状態として「起動済」または「未起動」が設定される。OS起動情報402の初期値は「未起動」である。
OSコード403には、当該OSに実行させる実行コードが記憶されているメモリ領域のアドレスが設定される。初期起動OS200のOSコード403の初期値は初期起動OS起動部201のアドレスであり、被起動OSa210と被起動OSb220とのOSコード403の初期値はそれぞれの被起動OS起動部211のアドレスである。また、被起動CPU起動部310のOSコード403の初期値は被起動CPU初期起動部311のアドレスである。OSコード403の設定値(被起動CPU起動部310の設定値を除く)は、CPUで動作するOSが切り替わるときに変更される。被起動CPU起動部310のOSコード403の設定値の変更は不要である。
OSコンテキスト404には、OSが動作を始めるために必要な情報(コンテキストまたはコンテキストが設定されるメモリ領域のアドレス)が設定される。OSコンテキスト404の設定値(被起動CPU起動部310の設定値を除く)は、CPUで動作するOSが切り替わるときに変更される。被起動CPU起動部310のOSコンテキスト404の設定値の変更は不要である。
実施の形態1におけるOS動作CPUテーブル420の構造について、図6に基づいて以下に説明する。
OS番号421には、各OSの識別番号が予め設定されている。
CPU番号422は、各OSが起動または動作を再開したときに設定される。
以下、OS番号421として各OSの符号を用い、CPU番号422として各CPUの符号を用いて説明する。
初期起動OS起動部201は、初期起動OS200の所定の初期プロセスを作成する。
初期プロセスの作成とは、初期プロセスを実行するためのメモリ領域の確保、外部デバイス(例えば、ハードディスク)からメモリ領域への初期プロセスの読み込み、CPUのレジスタへの初期プロセスの起動設定を意味する。
初期プロセスの作成により、初期プロセスが動作し、所定の処理(例えば、ログイン画面の表示)が行われる。
S125の後、初期起動OS起動処理(S120)は終了する。
S120の後、処理はS130、S140に進む。
ここで、被起動OSa210(または被起動OSb220、S150まで以下同じ)を起動する特定のタイミングになったものとする。例えば、特定のタイミングとは、利用者から初期起動OS200に対して被起動OSa210の起動を指定されたときや被起動OSa210用に予約された外部デバイスから初期起動CPU110へ割込み要求があったときである。
このとき、OS切替部300が初期起動CPU110で動作して被起動CPU起動部310を呼出し(S130)、被起動CPU起動部310が初期起動CPU110から被起動CPU111を起動する(S140)。
実施の形態1におけるOS切替処理(S130)について、図7に基づいて以下に説明する。
OS切替部300は、動作中のOS(初期起動OS200)のコンテキストをOS管理テーブル400のOSコンテキスト404に設定して保存する。
また、OS切替部300は、動作中のOSの次の実行コードのメモリアドレスをOS管理テーブル400のOSコード403に設定する。
S131の後、処理はS132に進む。
OS切替部300は、新たに動作させるOS(被起動OSa210)についてOS管理テーブル400のOS起動情報402を参照する。
但し、OS切替部300は、被起動CPU111が未起動である場合には新たに動作させるOSのOS起動情報402の代わりに、被起動CPU起動部310のOS起動情報402を参照する。
このとき、被起動CPU起動部310のOS起動情報402は「未起動」であるため、処理はS133に進む。
OS切替部300は、被起動CPU起動部310の実行コードを所定の外部デバイス(例えば、ハードディスク)から所定のメモリ領域に読み込む。所定のメモリ領域は、OS管理テーブル400内の被起動CPU起動部310のOSコード403に示される領域である。実行コードは、テキスト(命令、関数)やスタックともいう。
S133の後、処理はS134に進む。
OS切替部300は、被起動CPU起動部310についてOS管理テーブル400のOS起動情報402を「未起動」から「起動済」に変更する。
そして、OS切替部300は、OSコード403に基づいて被起動CPU起動部310の実行コードを呼出す。
実行コードの呼出しにより、被起動CPU起動部310は被起動CPU起動処理(S140)を開始する。
S134の後、OS切替処理(S130)は終了する。
実施の形態1における被起動CPU起動処理(S140)について、図8に基づいて以下に説明する。
被起動CPU初期起動部311は以下に説明するS141〜S143、S148を初期起動CPU110を用いて実行し、被起動CPU初期化部312は以下に説明するS144〜S147を被起動CPU111を用いて実行する。
被起動CPU初期起動部311は、所定のメモリ領域に被起動CPU初期化部312の実行コードを被起動CPU111の起動エントリとして設定する。
S141の後、処理はS142に進む。
被起動CPU初期起動部311は、被起動CPU111を起動する。
S142の後、初期起動CPU110での処理はS143に進み、被起動CPU111での処理はS144に進む。
初期起動CPU110において、被起動CPU初期起動部311は被起動CPU111の起動完了を待つ。
被起動CPU111において、被起動CPU初期化部312は被起動CPU111を初期化する。被起動CPU111の初期化は、初期起動CPU110の初期化(S121)と同様である。
例えば、被起動CPU初期化部312は、被起動CPU111の所定のレジスタを初期設定する。
S144の後、処理はS145に進む。
被起動CPU初期化部312は、新たに動作するOS(被起動OSa210)用に予約されている外部デバイスを外部デバイス予約テーブル410を参照して特定し、当該外部デバイスを使用できるようにする。
例えば、被起動CPU初期化部312は、新たに動作するOSが起動される被起動CPU111を割込み先のCPUとして当該外部デバイスに割込み設定を行う。また、被起動CPU初期化部312は、当該外部デバイスがS122において初期化されないデバイスであれば、当該外部デバイスを初期化する。
S145の後、処理はS146に進む。
被起動CPU初期化部312は、被起動CPU111の起動完了を初期起動CPU110で動作している被起動CPU初期起動部311に通知する。
例えば、被起動CPU初期化部312は、初期起動CPU110への割込みや所定のメモリ領域へのフラグの設定により、被起動CPU111の起動完了を被起動CPU初期起動部311に通知する。
S146の後、被起動CPU111での処理はS147に進み、初期起動CPU110での処理はS148に進む。
被起動CPU初期化部312は、被起動OSa210の実行コードを所定の外部デバイスから被起動OSa210用のメモリ領域に読み込む。
また、被起動CPU初期化部312は、OS管理テーブル400内の被起動OSa210のOS起動情報402を「未起動」から「起動済」に変更する。
そして、被起動CPU初期化部312は、被起動OSa210の被起動OS起動部211を呼出す。
S147の後、被起動CPU111において被起動CPU起動処理(S140)は終了する。
被起動CPU初期起動部311は、OS動作CPUテーブル420内の被起動OSa210のCPU番号422に被起動OSa210を起動したCPUの番号「111」を設定する。
また、被起動CPU初期起動部311は、OS管理テーブル400内の被起動CPU起動部310のOS起動情報402を「起動済」から「未起動」に変更する。
そして、被起動CPU初期起動部311は、被起動CPU起動部310から初期起動OS200へのOSの切り替えをOS切替部300に要求する。被起動CPU初期起動部311から要求を受けたOS切替部300は、OS管理テーブル400内の初期起動OS200のOSコンテキスト404を初期起動CPU110のレジスタに設定する。初期起動CPU110は、レジスタに設定されたOSコンテキスト404に基づいて初期起動OS200の動作を再開させる。
S148の後、初期起動CPU110において被起動CPU起動処理(S140)は終了する。
S130、S140の後、処理はS150に進む。
S147において呼出された被起動OS起動部211は、被起動CPU111で被起動OSa210を起動する。
実施の形態1における被起動OS起動処理(S150)について、図9に基づいて以下に説明する。
被起動OS起動部211は、以下に説明する処理を被起動CPU111を用いて実行する。
被起動OS起動部211は、被起動OSa210用に予約された計算機資源を確認する。
例えば、被起動OS起動部211は、被起動OSa210用のメモリ領域に予め設定される外部デバイスの番号と外部デバイス予約テーブル410に被起動OSa210用として設定されている外部デバイス番号411とを比較し、被起動OSa210用に予約された外部デバイスを確認する。例えば、メモリ領域と外部デバイス予約テーブル410とのいずれにしか設定されていない外部デバイスがある場合、被起動OSa210は当該外部デバイスを使用しない。
S151の後、処理はS152に進む。
被起動OS起動部211は、初期起動OS起動部201と同様に(S124)、被起動OSa210のデータ構造を初期化する。
S152の後、処理はS153に進む。
被起動OS起動部211は、初期起動OS起動部201と同様に(S125)、被起動OSa210の初期プロセスを作成する。
S153の後、被起動OS起動処理(S150)は終了する。
S150の後、処理はS160に進む。
初期起動CPU110で動作するOS(例えば、初期起動OS200)または被起動CPU111で動作するOS(例えば、被起動OSa210)を他のOS(例えば、被起動OSb220)に切り替える場合(YES)、処理はS170に進む。
例えば、他のOSに切り替える場合とは、利用者からOSの切り替え指示があった場合、動作していないOS用に予約された外部デバイスから割込み要求があった場合、動作中のOSが外部デバイスからの割込み待ちになったためCPUが空いた場合などである。
OS切替部300は、初期起動CPU110または被起動CPU111で動作するOSを他のOSに切り替える。
OS切替処理(S170)について、図7に基づいて以下に説明する。
OS切替部300は、動作中のOS(例えば、被起動OSa210)のコンテキストをOS管理テーブル400のOSコンテキスト404に設定して保存する。
S171の後、処理はS172に進む。
OS切替部300は、新たに動作させるOS(例えば、被起動OSb220)についてOS管理テーブル400のOS起動情報402を参照する。
OS起動情報402が「未起動」である場合、処理はS173に進み、OS起動情報402が「起動済」である場合、処理はS175に進む。
S172においてOS起動情報402が「未起動」である場合、新たに動作させるOSは被起動OSa210または被起動OSb220である。
OS切替部300は、新たに動作させるOSの被起動OS起動部211の実行コードを所定の外部デバイスから当該OS用のメモリ領域に読み込む。
S173の後、処理はS174に進む。
OS切替部300は、新たに動作させるOSについてOS管理テーブル400のOS起動情報402を「未起動」から「起動」に変更する。
そして、OS切替部300は、OS管理テーブル400内のOSコード403に基づいて、新たに動作させるOSの被起動OS起動部211の実行コードを呼出す。
実行コードの呼出しにより、被起動OS起動処理(S150)(図9参照)が実行され、新たに動作させるOSが起動する。
S174の後、OS切替処理(S170)は終了する。
S172においてOS起動情報402が「起動済」である場合、新たに動作させるOSのコンテキストは過去のOS切替処理(S171)においてOS管理テーブル400のOSコンテキスト404に保存されている。
OS切替部300は、新たに動作させるOSのOSコンテキスト404をOSを切り替えるCPUのレジスタに設定する。CPUは、レジスタに設定されたOSコンテキスト404に基づいて、新たに動作させるOSの動作を再開させる。
S175の後、OS切替処理(S170)は終了する。
マルチOS拡張方式は、複数のCPU(もしくはCPUコア)を持つ計算機システム(マルチCPU計算機100)でマルチOSを動作させる。ここで、マルチOSとは、各OSに計算機資源を予約し、1つのCPUを切り替えながら共有する複数のOSである。
マルチOS拡張方式は(1)CPU起動手段(被起動CPU初期起動部311)と(2)CPU初期化手段(被起動CPU初期化部312)を計算機システムに備える。
(1)CPU起動手段は、他のCPUを起動する。
(2)CPU初期化手段は、他のCPUを初期化して動作中のCPUと同じ状態にし、起動を要求された被起動OSを他のCPUにて動作させる。
マルチOS拡張方式は、上記(1,2)により、共有するCPUでしか起動できない被起動OSを他のCPUにて起動可能にする。
これにより、被起動OSに変更を加えることなく、従来どおり初期起動OSと被起動OSとを1つのCPU上で同時動作させることも、初期起動OSと被起動OSとをそれぞれ独立したCPU上で並行動作させることも可能となる。今までは独立したCPU上で動作させるための変更をOSに加える必要があった。
被起動OSに変更を加える必要がないため、複数のCPUを備える計算機でも従来のマルチOSのソースコードをそのまま使用でき、計算機システムの開発期間の短縮や保守性の向上が見込める。
OSを切り替える際に保存するコンテキストがOS毎に異なる形態について説明する。
以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項は実施の形態1と同様である。
実施の形態2におけるマルチCPU計算機100の構成について、図10に基づいて以下に説明する。
OS管理テーブル400は、実施の形態1の構造(図5参照)からOSコンテキスト404を削除したものである。
各OSのコンテキストはそれぞれのメモリ領域に保存されるため、OS管理テーブル400にOSコンテキスト404を設定する必要はない。
例えば、S130の前(被起動CPUの起動前)、初期起動OS200のOS一時停止部202が動作する。
また例えば、S170の前(被起動CPUの起動後)において新たに動作する被起動OSが未起動である場合、利用者から被起動OSの起動を指定されたOSのOS一時停止部が動作する。
また例えば、S170の前(被起動CPUの起動後)において新たに動作するOSが起動済である場合、新たに動作するOSが前回動作したCPUで動作中のOSのOS一時停止部が動作する。
実施の形態2におけるOS一時停止処理について、図12に基づいて以下に説明する。
OS一時停止部は、自OSのコンテキストを自OS用のメモリ領域に保存する。
また、OS一時停止部は、OS再開部の実行コードのメモリアドレスをOS管理テーブル400のOSコード403に設定する。
S200の後、処理はS210に進む。
OS一時停止部は、OS切替部300の実行コードを呼出す。
実行コードの呼出しにより、OS切替処理(S130、S170)が実行される。
S210の後、OS一時停止処理は終了する。
実施の形態2におけるOS切替処理(S130、S170)について、図13に基づいて以下に説明する。
以下、S175Bについて説明し、他の処理の説明を省略する。
OS切替部300は、OS管理テーブル400内のOSコード403に基づいて、新たに動作させるOSのOS再開部の実行コードを呼出す。
実行コードの呼出しにより、OS再開部によるOS再開処理が実行される。
S175Bの後、OS切替処理は終了する。
実施の形態2におけるOS再開処理について、図14に基づいて以下に説明する。
OS再開部は、自OSのメモリ領域に保存されている自OSのコンテキストをOSを切り替えるCPUのレジスタに設定する。CPUは、レジスタに設定されたコンテキストに基づいて、当該OSの動作を再開させる。
S220の後、OS再開処理は終了する。
初期起動OS200のOS一時停止部202(初期起動OS情報保存部の一例)は、初期起動CPU110で動作している初期起動OS200のコンテキストを主記憶装置120に保存する。
OS切替部300は、初期起動OS200の代わりに被起動CPU起動部310を初期起動CPU110で動作させる。
初期起動OS200のOS再開部203(初期起動OS再開部の一例)は、OS切替部OS切替部300により動作された被起動CPU起動部310の代わりに初期起動OS200をOS一時停止部202により保存されたコンテキストを用いて初期起動CPU110で動作させる。
被起動OSa210のOS一時停止部212(被起動OS情報保存部の一例)は、被起動CPU111で動作している被起動OSa210のコンテキストであって初期起動OS200のコンテキストとは異なるコンテキストを主記憶装置120に保存する。
被起動OSb220の被起動OS起動部211(OS第2起動部の一例)は、被起動OSb220を被起動CPU111を用いて起動する。
被起動OSa210のOS再開部213(被起動OS再開部の一例)は、被起動OSb220の代わりに被起動OSa210をOS一時停止部212により保存されたコンテキストを用いて被起動CPU111で動作させる。
初期起動OS200のOS一時停止部202(初期起動OS情報保存部の一例)は初期起動CPU110で動作している初期起動OS200のコンテキストを保存する。
被起動OSb220の被起動OS起動部211(OS第2起動部の一例)は、被起動OSb220を初期起動CPU110を用いて起動する。
被起動OSb220のOS一時停止部212(被起動第2OS情報保存部の一例)は、被起動OSb220のコンテキストであって初期起動OS200のコンテキストとは異なるコンテキストを主記憶装置120に保存する。
初期起動OS200のOS再開部203(初期起動OS再開部の一例)は、被起動OSb220の代わりに初期起動OS200をOS一時停止部202により保存されたコンテキストを用いて初期起動CPU110で動作させる。
被起動OSb220のOS再開部213(被起動第2OS再開部の一例)は、初期起動OS200の代わりに被起動OSb220をOS再開部213により保存されたコンテキストを用いて初期起動CPU110で動作させる。
マルチOS拡張方式は、(3)OS一時停止手段(202、212)と(4)OS再開手段(203、213)とを各OSに備える。
(3)OS一時停止手段は、そのOSの動作に必要な現在の情報(コンテキスト)を保存し、OSを一時停止させる。
(4)OS再開手段は、OS一時停止手段により保存された情報をもとに、OSを再開させる。
マルチOS拡張方式は、上記(3,4)により、各OSのデータを各OSの領域で保護し、不要な情報(他のOSの再開には必要であるが自OSの再開には不要な情報)を削減することにより、高速なOS切り替えを可能にする。
各外部デバイスからの割込みを特定のCPUで受け付け、他のCPUで動作するOSに割込みを通知する形態について説明する。
以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項は実施の形態1と同様である。
実施の形態3におけるマルチCPU計算機100の構成について、図15に基づいて以下に説明する。
さらに、マルチCPU計算機100は、被起動OSc230を備える。
例えば、割込み転送部313は、被起動OSa210が使用する外部デバイスから初期起動CPU110に割込み要求が通知された場合、被起動OSa210が動作する被起動CPU111に割込み要求を転送する。
また例えば、割込み転送部313は、初期起動OS200が使用する外部デバイスから被起動CPU111に割込み要求が通知された場合、初期起動OS200が動作する初期起動CPU110に割込み要求を通知する。
また、初期起動CPU110で動作しているOSを初期起動OS200、被起動CPU111で動作しているOSを被起動OSa210とする。
さらに、被起動OSc230は初期起動OS200と切り替わりながら初期起動CPU110で動作し、被起動OSb220は被起動OSa210と切り替わりながら被起動CPU111で動作するものとする。各OSが動作するCPUを示す情報はOS動作CPUテーブル420に設定されているものとする。
割込み転送部313により実行される割込み転送処理について、図16に基づいて以下に説明する。
いずれかの被起動OS用に予約された外部デバイスから割込み要求が通知されたとき、初期起動OS200はOS切替部300に割込み転送部313の呼出しを要求し、OS切替部300は割込み転送部313の実行コードを呼出す。
割込み転送部313は、初期起動CPU110に割込み要求を通知した外部デバイスの予約OSを外部デバイス予約テーブル410に基づいて特定する。
さらに、割込み転送部313は、特定したOSが動作するCPUをOS動作CPUテーブル420に基づいて特定する。
S310の後、処理はS320に進む。
割込み転送部313は、S320において特定したCPUが初期起動CPU110である場合、割込み要求を被起動CPU111に転送する必要がないと判定し、S320において特定したCPUが被起動CPU111である場合、割込み要求を被起動CPU111に転送する必要があると判定する。
割込み要求を被起動CPU111に転送する必要がある場合(YES)、処理はS330に進み、割込み要求を被起動CPU111に転送する必要がない場合(NO)、処理はS350に進む。
割込み転送部313は、割込み要求をCPU間割込みにより被起動CPU111に転送する。
S330の後、処理はS340に進む。
被起動CPU111で動作する被起動OSa210は、転送された割込み要求を通知した外部デバイスの予約OSを外部デバイス予約テーブル410に基づいて特定する。
そして、被起動OSa210は、特定したOSが自OSである場合、転送された割込み要求を処理し、特定したOSが他のOS(被起動OSb220)である場合、OS切替部300の実行コードを呼出す。OS切替部300の実行コードの呼出しにより、OS切替処理(S170)が実行され、被起動CPU111で動作するOSが被起動OSa210から被起動OSb220に切り替わる。OS切替処理後、被起動OSb220は割込み要求を処理する。
S340の後、割込み転送処理は終了する。
割込み転送部313は、OS切替部300の実行コードを呼出す。OS切替部300の実行コードの呼出しにより、OS切替処理(S170)が実行され、初期起動CPU110で動作するOSが初期起動OS200から被起動OSc230に切り替わる。OS切替処理後、被起動OSc230は割込み要求を処理する。
S350の後、割込み転送処理は終了する。
マルチOS拡張方式の計算機システムは、外部割込みが特定のCPUに通知されるように制限され、(5)割込み通知手段(割込み転送部313)を備える。
(5)割込み通知手段は、外部割込みを他のOSが動作するCPUに伝播する。
マルチOS拡張方式は、上記(5)により、割込み通知の制限を隠蔽することができる。
Claims (7)
- 第1のCPU(Central Proccessing Unit)と、
第2のCPUと、
起動後の第1のCPUを用いて未起動である第2のCPUを起動するCPU起動部と、
前記CPU起動部により起動された前記第2のCPUを初期化するCPU初期化部と、
前記CPU初期化部により初期化された前記第2のCPUを用いて特定のOS(Operating System)を被起動OSとして起動するOS起動部と、
前記第1のCPUで動作している初期起動OSの情報を記憶装置に保存する初期起動OS情報保存部と、
前記初期起動OSの代わりに前記CPU起動部を前記第1のCPUで動作させるOS切替部と、
前記OS切替部により動作された前記CPU起動部の代わりに前記初期起動OSを前記初期起動OS情報保存部により保存された情報を用いて前記第1のCPUで動作させる初期起動OS再開部と
を備えたことを特徴とする被起動OS動作計算機。 - 前記被起動OS動作計算機は、さらに、
前記第2のCPUで動作している被起動OSの情報であって前記初期起動OS情報保存部により保存される前記初期起動OSの情報とは異なる情報を記憶装置に保存する被起動OS情報保存部と、
前記被起動OSを動作させる代わりに被起動第2OSを前記第2のCPUで起動するOS第2起動部と、
前記OS第2起動部により起動された前記被起動第2OSの代わりに前記被起動OSを前記被起動OS情報保存部により保存された情報を用いて前記第2のCPUで動作させる被起動OS再開部と
を備えたことを特徴とする請求項1記載の被起動OS動作計算機。 - 第1のCPU(Central Proccessing Unit)と、
第2のCPUと、
起動後の第1のCPUを用いて未起動である第2のCPUを起動するCPU起動部と、
前記CPU起動部により起動された前記第2のCPUを初期化するCPU初期化部と、
前記CPU初期化部により初期化された前記第2のCPUを用いて特定のOS(Operating System)を被起動OSとして起動するOS起動部と、
前記第1のCPUで動作している初期起動OSの情報を記憶装置に保存する初期起動OS情報保存部と、
前記初期起動OSを動作させる代わりに被起動第2OSを前記第1のCPUで起動するOS第2起動部と、
前記OS第2起動部により起動された被起動第2OSの情報であって前記初期起動OS情報保存部により保存される前記初期起動OSの情報とは異なる情報を記憶装置に保存する被起動第2OS情報保存部と、
前記OS第2起動部により起動された前記被起動第2OSの代わりに前記初期起動OSを前記初期起動OS情報保存部により保存された情報を用いて前記第1のCPUで動作させる初期起動OS再開部と、
前記初期起動OS再開部により動作された前記初期起動OSの代わりに前記被起動第2OSを前記被起動第2OS情報保存部により保存された情報を用いて前記第1のCPUで動作させる被起動第2OS再開部と
を備えたことを特徴とする被起動OS動作計算機。 - 前記被起動OS動作計算機は、さらに、
前記被起動OSが使用する外部デバイスから前記第1のCPUに割込み要求が通知された場合、前記被起動OSが動作する前記第2のCPUに割込み要求を転送し、前記初期起動OSが使用する外部デバイスから前記第2のCPUに割込み要求が通知された場合、前記初期起動OSが動作する前記第1のCPUに割込み要求を転送する割込み転送部
を備えたことを特徴とする請求項1〜請求項3いずれかに記載の被起動OS動作計算機。 - 第1のCPU(Central Proccessing Unit)と、第2のCPUとを備える計算機のOS起動方法であり、
CPU起動部が、起動後の第1のCPUを用いて未起動である第2のCPUを起動し、
CPU初期化部が、前記CPU起動部により起動された前記第2のCPUを初期化し、
OS起動部が、前記CPU初期化部により初期化された前記第2のCPUを用いて特定のOS(Operating System)を被起動OSとして起動し、
初期起動OS情報保存部が、前記第1のCPUで動作している初期起動OSの情報を記憶装置に保存し、
OS切替部が、前記初期起動OSの代わりに前記CPU起動部を前記第1のCPUで動作させ、
初期起動OS再開部が、前記OS切替部により動作された前記CPU起動部の代わりに前記初期起動OSを前記初期起動OS情報保存部により保存された情報を用いて前記第1のCPUで動作させる
ことを特徴とする計算機のOS起動方法。 - 第1のCPU(Central Proccessing Unit)と、第2のCPUとを備える計算機のOS起動方法であり、
CPU起動部が、起動後の第1のCPUを用いて未起動である第2のCPUを起動し、
CPU初期化部が、前記CPU起動部により起動された前記第2のCPUを初期化し、
OS起動部が、前記CPU初期化部により初期化された前記第2のCPUを用いて特定のOS(Operating System)を被起動OSとして起動し、
初期起動OS情報保存部が、前記第1のCPUで動作している初期起動OSの情報を記憶装置に保存し、
OS第2起動部が、前記初期起動OSを動作させる代わりに被起動第2OSを前記第1のCPUで起動し、
被起動第2OS情報保存部が、前記OS第2起動部により起動された被起動第2OSの情報であって前記初期起動OS情報保存部により保存される前記初期起動OSの情報とは異なる情報を記憶装置に保存し、
初期起動OS再開部が、前記OS第2起動部により起動された前記被起動第2OSの代わりに前記初期起動OSを前記初期起動OS情報保存部により保存された情報を用いて前記第1のCPUで動作させ、
被起動第2OS再開部が、前記初期起動OS再開部により動作された前記初期起動OSの代わりに前記被起動第2OSを前記被起動第2OS情報保存部により保存された情報を用いて前記第1のCPUで動作させる
ことを特徴とする計算機のOS起動方法。 - 請求項5または請求項6記載のOS起動方法を計算機に実行させるOS起動プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009038183A JP5328410B2 (ja) | 2009-02-20 | 2009-02-20 | 被起動オペレーティングシステム(os)動作計算機、計算機のos起動方法およびos起動プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009038183A JP5328410B2 (ja) | 2009-02-20 | 2009-02-20 | 被起動オペレーティングシステム(os)動作計算機、計算機のos起動方法およびos起動プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010191886A JP2010191886A (ja) | 2010-09-02 |
JP5328410B2 true JP5328410B2 (ja) | 2013-10-30 |
Family
ID=42817835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009038183A Expired - Fee Related JP5328410B2 (ja) | 2009-02-20 | 2009-02-20 | 被起動オペレーティングシステム(os)動作計算機、計算機のos起動方法およびos起動プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5328410B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5561241B2 (ja) * | 2011-05-25 | 2014-07-30 | 株式会社デンソー | マイクロコンピュータ |
JP2012256117A (ja) * | 2011-06-07 | 2012-12-27 | Mitsubishi Electric Corp | マルチプロセッサシステム |
JP5742651B2 (ja) * | 2011-10-15 | 2015-07-01 | コニカミノルタ株式会社 | 画像処理装置、連携方法および連携プログラム |
JP6089349B2 (ja) * | 2013-05-28 | 2017-03-08 | ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. | マルチコアアーキテクチャでのリソース分離を支援するための方法およびシステム |
JP7385343B2 (ja) * | 2017-11-08 | 2023-11-22 | コニカミノルタ株式会社 | 画像形成装置 |
-
2009
- 2009-02-20 JP JP2009038183A patent/JP5328410B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2010191886A (ja) | 2010-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100879825B1 (ko) | 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간통신 | |
US8201170B2 (en) | Operating systems are executed on common program and interrupt service routine of low priority OS is modified to response to interrupts from common program only | |
JP4345630B2 (ja) | 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム | |
JP5945292B2 (ja) | 異種システムをブートし、コアの対称的なビューを表示する方法 | |
EP2239662A2 (en) | System management mode inter-processor interrupt redirection | |
US20090007112A1 (en) | Method for controlling a virtual machine and a virtual machine system | |
JP2015503784A (ja) | グラフィックス処理部における仮想マシン間の移行 | |
JP2011100431A (ja) | 仮想マシン制御装置及び仮想マシン制御方法 | |
US10725770B2 (en) | Hot-swapping operating systems using inter-partition application migration | |
US9959134B2 (en) | Request processing using VM functions | |
WO2006036375A1 (en) | Operating system transfer and launch without performing post | |
JP5328410B2 (ja) | 被起動オペレーティングシステム(os)動作計算機、計算機のos起動方法およびos起動プログラム | |
TW200525365A (en) | Optimization of SMI handling and initialization | |
JP2008186175A (ja) | オペレーティングシステムの起動制御方法及び情報処理装置 | |
JP5200085B2 (ja) | コンピュータを短時間で起動する方法およびコンピュータ | |
CN114741233A (zh) | 快速启动方法 | |
US11169837B2 (en) | Fast thread execution transition | |
US11086658B2 (en) | System performance enhancement with SMI on multi-core systems | |
EP4187374A1 (en) | Kernel restarting method | |
KR102285084B1 (ko) | 이종의 멀티 cpu를 운용하는 시스템-온-칩 및 그 동작 방법 | |
US20230161600A1 (en) | Kernel reboot method | |
JP2022055002A (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
JP2003242129A (ja) | プロセッサ増減設方法及び計算機システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110928 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130226 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130402 |
|
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: 20130625 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130723 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |