(57)【要約】従来の技術では、外部デバイスから処理すべき優先度の異なる複数の割込みが多重に発生する環境において、周期タスクの実行間隔を確保しつつ、優先度の高い割込みに対応することが困難であるという課題があった。本発明のパーティション実行制御装置は、各パーティションの初期タイムスライスと残りタイムスライス、実行優先度と実行状態、さらに、外部デバイスからの割込みを抑制する割込み禁止レベルを格納する第一の管理テーブルと、外部デバイスの割込み優先度と割込み配送先パーティションを格納する第二の管理テーブルとを備える。本発明のパーティション実行制御装置は、前記管理テーブルに格納される、実行優先度とタイムスライスを用いてパーティションの実行を制御し、割込み禁止レベルと割込み優先度を用いて割込みの実行を制御する。
2015097839.tif 000002
【特許請求の範囲】
【請求項１】
複数のパーティションを備えるパーティション実行制御装置であって、
各々のパーティションに対応したタスク実行可能時間と割込み禁止レベルを記憶する第一のテーブルと、
前記パーティションに接続された外部デバイスに対応する割込み優先度と割込み処理実行パーティションを対応付けた第二のテーブルを格納する記憶部を備え、
割込み禁止レベルを超える外部デバイスからの割込みを受け付けたとき前記第二のテーブルに格納されている割込み処理実行パーティションを、前記第一のテーブルに格納された当該パーティションのタスク実行可能時間が残っている限り実行するよう制御し、
各パーティションのタスク実行可能時間を周期的に初期値にリセットする制御部を備えることを特徴とするパーティション実行制御装置。
【請求項２】
請求項１記載のパーティション実行制御装置であって、タイマ割込みを契機に実行中のパーティションに対応する第一のテーブルに格納されたタスク実行可能時間を減算し、減算した結果を前記事項中のパーティションに対応する第一のテーブルに格納するパーティション実行制御装置。
【請求項３】
請求項２記載のパーティション実行制御装置であって、実行中のパーティションのタスク実行可能時間が尽きた場合に、タスク実行可能時間が残っているパーティションの割込み禁止レベルと、ペンディング中の割込みの優先度を比較し実行すべきパーティションを選択するパーティション実行制御装置。
【請求項４】
請求項３に記載のパーティション実行制御装置において、タスク実行可能時間を初期値にリセットする周期は前記複数のパーティションの各々で実行されるタスク実行時間の総和を基に設定することを特徴とするパーティション実行制御装置。
【請求項５】
複数のパーティションを備えるパーティション実行制御方法であって、
記憶部に各々のパーティションに対応したタスク実行可能時間と割込み禁止レベルを記憶する第一のテーブルと、
前記パーティションに接続された外部デバイスに対応する割込み優先度と割込み処理実行パーティションを対応付けた第二のテーブルを格納し、
割込み禁止レベルを超える外部デバイスからの割込みを受け付けたとき、制御部は前記第二のテーブルに格納されている割込み処理実行パーティションを、前記第一のテーブルに格納された当該パーティションのタスク実行可能時間が残っている限り実行するよう制御し、
各パーティションのタスク実行可能時間を周期的に初期値にリセットすることを特徴とするパーティション実行制御方法。
【請求項６】
請求項５記載のパーティション実行制御方法であって、タイマ割込みを契機に実行中のパーティションに対応する第一のテーブルに格納されたタスク実行可能時間を減算し、減算した結果を前記事項中のパーティションに対応する第一のテーブルに格納するパーティション実行制御方法。
【請求項７】
請求項６記載のパーティション実行制御方法であって、実行中のパーティションのタスク実行可能時間が尽きた場合に、タスク実行可能時間が残っているパーティションの割込み禁止レベルと、ペンディング中の割込みの優先度を比較し実行すべきパーティションを選択するパーティション実行制御方法。
【請求項８】
請求項７に記載のパーティション実行制御方法において、タスク実行可能時間を初期値にリセットする周期は前記複数のパーティションの各々で実行されるタスク実行時間の総和を基に設定することを特徴とするパーティション実行制御方法。
【請求項９】
請求項５に記載のパーティション実行制御方法を実行するプログラムを格納した計算機に読み込み可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
リアルタイムハイパバイザに関する。
【背景技術】
【０００２】
ひとつの物理計算機上で複数のＯＳならびにアプリケーションソフトウェアを動作させる仮想化技術が実用化されている。仮想化技術は、計算機が備えるＣＰＵ（Central Processing Unit）やメモリ、タイマデバイス、ＧＰＩＯ（General Purpose Input Output）、ＮＩＣ（Network Interface Card）やＨＢＡ（Host Bus Adapter）等のＩ／Ｏ（Input/Output）デバイス等の物理資源を仮想化し、複数の論理資源として扱うことを可能とする。仮想化技術を用いることにより、ひとつの物理計算機上に、それぞれ仮想化された論理資源を備える複数の仮想的な計算機即ち仮想マシンを提供することができ、それら仮想マシン上でＯＳならびにアプリケーションソフトウェアを個別に動作させることができる。【０００３】
仮想化技術を用いて計算機の物理資源を複数の論理資源に分割する機構は、論理分割（ＬＰＡＲ: Logical PARtitioning）と呼ばれ、論理分割により分割された区画（パーティション）は、論理区画と呼ばれる。仮想マシンを提供するファームウェアやソフトウェアは、仮想マシンモニタあるいはハイパバイザと呼ばれる。ハイパバイザは、ソフトウェアによるハードウェアのエミュレーションや、ハードウェアの備えるＩＯＭＭＵ（Input/Output Memory Management Unit）やＳＲ−ＩＯＶ（Single Root Input/Output Virtualization）等の仮想化支援機構を用いて物理資源の論理分割を実現し、論理区画内に仮想化された論理資源を備える仮想マシンを構築する。ＯＳやアプリケーションソフトウェアの実行単位であるプロセスやスレッド等のタスクは、ハイパバイザにより構築された仮想マシン内即ち論理分割により区切られたパーティション内で実行される。【０００４】
仮想化技術をインバータやエンジン等の機器の制御を主な用途とするマイクロコントローラに適用する場合、リアルタイム性の確保が重要となる。ここで、リアルタイム性とは、周期タスクの実行間隔の精度や外部デバイスからの割込みに対する応答の遅延等、システムの実時間制御に関わる性質を指す。仮想化技術は、一般に、ソフトウェアエミュレーションやハードウェア仮想化支援機構のオーバーヘッドにより、リアルタイム性に影響を与える。【０００５】
仮想化環境下のリアルタイム性の確保に適用可能な技術として、特許文献１には、論理分割されたパーティションに対して、個々のパーティション内で実行されるプロセスあるいはスレッドの優先度に応じて計算時間を分配する方式が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国出願公開第２００９２１０８７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前記従来の技術では、タスクの優先度に応じた計算時間の分配を行うことにより、周期タスクの実行間隔を制御する。しかしながら、割込み優先度を考慮した制御はなされていない。従って、外部デバイスから処理すべき優先度の異なる複数の割込みが多重に発生する環境において、周期タスクの実行間隔を確保しつつ、優先度の高い割込みに対応することが困難であるという課題があった。【０００８】
本発明の目的は、前記課題を解決する、周期タスクのリアルタイム性を損なうことなく優先度割込みへ対応する論理分割方式、および、当該論理分割機能を備えるハイパバイザを提供することである。
【課題を解決するための手段】
【０００９】
前記課題を解決するために、本発明のハイパバイザは、各パーティションの初期タスク実行可能時間と残りタスク実行可能時間、実行優先度と実行状態、さらに、外部デバイスからの割込みを抑制する割込み禁止レベルを格納する第一の管理テーブルと、外部デバイスの割込み優先度と割込み配送先パーティションを格納する第二の管理テーブルとを備える。【００１０】
本発明のハイパバイザは、第一の管理テーブルを参照し、残りタスク実行可能時間がありかつ実行状態が実行可能なパーティションを実行優先度順に実行する。外部デバイスからの割込みが発生した場合、本発明のハイパバイザは、第一の管理テーブルならびに第二の管理テーブルを参照し、実行中のパーティションの割込み禁止レベルを超えるかつ割込み配送先パーティションの残りタスク実行可能時間がある場合、実行中のパーティションの処理を中断し、割込み配送先パーティションを実行する。実行中のパーティションの割込み禁止レベルを超えないあるいは割込み配送先パーティションの残りタスク実行可能時間がない場合は、割込みを保留（ペンディング）し、実行中のパーティションの処理を続行する。保留された割込みは、ハイパバイザのスケジューラによって、次に割込み配送先パーティションの行がスケジュールされる際に処理される。【００１１】
本発明のハイパバイザは、第一の管理テーブルに格納される各パーティションの初期タスク実行可能時間の合計分の実行時間が経過した場合、各残りタスク実行可能時間を初期タスク実行可能時間にリセットする。
【発明の効果】
【００１２】
本発明によれば、周期タスクのリアルタイム性を損なうことなく割込みの優先度に応じて割込み処理タスクを実行するパーティション実行処理装置及び方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施例の制御システムの概要を示す。
【図２】第１の実施例の制御装置のハードウェア構成例を示す。
【図３】第１の実施例のパーティション管理テーブルの詳細を示す。
【図４】第１の実施例の割込み管理テーブルの詳細を示す。
【図５】第１の実施例のデバイスからの外部割込みに対応する割込み制御部の処理を示すフローチャートである。
【図６】第１の実施例のタイマ割込みに対応するパーティションスケジュール部の処理を示すフローチャートである。
【図７】第１の実施例のパーティションスケジュール部のスケジューリング処理を示すフローチャートである。
【図８】第１の実施例のハイパバイザによるパーティションの実行例を示す。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について、図面を用いて説明する。なお、各図面で同様の構成には同じ符号を付しその説明を省略する。
【実施例１】
【００１５】
図１は、本発明の第１の実施例に係る制御システムの概要を示す。本実施例の制御システムでは、制御装置(１００)が、例えば、インバータやアクチュエータ等の制御対象(１０１)を制御する。制御装置(１００)は、また、ネットワーク(１０２)やディスク装置(１０３)に接続されている。ネットワーク(１０２)は、例えば、ＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）であり、有線であっても無線であってもよい。制御装置(１００)は、ネットワーク(１０２)を介して外部の表示装置や操作装置等と通信を行う。ディスク装置(１０３)は、例えば、外付けＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置やＳＣＳＩ（Small Computer System Interface）ディスクであってもよく、内蔵フラッシュメモリやＳＳＤ（Solid State Disk）であってもよい。制御装置(１００)は、ディスク装置(１０３)に対して制御情報や計測値の読み込みおよび書き込みを行う。【００１６】
制御装置(１００)は、タイマ(１１０)、ＧＰＩＯ(１１１)、ＮＩＣ(１１２)、ＨＢＡ(１１３)等、割込みを生成するデバイスを備える。制御対象(１０１)はＧＰＩＯ(１１１)を、ネットワーク(１０２)はＮＩＣ(１１２)を、ディスク装置(１０３)はＨＢＡ(１１３)を、それぞれ介して制御装置(１００)に接続されている。【００１７】
制御装置(１００)は、本発明の論理分割機能を実現するハイパバイザ(１２０)を備える。ハイパバイザ(１２０)は、機能モジュールとして、論理分割部(１２１)、パーティションスケジュール部(１２２)、および、割込み制御部(１２３)を備える。ハイパバイザ(１２０)は、また、管理情報として、パーティション管理テーブル(３００)と割込み管理テーブル(４００)を備える。論理分割部(１２１)は、制御装置(１００)が備える物理資源を論理分割し、論理区画を提供する。パーティションスケジュール部(１２２)は、パーティション管理テーブル(３００)に格納される情報を用いて、各論理区画に実行時間を分配する。割込み制御部(１２３)は、割込み管理テーブル(４００)に格納される情報を用いて、デバイスからの割込みを各論理区画に配送する。ここで、割込みの配送とは、対象論理区画に仮想的な割込み信号を入力することにより、当該論理区画内で実行されるソフトウェアに割込み原因に対応する処理を行う契機を与えることを意味する。【００１８】
ハイパバイザ(１２０)は、これら機能モジュールおよび管理情報を用いて、制御装置（１００）上に、論理区画であるパーティション１（１３０）、パーティション２（１４０）、および、パーティション３（１５１）を構築し、それぞれのパーティションに実行時間を分配しデバイスからの割込みを配送する。パーティション１（１３０）、パーティション２（１４０）、および、パーティション３（１５１）内では、ＯＳ１（１３１）、ＯＳ２（１４１）、および、ＯＳ３（１５１）が、それぞれ独立に動作する。なお、ハイパバイザ(１２０)が提供するパーティションの数はひとつであっても、物理資源の許す限り複数であってもよい。また、各パーティション内で実行されるソフトウェアは、汎用ＯＳであっても、リアルタイム制御に特化したＯＳであるＲＴＯＳ（Real Time Operating System）であっても、ＯＳ機能を含まないリアルタイム制御アプリケーションソフトウェアのみ即ちＯＳレスであってもよい。【００１９】
本実施例では三つのパーティションと各々のパーティションで実行されるＯＳの例で説明するがハードウェアの能力に応じて更に多数のパーティション、ＯＳを実行してもよい。【００２０】
例えば、ＯＳ１（１３１）としてＲＴＯＳを、ＯＳ２（１４１）として汎用ＯＳを実行する場合、ハイパバイザ（１２０）は、制御対象（１０１）に接続されるＧＰＩＯ（１１１）からの割込みをパーティション１（１３０）に、ネットワーク(１０２)に接続されるＮＩＣ(１１２)からの割込みをパーティション２（１４０）に、それぞれ配送することにより、ＲＴＯＳであるＯＳ１（１３１）に制御対象(１０１)の制御を、汎用ＯＳであるＯＳ２（１４１）にネットワーク(１０２)を介した通信を、それぞれ処理させることができる。【００２１】
また、例えば、ＯＳ１（１３１）が周期タスクを実行する場合、ハイパバイザ（１２０）がパーティション１（１３０）に周期的に実行時間を与えることにより、ＯＳ１（１３１）が周期タスクを周期的に実行する機会を与えることができる。ＯＳ１（１３１）内に複数のタスクが存在する場合、ＯＳ１（１３１）が各タスクの優先度等に応じてタスクの実行順序をスケジューリングすればよい。ここで、タスクとは、プロセスやスレッド等のソフトウェアの処理の単位であり、割込みハンドラ処理やポーリング処理であってもよい。【００２２】
なお、本制御システムで実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでフレキシブルディスク（ＦＤ）、ＣＤ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供されてもよい。また、制御装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードして提供したり配布してもよく、ＲＯＭ等に予め組み込んで提供するように構成してもよい。【００２３】
図２は、本実施例の制御装置(１００)のハードウェア構成例を示す。制御装置(１００)は、ＣＰＵ(２００)、割込みコントローラ(２１０)、および、メモリ(２２０)を備える。なお、表示装置や電源装置等については記載および説明を省略する。【００２４】
ＣＰＵ(２００)は、メモリ(２２０)に格納されるプログラムコードを実行することにより、タイマ(１１０)、ＧＰＩＯ(１１１)、ＮＩＣ(１１２)、および、ＨＢＡ(１１３)のデバイスや割込みコントローラ(２１０)を含む、制御装置(１００)全体を制御する。ＣＰＵ(２００)は、制御装置(１００)上に複数存在してもよく、シングルコアプロセッサであってもマルチコアプロセッサであってもよい。また、ＣＰＵ(２００)は、ディスク装置(１０３)上に格納されるプログラムファイルをメモリ(２２０)に読み込んで実行してもよく、ネットワーク(１０２)を介して接続されるファイルサーバ装置等からプログラムファイルをメモリ(２２０)にダウンロードして実行してもよい。【００２５】
割込みコントローラ(２１０)は、例えば、ＡＰＩＣ（Advanced Programmable Interrupt Controller）やＮＶＩＣ（Nested Vectored Interrupt Controller）であり、タイマ(１１０)、ＧＰＩＯ(１１１)、ＮＩＣ(１１２)、および、ＨＢＡ(１１３)からの割込みのＣＰＵ(２００)への配送を制御する。【００２６】
メモリ(２２０)は、制御装置(１００)の主記憶装置であり、例えば、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）等を用いて構成される。メモリ(２２０)には、ＯＳ１領域(２３０)、ＯＳ２領域(２３１)、ＯＳ３領域(２３２)、および、ハイパバイザ領域(２３０)等が格納される。ＯＳ１領域(２３０)には、パーティション１（１３０）内で実行されるＯＳ１（１３１）のプログラムコードやデータ、そして、ＯＳ１（１３１）上で実行されるアプリケーションプログラムのコードやデータが格納される。ＯＳ２領域(２３１)およびＯＳ３領域(２３２)についても同様である。【００２７】
ハイパバイザ領域(２３０)には、ハイパバイザプログラム(２４１)、パーティション管理テーブル(３００)、および、割込み管理テーブル(４００)が格納される。ＣＰＵ(２００)は、ハイパバイザプログラム(２４１)を実行することにより、ハイパバイザ(１２０)の論理分割部(１２１)、パーティションスケジュール部(１２２)、および、割込み制御部(１２３)の各機能モジュールの機能、即ち、本発明の論理分割機能を実現する。なお、ハイパバイザプログラム(２４１)の機能の一部あるいは全部は、ハードウェアやＦＰＧＡ（Field Programmable Gate Array）等を用いて制御装置(１００)上に実装されていてもよい。また、ハイパバイザ(１２０)の機能は、制御装置(１００)のファームウェアとして実装してもよく、制御装置(１００)上で動作するホストＯＳの機能モジュールやドライバとして実装してもよい。ファームウェアとして実装する場合、ハイパバイザプログラム(２４１)をＲＯＭ（Read Only Memory）上に配置する等により、メモリ(２２０)上に占めるハイパバイザ領域(２４０)のサイズを削減することができる。ホストＯＳの機能モジュールやドライバとして実装する場合、ＯＳが提供するＧＵＩ（Graphical User Interface）やＷｅｂサービス等の機能を用いることにより、パーティション管理テーブル(３００)や割込み管理テーブル(４００)の値を容易に設定することができる。【００２８】
なお、ハイパバイザ(１２０)によるパーティションの実行とは、当該論理区画内のソフトウェアをＣＰＵ(２００)で実行することを意味する。例えば、パーティション１（１３０）を実行するとは、パーティション１（１３０）内のＯＳ１（１３１）のソフトウェアに対応する、メモリ２２０上のＯＳ１領域（２３０）に格納されるプログラムコードをＣＰＵ(２００)上で実行することを意味する。【００２９】
図３は、パーティション管理テーブル(３００)の詳細を示す。パーティション管理テーブル(３００)は、ハイパバイザ(１２０)の論理分割部(１２１)が提供するパーティション１（１３０）等の各パーティションについて、パーティション番号(３０１)、初期タイムスライス(３０２)、残りタイムスライス(３０３)、実行優先度(３０４)、割込み禁止レベル(３０５)、および、状態(３０６)を格納する。パーティションスケジュール部(１２２)は、これらパーティション管理テーブル(３００)の情報を用いてスケジューリング、即ち、次に実行するパーティションの選択を行う。【００３０】
タイムスライスはタスク実行可能時間を含むパーティションで使用可能な計算機時間である。【００３１】
パーティション番号(３０１)は、各パーティションを一意に識別する番号を示す。ハイパバイザ(１２０)の各機能モジュールは、パーティション番号(３０１)を用いて処理対象となるパーティションを管理する。【００３２】
初期タイムスライス(３０２)は、各パーティションにスケジュール周期毎に分配されるタイムスライス即ち実行時間を示す。タイムスライスは、例えば、マイクロ秒単位の時間やタイマ割込み間隔単位のクロックティック数である。この場合、初期タイムスライス(３０２)の合計値が一スケジュール周期となる。また、初期タイムスライス(３０２)は、例えば、一スケジュール周期を一秒として、スケジュール周期を基準とする分配割合としてもよい。この場合、単位タイムスライスあたりの実行時間は、初期タイムスライス(３０２)の合計値に応じて変化する。【００３３】
残りタイムスライス(３０３)は、あるスケジュール周期に各パーティションに残されたタイムスライスを示す。タイムスライスの値がクロックティック数の場合、実行中のパーティションの残りタイムスライス(３０３)の値は、タイマ割込みが発生する毎にパーティションスケジュール部(１２２)によって減算される。残りタイムスライス(３０３)の値がゼロとなったパーティションは、当該スケジュール周期中には実行されなくなる。各パーティションの初期タイムスライス(３０２)の合計分の実行時間が経過した、即ち、一スケジュール周期が完了した場合、各パーティションの残りタイムスライス(３０３)の値は、パーティションスケジュール部(１２２)によって初期タイムスライス(３０２)の値にリセットされる。【００３４】
実行優先度(３０４)は、各パーティションを実行する際の優先度を示す。実行優先度(３０４)の値は、例えば、１を最高優先度とする整数値であり、値の重複を許す場合は、パーティション番号(３０１)の若いものを優先すればよい。【００３５】
割込み禁止レベル(３０５)は、各パーティションの実行中に禁止する割込みのレベルを示す。割込み禁止レベル(３０５)の値は、例えば、１を最高レベルとする整数値であり、パーティションの実行中にこの割込み禁止レベルが示す優先度を超えない優先度の割込みが発生しても割込みは処理されず保留される。【００３６】
状態(３０６)は、各パーティションの実行状態を示す。状態(３０６)は、各パーティションの実行状態に応じてハイパバイザ(１２０)によって変更される。パーティションの実行状態には、例えば、実行中（Running）、実行準備完了（Ready）、および、イベント待ち（Wait）がある。現在実行中のパーティションの状態(３０６)は実行中となり、ＣＰＵ(２００)が制御装置(１００)上に複数存在する場合やマルチコアプロセッサの場合、実行中となるパーティションが同時に複数存在してもよい。実行機会が与えられれば即座に処理を開始できるパーティションの状態(３０６)は実行準備完了となり、実行機会が与えられても割込みや時間の経過等のイベントを待っているため即座に処理を開始できないものはイベント待ちとなる。実行中のパーティションは、例えば、残りタイムスライス(３０３)の値がゼロになった場合、処理を中断されて実行準備完了となり、残りタイムスライス(３０３)はゼロではないが制御対象(１０１)の制御周期に合わせるためにある期間休眠（スリープ）する等の場合イベント待ちとなる。【００３７】
パーティション管理テーブル(３００)の初期タイムスライス(３０２)、実行優先度(３０４)、および、割込み禁止レベル(３０５)の各値は、制御装置(１００)を管理するシステム管理者が制御システムの用途に合わせて手動で設定しても、設定支援ツール等を用いて半自動あるいは自動で設定してもよい。【００３８】
図４は、本実施例における割込み管理テーブル(４００)の詳細を示す。割込み管理テーブル(４００)は、制御装置(１００)が備えるタイマ(１１０)等の割込みを生成する各デバイスについて、デバイス番号(４０１)、割込み配送先パーティション番号(４０２)、および、割込み優先度(４０３)を格納する。割込み制御部(１２３)は、これら割込み管理テーブル(４００)の情報を用いて割込み配送先のパーティションを決定する、なお、割込み管理テーブル(４００)で管理するデバイスは、物理的なデバイスに限らず、論理分割部(１２１)によって論理分割された、あるいは、ＳＲ−ＩＯＶやソフトウェアエミュレーションによって仮想化されたデバイスであってもよい。【００３９】
デバイス番号(４０１)は、各デバイスを一意に識別する番号を示す。ハイパバイザ(１２０)の各モジュールは、デバイス番号(４０１)を用いて処理対象となるデバイスを管理する。【００４０】
割込み配送先パーティション番号(４０２)は、デバイス割込みが発生した場合に割込みを配送する対象となるパーティション、即ち、割込みを処理させるパーティションの番号を示す。なお、パーティション間で共有可能なデバイス等の場合は、割込み配送先として複数のパーティションを指定してもよい。【００４１】
割込み優先度(４０３)は、各デバイスが生成する割込みの優先度を示す。割込み優先度(４０３)の値は、例えば、１を最高優先度とする整数値であり、値の重複を許してもよい。発生した割込みの割込み優先度(４０３)が現在実行中のパーティションの割込み禁止レベル(３０５)より高く、かつ、割込み配送先パーティション番号(４０２)に指定されたパーティションの残りタイムスライス(３０３)の値がゼロでない場合、現在実行中のパーティションの処理は中断され、割込み配送先パーティション番号(４０２)に指定されたパーティションが実行される。それ以外の場合、発生した割込みはペンディングとなり処理は保留される。【００４２】
割込み管理テーブル(４００)の割込み配送先パーティション番号(４０２)、および、割込み優先度(４０３)の各値は、パーティション管理テーブル(３００)と同様に、システム管理者が手動で設定しても、設定支援ツール等を用いて半自動あるいは自動で設定してもよい。【００４３】
本実施例では三つのデバイスからの割込みを受け付けるシステムを例に説明するが、さらに多数の割込みを受け付けるシステムへの適用も可能である。【００４４】
以下、フローチャートを用いて本実施例のハイパバイザ(１２０)の各機能モジュールの処理を説明する。【００４５】
図５は、本実施例におけるデバイスからの外部割込みに対応する割込み制御部(１２３)の処理を示すフローチャートである。割込み制御部(１２３)は、例えば、ＧＰＩＯ(１１１)、ＮＩＣ(１１２)、および、ＨＢＡ(１１３)が生成する外部割込みを、割込み管理テーブル(４００)に格納された情報を用いて、パーティション１（１３０）等のパーティションに配送する。【００４６】
割込み制御部(１２３)は、外部割込みが発生した場合、パーティション管理テーブル(３００)を参照して現在実行中即ち状態(３０６)が実行中のパーティションの割込み禁止レベル(３０５)と、割込み管理テーブル(４００)を参照して割込みを発生したデバイスの割込み優先度(４０３)を比較する（Ｓ５００）。【００４７】
実行中のパーティションの割込み禁止レベル(３０５)がデバイスの割込み優先度(４０３)よりも大きい場合（Ｓ５００においてＹＥＳ）、割込み管理テーブル(４００)を参照して割込み配送先パーティション番号(４０２)の値を取得し、パーティション管理テーブル(３００)を参照し当該パーティションの残りタイムスライス(３０３)がゼロより大きいか判定する（Ｓ５１０）。【００４８】
割込み配送先パーティションの残りタイムスライス(３０３)がゼロよりも大きい、即ち当該スケジューリング周期に割り当てられたタイムスライスが残っている場合（Ｓ５１０においてＹＥＳ）、現在実行中のパーティションの処理を中断し、状態（３０６）を実行準備完了とし、割込み配送先パーティションの状態(３０６)を実行中として処理を実行する（Ｓ５２０）。【００４９】
実行中のパーティションの割込み禁止レベル(３０５)の値がデバイスの割込み優先度(４０３)の値以下であった場合（Ｓ５００においてＮＯ）、あるいは、割込み配送先パーティションの残りタイムスライス(３０３)がゼロであった場合（Ｓ５１０においてＮＯ）、発生した割込みはペンディングとして保留され（Ｓ５３０）、現在実行中のパーティションの処理が続行される（Ｓ５４０）。【００５０】
以上の処理により、本実施例のハイパバイザ(１２０)は、優先度の低い割込みに対応するパーティションの処理を実行中に異なるパーティションの処理を必要とする優先度の高い割込みが発生した場合に、実行中のパーティションの処理を中断し、優先度の高い割込みに対応するパーティションの処理を先に実行することができる。従って、高優先度の割込みの応答遅延を低減することができる。【００５１】
図６は、本実施例におけるタイマ割込みに対応するパーティションスケジュール部(１２２)の処理を示すフローチャートである。パーティションスケジュール部(１２２)は、例えば、タイマ(１１０)が周期的に生成するタイマ割込みを契機に、パーティション管理テーブル(３００)に格納される情報を用いて、次に実行するパーティションのスケジューリングを行う。【００５２】
パーティションスケジュール部(１２２)は、タイマ割込みが発生した場合、パーティション管理テーブル(３００)を参照し、現在実行中のパーティションの残りタイムスライス(３０３)の値がゼロよりも大きいか判定する（Ｓ６００）。【００５３】
実行中のパーティションの残りタイムスライス(３０３)の値がゼロよりも大きい場合（Ｓ６００においてＹＥＳ）、実行中のパーティションの残りタイムスライス(３０３)の値を減算、例えば、クロックティック数の場合は１だけデクリメントし（Ｓ６１０）、実行中のパーティションの処理を続行する（Ｓ６２０）。【００５４】
実行中のパーティションの残りタイムスライス(３０３)の値がゼロの場合（Ｓ６００においてＮＯ）、一スケジュール周期分の実行時間が経過したか判定する（Ｓ６３０）。【００５５】
一スケジュール周期分の実行時間が経過していない場合（Ｓ６３０においてＮＯ）、そのままスケジューリング処理へ進む。【００５６】
一スケジューリング周期の処理が完了した場合（Ｓ６３０においてＹＥＳ）、全てのパーティションの残りタイムスライス(３０３)の値を初期タイムスライス(３０２)の値にリセットし（Ｓ６４０）、スケジューリング処理へ進む。【００５７】
図７は、本実施例におけるパーティションスケジュール部(１２２)のスケジューリング処理を示すフローチャートである。パーティションスケジュール部(１２２)は、前述のタイマ割込み、あるいは、実行中のパーティションのイベント待ち状態への移行を契機として、スケジューリング処理を実行する。【００５８】
パーティションスケジュール部(１２２)は、最初に、パーティション管理テーブル(３００)を参照し、残りタイムスライス(３０３)の値がゼロよりも大きく、かつ、状態(３０６)が実行準備完了のパーティションのうち、最優先のもの即ち実行優先度(３０４)の値が最も小さいものを選択する（Ｓ７００）。次に、ペンディングとなっている割込みが存在するか判定する（Ｓ７１０）。【００５９】
ペンディングとなっている割込みが存在する場合（Ｓ７１０においてＹＥＳ）、割込み管理テーブル(４００)を参照し、ペンディングとなっている割込みのうち、最優先のもの即ち割込み優先度(４０３)の値が最も小さいものを選択する（Ｓ７２０）。次に、選択したパーティションの割込み禁止レベル３０５と、選択した割込みの割込み優先度４０３とを比較する（Ｓ７３０）。【００６０】
割込み禁止レベル(３０５)が割込み優先度４０３より高い場合（Ｓ７３０においてＹＥＳ）、パーティション管理テーブル(３００)を参照し、選択した割込みの割込み配送先パーティション番号(４０２)に対応するパーティションの残りタイムスライス(３０３)の値がゼロより大きいか判定する（Ｓ７４０）。【００６１】
割込み配送先パーティションの残りタイムスライス(３０３)がゼロよりも大きい即ちタイムスライスが残っている場合（Ｓ７４０においてＹＥＳ）、割込み配送先パーティションの処理を実行する（Ｓ７５０）。【００６２】
ペンディングとなっている割込みが存在しない場合（Ｓ７１０においてＮＯ）、選択したパーティションの割込み禁止レベル(３０５)が、選択した割込みの割込み優先度(４０３)より低ければ（Ｓ７３０においてＮＯ）、あるいは、割込み配送先パーティションの残りタイムスライス(３０３)がゼロの場合（Ｓ７４０においてＮＯ）、最初に選択されたパーティションの処理が継続される（Ｓ７６０）。【００６３】
以上の処理により、本発明のハイパバイザ(１２０)は、パーティションの実行優先度ならびにタイムスライスを用いてパーティションの実行間隔を制御することができ、かつ、パーティションの割込み禁止レベルならびに割込みの優先度に応じたペンディングとなった割込みの処理を実行することができる。【００６４】
図８は、本実施例におけるハイパバイザ(１２０)によるパーティションの実行例を示す。Ｔ０を開始時刻として、Ｔ１は一スケジュール周期を経過した時刻を、Ｔ２はさらに一スケジュール周期を経過した時刻を、それぞれ表す。Ｐ１、Ｐ２、および、Ｐ３は、パーティション１（１３０）、パーティション２（１４０）、および、パーティション３（１５０）に、それぞれ対応し、各パーティションが実行されている期間を矩形領域で表す。【００６５】
Ｉ１は割込み制御対象(１０１)に接続されたデバイス番号(４０１)が１のＧＰＩＯ(１１１)からの割込みを、Ｉ２はネットワーク(１０２)に接続されたデバイス番号(４０１)が２のＮＩＣ(１１２)からの割込みを、それぞれ表す。これら割込みの矢印は、破線はペンディングになったものを、実線は実際に配送されたものを、それぞれ表す。なお、タイマ(１１０)からのタイマ割込みの表示、および、それに伴うハイパバイザ(１２０)によるタイマ割込み処理（図６）における実行中のパーティションの残りタイムスライス(３０３)の値がゼロより大きい場合（Ｓ６００においてＹＥＳ）の、残りタイムスライス(３０３)の値の減算処理（Ｓ６１０）については説明を省略する。【００６６】
時刻Ｔ０において、ペンディングとなっている割込みがなく、各パーティションおよび各割込みの設定が、パーティション管理テーブル(３００)および割込み管理テーブル(４００)に、それぞれ示したように構成されていたとする。【００６７】
最初に、ハイパバイザ(１２０)のスケジューリング処理（図７）により、パーティション１（１３０）が実行を開始される。ここで、パーティション１（１３０）内のＯＳ１（１３１）で実行されるタスクＴＡＳＫ１１は周期タスクであったとする。【００６８】
次に、時刻ｔ１において、割込みＩ２が発生したとする。この時、ハイパバイザ(１２０)の外部割込み処理（図５）において、実行中であるパーティション１（１３０）の割込み禁止レベル(３０５)１が、割込みＩ２の割込み優先度(４０３)３よりも高いため（Ｓ５００においてＮＯ）、割込みＩ２はペンディングとなり（Ｓ５３０）、実行中であるパーティション１（１３０）の周期タスクＴＡＳＫ１１の処理が継続される（Ｓ５４０）。【００６９】
次に、時刻ｔ２において、ＯＳ１（１３１）の周期タスクＴＡＳＫ１１が終了し、パーティション１（１３０）が残りタイムスライス（３０３）を残して状態(３０６)をイベント待ち状態に移行したとする。この時、ハイパバイザ(１２０)のスケジューリング処理（図７）が実行され、残りタイムスライス(３０３)が残っており、かつ、状態(３０６)が実行準備完了であるパーティションのうち、実行優先度(３０４)が最も高いパーティション３（１５０）が選択される（Ｓ７００）。【００７０】
次に、Ｉ２がペンディングとなっているため（Ｓ７１０においてＹＥＳ）、割込み優先度(４０３)が最も高いペンディング割込みとしてＩ２が選択される（Ｓ７２０）。選択されたパーティション３（１５０）の割込み禁止レベル(３０５)８が、Ｉ２の割込み優先度(４０３)３より低く（Ｓ７３０においてＹＥＳ）、かつ、割込み配送先パーティション番号(４０２)に示される割込み配送先パーティション２（１４０）の残りタイムスライスがゼロより大きいため（Ｓ７４０においてＹＥＳ）、割込み配送先であるパーティション２（１４０）が実行され（Ｓ７５０）、割込みＩ２割込みハンドラタスクであるＴＡＳＫ２１が実行される。【００７１】
次に、時刻ｔ３において、タイマ割込みが発生し、ハイパバイザ(１２０)のタイマ割込み処理（図６）が実行されたとする。この時、実行中のパーティション２（１４０）の残りタイムスライス(３０３)がゼロになっていたとすると（Ｓ６００においてＮＯ）、一スケジューリング周期分の実行時間は経過しておらず（Ｓ６３０においてＮＯ）、そのままハイパバイザ(１２０)のスケジューリング処理（図７）が実行される。ここで、残りタイムスライス(３０３)が残っており、かつ、状態(３０６)が実行可能状態のパーティション３（１５０）が選択され（Ｓ７００）、ペンディングとなっている割込みがないため（Ｓ７１０においてＮＯ）、選択されたパーティション３（１５０）が実行され（Ｓ７６０）、ＴＡＳＫ３１が実行される。
次に、時刻ｔ４において、割込みＩ１が発生したとする。この時、ハイパバイザ１２０の外部割込み処理（図５）において、実行中であるパーティション３（１５０）の割込み禁止レベル(３０５)８が、割込みＩ１の割込み優先度(４０３)２よりも低く（Ｓ５００においてＹＥＳ）、かつ、割込み配送先であるパーティション１（１３０）の残りタイムスライス(３０３)が残っているため（Ｓ５１０においてＹＥＳ）、割込み配送先であるパーティション１（１３０）が実行され（Ｓ５２０）、割込みハンドラタスクであるＴＡＳＫ１２によって割込みＩ１が処理される。【００７２】
次に、時刻ｔ５において、タイマ割込みが発生し、ハイパバイザ(１２０)のタイマ割込み処理（図６）が実行されたとする。この時、ＯＳ１（１３１）の割込みハンドラタスクが終了し、状態(３０６)が実行準備完了状態であるが、残りタイムスライス(３０３)がゼロになっていたとする。この場合、ハイパバイザ(１２０)のタイマ割込み処理（図６）に続くスケジューリング処理（図７）により、残りタイムスライス(３０３)が残っているパーティション３（１５０）が実行され、中断されていたＴＡＳＫ３１の処理が再開される。【００７３】
次に、時刻ｔ６において、割込みＩ２が発生し、ハイパバイザ(１２０)の外部割込み処理（図５）が実行されたとする。この時、実行中のパーティション３（１５０）の割込み禁止レベル(３０５)８は、Ｉ２の割込み優先度３よりも低い（Ｓ５００においてＹＥＳ）が、割込み配送先であるパーティション２（１４０）の残りタイムスライス(３０３)がゼロのため（Ｓ５１０においてＮＯ）、割込みＩ２はペンディングとなり（Ｓ５３０）、実行中であるパーティション３（１５０）のＴＡＳＫ３１の処理が継続される（Ｓ５４０）。【００７４】
次に、時刻Ｔ１即ち一スケジューリング周期経過時にタイマ割込みが発生し、ハイパバイザ(１２０)のタイマ割込み処理（図６）が実行されたとする。この時、一スケジューリング周期分の実行時間が経過したため（Ｓ６３０においてＹＥＳ）、全パーティションの残りタイムスライス(３０３)の値が、初期タイムスライス(３０２)の値にリセットされる（Ｓ６４０）。続くスケジューリング処理（図７）により、パーティション１（１３０）が選択され（Ｓ７００）、その割込み禁止レベル(３０５)２がペンディング中の割込みＩ２の割込み優先度(４０３)３より高いため（Ｓ７３０においてＮＯ）、パーティション１（１３０）が実行される（Ｓ７６０）。ここでも、パーティション１（１３０）内のＯＳ１（１３１）で実行されるタスクは周期タスクＴＡＳＫ１１であったとする。【００７５】
次に、時刻ｔ７において、割込みＩ１が発生し、ハイパバイザ(１２０)の外部割込み処理（図５）が実行されたとする。この時、実行中のパーティション１（１３０）の割込み禁止レベル（３０５）１は、割込みＩ１の割込み優先度(４０３)２より高いため、割込みＩ１はペンディングとなり（Ｓ５３０）、実行中であるパーティション１（１３０）の処理が継続（Ｓ５４０）即ちＯＳ１（１３１）で実行される周期タスクＴＡＳＫ１１の処理が継続される。【００７６】
次に、時刻ｔ８において、ＯＳ１（１３１）の周期タスクＴＡＳＫ１１が終了し、パーティション１（１３０）が残りタイムスライス(３０３)を残して状態(３０６)をイベント待ち状態に移行したとする。この時、ハイパバイザ(１２０)のスケジューリング処理（図７）が実行され、残りタイムスライス(３０３)がゼロより大きく、かつ、状態(３０６)が実行準備完了であるパーティションのうち、実行優先度(３０４)が最も高いパーティション３（１５０）が選択される（Ｓ７００）。しかしながら、Ｉ１およびＩ２がペンディングとなっているため（Ｓ７１０においてＹＥＳ）、割込み優先度４０３が最も高いペンディング割込みとしてＩ１が選択される（Ｓ７２０）。選択されたパーティション３（１５０）の割込み禁止レベル(３０５)８が、Ｉ１の割込み優先度(４０３)２より低く（Ｓ７３０においてＹＥＳ）、かつ、割込み配送先パーティション１（１３０）の残りタイムスライスがゼロより大きいため（Ｓ７４０においてＹＥＳ）、割込み配送先であるパーティション１（１３０）が実行され（Ｓ７５０）、割込みＩ１の割込みハンドラであるＴＡＳＫ１２が実行される。【００７７】
次に、時刻ｔ９において、タイマ割込みが発生し、ハイパバイザ(１２０)のタイマ割込み処理（図６）が実行されたとする。この時、実行中のパーティション１（１３０）の残りタイムスライス（３０３）がゼロになっていたとすると（Ｓ６００においてＮＯ）、一スケジューリング周期分の実行時間は経過しておらず（Ｓ６３０においてＮＯ）、そのままハイパバイザ(１２０)のスケジューリング処理（図７）が実行される。この時、残りタイムスライス(３０３)がゼロより大きく、かつ、状態(３０６)が実行準備完了であるパーティションのうち、実行優先度(３０４)が最も高いパーティション３（１５０）が選択される（Ｓ７００）。次に、Ｉ２がペンディングとなっているため（Ｓ７１０においてＹＥＳ）、割込み優先度(４０３)が最も高いペンディング割込みとしてＩ２が選択される（Ｓ７２０）。選択されたパーティション３（１５０）の割込み禁止レベル(３０５)８が、Ｉ２の割込み優先度(４０３)３より低く（Ｓ７３０においてＹＥＳ）、かつ、割込み配送先パーティション番号(４０２)に示される割込み配送先パーティション２（１４０）の残りタイムスライスがゼロより大きいため（Ｓ７４０においてＹＥＳ）、割込み配送先であるパーティション２（１４０）が実行され（Ｓ７５０）、割込みＩ２の割込みハンドラタスクであるＴＡＳＫ２１が実行される。【００７８】
次に、時刻ｔ１０において、タイマ割込みが発生し、ハイパバイザ(１２０)のタイマ割込み処理（図６）が実行されたとする。この時、実行中のパーティション２（１４０）の残りタイムスライス(３０３)がゼロになっていたとすると（Ｓ６００においてＮＯ）、一スケジューリング周期分の実行時間は経過しておらず（Ｓ６３０においてＮＯ）、そのままハイパバイザ(１２０)のスケジューリング処理（図７）が実行される。ここで、残りタイムスライス(３０３)がゼロより大きく、かつ、状態(３０６)が実行可能状態のパーティション３（１５０）が選択され（Ｓ７００）、ペンディングとなっている割込みがないため（Ｓ７１０においてＮＯ）、選択されたパーティション３（１５０）が実行され（Ｓ７６０）、ＴＡＳＫ３２が実行される。【００７９】
最後に、時刻Ｔ２即ちさらに一スケジューリング周期経過時にタイマ割込みが発生し、ハイパバイザ(１２０)のタイマ割込み処理（図６）が実行されたとする。この時、さらに一スケジューリング周期分の実行時間が経過したため（Ｓ６３０においてＹＥＳ）、全パーティションの残りタイムスライス(３０３)の値が、初期タイムスライス(３０２)の値にリセットされる（Ｓ６４０）。続くスケジューリング処理（図７）により、パーティション１（１３０）が選択され（Ｓ７００）、ペンディングの割込みがないため（Ｓ７１０においてＮＯ）、選択されたパーティション１（１３０）が実行される（Ｓ７６０）。【００８０】
以上に説明したように、本実施例の制御システムでは、周期タスクを実行するパーティションの割込み禁止レベルを制御対象の割込み優先度より高くし、その他のパーティションの割込み禁止レベルを制御対象の割込み優先度より低くしておくことにより、最優先の周期タスクの実行を阻害することなく、その他のタスクに優先して制御対象の割込みを処理することが可能となる。【００８１】
従って、本実施例によれば、周期タスクのリアルタイム性を損なうことなく優先度割込みへ対応する論理分割方式、および、当該論理分割機能を備えるハイパバイザを提供することができる。【００８２】
スケジュール周期はハイパバイザのスケジュール周期であって、必ずしもパーティション内のＯＳのスケジュール周期と一致している必要はないが、本実施例のように周期タスクの周期とスケジュール周期を一致させるか周期タスクの周期の１／Ｎ（Ｎは自然数）とすることにより、周期タスクの起動設定を容易にすることが可能である。
【符号の説明】
【００８３】
１００：第１の実施例の制御装置
１０１：第１の実施例の制御対象
１１０：第１の実施例のタイマデバイス
１２０：第１の実施例のハイパバイザ
１３０：第１の実施例のパーティション１
１３１：第１の実施例のＯＳ１
２００：第１の実施例のＣＰＵ
２１０：第１の実施例の割込みコントローラ
２２０：第１の実施例のメモリ
２３０：第１の実施例のＯＳ１領域
２４０：第１の実施例のハイパバイザ領域
２４１：第１の実施例のハイパバイザプログラム
３００：第１の実施例のパーティション管理テーブル
４００：第１の実施例の割込み管理テーブル
【図１】
2015097839.tif 000003
【図２】
2015097839.tif 000004
【図３】
2015097839.tif 000005
【図４】
2015097839.tif 000006
【図５】
2015097839.tif 000007
【図６】
2015097839.tif 000008
【図７】
2015097839.tif 000009
【図８】
2015097839.tif 000010
【手続補正書】
【提出日】平成28年6月21日(2016.6.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のパーティションを備えるパーティション実行制御装置であって、
前記複数のパーティションの各々に対応したタスク実行可能時間及び割込み禁止レベルを記憶する第一のテーブルと、前記パーティションに接続された外部デバイスに対応する割込み優先度及び割込み処理実行パーティションを対応付けた第二のテーブルと、を格納する記憶部と、
前記割込み優先度が前記割込み禁止レベルを超える前記外部デバイスからの割込みを受け付けた場合、前記第二のテーブルに格納されている前記割込み処理実行パーティションを、前記第一のテーブルに格納された当該割込み処理実行パーティションの前記タスク実行可能時間が残っている限り実行するよう制御し、また、前記複数のパーティションの各々の前記タスク実行可能時間を周期的に初期値にリセットする制御部と、
を備えることを特徴とするパーティション実行制御装置。
【請求項２】
請求項１に記載のパーティション実行制御装置であって、
前記制御部は、
タイマ割込みを契機に実行中のパーティションに対応する前記第一のテーブルに格納された前記タスク実行可能時間を減算し、
前記減算した結果を、前記実行中のパーティションに対応する新たなタスク実行可能時間として前記第一のテーブルに格納することを特徴とするパーティション実行制御装置。
【請求項３】
請求項２に記載のパーティション実行制御装置であって、
前記制御部は、前記実行中のパーティションの前記タスク実行可能時間が尽きた場合に、前記タスク実行可能時間が残っているパーティションの前記割込み禁止レベルと、ペンディング中の割込みの前記割込み優先度を比較することによって、実行すべきパーティションを選択することを特徴とするパーティション実行制御装置。
【請求項４】
請求項３に記載のパーティション実行制御装置であって、
前記タスク実行可能時間を前記初期値にリセットする周期は、前記複数のパーティションの各々で実行されるタスクの前記タスク実行可能時間の総和に基づいて設定されることを特徴とするパーティション実行制御装置。
【請求項５】
複数のパーティションを備えるパーティション実行制御装置におけるパーティション実行制御方法であって、
前記パーティション実行制御装置は、
前記複数のパーティションの各々に対応したタスク実行可能時間及び割込み禁止レベルを記憶する第一のテーブルと、前記パーティションに接続された外部デバイスに対応する割込み優先度及び割込み処理実行パーティションを対応付けた第二のテーブルと、を格納する記憶部と、
制御部と、を備え、
前記パーティション実行制御方法は、
前記制御部が、前記割込み優先度が前記割込み禁止レベルを超える前記外部デバイスからの割込みを受け付けた場合、前記第二のテーブルに格納される前記割込み処理実行パーティションを、前記第一のテーブルに格納された当該割込み処理実行パーティションの前記タスク実行可能時間が残っている限り実行するよう制御するステップと、
前記制御部が、前記複数のパーティションの各々の前記タスク実行可能時間を周期的に初期値にリセットするステップと、
を含むことを特徴とするパーティション実行制御方法。
【請求項６】
請求項５に記載のパーティション実行制御方法であって、
前記制御部が、タイマ割込みを契機に実行中のパーティションに対応する前記第一のテーブルに格納された前記タスク実行可能時間を減算するステップと、
前記制御部が、前記減算した結果を、前記実行中のパーティションに対応する新たなタスク実行可能時間として前記第一のテーブルに格納するステップと、
を含むことを特徴とするパーティション実行制御方法。
【請求項７】
請求項６に記載のパーティション実行制御方法であって、
前記制御部が、前記実行中のパーティションの前記タスク実行可能時間が尽きた場合に、前記タスク実行可能時間が残っているパーティションの前記割込み禁止レベルと、ペンディング中の割込みの前記割込み優先度を比較することによって、実行すべきパーティションを選択するステップを含むことを特徴とするパーティション実行制御方法。
【請求項８】
請求項７に記載のパーティション実行制御方法であって、
前記タスク実行可能時間を前記初期値にリセットする周期は、前記複数のパーティションの各々で実行されるタスクの前記タスク実行可能時間の総和に基づいて設定されることを特徴とするパーティション実行制御方法。
【請求項９】
請求項５に記載のパーティション実行制御方法を実行するプログラムを格納した計算機に読み込み可能な記憶媒体。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
本発明によれば、周期タスクのリアルタイム性を損なうことなく割込みの優先度に応じて割込み処理タスクを実行するパーティション実行制御装置及び方法を提供することができる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
メモリ(２２０)は、制御装置(１００)の主記憶装置であり、例えば、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）等を用いて構成される。メモリ(２２０)には、ＯＳ１領域(２３０)、ＯＳ２領域(２３１)、ＯＳ３領域(２３２)、および、ハイパバイザ領域(２４０)等が格納される。ＯＳ１領域(２３０)には、パーティション１（１３０）内で実行されるＯＳ１（１３１）のプログラムコードやデータ、そして、ＯＳ１（１３１）上で実行されるアプリケーションプログラムのコードやデータが格納される。ＯＳ２領域(２３１)およびＯＳ３領域(２３２)についても同様である。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
ハイパバイザ領域(２４０)には、ハイパバイザプログラム(２４１)、パーティション管理テーブル(３００)、および、割込み管理テーブル(４００)が格納される。ＣＰＵ(２００)は、ハイパバイザプログラム(２４１)を実行することにより、ハイパバイザ(１２０)の論理分割部(１２１)、パーティションスケジュール部(１２２)、および、割込み制御部(１２３)の各機能モジュールの機能、即ち、本発明の論理分割機能を実現する。なお、ハイパバイザプログラム(２４１)の機能の一部あるいは全部は、ハードウェアやＦＰＧＡ（Field Programmable Gate Array）等を用いて制御装置(１００)上に実装されていてもよい。また、ハイパバイザ(１２０)の機能は、制御装置(１００)のファームウェアとして 実装してもよく、制御装置(１００)上で動作するホストＯＳの機能モジュールやドライバとして実装してもよい。ファームウェアとして実装する場合、ハイパバイザプログラム(２４１)をＲＯＭ（Read Only Memory）上に配置する等により、メモリ(２２０)上に占めるハイパバイザ領域(２４０)のサイズを削減することができる。ホストＯＳの機能モジュールやドライバとして実装する場合、ＯＳが提供するＧＵＩ（Graphical User Interface）やＷｅｂサービス等の機能を用いることにより、パーティション管理テーブル(３００)や割込み管理テーブル(４００)の値を容易に設定することができる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
なお、ハイパバイザ(１２０)によるパーティションの実行とは、当該論理区画内のソフトウェアをＣＰＵ(２００)で実行することを意味する。例えば、パーティション１（１３０）を実行するとは、パーティション１（１３０）内のＯＳ１（１３１）のソフトウェアに対応する、メモリ(２２０)上のＯＳ１領域（２３０）に格納されるプログラムコードをＣＰＵ(２００)上で実行することを意味する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
図４は、本実施例における割込み管理テーブル(４００)の詳細を示す。割込み管理テーブル(４００)は、制御装置(１００)が備えるタイマ(１１０)等の割込みを生成する各デバイスについて、デバイス番号(４０１)、割込み配送先パーティション番号(４０２)、および、割込み優先度(４０３)を格納する。割込み制御部(１２３)は、これら割込み管理テーブル(４００)の情報を用いて割込み配送先のパーティションを決定する。なお、割込み管理テーブル(４００)で管理するデバイスは、物理的なデバイスに限らず、論理分割部(１２１)によって論理分割された、あるいは、ＳＲ−ＩＯＶやソフトウェアエミュレーションによって仮想化されたデバイスであってもよい。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】変更
【補正の内容】
【００５９】
ペンディングとなっている割込みが存在する場合（Ｓ７１０においてＹＥＳ）、割込み管理テーブル(４００)を参照し、ペンディングとなっている割込みのうち、最優先のもの即ち割込み優先度(４０３)の値が最も小さいものを選択する（Ｓ７２０）。次に、選択したパーティションの割込み禁止レベル（３０５）と、選択した割込みの割込み優先度（４０３）とを比較する（Ｓ７３０）。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００６０
【補正方法】変更
【補正の内容】
【００６０】
割込み禁止レベル(３０５)が割込み優先度（４０３）より高い場合（Ｓ７３０においてＹＥＳ）、パーティション管理テーブル(３００)を参照し、選択した割込みの割込み配送先パーティション番号(４０２)に対応するパーティションの残りタイムスライス(３０３)の値がゼロより大きいか判定する（Ｓ７４０）。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００７１
【補正方法】変更
【補正の内容】
【００７１】
次に、時刻ｔ３において、タイマ割込みが発生し、ハイパバイザ(１２０)のタイマ割込み処理（図６）が実行されたとする。この時、実行中のパーティション２（１４０）の残りタイムスライス(３０３)がゼロになっていたとすると（Ｓ６００においてＮＯ）、一スケジューリング周期分の実行時間は経過しておらず（Ｓ６３０においてＮＯ）、そのままハイパバイザ(１２０)のスケジューリング処理（図７）が実行される。ここで、残りタイムスライス(３０３)が残っており、かつ、状態(３０６)が実行可能状態のパーティション３（１５０）が選択され（Ｓ７００）、ペンディングとなっている割込みがないため（Ｓ７１０においてＮＯ）、選択されたパーティション３（１５０）が実行され（Ｓ７６０）、ＴＡＳＫ３１が実行される。次に、時刻ｔ４において、割込みＩ１が発生したとする。この時、ハイパバイザ（１２０）の外部割込み処理（図５）において、実行中であるパーティション３（１５０）の割込み禁止レベル(３０５)８が、割込みＩ１の割込み優先度(４０３)２よりも低く（Ｓ５００においてＹＥＳ）、かつ、割込み配送先であるパーティション１（１３０）の残りタイムスライス(３０３)が残っているため（Ｓ５１０においてＹＥＳ）、割込み配送先であるパーティション１（１３０）が実行され（Ｓ５２０）、割込みハンドラタスクであるＴＡＳＫ１２によって割込みＩ１が処理される。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００７６
【補正方法】変更
【補正の内容】
【００７６】
次に、時刻ｔ８において、ＯＳ１（１３１）の周期タスクＴＡＳＫ１１が終了し、パーティション１（１３０）が残りタイムスライス(３０３)を残して状態(３０６)をイベント待ち状態に移行したとする。この時、ハイパバイザ(１２０)のスケジューリング処理（図７）が実行され、残りタイムスライス(３０３)がゼロより大きく、かつ、状態(３０６)が実行準備完了であるパーティションのうち、実行優先度(３０４)が最も高いパーティション３（１５０）が選択される（Ｓ７００）。しかしながら、Ｉ１およびＩ２がペンディングとなっているため（Ｓ７１０においてＹＥＳ）、割込み優先度（４０３）が最も高いペンディング割込みとしてＩ１が選択される（Ｓ７２０）。選択されたパーティション３（１５０）の割込み禁止レベル(３０５)８が、Ｉ１の割込み優先度(４０３)２より低く（Ｓ７３０においてＹＥＳ）、かつ、割込み配送先パーティション１（１３０）の残りタイムスライスがゼロより大きいため（Ｓ７４０においてＹＥＳ）、割込み配送先であるパーティション１（１３０）が実行され（Ｓ７５０）、割込みＩ１の割込みハンドラであるＴＡＳＫ１２が実行される。
【手続補正１２】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2015097839.tif 000011
【国際調査報告】
2015097839.tif 000012
2015097839.tif 000013
2015097839.tif 000014
2015097839.tif 000015