(58)【調査した分野】(Int.Cl.,DB名)
設定レジスタを有し、当該設定レジスタに所定のレジスタ値が設定されている設定期間に、前記第1プロセッサによる前記セキュア記憶領域へのアクセス、及び前記第2プロセッサによる前記セキュア記憶領域へのアクセスを許可し、前記設定期間以外の期間に、前記第1プロセッサによる前記セキュア記憶領域へのアクセス、及び前記第2プロセッサによる前記セキュア記憶領域へのアクセスを禁止するアクセス制御装置をさらに備え、
前記開始通知受付部によって前記アクセス開始通知が受け付けられた場合に、前記設定レジスタに前記所定のレジスタ値を設定し、前記設定レジスタに前記所定のレジスタ値が設定されている場合において、前記終了通知受付部によって前記アクセス終了通知が受け付けられたときに、前記設定レジスタに前記所定のレジスタ値以外のレジスタ値を設定するレジスタ設定部を有する
ことを特徴とする請求項3記載の計算機システム。
前記アクセス制御装置は、さらに、前記設定期間以外の期間において、前記第1プロセッサによる前記セキュア記憶領域へのアクセス命令が発行された場合に、前記開始通知受付部に前記アクセス開始通知を行う
ことを特徴とする請求項6記載の計算機システム。
セキュア記憶領域を有するメモリと、当該メモリを利用する第1及び第2プロセッサとを備える計算機システムを備える計算機システムに、自システムを制御する計算機システム制御処理を実行させるための計算機システム制御プログラムであって、
前記計算機システム制御処理は、
前記第1プロセッサと前記第2プロセッサとで実行させる、複数のプログラム実行単位の実行制御を行う実行制御ステップと、
前記第1プロセッサによる、前記セキュア記憶領域へのアクセスが許可されているアクセス許可種プログラム実行単位からの、前記セキュア記憶領域へのアクセスが開始されることを示すアクセス開始通知を受け付ける開始通知受付ステップとを有し、
前記実行制御ステップは、前記開始通知受付ステップによって前記アクセス開始通知が受け付けられた場合に、前記第2プロセッサによって実行されるプログラム実行単位が、前記アクセス許可種プログラム実行単位に限定されるように、前記実行制御を行う
ことを特徴とする計算機システム制御プログラム。
【発明を実施するための形態】
【0011】
<本発明に係る一形態を得るに至った経緯>
本発明者は、前述した、特許文献1のような技術によりセキュアプログラムが実行される期間を制御し、その期間に限ってアクセス制御装置にアクセス許可設定を行う構成について詳細に検討した。
【0012】
このような並列型計算機システムでは、例え、並列型計算機システムが上述のアクセス制御装置を備え、そのアクセス制御装置が、一のプロセッサにおいてセキュアプログラムが実行される期間にアクセス許可設定がなされるとしても、その期間に、他のプロセッサにおいて非セキュアプログラムが実行されると、秘匿すべき情報が、その非セキュアプログラムによってアクセスされてしまう恐れがある。
【0013】
そこで、従来の並列型計算機システムには、任意の時刻において、全てのプロセッサがセキュア・非セキュアの点で同種のプログラム実行単位を実行対象とするように、各プロセッサが、互いに同期して、所定期間(以下、「クオンタム」と呼ぶ。)毎に実行対象となるプログラム実行単位を切り替えるギャングスケジューリング方式によってスケジューリングを行うものがある。そして、このことによって、セキュアプログラムと非セキュアプログラムとが、同時に実行されてしまうことを防いでいる。
【0014】
図30は、CPUA3001とCPUB3002とCPUC3003との3つのプロセッサを備える従来の並列型計算機システムにおいて、ギャングスケジューリング方式で各プロセッサのスケジューリングが行われている場合における、各プロセッサのタイミングチャートの一例である。
【0015】
同図に示されるように、CPUA3001とCPUB3002とCPU3003とは、互いに同期して、時刻qa3041と時刻qb3042と時刻qc3043と時刻qd3044とのそれぞれの時刻に、実行対象となるプログラム実行単位を切り替える。
【0016】
この例では、各プロセッサは、第N−1クオンタム3011の期間に、セキュアプログラムからなる第1プログラム実行単位を実行対象とし、第Nクオンタム3012の期間に、非セキュアプログラムを含む第2プログラム実行単位を実行対象とし、第N+1クオンタム3013の期間に、再び第1プログラム実行単位を実行対象とする。
【0017】
同図において、セキュア領域アクセス期間3031とセキュア領域アクセス期間3032とは、それぞれ、セキュアプログラムがセキュア記憶領域へアクセスを行っている期間を示し、破線部分は、対応するプロセッサがアイドル状態であることを示す。
【0018】
このように、ギャングスケジューリング方式で各プロセッサのスケジューリングが行われる従来の並列型計算機システムでは、セキュアプログラムがセキュア記憶領域へのアクセスを行っている期間(図中のセキュア領域アクセス期間3031、セキュア領域アクセス期間3032等)に、非セキュアプログラムが実行されてしまうことを防ぐことができる。
【0019】
一般に、計算機システムにおいて、プロセッサの利用効率が向上されることが望まれる。発明者は、プロセッサの利用効率に関して、前述した従来技術に基づく構成では、以下の問題があることを見出した。具体的には、ギャングスケジューリング方式で各プロセッサのスケジューリングが行われる計算機システムにおいては、一のクオンタム期間において、実行対象となるプログラム実行単位の中に実行すべきプログラムがなくなってしまうプロセッサがあっても、そのプロセッサは、他のクオンタム期間において実行対象となるプログラム実行単位のプログラムを実行することができない。そして、このことに起因して、一のプログラム実行単位を実行対象とする一のクオンタム期間中において、その期間の少なくとも一部の期間に、一部のプロセッサがアイドル状態となってしまうことがあるという問題がある。
【0020】
そして、この点に関して、本発明者は検討を重ねた結果、セキュアプログラムからなるプログラム実行単位がセキュア記憶領域へのアクセスを行っている期間に、非セキュアプログラムを含むプログラム実行単位が実行対象とならないようにすることにより、ギャングスケジューリング方式で各プロセッサのスケジューリングが行われる従来の計算機システムよりも、プロセッサの利用効率が向上される可能性を高くする計算機システムを提供することが可能であることを見出し、本発明に至った。
<実施の形態1>
<概要>
以下、本発明に係る計算機システムの一実施形態として、秘匿すべき情報を記憶するセキュア領域を有するメモリと、メモリを利用する4つのプロセッサと、プロセッサによるセキュア領域へのアクセスを制御するアクセス制御装置とを備える計算機システムについて説明する。
【0021】
この計算機システムでは、複数のオペレーティングシステムの実行制御を行うハイパバイザが実行されることで、複数のオペレーティングシステムが、互いに独立して実行される。
【0022】
実行対象となるオペレーティングシステムの中には、セキュアプログラムに限って実行の制御を行うオペレーティングシステム(以下、「セキュアオペレーティングシステム」と呼ぶ。)が含まれる。
【0023】
この計算機システムにおいて、ハイパバイザは、セキュアプログラムがセキュア領域へアクセスする期間に限って、実行されるオペレーティングシステムが、セキュアオペレーティングシステムに限定されるようにオペレーティングシステムの実行制御を行う。そして、セキュアプログラムがセキュア領域へアクセスする期間に限って、プロセッサによるセキュア領域へのアクセスが許可されるように、アクセス制御装置を制御する。
【0024】
以下、本実施の形態1に係る計算機システムの構成について図面を参照しながら説明する。
【0025】
<構成>
図1は、計算機システム100の主要なハードウエア構成を示すブロック図である。
【0026】
同図に示されるように、計算機システム100は、ハードウエアとしてはコンピュータ装置であり、集積回路110と入力装置191と出力装置192とハードディスク装置193とから構成される。
【0027】
集積回路110は、MPU(Multi Processor Unit)120とアクセス制御装置130とメモリ140とバス150と第1インターフェース160と第2インターフェース170と第3インターフェース180とから構成される。そして、MPU120は、CPU(Central Processing Unit)A121とCPUB122とCPUC123とCPUD124と割込コントローラ125とから構成される。
【0028】
メモリ140は、ROM(Read Only Memory)とRAM(Random Access Memory)とから構成され、アクセス制御装置130に接続され、CPUA121〜CPUD124の動作を規定するプログラムと、CPUA121〜CPUD124が利用するデータとを記憶する。メモリ140の記憶領域のうちの一部の領域は、秘匿されるべきデータを記憶するためのセキュア領域141として定義されている。
【0029】
秘匿されるべきデータとしては、例えば、コンテンツを復号するための暗号キー、個人情報を含む住所録等が考えられる。
【0030】
アクセス制御装置130は、メモリ140とバス150と割込コントローラ125とに接続され、制御レジスタ群131を有し、以下の3つの機能を有する。
【0031】
アクセス禁止機能:制御レジスタ群131に所定の値が設定されていない場合に、CPUA121〜CPUD124によるセキュア領域141へのアクセスを禁止する機能。
【0032】
ここで、アクセスを禁止するとは、アクセスを行わないことである。
【0033】
アクセス制限機能:制御レジスタ群131に所定の値が設定されている場合に、CPUA121〜CPUD124による、セキュア領域141のうちの、その設定値によって定められる記憶領域へのアクセスを許可し、CPUA121〜CPUD124による、セキュア領域のうちの、その設定値によって定められる記憶領域以外の記憶領域へのアクセスを禁止する機能。
【0034】
ここで、アクセスを許可するとは、アクセスを行うことである。
【0035】
図2は、制御レジスタ群131のデータ構成の一例を示すデータ構成図である。
【0036】
同図に示されるように、制御レジスタ群131は、レジスタ番号210と開始アドレス220と終了アドレス230とアクセス権240とからなるレジスタがN本(例えば16本)集まって構成される。
【0037】
レジスタ番号210は、対応するレジスタを識別するための識別番号を記憶するための領域である。このレジスタ番号210は、対応するレジスタ毎に予め値が定められており、書き換え不可となっている。
【0038】
開始アドレス220と終了アドレス230とは、それぞれ、セキュア領域に含まれる一の連続した記憶領域についての開始アドレスと終了アドレスとをそれぞれ記憶するための領域である。
【0039】
アクセス権240は、対応する開始アドレス220と終了アドレス230とによって指定される連続した記憶領域へのアクセスの許可形態を示すアクセス形態情報を記憶するための領域である。
【0040】
ここで、アクセス形態情報は、その論理値が“1”の場合に、読み出しと書き込みとの双方を許可することを示し、その論理値が“2”の場合に、読み出しのみ許可することを示し、その論理値が“3”の場合に、書き込みのみ許可することを示し、その論理値が“0”の場合に、読み出しと書き込みとの双方を許可しないことを示す。
【0041】
なお、開始アドレス220と終了アドレス230とアクセス権240とは、それぞれ、初期状態において、初期論理値“0”が書き込まれるように設定されており、また、バス150を介して、CPUA121〜CPUD124によって値が書き換え可能となっている。
【0042】
再び
図1に戻って、アクセス制御装置130の有する機能の説明を続ける。
【0043】
例外割込通知機能:アクセス制御装置130が、CPUA121〜CPUD124のうちのいずれかによる、メモリ140へのアクセスを禁止した場合に、メモリ140へのアクセスが禁止された旨を示すメモリアクセス例外割込要求信号を、割込コントローラ125に送る機能。
【0044】
ここで、このメモリアクセス例外割込要求信号は、禁止対象となったメモリアクセスを試みたCPUを特定する情報を含む。
【0045】
割込コントローラ125は、アクセス制御装置130とCPUA121とCPUB122とCPUC123とCPUD124とに接続され、これら接続先デバイスから割込要求信号を受け付けて、受け付けた割込要求信号に応じた割り込みを、適切なCPUに適切なタイミングで行う機能を有する。
【0046】
バス150は、アクセス制御装置130とCPUA121とCPUB122とCPUC123とCPUD124と第1インターフェース160と第2インターフェース170と第3インターフェース180とに接続され、接続されるデバイス間の信号を伝達する機能を有する。
【0047】
入力装置191は、キーボード、マウス等で構成され、第1インターフェース160に接続され、プログラムを実行するCPUA121〜CPUD124によって制御され、キーボード、マウス等を通じてユーザからの操作コマンドを受け付ける機能を有する。
【0048】
出力装置192は、ディスプレイ、スピーカー等で構成され、第2インターフェース170に接続され、プログラムを実行するCPUA121〜CPUD124によって制御され、ディスプレイ、スピーカー等を用いて文字列、画像、音声等を出力する機能を有する。
【0049】
第1インターフェース160と第2インターフェース170と第3インターフェース180とは、それぞれバス150に接続され、それぞれ、バス150と入力装置191との間の信号のやり取りを仲介する機能、バス150と出力装置192との間の信号のやり取りを仲介する機能、バス150とハードディスク装置193との間の信号のやり取りを仲介する機能を有する。
【0050】
CPUA121とCPUB122とCPUC123とCPUD124とは、互いに同様の機能を有するプロセッサである。よって、以下では、これらのCPUを代表して、CPUA121について説明する。
【0051】
CPUA121は、割込コントローラ125とバス150とに接続され、メモリ140に記憶されているプログラムを実行することで、他のCPUと共同で、アクセス制御装置130とメモリ140と入力装置191と出力装置192とハードディスク装置193とを制御して、計算機システム100を、コンピュータ装置として機能させる機能を有する。
【0052】
なお、CPUA121は、メモリ140に記憶されているプログラムを実行することで、計算機システム100を制御して、計算機システム100に、その特徴的な動作である、アクセス開始処理と再スケジューリング処理とセキュア領域設定処理とアクセス終了処理とアクセス制御処理とを実現させる機能を有する。これら、アクセス開始処理と再スケジューリング処理とセキュア領域設定処理とアクセス終了処理とアクセス制御処理とについては、後程、フローチャートを用いて詳細に説明する。
【0053】
また、CPUA121は、その動作モードとして、ユーザモードと、第1特権モードと、第1特権モードよりも上位の第2特権モードとを有している。
【0054】
図3は、CPUA121〜CPUD124上で実行対象となるプログラムモジュール(以下、単に「モジュール」と呼ぶ。)群300を模式的に示す模式図である。
【0055】
同図に示されるように、CPUA121〜CPUD124上で実行対象となるモジュール群300には、ユーザモード310で実行されるプロセスA311〜プロセスP312、プロセスQ313〜プロセスZ314と、第1特権モード320で実行されるOS(Operating System)a340とOSb350と、第2特権モード330で実行されるハイパバイザ360とが含まれる。
【0056】
ハイパバイザ360は、OSa340とOSb350とを実行制御する機能を有するハイパバイザモジュールであって、アクセスフラグ更新部361とOSID管理テーブル記憶部362とセキュア領域管理テーブル記憶部363とアクセス制御操作部364とスケジューラ365とCPU間通信制御部367とを含む。
【0057】
OSa340は、プロセスA311〜プロセスP312を実行制御する機能を有するオペレーティングシステムモジュールであって、セキュア領域開始指示部341とセキュア領域終了指示部342とを含む。なお、OSa340は、自OSであるOSa340と、実行制御しているプロセスとからなるシステムを、一の仮想計算機として機能させる。
【0058】
OSb350は、プロセスQ313〜プロセスZ314を実行制御する機能を有するオペレーティングシステムモジュールであって、セキュア領域開始指示部351とセキュア領域終了指示部352とを含む。なお、OSb350は、自OSであるOSb350と、実行制御しているプロセスとからなるシステムを、一の仮想計算機として機能させる。
【0059】
プロセスA311〜プロセスP312は、それぞれ、CPUA121〜CPUD124のいずれかが、信頼できる特定のアプリケーションプログラム(以下、「セキュアアプリケーションプログラム」と呼ぶ。)を実行することで生成されるタスクである。これらプロセスA311〜プロセスP312は、セキュア領域141に記憶されているデータを不適切に利用することがないことが予め確認されている。
【0060】
セキュアアプリケーションプログラムの一例として、暗号キーを利用してコンテンツを復号するコンテンツ復号プログラム、住所録を利用するメーラ等が考えられる。
【0061】
以下、プロセスA311〜プロセスP312のことを、セキュアプロセスと呼ぶことがある。
【0062】
プロセスQ313〜プロセスZ314は、それぞれ、CPUA121〜CPUD124のいずれかが、信頼できる特定のアプリケーションプログラム以外のアプリケーションプログラム(以下、「非セキュアアプリケーションプログラム」と呼ぶ。)を実行することで生成されるタスクである。これらプロセスQ313〜プロセスP312は、セキュア領域141に記憶されているデータを不適切に利用することがないことが予め確認されていない。以下、プロセスQ313〜プロセスZ314のことを、非セキュアプロセスと呼ぶことがある。
【0063】
セキュア領域開始指示部341は、自モジュールを含むOS(ここではOSa340)によって実行制御されているプロセスによる、セキュア領域141へのアクセスが開始されることを検知して、セキュア領域141へのアクセスが開始されることを示すアクセス開始信号をアクセスフラグ更新部361へ送る機能を有する。ここでは、このアクセス開始信号は、自信号を送るOSを識別する識別子であるOSIDを含んでいる。
【0064】
セキュア領域終了指示部342は、自モジュールを含むOS(ここではOSa340)によって実行制御されているプロセスによる、セキュア領域141へのアクセスが終了されることを検知して、セキュア領域141へのアクセスが終了されることを示すアクセス終了信号をアクセスフラグ更新部361へ送る機能を有する。ここでは、このアクセス終了信号は、自信号を送るOSを識別する識別子であるOSIDを含んでいる。
【0065】
セキュア領域開始指示部351とセキュア領域終了指示部352とは、それぞれ、セキュア領域開始指示部341とセキュア領域終了指示部342と同等の機能を有する。よってここでは説明を省略する。
【0066】
セキュア領域管理テーブル記憶部363は、セキュア領域管理テーブル400を記憶する機能を有する。
【0067】
図4は、セキュア領域管理テーブル400のデータ構成の一例を示すデータ構成図である。
【0068】
同図に示されるように、セキュア領域管理テーブル400は、OSID410と開始アドレス420と終了アドレス430とアクセス権440とが対応付けられて構成される。
【0069】
OSID410は、OSを識別するための識別子であり、論理値“1”の場合に、識別されるOSがOSa340であることを示し、論理値“2”の場合に、識別されるOSがOSb350であることを示す。
【0070】
開始アドレス420と終了アドレス430とは、それぞれ、セキュア領域に含まれる一の連続した記憶領域についての開始アドレスと終了アドレスとである。
【0071】
アクセス権440は、対応する開始アドレス420と終了アドレス430とによって指定される連続した記憶領域について、対応するOSID410によって識別されるOSからのアクセスの許可形態を示すアクセス形態情報である。
【0072】
このアクセス形態情報は、アクセス権240におけるアクセス形態情報と同様のものである。よって説明を省略する。
【0073】
ここで、このセキュア領域管理テーブル400は、システム開発時において予め定められたテーブルであって、その内容が更新不可となっている。
【0074】
なお、
図4で示されるセキュア領域管理テーブル400の例では、セキュア領域141のうちの、開始アドレスと論理アドレスとがそれぞれ、0x8400_0000と0x8402_FFFFとなる連続した記憶領域について、OSa340からの読み出しと書き込みとの双方が許可されていることを示している。
【0075】
再び
図3に戻って、モジュール群300の説明を続ける。
【0076】
OSID管理テーブル記憶部362は、OSID管理テーブル500を記憶する機能を有する。
【0077】
図5は、OSID管理テーブル500のデータ構成の一例を示すデータ構成図である。
【0078】
同図に示されるように、OSID管理テーブル500は、OSID510と優先度520とアクセスフラグ530とが対応付けられて構成される。
【0079】
OSID510は、OSID410と同様の、OSを識別するための識別子であり、論理値“1”の場合に、識別されるOSがOSa340であることを示し、論理値“2”の場合に、識別されるOSがOSb350であることを示す。
【0080】
優先度520は、ハイパバイザ360がOSの実行制御を行う場合における、対応するOSID510によって識別されるOSの実行優先度である。
【0081】
ここでは、優先度520は、0〜99までのいずれかの整数値を取り、より値の大き方が、より優先度が高くなっている。なお、この優先度520を利用した、ハイパバイザ360によるOSの実行制御については、後程、スケジューラ365の説明の部分で説明する。
【0082】
アクセスフラグ530は、対応するOSID510によって識別されるOSによって、セキュア領域141へのアクセスが行われているか否かを示すフラグである。
【0083】
ここで、アクセスフラグ530は、論理値“1”の場合にセキュア領域141へのアクセスが行われていることを示し、論理値“0”の場合にセキュア領域141へのアクセスが行われていないことを示す。
【0084】
再び
図3に戻って、モジュール群300の説明を続ける。
【0085】
アクセスフラグ更新部361は、以下の3つの機能を有する。
【0086】
アクセスフラグ1更新機能:セキュア領域開始指示部341又はセキュア領域開始指示部351からアクセス開始信号を受けた場合において、そのアクセス開始信号の送信元のOSが、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410によって識別されるOSに含まれているときに、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500の、送信元OSを識別するOSID510に対応付けられているアクセスフラグ530を、論理値“1”に更新する機能。
【0087】
アクセスフラグ0更新機能:セキュア領域終了指示部342又はセキュア領域終了指示部352からアクセス終了信号を受けた場合において、そのアクセス開始信号の送信元のOSが、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410によって識別されるOSに含まれているときに、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500の、送信元OSを識別するOSID510に対応付けられているアクセスフラグ530を、論理値“0”に更新する機能。
【0088】
再スケジューリング要求機能:OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500のアクセスフラグ530を更新した場合に、スケジューラ365に、更新したOSID管理テーブル500に基づく新たなスケジューリングの依頼を行う機能。
【0089】
スケジューラ365は、以下の2つの機能を有する。
【0090】
通常スケジューリング機能:OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500のアクセスフラグ530の論理値が全て“0”の場合に、各CPUについて、実行する各OSの各実行時間の比率が、各OSに対応する優先度520の比率となるように、各CPUにおける各OSの実行スケジューリングを行う機能。
【0091】
限定スケジューリング機能:OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500のアクセスフラグ530の中に論理値が“1”となるものがある場合に、全てのCPUにおいて、実行するOSが、その論理値が“1”となるアクセスフラグ530に対応するOSID510によって識別されるOSに限定されるように、各CPUにおける各OSの実行スケジューリングを行う機能。
【0092】
実行制御部366は、スケジューラ365によってスケジューリングされた実行スケジュールに基づいて、各CPUについてのOSの実行制御を行う機能を有する。
【0093】
この実行制御部366は、スケジューラ365がスケジューリングを行っている期間、全てのOSについての実行制御を一時的に中断する。
【0094】
CPU間通信制御部367は、一のCPUから他のCPUへの割込通知が必要となる場合に、適切な割込要求信号を生成して、割込コントローラ125へ送る機能と、割込コントローラ125から割り込みがなされた場合に、その割り込みにを受け付ける機能とを有する。
【0095】
アクセス制御操作部364は、以下の2つの機能を有する。
【0096】
セキュア領域設定機能:OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500のアクセスフラグ530の論理値が“1”へと更新された場合において、そのアクセスフラグ530に対応するOSID510と同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれているときに、そのOSID410に対応する開始アドレス420と終了アドレス430とアクセス権440とを読み出して、制御レジスタ群131に含まれるレジスタのうちの、初期値が書き込まれている一のレジスタに、開始アドレス220と終了アドレス230とアクセス権240とを書き込む機能。
【0097】
セキュア領域解除機能:OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500のアクセスフラグ530の論理値が“0”へと更新された場合において、そのアクセスフラグ530に対応するOSID510と同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれているときに、そのOSID410に対応する開始アドレス420と終了アドレス430とアクセス権440との値が書き込まれている、制御レジスタ群131に含まれるレジスタについて、そのレジスタの開始アドレス220と終了アドレス230とアクセス権240との値を初期値である論理値“0”に書き換える機能。
【0098】
以上のように構成される計算機システム100の行う動作について、以下図面を参照しながら説明する。
【0099】
<動作>
ここでは、計算機システム100の行う動作のうち、特徴的な動作である、アクセス開始処理と再スケジューリング処理とセキュア領域設定処理とアクセス終了処理とアクセス制御処理とについて説明する。
【0100】
<アクセス開始処理>
アクセス開始処理は、ハイパバイザ360が主体となって行う処理であって、OSa340又はOSb350から、セキュア領域141へのアクセスが開始される旨の通知を受けると、その通知に基づいて、実行するOSの再スケジューリングと制御レジスタ群131の設定とを行う処理である。
【0101】
図6はアクセス開始処理のフローチャートである。
【0102】
アクセス開始処理は、OSa340のセキュア領域開始指示部341又はOSb350のセキュア領域開始指示部351が、自モジュールを含むOSによって実行制御されているプロセスによる、セキュア領域141へのアクセスが開始されることを検知して、アクセス開始信号をアクセスフラグ更新部361へ送ることで開始される。
【0103】
アクセス開始処理が開始されると、アクセスフラグ更新部361は、送られたアクセス開始信号を受信する(ステップS600)。
【0104】
アクセス開始信号を受信すると、アクセスフラグ更新部361は、受信したアクセス開始信号に含まれるOSIDを取得する(ステップS610)。そして、取得したOSIDと同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれているか否かを調べることで、取得したOSIDによって識別されるOSに、セキュア領域141に含まれる一の連続した記憶領域へのアクセス権が設定されているか否かを調べる(ステップS620)。
【0105】
ステップS620の処理において、アクセス権が設定されている場合に(ステップS620:Yes)、すなわち、取得したOSIDと同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれている場合に、アクセスフラグ更新部361は、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500の、取得したOSIDと同じ識別子のOSID510に対応付けられているアクセスフラグ530を、論理値“1”に更新する(ステップS630)。そして、スケジューラ365に、再スケジューリングを依頼する(ステップS640)
再スケジューリングを依頼されると、スケジューラ365は、後述の再スケジューリング処理を行うことで、各CPUの実行するOSが、その論理値が“1”となるアクセスフラグ530に対応するOSID510によって識別されるOSに限定されるように、各CPUにおける各OSの実行スケジューリングを行う。
【0106】
ここで、実行制御部366は、スケジューラ365がスケジューリングを開始すると、全てのCPUについてのOSの実行制御を一時的に中断する。
【0107】
アクセス制御操作部364は、スケジューラ365が全てのCPUについてのスケジューリングを完了するまで待機し(ステップS650:Noを繰り返し)た後に(ステップS650:Yes)、後述のセキュア領域設定処理を実行することで、アクセスフラグ更新部361が取得したOSIDに対応する開始アドレス420と終了アドレス430とアクセス権440とを、制御レジスタ群131に含まれるレジスタのうちの、初期値が書き込まれている一のレジスタに書き込む(ステップS660)。
【0108】
制御レジスタ群131の一のレジスタへの書き込みが終わると、アクセス制御操作部364は実行制御部366に、レジスタの書き込みが終了した旨の通知を行う。そして、実行制御部366は、一時的に中断していた、全てのCPUについてのOSの実行制御を再開する(ステップS670)。
【0109】
ステップS620の処理において、アクセス権が設定されていない場合に(ステップS620:No)、すなわち、取得したOSIDと同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれていない場合、又は、ステップS670の処理が終了した場合に、ハイパバイザ360は、そのアクセス開始処理を終了する。
【0110】
<再スケジューリング処理>
再スケジューリング処理は、スケジューラ365が行う処理であって、再スケジューリングが依頼された場合に、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500を参照して、各CPUにおける各OSのスケジューリングを行う処理である。
【0111】
図7は、再スケジューリング処理のフローチャートである。
【0112】
再スケジューリング処理は、アクセスフラグ更新部361から、再スケジューリングを依頼されることで開始される。
【0113】
再スケジューリング処理が開始されると、スケジューラ365は、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500に、論理値が“1”となるアクセスフラグ530が存在するか否かを調べる(ステップS700)。
【0114】
ステップS700の処理において、論理値が“1”となるアクセスフラグ530が存在する場合に(ステップS700:Yes)、スケジューラ365は、全てのCPUにおいて、実行するOSが、そのアクセスフラグ530に対応付けられているOSID510によって識別されるOSに限定されるように、各CPUにおける各OSの実行スケジューリングを行う(ステップS710)。
【0115】
ステップS700の処理において、論理値が“1”となるアクセスフラグ530が存在しない場合に(ステップS700:No)、スケジューラ365は、各CPUについて、実行する各OSの各実行時間の比率が、各OSに対応する優先度520の比率となるように、各CPUにおける各OSの実行スケジューリングを行う(ステップS720)。
【0116】
ステップS710の処理が終わった場合、又は、ステップS720の処理が終わった場合に、スケジューラ365は、その再スケジューリング処理を終了する。
【0117】
<セキュア領域設定処理>
セキュア領域設定処理は、アクセス制御操作部364が行う処理であって、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500のアクセスフラグ530が更新された場合に、制御レジスタ群131に含まれるレジスタを更新する処理である。
【0118】
図8は、セキュア領域設定処理のフローチャートである。
【0119】
セキュア領域設定処理は、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500のアクセスフラグ530が更新されることで開始される。
【0120】
セキュア領域設定処理が開始されると、アクセス制御操作部364は、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400を参照して、更新されたアクセスフラグ530に対応するOSID510と同じ識別子のOSID410に対応する開始アドレス420と終了アドレス430とアクセス権440とを読み出す(ステップS800)。そして、更新されたアクセスフラグ530の論理値が“1”であるか否かを調べる(ステップS810)。
【0121】
ステップS810の処理において、論理値が“1”である場合に(ステップS810:Yes)、アクセス制御操作部364は、制御レジスタ群131に含まれるレジスタのうちの、初期値が書き込まれている一のレジスタに、開始アドレス220と終了アドレス230とアクセス権240とを書き込む(ステップS820)。
【0122】
ステップS810の処理において、論理値が“0”である場合に(ステップS810:No)、アクセス制御操作部364は、更新されたアクセスフラグ530に対応するOSID510と同じ識別子のOSID410に対応する開始アドレス420と終了アドレス430とアクセス権440との値が書き込まれている、制御レジスタ群131に含まれるレジスタについて、そのレジスタの開始アドレス220と終了アドレス230とアクセス権240との値を初期値である論理値“0”に書き換える(ステップS830)。
【0123】
ステップS820の処理が終わった場合、又は、ステップS830の処理が終わった場合に、アクセス制御操作部364は、そのセキュア領域設定処理を終了する。
【0124】
<アクセス終了処理>
アクセス終了処理は、ハイパバイザ360が主体となって行う処理であって、OSa340又はOSb350から、セキュア領域141へのアクセスが終了される旨の通知を受けると、その通知に基づいて、実行するOSの再スケジューリングと制御レジスタ群131の設定とを行う処理である。
【0125】
図9は、アクセス終了処理のフローチャートである。
【0126】
アクセス終了処理は、OSa340のセキュア領域終了指示部342又はOSb350のセキュア領域終了指示部352が、自モジュールを含むOSによって実行制御されているプロセスによる、セキュア領域141へのアクセスが終了したことを検知して、アクセス終了信号をアクセスフラグ更新部361へ送ることで開始される。
【0127】
アクセス終了処理が開始されると、アクセスフラグ更新部361は、送られたアクセス終了信号を受信する(ステップS900)。
【0128】
アクセス終了信号を受信すると、アクセスフラグ更新部361は、受信したアクセス終了信号に含まれるOSIDを取得する(ステップS910)。そして、取得したOSIDと同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれているか否かを調べることで、取得したOSIDによって識別されるOSに、セキュア領域に含まれる一の連続した記憶領域へのアクセス権が設定されているか否かを調べる(ステップS920)。
【0129】
ステップS920の処理において、アクセス権が設定されている場合に(ステップS920:Yes)、すなわち、取得したOSIDと同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれている場合に、アクセスフラグ更新部361は、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500の、取得したOSIDと同じ識別子のOSID510に対応付けられているアクセスフラグ530を、論理値“0”に更新する(ステップS930)。そして、スケジューラ365に、再スケジューリングを依頼する(ステップS940)。
【0130】
再スケジューリングを依頼されると、スケジューラ365は、前述の再スケジューリング処理を行うことで、各CPUについて、実行する各OSの各実行時間の比率が、各OSに対応する優先度520の比率となるように、各CPUにおける各OSの実行スケジューリングを行う。
【0131】
ここで、実行制御部366は、スケジューラ365がスケジューリングを開始すると、全てのCPUについてのOSの実行制御を一時的に中断する。
【0132】
アクセス制御操作部364は、スケジューラ365が全てのCPUについてのスケジューリングを完了するまで待機し(ステップS950:Noを繰り返し)た後に(ステップS950:Yes)、前述のセキュア領域設定処理を実行することで、更新されたアクセスフラグ530に対応するOSID510と同じ識別子のOSID410に対応する開始アドレス420と終了アドレス430とアクセス権440との値が書き込まれている、制御レジスタ群131に含まれるレジスタについて、そのレジスタの開始アドレス220と終了アドレス230とアクセス権240との値を初期値である論理値“0”に書き換える(ステップS960)。
【0133】
ステップS960の処理が終わると、アクセス制御操作部364は実行制御部366に、レジスタの書き込みが終了される旨の通知を行う。そして、実行制御部366は、一時的に中断していた、全てのCPUについてのOSの実行制御を再開する(ステップS970)。
【0134】
ステップS920の処理において、アクセス権が設定されていない場合に(ステップS920:No)、すなわち、取得したOSIDと同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれていない場合、又は、ステップS970の処理が終了した場合に、ハイパバイザ360は、そのアクセス終了処理を終了する。
【0135】
<アクセス制御処理>
アクセス制御処理は、アクセス制御装置130が行う処理であって、CPUA121〜CPUD124のいずれかからメモリ140へのアクセスの要求がある場合において、所定の条件が満たされるときに、そのアクセスを禁止する処理である。
【0136】
図10は、アクセス制御処理のフローチャートである。
【0137】
アクセス制御処理は、CPUA121〜CPUD124のいずれかからメモリ140へのアクセスが要求されることで開始される。
【0138】
アクセス制御処理が開始されると、アクセス制御装置130は、メモリ140へのアクセス要求が、セキュア領域141以外の領域(以下、「非セキュア領域」と呼ぶ。)へのアクセスであるか否かを調べる(ステップS1000)。
【0139】
ステップS1000の処理において、非セキュア領域へのアクセスでない場合に(ステップS1000:No)、アクセス制御装置130は、そのアクセスの領域が、制御レジスタ群131のうちのいずれかのレジスタにおいて、開始アドレス220と終了アドレス230とで示される領域に含まれるか否かを調べる(ステップS1010)。
【0140】
ステップS1010の処理において、そのアクセスの領域が、制御レジスタ群131のうちのいずれかのレジスタにおいて、開始アドレス220と終了アドレス230とで示される領域に含まれる場合(ステップS1010:Yes)と、ステップS1000の処理において、非セキュア領域へのアクセスである場合(ステップS1000:Yes)とに、アクセス制御装置130は、そのアクセスを禁止しない(ステップS1020)。
【0141】
ステップS1010の処理において、そのアクセスの領域が、制御レジスタ群131のうちのいずれかのレジスタにおいて、開始アドレス220と終了アドレス230とで示される領域に含まれない場合(ステップS1010:No)に、そのアクセスを禁止して、割込コントローラ125にメモリアクセス例外割込要求信号を送信する(ステップS1030)。
【0142】
ステップS1020の処理が終了した場合、又は、ステップS1030の処理が終了した場合には、アクセス制御装置130は、そのアクセス制御処理を終了する。
【0143】
<考察>
図11は、上記構成の計算機システム100における、各CPUのタイミングチャートの一例である。
【0144】
同図において、OSaと記述された長方形のそれぞれは、対応するCPUにおいて実行されているOSがOSa340であることを示し、OSbと記述された長方形のそれぞれは、対応するCPUにおいて実行されているOSがOSb350であることを示し、破線部分は、対応するCPUがアイドル状態であることを示す。
【0145】
第1期間1110は、CPUC123で実行されているセキュアプロセスによるセキュア領域141へのアクセスが行われている期間を示し、第2期間1120は、CPUB122で実行されているセキュアプロセスによるセキュア領域141へのアクセスが行われている期間を示す。
【0146】
同図にも示されているように、計算機システム100においては、いずれかのCPUで実行されているセキュアプロセスによるセキュア領域141へのアクセスが行われている期間(例えば、第1期間1110と第2期間1120。以下、この期間を「セキュア領域アクセス期間」と呼ぶ。)に、いずれかのCPUでOSb350が実行されることがない。従って、セキュア領域アクセス期間において、非セキュアプロセスが実行されることがない。
【0147】
また、同図にも示されているように、セキュア領域アクセス期間以外の期間においては、OSa340とOSb350とのいずれもが実行され得る。従って、セキュア領域アクセス期間以外の期間において、セキュアプロセスと非セキュアプロセスとのいずれもが実行され得る。
<実施の形態2>
<概要>
以下、本発明に係る計算機システムの一実施形態として、実施の形態1に係る計算機システム100の一部を変形した第1変形計算機システムについて説明する。
【0148】
この第1変形計算機システムは、そのハードウエア構成が実施の形態1に係る計算機システム100と同一のものであるが、メモリ140に記憶されているプログラムの一部が実施の形態1に係る計算機システム100と異なっている。
【0149】
実施の形態1に係る計算機システム100は、セキュアプロセスによるセキュア領域141へのアクセスが行われている期間に、アクセスフラグ530(
図5参照)の論理値が“1”となる構成の例であった。これに対して、実施の形態2に係る第1変形計算機システムは、セキュアプロセスによるセキュア領域141へのアクセスが行われている期間に、ハイパバイザによるOSの実行優先度が所定値(最大値)となる構成の例である。
【0150】
以下、本実施の形態2に係る第1変形計算機システムの構成について、図面を参照しながら、実施の形態1に係る計算機システム100との相違点を中心に説明する。
【0151】
<構成>
第1変形計算機システムのハードウエア構成は、実施の形態1に係る計算機システム100と同一のものである。よって、ここではその説明を省略する。
【0152】
これに対して、メモリ140に記憶されているプログラムの一部が実施の形態1に係る計算機システム100から変形されている。そして、このことによって、実施の形態1に係る計算機システム100において、CPUA121〜CPUD124上で実行対象となるモジュール群の一部が変形されている。
【0153】
図12は、第1変形計算機システムにおいて、CPUA121〜CPUD124上で実行対象となるモジュール群1200を模式的に示す模式図である。
【0154】
同図に示されるように、モジュール群1200は、実施の形態1に係るモジュール群300から、アクセスフラグ更新部361がOS優先度更新部1261に変形され、OSID管理テーブル記憶部362が変形OSID管理テーブル記憶部1262に変形され、スケジューラ365が変形スケジューラ1265に変形され、アクセス制御操作部364が変形アクセス制御操作部1264に変形されている。そしてこれらの変形に伴って、ハイパバイザ360がハイパバイザ1260に変形されている。
【0155】
変形OSID管理テーブル記憶部1262は、変形OSID管理テーブル1300を記憶する機能を有する。
【0156】
図13は、変形OSID管理テーブル1300のデータ構成の一例を示すデータ構成図である。
【0157】
同図に示されるように、変形OSID管理テーブル1300は、OSID1310と優先度1320とが対応付けられて構成される。
【0158】
OSID1310は、OSID510と同様の、OSを識別するための識別子である。
【0159】
優先度1320は、ハイパバイザ360がOSの実行制御を行う場合における、対応するOSID510によって識別されるOSの実行優先度である。
【0160】
ここでは、優先度1320は、0〜100までのいずれかの整数値を取り、より値の大き方が、より優先度が高くなっている。この優先度1320は、所定の条件を満たす場合に限って、最大優先度値“100”を取り、所定の条件を満たさない場合においては、0〜99までのいずれかの整数値を取る。なお、この優先度1320を利用した、ハイパバイザ1260によるOSの実行制御については、後程、変形スケジューラ1265の説明の部分で説明する。
【0161】
再び
図12に戻って、モジュール群1200の説明を続ける。
【0162】
OS優先度更新部1261は、以下の3つの機能を有する。
【0163】
最大優先度更新機能:セキュア領域開始指示部341又はセキュア領域開始指示部351からアクセス開始信号を受けた場合において、そのアクセス開始信号の送信元のOSが、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410によって識別されるOSに含まれているときに、変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300の、送信元OSを示すOSID1310に対応付けられている優先度1320を一時的に記憶した上で、最大優先度値“100”に更新する機能。
【0164】
非最大優先度更新機能:セキュア領域終了指示部342又はセキュア領域終了指示部352からアクセス終了信号を受けた場合において、そのアクセス開始信号の送信元のOSが、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410によって識別されるOSに含まれているときに、変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300の、送信元OSを示すOSID1310に対応付けられている優先度を、一時的に記憶している値に更新する機能。
【0165】
変形再スケジューリング要求機能:変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300の優先度1320を更新した場合に、変形スケジューラ1265に、更新した変形OSID管理テーブル1300に基づく新たなスケジューリングの依頼を行う機能。
【0166】
変形スケジューラ1265は、以下の2つの機能を有する。
【0167】
第1変形通常スケジューリング機能:変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300の優先度1320の中に、値が“100”となるものがない場合に、各CPUについて、実行する各OSの各実行時間の比率が、各OSに対応する優先度1320の比率となるように、各CPUにおける各OSの実行スケジューリングを行う機能。
【0168】
第1変形限定スケジューリング機能:変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300の優先度1320の中に、値が“100”となるものがある場合に、全てのCPUにおいて、実行するOSが、値が“100”となる優先度1320に対応するOSID1310によって識別されるOSに限定されるように、各CPUにおける各OSの実行スケジューリングを行う機能。
【0169】
変形アクセス制御操作部1264は、以下の2つの機能を有する。
【0170】
第1変形セキュア領域設定機能:変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300の優先度1320の値が“100”へと更新された場合において、その優先度1320に対応するOSID1310と同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれているときに、そのOSID410に対応する開始アドレス420と終了アドレス430とアクセス権440とを読み出して、制御レジスタ群131に含まれるレジスタのうちの、初期値が書き込まれている一のレジスタに、開始アドレス220と終了アドレス230とアクセス権240とを書き込む機能。
【0171】
第1変形セキュア領域解除機能:変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300の優先度1320の値が“100”から“100”以外へと更新された場合において、その優先度1320に対応するOSID1310と同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれているときに、そのOSID410に対応する開始アドレス420と終了アドレス430とアクセス権440との値が書き込まれている、制御レジスタ群131に含まれるレジスタについて、そのレジスタの開始アドレス220と終了アドレス230とアクセス権240との値を初期値である論理値“0”に書き換える機能。
【0172】
以上のように構成される第1変形計算機システムの行う動作について、以下図面を参照しながら説明する。
【0173】
<動作>
ここでは、第1変形計算機システムの行う動作のうち、特徴的な動作である、第1変形アクセス開始処理と第1変形再スケジューリング処理と第1変形セキュア領域設定処理と第1変形アクセス終了処理とについて説明する。
【0174】
<第1変形アクセス開始処理>
第1変形アクセス開始処理は、実施の形態1におけるアクセス開始処理(
図6等参照)の一部が変形された処理であって、ハイパバイザ1260が主体となって行う処理であって、OSa340又はOSb350から、セキュア領域141へのアクセスが開始される旨の通知を受けると、その通知に基づいて、実行するOSの再スケジューリングと制御レジスタ群131の設定とを行う処理である。
【0175】
図14は第1変形アクセス開始処理のフローチャートである。
【0176】
第1変形アクセス開始処理は、OSa340のセキュア領域開始指示部341又はOSb350のセキュア領域開始指示部351が、自モジュールを含むOSによって実行制御されているプロセスによる、セキュア領域141へのアクセスが開始されることを検知して、アクセス開始信号をOS優先度更新部1261へ送ることで開始される。
【0177】
第1変形アクセス開始処理が開始されると、OS優先度更新部1261は、送られたアクセス開始信号を受信する(ステップS1400)。
【0178】
アクセス開始信号を受信すると、OS優先度更新部1261は、受信したアクセス開始信号に含まれるOSIDを取得する(ステップS1410)。そして、取得したOSIDと同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれているか否かを調べることで、取得したOSIDによって識別されるOSに、セキュア領域に含まれる一の連続した記憶領域へのアクセス権が設定されているか否かを調べる(ステップS1420)。
【0179】
ステップS1420の処理において、アクセス権が設定されている場合に(ステップS1420:Yes)、すなわち、取得したOSIDと同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれている場合に、OS優先度更新部1261は、変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300の、取得したOSIDと同じ識別子のOSID1310に対応付けられている優先度1320を一時的に記憶して(ステップS1425)、最大優先度値“100”に更新する(ステップS1430)。そして、変形スケジューラ1265に、再スケジューリングを依頼する(ステップS1440)
再スケジューリングを依頼されると、変形スケジューラ1265は、後述の第1変形再スケジューリング処理を行うことで、各CPUの実行するOSが、値が“100”となる優先度1320に対応するOSID1310によって識別されるOSに限定されるように、各CPUにおける各OSの実行スケジューリングを行う。
【0180】
ここで、実行制御部366は、変形スケジューラ1265がスケジューリングを開始すると、全てのCPUについてのOSの実行制御を一時的に中断する。
【0181】
変形アクセス制御操作部1264は、変形スケジューラ1265が全てのCPUについてのスケジューリングを完了するまで待機し(ステップS1450:Noを繰り返し)た後に(ステップS1450:Yes)、後述の第1変形セキュア領域設定処理を実行することで、OS優先度更新部1261が取得したOSIDに対応する開始アドレス420と終了アドレス430とアクセス権440とを、制御レジスタ群131に含まれるレジスタのうちの、初期値が書き込まれている一のレジスタに書き込む(ステップS1460)。
【0182】
ステップS1470の処理は、実施の形態1におけるステップS670の処理(
図6等参照)と同様の処理である。よって、ここでは説明を省略する。
【0183】
ステップS620の処理において、アクセス権が設定されていない場合に(ステップS1420:No)、すなわち、取得したOSIDと同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれていない場合、又は、ステップS1470の処理が終了した場合に、ハイパバイザ1260は、そのアクセス開始処理を終了する。
【0184】
<第1変形再スケジューリング処理>
第1変形再スケジューリング処理は、実施の形態1における再スケジューリング処理(
図7等参照)の一部が変形された処理であって、実施の形態1における再スケジューリング処理(
図7等参照)の一部が変形された処理であって、変形スケジューラ1265が行う処理であって、再スケジューリングが依頼された場合に、変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300を参照して、各CPUにおける各OSのスケジューリングを行う処理である。
【0185】
図15は、第1変形再スケジューリング処理のフローチャートである。
【0186】
第1変形再スケジューリング処理は、OS優先度更新部1261から、再スケジューリングを依頼されることで開始される。
【0187】
第1変形再スケジューリング処理が開始されると、変形スケジューラ1265は、変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300に、値が“100”となる優先度1320が存在するか否かを調べる(ステップS1500)。
【0188】
ステップS1500の処理において、値が“100”となる優先度1320が存在する場合に(ステップS1500:Yes)、変形スケジューラ1265は、全てのCPUにおいて、実行するOSが、その値が“100”となる優先度1320に対応するOSID1310によって識別されるOSに限定されるように、各CPUにおける各OSの実行スケジューリングを行う(ステップS1510)。
【0189】
ステップS1500の処理において、値が“100”となる優先度1320が存在する場合に(ステップS1500:No)、変形スケジューラ1265は、各CPUについて、実行する各OSの各実行時間の比率が、各OSに対応する優先度1320の比率となるように、各CPUにおける各OSの実行スケジューリングを行う(ステップS1520)。
【0190】
ステップS1510の処理が終わった場合、又は、ステップS1520の処理が終わった場合に、変形スケジューラ1265は、その第1変形再スケジューリング処理を終了する。
【0191】
<第1変形セキュア領域設定処理>
第1変形セキュア領域設定処理は、実施の形態1におけるセキュア領域設定処理(
図8等参照)の一部が変形された処理であって、変形アクセス制御操作部1264が行う処理であって、変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300の優先度1320が更新された場合に、制御レジスタ群131に含まれるレジスタを更新する処理である。
【0192】
図16は、第1変形セキュア領域設定処理のフローチャートである。
【0193】
第1変形セキュア領域設定処理は、変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300の優先度1320の値が“100”へと更新される、又は“100”から“100”以外へと更新されることで開始される。
【0194】
セキュア領域設定処理が開始されると、アクセス制御操作部364は、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400を参照して、更新された優先度1320に対応するOSID1310と同じ識別子のOSID410に対応する開始アドレス420と終了アドレス430とアクセス権440とを読み出す(ステップS1600)。そして、更新された優先度1320の値が“100”であるか否かを調べる(ステップS1610)。
【0195】
ステップS1610の処理において、更新された優先度1320の値が“100”である場合に(ステップS1610:Yes)、変形アクセス制御操作部1264は、制御レジスタ群131に含まれるレジスタのうちの、初期値が書き込まれている一のレジスタに、開始アドレス220と終了アドレス230とアクセス権240とを書き込む(ステップS1620)。
【0196】
ステップS1610の処理において、更新された優先度1320の値が“100”でない場合に(ステップS1610:No)、変形アクセス制御操作部1264は、更新された優先度1320に対応するOSID1310と同じ識別子のOSID410に対応する開始アドレス420と終了アドレス430とアクセス権440との値が書き込まれている、制御レジスタ群131に含まれるレジスタについて、そのレジスタの開始アドレス220と終了アドレス230とアクセス権240との値を初期値である論理値“0”に書き換える(ステップS1630)。
【0197】
ステップS1620の処理が終わった場合、又は、ステップS1630の処理が終わった場合に、変形アクセス制御操作部1264は、その第1変形セキュア領域設定処理を終了する。
【0198】
<第1変形アクセス終了処理>
第1変形アクセス開始処理は、実施の形態1におけるアクセス終了処理(
図9等参照)の一部が変形された処理であって、ハイパバイザ1260が主体となって行う処理であって、OSa340又はOSb350から、セキュア領域141へのアクセスが終了される旨の通知を受けると、その通知に基づいて、実行するOSの再スケジューリングと制御レジスタ群131の設定とを行う処理である。
【0199】
図17は第1変形アクセス終了処理のフローチャートである。
【0200】
第1変形アクセス開始処理は、OSa340のセキュア領域終了指示部342又はOSb350のセキュア領域終了指示部352が、自モジュールを含むOSによって実行制御されているプロセスによる、セキュア領域141へのアクセスが終了されることを検知して、アクセス終了信号をOS優先度更新部1261へ送ることで開始される。
【0201】
第1変形アクセス終了処理が開始されると、OS優先度更新部1261は、送られたアクセス終了信号を受信する(ステップS1700)。
【0202】
アクセス終了信号を受信すると、OS優先度更新部1261は、受信したアクセス開始信号に含まれるOSIDを取得する(ステップS1710)。そして、取得したOSIDと同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれているか否かを調べることで、取得したOSIDによって識別されるOSに、セキュア領域に含まれる一の連続した記憶領域へのアクセス権が設定されているか否かを調べる(ステップS1720)。
【0203】
ステップS1720の処理において、アクセス権が設定されている場合に(ステップS1720:Yes)、すなわち、取得したOSIDと同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれている場合に、OS優先度更新部1261は、変形OSID管理テーブル記憶部1262に記憶される変形OSID管理テーブル1300の、取得したOSIDと同じ識別子のOSID1310に対応付けられている優先度1320を、一時的に記憶していた値に更新する(ステップS1730)。そして、変形スケジューラ1265に、再スケジューリングを依頼する(ステップS1740)
再スケジューリングを依頼されると、変形スケジューラ1265は、前述の第1変形再スケジューリング処理を行うことで、各CPUについて、実行する各OSの各実行時間の比率が、各OSに対応する優先度1320の比率となるように、各CPUにおける各OSの実行スケジューリングを行う。
【0204】
ここで、実行制御部366は、変形スケジューラ1265がスケジューリングを開始すると、全てのCPUについてのOSの実行制御を一時的に中断する。
【0205】
変形アクセス制御操作部1264は、変形スケジューラ1265が全てのCPUについてのスケジューリングを完了するまで待機し(ステップS1750:Noを繰り返し)た後に(ステップS1750:Yes)、前述の第1変形セキュア領域設定処理を実行することで、更新された優先度1320に対応するOSID1310と同じ識別子のOSID410に対応する開始アドレス420と終了アドレス430とアクセス権440との値が書き込まれている、制御レジスタ群131に含まれるレジスタについて、そのレジスタの開始アドレス220と終了アドレス230とアクセス権240との値を初期値である論理値“0”に書き換える(ステップS1760)。
【0206】
ステップS1770の処理は、実施の形態1におけるステップS970の処理(
図9等参照)と同様の処理である。よって、ここでは説明を省略する。
【0207】
ステップS920の処理において、アクセス権が設定されていない場合に(ステップS1720:No)、すなわち、取得したOSIDと同じ識別子が、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410に含まれていない場合、又は、ステップS1770の処理が終了した場合に、ハイパバイザ360は、そのアクセス終了処理を終了する。
<実施の形態3>
<概要>
以下、本発明に係る計算機システムの一実施形態として、実施の形態1に係る計算機システム100の一部を変形した計算機システム1800について説明する。
【0208】
この計算機システム1800は、そのハードウエア構成が、実施の形態1に係る計算機システム100から一部変形され、さらに、メモリ140に記憶され得ているプログラムの一部が実施の形態1に係る計算機システム100から一部変形されている。
【0209】
実施の形態1に係る計算機システム100は、OSに含まれるセキュア領域開始指示部341又はセキュア領域開始指示部351が、セキュア領域141へのアクセスが開始されることを検知する構成の例であった。これに対して、実施の形態3に係る計算機システム1800は、アクセス制御装置130から送られるメモリアクセス例外割込要求信号に基づいて、ハイパバイザが、セキュア領域141へのアクセスが開始されることを検知する構成の例である。
【0210】
以下、本実施の形態3に係る計算機システム1800の構成について、図面を参照しながら、実施の形態1に係る計算機システム100との相違点を中心に説明する。
【0211】
<構成>
図18は、計算機システム1800の主要なハードウエア構成を示すブロック図である。
【0212】
同図に示されるように、計算機システム1800は、実施の形態1に係る計算機システム100(
図1参照)に対して、タイマ1705が追加され、割込コントローラ125が割込コントローラ1825に変形されている。そして、割込コントローラ1825の変形に伴って、MPU120がMPU1820に変形されている。
【0213】
タイマ1705は、バス150に接続され、CPUA121〜CPUD124によって制御され、CPUA121〜CPUD124によって指定された時間を計時し、指定された時間が経過する際に、タイマ割込要求信号を、割込コントローラ1825に送る機能を有する。
【0214】
ここで、このタイマ割込要求信号は、計時時間を指定したCPUを特定する情報を含む。
【0215】
割込コントローラ1825は、アクセス制御装置130とCPUA121とCPUB122とCPUC123とCPUD124とに接続され、以下の2つの機能を有する。
【0216】
メモリアクセス例外通知機能:アクセス制御装置130からメモリアクセス例外割込要求信号を受けた場合に、禁止対象となったメモリアクセスを試みたCPU(以下、「アクセスCPU」と呼ぶ。)を特定して、特定したアクセスCPUに、アクセスCPUが特定可能なメモリアクセス例外割り込みを行う機能。
【0217】
タイマ割込通知機能:タイマ1705からタイマ割込要求信号を受けた場合に、計時時間を指定したCPUを特定して、特定したCPUに、そのCPUが特定可能な、タイマによる計時が終了した旨のタイマ割り込みを行う機能。
【0218】
図19は、計算機システム1800において、CPUA121〜CPUD124上で実行対象となるモジュール群1900を模式的に示す図である。
【0219】
同図に示されるように、モジュール群1900は、実施の形態1に係るモジュール群300(
図2等参照)から、OSa340が、セキュア領域開始指示部341とセキュア領域終了指示部342とが削除されることでOSa1940に変形され、OSb350が、セキュア領域開始指示部351とセキュア領域終了指示部352とが削除されることでOSb1950に変形され、アクセスフラグ更新部361が変形アクセスフラグ更新部1961に変形され、割込処理部1970が追加されている。そしてこれらの変形に伴って、ハイパバイザ360がハイパバイザ1960に変形されている。
【0220】
割込処理部1970は、以下の3つの機能を有する。
【0221】
メモリアクセス例外通知機能:割込コントローラ1825からCPUA121〜CPUD124のいずれかに対してなされたメモリアクセス例外割り込みを検知して、そのメモリアクセス例外割り込みがなされたCPUで実行されているOSを特定し、特定したOSを示す情報を含むメモリアクセス例外通知信号を、変形アクセスフラグ更新部1961に送る機能。
【0222】
タイマ終了通知機能:割込コントローラ1825からCPUA121〜CPUD124のいずれかに対してなされたタイマ割り込みを検知して、そのタイマ割り込みがなされたCPUで実行されているOSを特定し、特定したOSを示す情報を含むタイマ終了通知信号を、変形アクセスフラグ更新部1961に送る機能。
【0223】
メモリアクセス例外処理機能:割込コントローラ1825からCPUA121〜CPUD124のいずれかに対してなされたメモリアクセス例外割り込みを検知した場合において所定の条件を満たすときに、予め定められた、メモリアクセスが禁止された場合に行うメモリアクセス禁止処理を行う機能。
【0224】
変形アクセスフラグ更新部1961は、実施の形態1に係るアクセスフラグ更新部361が有する再スケジューリング要求機能に加えて、以下の2つの機能を有する。
【0225】
第1変形アクセスフラグ1更新機能:割込処理部1970からメモリアクセス例外通知信号を受けた場合において、そのメモリアクセス例外通知信号によって特定されるOSが、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410によって識別されるOSに含まれているときに、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500の、送信元OSを識別するOSID510に対応付けられているアクセスフラグ530を、論理値“1”に更新する機能。
【0226】
第1変形アクセスフラグ0更新機能:割込処理部1970からタイマ終了通知信号を受けた場合において、そのタイマ終了通知信号によって特定されるOSが、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410によって識別されるOSに含まれているときに、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500の、送信元OSを識別するOSID510に対応付けられているアクセスフラグ530を、論理値“0”に更新する機能。
【0227】
以上のように構成される計算機システム1800の行う動作について、以下図面を参照しながら説明する。
【0228】
<動作>
ここでは、計算機システム1800の行う動作のうち、特徴的な動作である、第2変形アクセス開始処理と第2変形アクセス終了処理とについて説明する。
【0229】
<第2変形アクセス開始処理>
第2変形アクセス開始処理は、実施の形態1におけるアクセス開始処理(
図6等参照)の一部が変形された処理であって、ハイパバイザ1960が主体となって行う処理であって、割込処理部1970が、割込コントローラ1825からCPUA121〜CPUD124のいずれかに対してなされたメモリアクセス例外割り込みを検知すると、そのメモリアクセス例外割り込みに基づいて、実行するOSの再スケジューリングと制御レジスタ群131の設定とを行う処理である。
【0230】
図20は第2変形アクセス開始処理のフローチャートである。
【0231】
第2変形アクセス開始処理は、割込処理部1970が、割込コントローラ1825からCPUA121〜CPUD124のいずれかに対してなされたメモリアクセス例外割り込みを検知して、そのメモリアクセス例外割り込みがなされたCPUで実行されているOSを特定し、特定したOSを示す情報を含むメモリアクセス例外通知信号を、変形アクセスフラグ更新部1961に送ることで開始される。
【0232】
第2変形アクセス開始処理が開始されると、変形アクセスフラグ更新部1961は、送られたメモリアクセス例外通知信号を受信する(ステップS2000)。
【0233】
メモリアクセス例外通知信号を受信すると、変形アクセスフラグ更新部1961は、受信したメモリアクセス例外通知信号によって特定されるOSを特定する(ステップS2010)。そして、特定したOSが、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400(
図4参照)のOSID410によって識別されるOSに含まれているか否かを調べることで、特定したOSに、セキュア領域141に含まれる一の連続した記憶領域へのアクセス権が設定されているか否かを調べる(ステップS2020)。
【0234】
ステップS2020の処理において、アクセス権が設定されている場合に(ステップS2020:Yes)、すなわち、特定したOSが、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410によって識別されるOSに含まれている場合に、変形アクセスフラグ更新部1961は、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500の、取得したOSIDと同じ識別子のOSID510に対応付けられているアクセスフラグ530を、論理値“1”に更新する(ステップS2030)。
【0235】
ステップS2040の処理〜ステップS2070の処理は、それぞれ、実施の形態1におけるアクセス開始処理のステップS640の処理〜ステップS670の処理において、アクセスフラグ更新部361を変形アクセスフラグ更新部1961に読み替えたものと同様の処理である。よって、ここでは、これらの処理の説明を省略する。
【0236】
ステップS2070の処理が終わると、アクセス制御操作部364は、タイマ1705に所定時間T1(例えば1μs)の計時を開始させる(ステップS2080)。
【0237】
ステップS2020の処理において、アクセス権が設定されていない場合に(ステップS2020:No)、すなわち、特定したOSが、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410によって識別されるOSに含まれていない場合に、割込処理部1970は、メモリアクセス禁止処理を行う(ステップS2090)。
【0238】
ステップS2080の処理が終了した場合、又は、ステップS2090の処理が終了した場合に、ハイパバイザ1960は、その第2変形アクセス開始処理を終了する。
【0239】
<第2変形アクセス終了処理>
第2変形アクセス終了処理は、実施の形態1におけるアクセス終了処理(
図9等参照)の一部が変形された処理であって、ハイパバイザ1960が主体となって行う処理であって、割込処理部1970が、タイマ1705からCPUA121〜CPUD124のいずれかに対してなされたタイマ割り込みを検知すると、そのタイマ割り込みに基づいて、実行するOSの再スケジューリングと制御レジスタ群131の設定とを行う処理である。
【0240】
図21は、第2変形アクセス終了処理のフローチャートである。
【0241】
第2変形アクセス終了処理は、割込処理部1970が、割込コントローラ1825からCPUA121〜CPUD124のいずれかに対してなされたタイマ割り込みを検知して、そのタイマ割り込みがなされたCPUで実行されているOSを特定し、特定したOSを示す情報を含むタイマ終了通知信号を、変形アクセスフラグ更新部1961に送ることで開始される。
【0242】
第2変形アクセス終了処理が開始されると、変形アクセスフラグ更新部1961は、送られたタイマ終了通知信号を受信する(ステップS2100)。
【0243】
タイマ終了通知信号を受信すると、変形アクセスフラグ更新部1961は、受信したタイマ終了通知信号によって特定されるOSを特定する(ステップS2110)。そして、特定したOSが、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400(
図4参照)のOSID410によって識別されるOSに含まれているか否かを調べることで、特定したOSに、セキュア領域141に含まれる一の連続した記憶領域へのアクセス権が設定されているか否かを調べる(ステップS2120)。
【0244】
ステップS2020の処理において、アクセス権が設定されている場合に(ステップS2120:Yes)、すなわち、特定したOSが、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410によって識別されるOSに含まれている場合に、変形アクセスフラグ更新部1961は、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500の、取得したOSIDと同じ識別子のOSID510に対応付けられているアクセスフラグ530を、論理値“0”に更新する(ステップS2130)。
【0245】
ステップS2140の処理〜ステップS2170の処理は、それぞれ、実施の形態1におけるアクセス終了処理のステップS940の処理〜ステップS970の処理において、アクセスフラグ更新部361を変形アクセスフラグ更新部1961に読み替えたものと同様の処理である。よって、ここでは、これらの処理の説明を省略する。
【0246】
ステップS2120の処理において、アクセス権が設定されていない場合に(ステップS2120:No)、すなわち、特定したOSが、セキュア領域管理テーブル記憶部363に記憶されるセキュア領域管理テーブル400のOSID410によって識別されるOSに含まれていない場合、又は、ステップS2170の処理が終了した場合に、ハイパバイザ1960は、その第2変形アクセス終了処理を終了する。
<実施の形態4>
<概要>
以下、本発明に係る計算機システムの一実施形態として、実施の形態1に係る計算機システム100の一部を変形した第2変形計算機システムについて説明する。
【0247】
この第2変形計算機システムは、そのハードウエア構成が実施の形態1に係る計算機システム100と同一のものであるが、メモリ140に記憶されているプログラムの一部が実施の形態1に係る計算機システム100と異なっている。
【0248】
実施の形態1に係る計算機システム100は、プロセスの実行制御を行うOSと、OSの実行制御を行うハイパバイザとを備える構成の例であった。これに対して、実施の形態4に係る第2変形計算機システムは、ハイパバイザを備えずに、1以上のプロセスからなるプロセスグループ単位でプロセスの実行制御を行うOSを備える構成の例である。
【0249】
以下、本実施の形態4に係る第2変形計算機システムの構成について、図面を参照しながら、実施の形態1に係る計算機システム100との相違点を中心に説明する。
【0250】
<構成>
第2変形計算機システムのハードウエア構成は、実施の形態1に係る計算機システム100と同一のものである。よって、ここではその説明を省略する。
【0251】
これに対して、メモリ140に記憶されているプログラムの一部が実施の形態1に係る計算機システム100から変形されている。そして、このことによって、実施の形態1に係る計算機システム100において、CPUA121〜CPUD124上で実行対象となるモジュール群の一部が変形されている。
【0252】
図22は、第2変形計算機システムにおいて、CPUA121〜CPUD124上で実行対象となるモジュール群2200を模式的に示す模式図である。
【0253】
同図に示されるように、モジュール群2200には、ユーザモード310で実行されるプロセスA2240〜プロセスZ2250と、第1特権モード320で実行されるOS2260とが含まれている。
【0254】
OS2260は、1以上のプロセスからなるプロセスグループ単位でプロセスA2240〜プロセスZ2250を実行制御する機能を有するオペレーティングシステムであって、アクセスフラグ更新部2261とPG(Process Group)ID管理テーブル記憶部2262とセキュア領域管理テーブル記憶部2263とアクセス制御操作部2264とスケジューラ2265と実行制御部2266とCPU間通信制御部2267とを含む。
【0255】
ここで、このOS2260は、任意の時刻において、CPUのそれぞれが一のプロセスグループを実行対象とするように、プロセスの実行制御を行う。
【0256】
プロセスA2240〜プロセスZ2250は、それぞれ、CPUA121〜CPUD124のいずれかがアプリケーションプログラムを実行することで生成されるタスクであって、セキュア領域開始指示部(セキュア領域開始指示部2241、セキュア領域開始指示部2251等)と、セキュア領域終了指示部(セキュア領域終了指示部2242、セキュア領域終了指示部等)とを含む。
【0257】
セキュア領域開始指示部2241は、自モジュールを含むプロセスによる、セキュア領域141へのアクセスが開始されることを検知して、セキュア領域141へのアクセスが開始されることを示す変形アクセス開始信号をアクセスフラグ更新部2261へ送る機能を有する。ここでは、この変形アクセス開始信号は、自信号を送るプロセスを含むプロセスグループを識別する識別子であるPGIDを含んでいる。
【0258】
セキュア領域終了指示部2242は、自モジュールを含むプロセスによる、セキュア領域141へのアクセスが終了されることを検知して、セキュア領域141へのアクセスが終了することを示す変形アクセス終了信号をアクセスフラグ更新部361へ送る機能を有する。ここでは、この変形アクセス終了信号は、自信号を送るプロセスを含むプロセスグループを識別する識別子であるPGIDを含んでいる。
【0259】
セキュア領域開始指示部2251とセキュア領域終了指示部2252とは、それぞれ、セキュア領域開始指示部2241とセキュア領域終了指示部2242と同等の機能を有する。よってここでは説明を省略する。
【0260】
セキュア領域管理テーブル記憶部2263は、変形セキュア領域管理テーブル2300を記憶する機能を有する。
【0261】
図23は、変形セキュア領域管理テーブル2300のデータ構成の一例を示すデータ構成図である。
【0262】
同図に示されるように、変形セキュア領域管理テーブル2300は、PGID2310と開始アドレス2320と終了アドレス2330とアクセス権2340とが対応付けられて構成される。
【0263】
PGID2310は、プロセスグループを識別するための識別子である。
【0264】
ここでは、PGID2310が“1”、“2”、“9”で識別されるプロセスグループは、それぞれ、セキュアアプリケーションプログラムを実行することで生成されるプロセスからなるセキュアプロセスグループであり、PGID2310が“1”、“2”、“9”で識別されるプロセスグループ以外のプロセスグループは、それぞれ、非セキュアアプリケーションプログラムを実行することで生成されるプロセスからなる非セキュアプロセスグループである。
【0265】
開始アドレス2320と終了アドレス2330とは、それぞれ、セキュア領域に含まれる一の連続した記憶領域についての開始アドレスと終了アドレスとである。
【0266】
アクセス権2340は、対応する開始アドレス2320と終了アドレス2330とによって指定される連続した記憶領域について、対応するPGID2310によって識別されるプロセスグループに含まれるプロセスからのアクセスの許可形態を示すアクセス形態情報である。
【0267】
このアクセス形態情報は、実施の形態1におけるアクセス権240におけるアクセス形態情報と同様のものである。よって説明を省略する。
【0268】
ここで、この変形セキュア領域管理テーブル2300は、システム開発時において予め定められたテーブルであって、その内容が更新不可となっている。
【0269】
再び
図22に戻って、モジュール群300の説明を続ける。
【0270】
PGID管理テーブル記憶部2262は、PGID管理テーブル2400を記憶する機能を有する。
【0271】
図24は、PGID管理テーブル2400のデータ構成の一例を示すデータ構成図である。
【0272】
同図に示されるように、PGID管理テーブル2400は、PGID2410と優先度2420とPID2430とアクセスフラグ2440とが対応付けられて構成される。
【0273】
PGID2410は、PGID2310と同様の、プロセスグループを識別するための識別子である。
【0274】
優先度2420は、OS2260がプロセスの実行制御を行う場合における、対応するPGID2410によって識別されるプロセスグループの実行優先度である。
【0275】
ここでは、優先度2420は、0〜99までのいずれかの整数値を取り、より値の大き方が、より優先度が高くなっている。なお、この優先度2420を利用した、OS2260によるプロセスの実行制御については、後程、スケジューラ2265の説明の部分で説明する。
【0276】
P(Process)ID2430は、対応するPGID2410で識別されるプロセスグループに含まれるプロセスを識別するための識別子である。
【0277】
アクセスフラグ2440は、対応するPGID2410によって識別されるプロセスグループに含まれるプロセスによって、セキュア領域141へのアクセスが行われているか否かを示すフラグである。
【0278】
ここで、アクセスフラグ2440は、論理値“1”の場合にセキュア領域141へのアクセスが行われていることを示し、論理値“0”の場合にセキュア領域141へのアクセスが行われていないことを示す。
【0279】
再び
図22に戻って、モジュール群2200の説明を続ける。
【0280】
アクセスフラグ更新部2261は、以下の3つの機能を有する。
【0281】
第2変形アクセスフラグ1更新機能:セキュア領域開始指示部(セキュア領域開始指示部2241、セキュア領域開始指示部2251等)から変形アクセス開始信号を受けた場合において、その変形アクセス開始信号の送信元のプロセスが、セキュア領域管理テーブル記憶部2263に記憶される変形セキュア領域管理テーブル2300のPGID2310によって識別されるプロセスグループに含まれるプロセスであるときに、PGID管理テーブル記憶部2262に記憶されるPGID管理テーブル2400の、送信元プロセスを識別するPID2430に対応付けられているアクセスフラグ2440を、論理値“1”に更新する機能。
【0282】
第2変形アクセスフラグ0更新機能:セキュア領域終了指示部(セキュア領域終了指示部2242、セキュア領域終了指示部2252等)から変形アクセス終了信号を受けた場合において、そのアクセス開始信号の送信元のプロセスが、セキュア領域管理テーブル記憶部2263に記憶される変形セキュア領域管理テーブル2300のPGID2310によって識別されるプロセスグループに含まれるプロセスであるときに、PGID管理テーブル記憶部2262に記憶されるPGID管理テーブル2400の、送信元プロセスを識別するPID2430に対応付けられているアクセスフラグ2440を、論理値“0”に更新する機能。
【0283】
変形再スケジューリング要求機能:PGID管理テーブル記憶部2262に記憶されるPGID管理テーブル2400のアクセスフラグ2440を更新した場合に、スケジューラ2265に、更新したPGID管理テーブル2400に基づく新たなスケジューリングの依頼を行う機能。
【0284】
スケジューラ2265は、以下の2つの機能を有する。
【0285】
第2変形通常スケジューリング機能:PGID管理テーブル記憶部2262に記憶されるPGID管理テーブル2400のアクセスフラグ2440の論理値が全て“0”の場合に、各CPUについて、実行する各プロセスグループに属するプロセスの各実行時間の比率が、各プロセスグループに対応する優先度2420の比率となるように、各CPUにおける各プロセスの実行スケジューリングを行う機能。
【0286】
第2変形限定スケジューリング機能:PGID管理テーブル記憶部2262に記憶されるPGID管理テーブル2400のアクセスフラグ2440の中に論理値が“1”となるものがある場合に、全てのCPUにおいて、実行するプロセスが、その論理値が“1”となるアクセスフラグ2440に対応するPGID2410によって識別されるプロセスグループに属するプロセスに限定されるように、各CPUにおける各プロセスの実行スケジューリングを行う機能。
【0287】
実行制御部2266は、スケジューラ2265によってスケジューリングされた実行スケジュールに基づいて、各CPUについてのプロセスの実行制御を行う機能を有する。
【0288】
この実行制御部2266は、スケジューラ2265がスケジューリングを行っている期間、全てのプロセスについての実行制御を一時的に中断する。
【0289】
CPU間通信制御部2267は、実施の形態1におけるCPU間通信制御部367と同様の機能を有する。よって、ここでは説明を省略する。
【0290】
アクセス制御操作部2264は、以下の2つの機能を有する。
【0291】
第2変形セキュア領域設定機能:PGID管理テーブル記憶部2262に記憶されるPGID管理テーブル2400のアクセスフラグ2440の論理値が“1”へと更新された場合において、そのアクセスフラグ2440に対応するPGID2410と同じ識別子が、セキュア領域管理テーブル記憶部2263に記憶される変形セキュア領域管理テーブル2300のPGID2310に含まれているときに、そのPGID2310に対応する開始アドレス2320と終了アドレス2330とアクセス権2340とを読み出して、制御レジスタ群131に含まれるレジスタのうちの、初期値が書き込まれている一のレジスタに、開始アドレス220と終了アドレス230とアクセス権240とを書き込む機能。
【0292】
第2変形セキュア領域解除機能:PGID管理テーブル記憶部2262に記憶されるPGID管理テーブル2400のアクセスフラグ2440の論理値が“0”へと更新された場合において、そのアクセスフラグ2440に対応するPGID2410と同じ識別子が、セキュア領域管理テーブル記憶部2263に記憶される変形セキュア領域管理テーブル2300のPGID2310に含まれているときに、そのPGID2310に対応する開始アドレス2320と終了アドレス2330とアクセス権2340との値が書き込まれている、制御レジスタ群131に含まれるレジスタについて、そのレジスタの開始アドレス220と終了アドレス230とアクセス権240との値を初期値である論理値“0”に書き換える機能。
【0293】
以上のように構成される第2変形計算機システムの行う動作について、以下図面を参照しながら説明する。
【0294】
<動作>
ここでは、計算機システム100の行う動作のうち、特徴的な動作である、第3変形アクセス開始処理と第2変形再スケジューリング処理と第2変形セキュア領域設定処理と第3変形アクセス終了処理とについて説明する。
【0295】
<第3変形アクセス開始処理>
第3変形アクセス開始処理は、実施の形態1におけるアクセス開始処理(
図6等参照)の一部が変形された処理であって、OS2260が主体となって行う処理であって、プロセスから、セキュア領域141へのアクセスが開始される旨の通知を受けると、その通知に基づいて、実行するプロセスの再スケジューリングと制御レジスタ群131の設定とを行う処理である。
【0296】
図25は第3変形アクセス開始処理のフローチャートである。
【0297】
第3変形アクセス開始処理は、セキュア領域開始指示部(セキュア領域開始指示部2241、セキュア領域開始指示部2251等)が、自モジュールを含むプロセスによる、セキュア領域141へのアクセスが開始されることを検知して、変形アクセス開始信号をアクセスフラグ更新部2261へ送ることで開始される。
【0298】
第3変形アクセス開始処理が開始されると、アクセスフラグ更新部2261は、送られた変形アクセス開始信号を受信する(ステップS2500)。
【0299】
変形アクセス開始信号を受信すると、アクセスフラグ更新部2261は、受信した変形アクセス開始信号に含まれるPGIDを取得する(ステップS2510)。そして、取得したPGIDと同じ識別子が、セキュア領域管理テーブル記憶部2263に記憶される変形セキュア領域管理テーブル2300のPGID2310に含まれているか否かを調べることで、取得したPGIDによって識別されるプロセスグループに、セキュア領域141に含まれる一の連続した記憶領域へのアクセス権が設定されているか否かを調べる(ステップS2520)。
【0300】
ステップS2520の処理において、アクセス権が設定されている場合に(ステップS2520:Yes)、すなわち、取得したPGIDと同じ識別子が、セキュア領域管理テーブル記憶部2263に記憶される変形セキュア領域管理テーブル2300のPGID2310に含まれている場合に、アクセスフラグ更新部2261は、PGID管理テーブル記憶部2262に記憶されるPGID管理テーブル2400の、取得したPGIDと同じ識別子のPGID2410に対応付けられているアクセスフラグ2440を、論理値“1”に更新する(ステップS2530)。そして、スケジューラ2265に、再スケジューリングを依頼する(ステップS2540)
再スケジューリングを依頼されると、スケジューラ2265は、後述の第2変形再スケジューリング処理を行うことで、各CPUの実行するプロセスが、その論理値が“1”となるアクセスフラグ2440に対応するPGID2410によって識別されるプロセスグループに属するプロセスに限定されるように、各CPUにおける各プロセスの実行スケジューリングを行う。
【0301】
ここで、実行制御部2266は、スケジューラ2265がスケジューリングを開始すると、全てのCPUについてのプロセスの実行制御を一時的に中断する。
【0302】
アクセス制御操作部2264は、スケジューラ2265が全てのCPUについてのスケジューリングを完了するまで待機し(ステップS2550:Noを繰り返し)た後に(ステップS2550:Yes)、後述の第2変形セキュア領域設定処理を実行することで、アクセスフラグ更新部2261が取得したPGIDに対応する開始アドレス2320と終了アドレス2330とアクセス権2340とを、制御レジスタ群131に含まれるレジスタのうちの、初期値が書き込まれている一のレジスタに書き込む(ステップS2560)。
【0303】
制御レジスタ群131の一のレジスタへの書き込みが終わると、アクセス制御操作部2264は実行制御部2266に、レジスタの書き込みが終了した旨の通知を行う。そして、実行制御部2266は、一時的に中断していた、全てのCPUについてのプロセスの実行制御を再開する(ステップS2570)。
【0304】
ステップS2520の処理において、アクセス権が設定されていない場合に(ステップS2520:No)、すなわち、取得したPGIDと同じ識別子が、セキュア領域管理テーブル記憶部2263に記憶される変形セキュア領域管理テーブル2300のPGID2310に含まれていない場合、又は、ステップS2570の処理が終了した場合に、OS2260は、その第3変形アクセス開始処理を終了する。
【0305】
<第2変形再スケジューリング処理>
再スケジューリング処理は、実施の形態1における再スケジューリング処理(
図7等参照)の一部が変形された処理であって、スケジューラ365が行う処理であって、再スケジューリングが依頼された場合に、OSID管理テーブル記憶部362に記憶されるOSID管理テーブル500を参照して、各CPUにおける各OSのスケジューリングを行う処理である。
【0306】
図26は、第2変形再スケジューリング処理のフローチャートである。
【0307】
第2再スケジューリング処理は、アクセスフラグ更新部2261から、再スケジューリングを依頼されることで開始される。
【0308】
再スケジューリング処理が開始されると、スケジューラ2265は、PGID管理テーブル記憶部2262に記憶されるPGID管理テーブル2400に、論理値が“1”となるアクセスフラグ2440が存在するか否かを調べる(ステップS2600)。
【0309】
ステップS2600の処理において、論理値が“1”となるアクセスフラグ2440が存在する場合に(ステップS2600:Yes)、スケジューラ2265は、全てのCPUにおいて、実行するプロセスが、そのアクセスフラグ2440に対応付けられているPGID2410によって識別されるプロセスグループに属するプロセスに限定されるように、各CPUにおける各プロセスの実行スケジューリングを行う(ステップS2610)。
【0310】
ステップS2600の処理において、論理値が“1”となるアクセスフラグ2440が存在しない場合に(ステップS2600:No)、スケジューラ2265は、各CPUについて、実行する各プロセスグループに属するプロセスの各実行時間の比率が、各プロセスグループに対応する優先度2420の比率となるように、各CPUにおける各プロセスの実行スケジューリングを行う(ステップS2620)。
【0311】
ステップS2610の処理が終わった場合、又は、ステップS2620の処理が終わった場合に、スケジューラ2265は、その第2変形再スケジューリング処理を終了する。
【0312】
<第2変形セキュア領域設定処理>
第2変形セキュア領域設定処理は、実施の形態1におけるセキュア領域設定処理(
図8等参照)の一部が変形された処理であって、アクセス制御操作部2264が行う処理であって、PGID管理テーブル記憶部2262に記憶されるPGID管理テーブル2400のアクセスフラグ2440が更新された場合に、制御レジスタ群131に含まれるレジスタを更新する処理である。
【0313】
図27は、第2変形セキュア領域設定処理のフローチャートである。
【0314】
第2変形セキュア領域設定処理は、PGID管理テーブル記憶部2262に記憶されるPGID管理テーブル2400のアクセスフラグ2440が更新されることで開始される。
【0315】
第2変形セキュア領域設定処理が開始されると、アクセス制御操作部2264は、セキュア領域管理テーブル記憶部2263に記憶される変形セキュア領域管理テーブル2300を参照して、更新されたアクセスフラグ2440に対応するPGID2410と同じ識別子のPGID2210に対応する開始アドレス2320と終了アドレス2330とアクセス権2340とを読み出す(ステップS2700)。そして、更新されたアクセスフラグ2440の論理値が“1”であるか否かを調べる(ステップS2710)。
【0316】
ステップS2710の処理において、論理値が“1”である場合に(ステップS2710:Yes)、アクセス制御操作部2264は、制御レジスタ群131に含まれるレジスタのうちの、初期値が書き込まれている一のレジスタに、開始アドレス220と終了アドレス230とアクセス権240とを書き込む(ステップS2720)。
【0317】
ステップS2710の処理において、論理値が“0”である場合に(ステップS2710:No)、アクセス制御操作部2264は、更新されたアクセスフラグ2440に対応するPGID2410と同じ識別子のPGID2310に対応する開始アドレス2320と終了アドレス2330とアクセス権2340との値が書き込まれている、制御レジスタ群131に含まれるレジスタについて、そのレジスタの開始アドレス220と終了アドレス230とアクセス権240との値を初期値である論理値“0”に書き換える(ステップS2730)。
【0318】
ステップS2720の処理が終わった場合、又は、ステップS2730の処理が終わった場合に、アクセス制御操作部2264は、その第2変形セキュア領域設定処理を終了する。
【0319】
<第3変形アクセス終了処理>
第3変形アクセス終了処理は、実施の形態1におけるアクセス終了処理(
図9等参照)の一部が変形された処理であって、OS2260が主体となって行う処理であって、プロセスから、セキュア領域141へのアクセスが終了される旨の通知を受けると、その通知に基づいて、実行するプロセスの再スケジューリングと制御レジスタ群131の設定とを行う処理である。
【0320】
図28は、第3変形アクセス終了処理のフローチャートである。
【0321】
第3変形アクセス開始処理は、セキュア領域終了指示部(セキュア領域終了指示部2242、セキュア領域終了指示部2252等)が、自モジュールを含むプロセスによる、セキュア領域141へのアクセスが終了されることを検知して、変形アクセス終了信号をアクセスフラグ更新部2261へ送ることで開始される。
【0322】
第3変形アクセス終了処理が開始されると、アクセスフラグ更新部2261は、送られた変形アクセス終了信号を受信する(ステップS2800)。
【0323】
変形アクセス終了信号を受信すると、アクセスフラグ更新部2261は、受信した変形アクセス終了信号に含まれるPGIDを取得する(ステップS2810)。そして、取得したPGIDと同じ識別子が、セキュア領域管理テーブル記憶部2263に記憶される変形セキュア領域管理テーブル2300のPGID2310に含まれているか否かを調べることで、取得したPGIDによって識別されるプロセスグループに、セキュア領域に含まれる一の連続した記憶領域へのアクセス権が設定されているか否かを調べる(ステップS2820)。
【0324】
ステップS2820の処理において、アクセス権が設定されている場合に(ステップS2820:Yes)、すなわち、取得したPGIDと同じ識別子が、セキュア領域管理テーブル記憶部2263に記憶される変形セキュア領域管理テーブル2300のPGID2310に含まれている場合に、アクセスフラグ更新部2261は、PGID管理テーブル記憶部2262に記憶されるPGID管理テーブル2400の、取得したPGIDと同じ識別子のPGID2410に対応付けられているアクセスフラグ2440を、論理値“0”に更新する(ステップS2830)。そして、スケジューラ2265に、再スケジューリングを依頼する(ステップS2840)。
【0325】
再スケジューリングを依頼されると、スケジューラ2265は、前述の第2変形再スケジューリング処理を行うことで、各CPUについて、実行する各プロセスグループに属するプロセスの各実行時間の比率が、各プロセスグループに対応する優先度2420の比率となるように、各CPUにおける各プロセスの実行スケジューリングを行う。
【0326】
ここで、実行制御部2266は、スケジューラ2265がスケジューリングを開始すると、全てのCPUについてのプロセスの実行制御を一時的に中断する。
【0327】
アクセス制御操作部2264は、スケジューラ2265が全てのCPUについてのスケジューリングを完了するまで待機し(ステップS2850:Noを繰り返し)た後に(ステップS2850:Yes)、前述の第2変形セキュア領域設定処理を実行することで、更新されたアクセスフラグ2440に対応するPGID2410と同じ識別子のPGID2310に対応する開始アドレス2320と終了アドレス2330とアクセス権2340との値が書き込まれている、制御レジスタ群131に含まれるレジスタについて、そのレジスタの開始アドレス220と終了アドレス230とアクセス権240との値を初期値である論理値“0”に書き換える(ステップS2860)。
【0328】
ステップS2860の処理が終わると、アクセス制御操作部2264は実行制御部2266に、レジスタの書き込みが終了した旨の通知を行う。そして、実行制御部2266は、一時的に中断していた、全てのCPUについてのプロセスの実行制御を再開する(ステップS2870)。
【0329】
ステップS2820の処理において、アクセス権が設定されていない場合に(ステップS2820:No)、すなわち、取得したPGIDと同じ識別子が、セキュア領域管理テーブル記憶部2263に記憶される変形セキュア領域管理テーブル2300のPGID2310に含まれていない場合、又は、ステップS2870の処理が終了した場合に、OS2260は、その第3変形アクセス終了処理を終了する。
【0330】
<考察>
図29は、上記構成の第2変形計算機システムにおける、各CPUのタイミングチャートの一例である。
【0331】
同図において、数字が記載された長方形のそれぞれは、対応するCPUにおいて実行されているプロセスが、その数字のPIDで識別されるプロセスであることを示し、破線部分は、対応するCPUがアイドル状態であることを示す。
【0332】
第1期間2910は、CPUC123で実行されている、PIDが140で識別されるセキュアプロセスによるセキュア領域141へのアクセスが行われている期間を示し、第2期間2920は、CPUB122で実行されている、PIDが100で識別されるセキュアプロセスによるセキュア領域141へのアクセスが行われている期間を示す。
【0333】
同図にも示されているように、第2変形計算機システムにおいては、いずれかのCPUで実行されているセキュアプロセスによるセキュア領域141へのアクセスが行われているセキュア領域アクセス期間(例えば、第1期間2910と第2期間2920。)に、いずれかのCPUで、そのセキュアプロセスが属するセキュアプロセスグループ(例えば、PGIDが1となるセキュアプロセスグループ)以外のプロセスが実行されることがない。従って、セキュア領域アクセス期間において、非セキュアプロセスが実行されることがない。
【0334】
また、同図にも示されているように、セキュア領域アクセス期間以外の期間においては、セキュアプロセスグループに属するセキュアプロセスと非セキュアグループに属する非セキュアプロセスとのいずれもが実行され得る。
<補足>
以上、本発明に係る計算機システムの一実施形態として、実施の形態1〜実施の形態4において、4つの計算機システムの例について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの計算機システムに限られないことはもちろんである。
【0335】
(1)実施の形態1において、メモリ140を利用するプロセッサの数が4である構成の例について説明した。しかしながら、並列に2以上のプログラムを実行することができる構成であれば、プロセッサの数は、必ずしも4である必要はない。一例として、プロセッサの数が2である構成の例等が考えられる。
【0336】
(2)実施の形態1において、メモリ140とバス150との間にアクセス制御装置130を備える構成の例について説明した。しかしながら、CPUA121〜CPUD124によるメモリ140へのアクセスに対して、アクセス制御装置130と同様のアクセス制御を実現することができれば、必ずしも、メモリ140とバス150との間にアクセス制御装置130を備える必要はない。一例として、バス150が、アクセス制御装置130と同等の機能を有する構成等が考えられる。
【0337】
(3)実施の形態1において、アクセス制御装置130は、制御レジスタ群131を備え、制御レジスタ群131に設定されたレジスタ値に基づいて、メモリへのアクセス制御を行う構成の例について説明した。しかしながら、アクセス制御装置130と同様の機能を実現することができれば、アクセス制御装置130は、必ずしも制御レジスタ群131を備える必要はない。一例として、アクセス制御装置130がコントローラを内蔵し、この内蔵するコントローラによって、メモリへのアクセスを制御する構成等が考えられる。
【0338】
(4)実施の形態1において、CPUA121〜CPUD124は、その動作モードとして、ユーザモードと第1特権モードと第2特権モードとを有し、第1特権モードでOSを実行し、第2特権モードでハイパバイザを実行する構成の例について説明した。これに対して、別の一例として、CPUA121〜CPUD124は、動作モードとして、ユーザモードと特権モードとを有し、特権モードでOSとハイパバイザとを実行する構成等が考えられる。
【0339】
(5)実施の形態3において、計算機システム1800は、CPUA121〜CPUD124によって制御されるタイマ1705を備える構成の例について説明した。これに対して、別の一例として、各CPUが、それぞれ互いに独立に動作するタイマを備える構成等が考えられる。
【0340】
(6)実施の形態1において、MPU120とアクセス制御装置130とメモリ140とバス150と第1インターフェース160と第2インターフェース170と第3インターフェース180とが1つの集積回路110に集積されている構成の例について説明した。しかしながら、集積回路110と同等の機能を実現することができれば、これらの回路が必ずしも1つの集積回路に集積されている必要はない。一例として、各回路がそれぞれ互いに異なる集積回路に集積されている構成等が考えられる。
【0341】
(7)以下、さらに本発明の一実施形態に係る計算機システムの構成及びその変形例と各効果について説明する。
【0342】
(a)本発明の一実施形態に係る計算機システムは、セキュア記憶領域を有するメモリと、当該メモリを利用する第1及び第2プロセッサとを備える計算機システムであって、前記第1プロセッサと前記第2プロセッサとのうちの少なくとも一方が、前記メモリに格納されているプログラムを実行することにより実現される機能的な構成要素として、前記第1プロセッサと前記第2プロセッサとで実行させる、複数のプログラム実行単位の実行制御を行う実行制御部と、前記第1プロセッサによる、前記セキュア記憶領域へのアクセスが許可されているアクセス許可種プログラム実行単位からの、前記セキュア記憶領域へのアクセスが開始されることを示すアクセス開始通知を受け付ける開始通知受付部とを有し、前記実行制御部は、前記開始通知受付部によって前記アクセス開始通知が受け付けられた場合に、前記第2プロセッサによって実行されるプログラム実行単位が、前記アクセス許可種プログラム実行単位に限定されるように、前記実行制御を行うことを特徴とする。
【0343】
上述の構成を備える本実施形態に係る計算機システムによると、セキュア記憶領域へのアクセスが許可されているアクセス許可種プログラム実行単位からの、セキュア記憶領域へのアクセスが開始されるまで期間において、実行制御部は、複数のプログラム実行単位の実行制御を行う。このため、この期間において、一のプロセッサについて、一のプログラム実行単位の中に実行するプログラムがなくなった場合であっても、そのプロセッサは、他のプログラム実行単位のプログラムを実行し得る。このことにより、この計算機システムは、セキュアプログラムからなるプログラム実行単位がセキュア記憶領域へのアクセスを行っている期間に、非セキュアプログラムを含むプログラム実行単位が実行対象とならない計算機システムについて、少なくともセキュアプログラムからなるプログラム実行単位によってセキュア領域へアクセスが開始されるまでの期間において、ギャングスケジューリング方式で各プロセッサのスケジューリングが行われる従来の計算機システムよりも、プロセッサの利用効率が向上される可能性を高くすることができる。
【0344】
図31は、上記変形例における計算機システム3100の概略構成図である。
【0345】
同図に示されるように計算機システム3100は、メモリ3110と第1プロセッサ3120と第2プロセッサ3130とを備える。
【0346】
メモリ3110はセキュア記憶領域を有する。一例として、実施の形態1におけるメモリ140として実現される。
【0347】
第1プロセッサ3120は、メモリ3110を利用する。一例として、実施の形態1におけるCPUA121として実現される。
【0348】
第2プロセッサ3130は、メモリ3110を利用する。一例として、実施の形態1におけるCPUB122として実現される。
【0349】
実行制御部3140は、第1プロセッサ3120と第2プロセッサ3130とのうちの少なくとも一方が、メモリ3110に格納されているプログラムを実行することにより実現される機能的な構成要素であって、第1プロセッサ3120と第2プロセッサ3130とで実行させる、複数のプログラム実行単位の実行制御を行う機能を有する。一例として、実施の形態1における、OSID管理テーブル記憶部362とセキュア領域管理テーブル記憶部363とスケジューラ365と実行制御部366とからなる機能ブロックとして実現される。
【0350】
開始通知受付部3150は、第1プロセッサ3120と第2プロセッサ3130とのうちの少なくとも一方が、メモリ3110に格納されているプログラムを実行することにより実現される機能的な構成要素であって、第1プロセッサ3120による、セキュア記憶領域へのアクセスが許可されているアクセス許可種プログラム実行単位からの、セキュア記憶領域へのアクセスが開始されることを示すアクセス開始通知を受け付ける機能を有する。一例として、実施の形態1における、アクセスフラグ更新部361として実現される。
【0351】
また、実行制御部3140は、開始通知受付部3150によってアクセス開始通知が受け付けられた場合に、第2プロセッサ3130によって実行されるプログラム実行単位が、アクセス許可種プログラム実行単位に限定されるように、実行制御を行う機能をも有する。
【0352】
(b)また、前記第1プロセッサによる、前記セキュア記憶領域へのアクセスが終了されることを示すアクセス終了通知を受け付ける終了通知受付部を有し、前記実行制御部は、前記限定的な実行制御を行っている場合において、前記終了通知受付部によって前記アクセス終了通知が受け付けられたときに、前記限定を解除して前記実行制御を行うとしてもよい。
【0353】
このような構成にすることで、セキュア記憶領域へのアクセスが許可されているアクセス許可種プログラム実行単位からの、セキュア記憶領域へのアクセスが終了される以降の期間において、実行制御部は、複数のプログラム実行単位の実行制御を行う。このため、この期間において、一のプロセッサについて、一のプログラム実行単位の中に実行するプログラムがなくなった場合であっても、そのプロセッサは、他のプログラム実行単位のプログラムを実行し得るようになる。
【0354】
(c)また、前記アクセス許可種プログラム実行単位それぞれについての実行制御値を管理する実行制御値管理部を有し、前記実行制御値管理部は、前記開始通知受付部によって前記アクセス開始通知が受け付けられた場合に、前記アクセス許可種プログラム実行単位のそれぞれについての実行制御値を所定値に設定し、前記アクセス許可種プログラム実行単位のそれぞれについての実行制御値が前記所定値に設定されている場合において、前記終了通知受付部によって前記アクセス終了通知が受け付けられたときに、前記アクセス許可種プログラム実行単位のそれぞれについての実行制御値を前記所定値以外のそれぞれの値に設定し、前記実行制御部は、前記アクセス許可種プログラム実行単位のそれぞれについての実行制御値が前記所定値に設定されている期間に限って、前記第2プロセッサに実行させるプログラム実行単位を、前記アクセス許可種プログラム実行単位に限定することで、前記実行制御を行うとしてもよい。
【0355】
このような構成にすることで、実行制御部は、実行制御値管理部に管理される実行制御値を利用して実行制御することができるようになる。
【0356】
(d)また、前記プログラム実行単位のそれぞれは、一のオペレーティングシステムと、当該オペレーティングシステムによって実行制御されるプログラム群とを含み、前記アクセス許可種プログラム実行単位のそれぞれは、含んでいるオペレーティングシステムが、前記セキュア記憶領域へのアクセスが許可されているアクセス許可種オペレーティングシステムのうちのいずれかであるとしてもよい。
【0357】
このような構成にすることで、一のオペレーティングシステムと、そのオペレーティングシステムによって実行制御されるプログラム群とからなる仮想計算機を、実行制御対象にすることができるようになる。
【0358】
(e)また、前記アクセス許可種オペレーティングシステムのそれぞれは、自オペレーティングシステムを実行する前記第1プロセッサによる、前記セキュア記憶領域へのアクセスの開始を検知する開始検知部と、前記開始検知部が前記セキュア記憶領域へのアクセスの開始を検知した場合に、前記開始通知受付部に前記アクセス開始通知を行う開始通知部と、自オペレーティングシステムを実行する前記第1プロセッサによる、前記セキュア記憶領域へのアクセスの終了を検知する終了検知部と、前記開始検知部が前記セキュア記憶領域へのアクセスの終了を検知した場合に、前記終了通知受付部に前記アクセス終了通知を行う終了通知部とを有するとしてもよい。
【0359】
このような構成にすることで、アクセス許可種オペレーティングシステムのそれぞれが、アクセス開始通知とアクセス終了通知とを行うことができるようになる。
【0360】
(f)また、設定レジスタを有し、当該設定レジスタに所定のレジスタ値が設定されている設定期間に、前記第1プロセッサによる前記セキュア記憶領域へのアクセス、及び前記第2プロセッサによる前記セキュア記憶領域へのアクセスを許可し、前記設定期間以外の期間に、前記第1プロセッサによる前記セキュア記憶領域へのアクセス、及び前記第2プロセッサによる前記セキュア記憶領域へのアクセスを禁止するアクセス制御装置をさらに備え、前記開始通知受付部によって前記アクセス開始通知が受け付けられた場合に、前記設定レジスタに前記所定のレジスタ値を設定し、前記設定レジスタに前記所定のレジスタ値が設定されている場合において、前記終了通知受付部によって前記アクセス終了通知が受け付けられたときに、前記設定レジスタに前記所定のレジスタ値以外のレジスタ値を設定するレジスタ設定部を有するとしてもよい。
【0361】
このような構成にすることで、アクセス制御装置に、アクセス開始通知が受け付けられてからアクセス終了通知が受け付けられるまでの期間に限って、セキュア記憶領域へのアクセスを許可させることができるようになる。
【0362】
(g)また、前記アクセス制御装置は、さらに、前記設定期間以外の期間において、前記第1プロセッサによる前記セキュア記憶領域へのアクセス命令が発行された場合に、前記開始通知受付部に前記アクセス開始通知を行うとしてもよい。
【0363】
このような構成にすることで、アクセス制御装置によってアクセス開始通知がなされるようになる。
【0364】
(h)本発明の一実施形態に係る計算機システムは、セキュア記憶領域を有するメモリと、当該メモリを利用する第1及び第2プロセッサとを備える計算機システムであって、前記第1プロセッサと前記第2プロセッサとのうちの少なくとも一方が、前記メモリに格納されているプログラムを実行することにより実現される機能的な構成要素として、前記第1プロセッサと前記第2プロセッサとで実行させる、複数のプログラム実行単位の実行制御を行う実行制御部と、前記第1プロセッサによる、前記セキュア記憶領域へのアクセスが終了されることを示すアクセス終了通知を受け付ける終了通知受付部を有し、前記実行制御部は、前記第2プロセッサによって実行されるプログラム実行単位が、前記アクセス許可種プログラム実行単位に限定されるように、前記実行制御を行う場合において、前記終了通知受付部によって前記アクセス終了通知が受け付けられたときに、前記限定を解除して前記実行制御を行うことを特徴とする。
【0365】
上述の構成を備える本実施形態に係る計算機システムによると、セキュア記憶領域へのアクセスが許可されているアクセス許可種プログラム実行単位からの、セキュア記憶領域へのアクセスが終了される以降の期間において、実行制御部は、複数のプログラム実行単位の実行制御を行う。このため、この期間において、一のプロセッサについて、一のプログラム実行単位の中に実行するプログラムがなくなった場合であっても、そのプロセッサは、他のプログラム実行単位のプログラムを実行し得る。このことにより、この計算機システムは、セキュアプログラムからなるプログラム実行単位がセキュア記憶領域へのアクセスを行っている期間に、非セキュアプログラムを含むプログラム実行単位が実行対象とならない計算機システムについて、少なくともセキュアプログラムからなるプログラム実行単位によってセキュア領域へアクセスが終了される以降の期間において、ギャングスケジューリング方式で各プロセッサのスケジューリングが行われる従来の計算機システムよりも、プロセッサの利用効率が向上される可能性を高くすることができる。