JP2010152513A - ハイブリッドシステムおよび割込制御装置並びに割込制御方法 - Google Patents

ハイブリッドシステムおよび割込制御装置並びに割込制御方法 Download PDF

Info

Publication number
JP2010152513A
JP2010152513A JP2008327983A JP2008327983A JP2010152513A JP 2010152513 A JP2010152513 A JP 2010152513A JP 2008327983 A JP2008327983 A JP 2008327983A JP 2008327983 A JP2008327983 A JP 2008327983A JP 2010152513 A JP2010152513 A JP 2010152513A
Authority
JP
Japan
Prior art keywords
interrupt
factor
linux
interrupt factor
rtos
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.)
Pending
Application number
JP2008327983A
Other languages
English (en)
Inventor
Shinya Kuribayashi
慎也 栗林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2008327983A priority Critical patent/JP2010152513A/ja
Publication of JP2010152513A publication Critical patent/JP2010152513A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】ハイブリッドシステムにおける割込応答性能の低下を軽減する。
【解決手段】制御システム150は、Linux120側の割込要因がマスクされていないときの割込要求に対して、RTOS130側の割込要因かLinux120側の割込要因かの判定をし、Linux120側の割込要因であるときに、該割込要求に対する制御権をLinux120に移行させ、RTOS130側の割込要因であるときに、Linux120OS側の割込要因をマスクすると共に上記制御権をRTOSに移行させ、その後、RTOSがLinuxタスクをスケジューリングするようになったときにLinux側の割込要因へのマスクを解除する。また、制御システム150は、Linux120側の割込要因がマスクされている間の割込要求に対して、RTOSによる上記制御権の保持を継続させる。
【選択図】図1

Description

本発明は、2つのOS(Operating System)がハードウェア資源を共有するハイブリッドシステムにおける割込み制御技術に関する。
組み込みシステムで使用されるOSの特徴の1つとして「リアルタイム性」が挙げられる。リアルタイム性とは、ある割込みが発生してから、該割込みに対応する割込処理が完了するまでの時間(割込み応答時間)が一定の範囲内に収まることを意味する。リアルタイム性が保証されるOSは、リアルタイムOS(RTOS)と呼ばれている。それに対して、リアル性が保証されないOSは、非リアルタイムOSと呼ばれる。
リアルタイムOSは、必要な処理時間の予測機能や、複数の処理が同時に発生した場合でも目標時間内に完了させるための機能を備えており、これらの機能によりリアルタイム性を保証する。多くの組込みシステムにおいて、リアルタイムOSとしてITRON仕様に準拠したものが用いられており、各開発企業は、ITRONのソフトウェア資産を多く所有する。なお、「ソフトウェア資産」とは、組込みシステムを構成するプログラム自体のみならず、システムの動作検証を行うプログラムや、そのシステムのために開発したソフトウェア部品やライブラリなどを含む。
近年、組込み機器の機能が向上し、ネットワークを介して他の機器と通信できる機能、取り扱うデータの再生、保存、管理のためのファイルシステム機能が不可欠となっており、さらに、USB/IEEE1394/Serial ATA/HDMIなどのインタフェースを介して様々な機器と接続できることが要求されている。これらの機能を実現するためには、従来のRTOSでは対応しきれないという問題がある。
そこで、パーソナルコンピュータ(以下PC)向けのOS(例えばLinux)の機能やソフトウェアを有効活用するという観点から、組込み機器で使用されるOSとして、PC向けのOSをベースとしたものを採用するという動きがある。
通常、PC向けのOSは、リアルタイム性を有しないので、組込み機器に適用するためにはリアルタイム性を保証するための工夫が必要である。そのため、リアルタイム処理を実現するための仕組みを備えたRT LinuxやTimeSys LinuxなどのOSが開発されている。これらは、カーネルモードでプログラムを動作させる仕組みを有し、カーネルモードで動作するプログラムを優先的に動作させる。カーネルモードで動作するプログラムは、仮想化処理を介さずに直接ハードウェア制御を行うことができる。このようなプログラムと、通常のLinuxプロセスとは、特殊なインタフェース(API)を使って情報通知を行う。カーネルモードで動作するプログラムは、通常のLinuxプロセスと開発方法が異なるため、それらの機能やAPIについて、通常のLinuxプロセスの開発エンジニアを再教育する必要がある。勿論、RTOSの技術者は、上記機能やAPIの前に、まずLinuxを勉強する必要がある。
OSの移行には、エンジニアの再教育のみならず、ツールの変更、ソフトウェア開発環境の移行、テスト資産の作り直しなども必要であるため、莫大なコストと時間がかかる。また、各開発企業が所有するITRONのソフトウェア資産は、ITRON仕様のOS上での動作を前提として作成されているので、OSが移行すると、これらのソフトウェア資産は、無駄になってしまう。
そこで、リアルタイムOSと非リアルタイムOSがハードウェア資源を共有するハイブリッドシステムが注目されるようになっている。
非リアルタイムOSのLinuxを組込み産業界に浸透させ、周辺技術の標準化と情報交換を目的として活動しているEmblix(日本エンベデッド リナックス コンソーシアム)には、3つのグループがあり、その1つである「ハイブリッドアーキテクチャWG」では、LinuxとRTOSについてのハイブリッド仕様の策定を行っている。
非特許文献1は、Emblixが定めたLinuxとRTOSのハイブリッド構造に関する仕様の第1版である。以下の説明において、非リアルタイムOSとRTOSの「ハイブリッド構造」とは、該仕様により定められたように、非リアルタイムOSとRTOSの2つのOSは1つのCPU上で動作し、非リアルタイムOSとRTOSのシステムは、それぞれのカーネルで制御を行うと共に、非リアルタイムOSは、RTOSの最も優先度の低いタスク(以下Linuxタスクという)として動作する構造を指す。
図8は、LinuxとRTOSのハイブリッド構造のモデルを示す。このような構造を有するシステムでは、Linuxの機能を利用しながら、ITRONのソフトウェア資産を使用することができる。また、割込み調停機能と割込マスクにより、リアルタイム性を保証することができる。ここで、該仕様に定められた優先順位(非特許文献1のページ5)と、割込調停機能(非特許文献1のページ27)と、割込マスク(非特許文献1のページ48)について説明する。
上記仕様では、実装上の例外を除き、高い優先順位から、RTOS側割込処理、RTOS側カーネルとスケジューラ、RTOS側タスク、Linux側割込処理、Linux側カーネルとボトムハーフとスケジューラ、Linux側プロセスの順で優先順位が規定されている。
割込調停機能は、発生した割込みを受け取り、割込み要因に応じてLinux側で処理すべきかRTOS側で処理すべきかを判定して、当該OS側の割込ハンドラに制御を渡す機能である。判定に際して、RTOSのリアルタイム性を損なわないように、RTOS側で処理すべきかどうかの判定を先に行う。
割込マスクとは、RTOS環境の動作中に、Linux側の割込要因をマスクすることを意味する。割込マスクにより、Linux側の割込要因に対応する割込み、すなわちLinux側で処理される割込みは禁止される。割込調停機能は、Linuxタスクが動作している間のみ割込マスクを解除し、Linuxタスク以外が動作している間は割込マスクをする。こうすることにより、仕様で定められた上記優先順位が守られる。本発明の説明において、割込要因のマスクと、該割込要因に対応する割込みの禁止とを同じ意味で使用する。
非特許文献2には、ハイブリッド構造のシステムにおける割込み制御機能の実装手法を開示している(非特許文献2のP18−19)。この手法は、特許文献1と特許文献2の割込処理技術を、ハイブリッド構造に適用している。なお、特許文献2は、特許文献1の出願を分割して出願したものであるため、以降では、特許文献1を参照して説明する。
特許文献1に開示された割込処理技術は、リアルタイム性が担保された所定の割込処理を実行するOS支援システムと、割込管理機能を有するOSとを同一の情報処理装置に共存させ、OS支援システムにより、該情報処理装置で発生した割込要求を先取りして、この割込要求が上記所定の割込処理に対応するものであるかどうかを判定する。OS支援システムは、上記所定の割込処理に対応する割込要求の場合はOS支援システム自身でその割込処理を実行し、上記所定の割込処理に対応しない割込要求の場合はその制御権をOSへ移行させる。図9は、特許文献1に開示された割込処理技術を示すフローチャートであり、特許文献1の図7に対してステップ番号を変更したものである。
図9に示すように、割込要求が発生した際に、OS支援システムは、割込判定で使用するCPUのレジスタを保存すると共に割込要因を判定する(S10、S11)。割込要因が、OS支援システムが有する割込管理テーブルに予め登録された割込処理に対応する割込要因である(S12:Yes)際に、OS支援システムは、CPUの残りのレジスタを保存して、当該割込要因に対応する割込処理プログラムを実行する(S13、S14)。その後、割込処理プログラムから制御権が戻ってきたとき、CPUのすべてのレジスタを復旧させ、割込を復帰させる(S15、S16)。
一方、割込要因が割込管理テーブルに登録された割込処理に対応する割込要因ではない場合に(S12:No)、OS支援システムは、ステップS10で保存したCPUのレジスタを復旧させ、その割込要求についての制御権をOS側に移行させる(S17、S18)。
このような構成では、リアルタイム性が要求される割込処理すなわち上記所定の割込処理をOS支援システムの割込管理テーブルに予め登録しておけば、リアルタイム性が要求される割込処理がOS支援システムの制御下で優先的に実行されるので、OSに改造を加えることがなく、OSのリアルタイム性を高めることができる。
非特許文献2に開示された実装手法は、下記の5点に配慮した上で、LinuxとRTOSのハイブリッドシステムにおいて特許文献1と特許文献2の割込処理技術を適用したものである。
1.LinuxとRTOSとで割込みの共有をしない。
これは、LinuxとRTOSが1つのCPU上動作するハイブリッドシステムのハードウェア都合から、ハードウェア制御が複雑化になることを回避するためである。
2.割込要因の判定処理は、RTOS側が使用する割込要因かLinux側が使用する割込要因かを判定する。
3.ハイブリッドシステムの仕様で定められたように、RTOSのリアルタイム性を損なわないように、割込要因の判定に際して、RTOS側で処理すべきかどうかの判定を優先して行う。
4.RTOSのリアルタイム性を損なわないように、RTOS環境の動作中には、Linux側の割込要因をマスクする。
5.すべてのRTOS側の処理(割込処理、カーネルおよびスケジューラ処理、RTOSタスク処理)が終わり、Linuxタスクが再びスケジューリングされる際に、Linux側の割込要因に対するマスクを解除する。
このような割込制御により、Linuxの機能を利用可能にしながら、RTOSのリアルタイム性も保証されるハイブリッドシステムを実現する。
特開2000−330796号公報 特開2003−223334号公報 "LinuxにおけるRTOSとのハイブリッド構成に関する仕様(第1版)",2002年8月10日,インターネット<http://www.emblix.org/PDF/emblix_hawg0301.pdf> "Linux on ITRON ハイブリッド構造の実装",インターネット<http://www.elwsc.co.jp/japanese/products/accel_linux.html>
非特許文献2に具体的なフローは開示されていないが、上記割込制御は、図10に示すフローが考えられる。図10において、分かりやすいように、図9に示すフローと異なるステップを太線で示す。また、図9に示すフローと同じステップについては細線で示すと共に、図9と同様のステップ番号を付与する。
図10に示すように、割込みが発生した際に、まず、割込判定で使用するCPUのレジスタの保存と、割込要因の判定が行われる(S10、S11)。この割込要因は、RTOS側が使用する割込要因、すなわちRTOS側が処理する割込処理に対応する割込要因である場合は(S100:Yes)、CPUの残りのレジスタは保存され、Linux側が使用するすべての割込要因はマスクされる(S13、S102)。この時点で、Linuxタスクはペンディングされる。
続いて、上記割込要因に対応する割込処理プログラム(RTOSの割込処理プログラム)は起動され、割込処理は実行される(S14)。その後、Linuxシステムへすぐには復帰せず、RTOSシステムへ移行する(S104)。
RTOSのスケジューラでLinuxタスクがスケジューリングされると(S106)、Linuxタスクは再起動される(S108)。ここで、Linux側が使用する割込要因のマスクの解除がなされる(S110)。そして、全てのCPUのレジスタの復旧(S15)を経て、Linuxシステムは復帰する(S112)。
一方、ステップS100における判定の結果、割込要因はLinux側が処理する割込処理に対応する割込要因である場合(S100:No)、ステップS10で保存したCPUのレジスタが復旧され、その割込要求についての制御権はLinuxに移行される(S17、S120)。これにて、Linuxシステムは復帰する(S122)。
ここで、Linux側が使用する割込要因がすべてマスクされている間、すなわち図10のステップS14〜S108の間について考える。以下、この期間を「マスク期間」という。
上述したように、マスク期間において、Linux側の割込要因がマスクされるため、Linuxタスクはペンディングされる。そのため、Linux側の割込要因は、この期間内では発生しない。
一方、マスク期間においても、RTOSタスク処理中に発生する割込み、RTOSのカーネル/スケジューラ動作中に発生する割込み、割込処理中に発生する割込み(多重割込み)など、様々なRTOS側の割込要因は発生し得る。
これらの割込みが発生する度に、図10に示す処理が行われる。マスク期間中においては、RTOS側の割込要因のみが発生し得るので、ステップS100の判定結果が常にYesとなる。また、マスク期間中につき、Linux側の割込要因が既にマスクされているにもかかわらず、ステップS100の判定結果がYesであるために、ステップS102のマスク処理が行われる。これでは、結果がYesであると自明な割込要因判定処理や、既にマスク処理が施されているにもかかわらず再度マスク処理を行うといった無駄な処理が実行されることになる。
通常、割込処理は軽量かつ高速であることが求められる。リアルタイム性が要求される場合はなおさらである。図10に示す割込制御フローは、Linuxタスクの実行中では妥当といえるが、Linux側の割込要因がマスクされ、Linuxタスクがペンディングされている期間中にもそのまま適用するのでは、無駄な処理が生じ、RTOS側の割込応答性能ないしリアルタイム性が悪化するという問題がある。
本発明の一つの態様は、ハイブリッドシステムである。このシステムは、CPUを含むハードウェア資源と、第1のOSと、第2のOSと、割込制御部とを備える。
第2のOSは、第1のOSとハードウェア資源を共有し、第1のOSの優先度の最も低いタスクである第2OSタスクとして動作する。
割込制御部は、第2のOS側の割込要因がマスクされていないときの割込要求に対して、第1のOS側の割込要因か第2のOS側の割込要因かの判定をし、第2のOS側の割込要因であるときに、該割込要求に対する制御権を前記第2のOSに移行させ、第1のOS側の割込要因であるときに、第2のOS側の割込要因をマスクするマスクを行うと共に制御権を第1のOSに移行させ、その後、第1のOSが第2OSタスクをスケジューリングするようになったときに第2のOS側の割込要因へのマスクを解除する。また、割込制御部は、第2のOS側の割込要因がマスクされている間の割込要求に対して、第1のOSによる制御権の保持を継続させる。
なお、上記態様のハイブリッドシステムを装置に置き換えて表現したものや、該ハイブリッドシステムにおける割込制御の手法や、該割込制御をコンピュータに実行せしめるプログラムは、本発明の態様としては有効である。
本発明にかかる技術によれば、非リアルタイムOSとリアルタイムOSがハードウェア資源を共有するハイブリッドシステムにおいて、リアルタイムOSの割込応答性能の悪化を軽減できる。
以下、図面を参照して本発明の実施の形態を説明する。
<第1の実施の形態>
図1は、本発明の第1の実施の形態にかかるハイブリッドシステム100を示す。ハイブリッドシステム100は、リアルタイムOS(RTOS)と、非リアルタイムOS(ここで例としてLinux)とがハイブリッド構造で実装された情報処理装置例えば携帯端末装置であり、Linux120とRTOS130以外に、CPU110と、固定メモリ140と、制御システム150と、入力装置160と、出力装置170と、シリアル装置180と、入出力制御部190を備える。図1において、様々な処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。また、説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。
CPU110、入力装置160、出力装置170、シリアル装置180、入出力制御部190は、通常の携帯端末装置に備えられたものと同様であり、ここで詳細な説明を省略する。但し、本実施の形態において、CPU110は、割込みが発生したときに参照するアドレス(以下割込参照アドレスという)の変更が可能なものである。
Linux120とRTOS130は、ハイブリッド構造で実装されており、割込みを共有しないようになっている。
固定メモリ140は、Linux120、RTOS130、および制御システム150が動作するための様々なデータを格納している。
図2は、Linux120、RTOS130、固定メモリ140の詳細構成、およびこれらの機能ブロックと制御システム150の接続関係を示す図である。制御システム150は、入出力制御部190を介して上記各機能ブロックと接続されるが、分かりやすいように、図2では入出制御部190を省略する。図示のように、Linux120は、Linux側アプリケーション(AP)122と、割込実行部124と、割込管理部126を備える。RTOS130は、RTOS側アプリケーション(AP)132と、割込実行部134と、割込管理部136を備える。固定メモリ140は、Linux120により管理されるLinuxベクタ領域142と、制御システム150により管理される拡張ベクタ領域144と、Linux120とRTOS130と制御システム150とで共通に使用される共通データ領域146と、RTOS130により管理されるRTOSベクタ領域148を有する。
Linux120において、割込管理部126は、Linuxベクタ領域142を参照してLinux側の割込処理を管理し、割込実行部124は、Linux側の割込処理を実行する。
RTOS130において、割込管理部136は、RTOSベクタ領域148を参照してRTOS側の割込処理を管理し、割込実行部134は、RTOS側の割込処理を実行する。
図3は、固定メモリ140の各領域に格納されたデータの詳細を示す。
Linuxベクタ領域142には、Linux120側で割込処理を行う場合にLinux120内の割込処理ルーチンに制御権が移るように、割込要因(Linux側の割込要因)毎の起動プログラムのアドレス(ポインタ)が設定されている。
拡張ベクタ領域144には、制御システム150側の各種機能を実現するプログラム(後述する割込制御処理のプログラムを含む)のアドレスが設定されている。
共通データ領域146には、Linux120とRTOS130と制御システム150の仲介をなすデータが設定されている。これらのデータは、Linux120の初期化処理時に参照される制御システム150の初期化処理用プログラムのアドレスと、RTOS130のスケジューラ起動プログラムのアドレスと、各種割込情報のアドレスと、情報書込処理ルーチンのアドレスと、書込対象となる情報のアドレスと、情報読出ルーチンのアドレスと、読出対象となる情報のアドレスを含む。なお、制御システム150の初期化処理用プログラムのアドレスと、各種割込情報のアドレスと、情報書込処理ルーチンのアドレスは、共通データ領域146が配置された時点で設定され、RTOS130のスケジューラ起動プログラムのアドレスと、情報読出ルーチンのアドレスと、読出対象となる情報のアドレスは、Linux120とRTOS130の初期化時に設定される。
RTOSベクタ領域148には、RTOS130側で割込処理を行う場合にRTOS内の割込処理ルーチンに制御権が移るように、割込要因(RTOS側の割込要因)毎の起動プログラムのアドレスが設定されている。
図4は、制御システム150を示す。制御システム150は、初期化部151と、割込管理部152と、制御実行部158を備え、割込管理部152は、割込管理テーブル153を有する。
初期化部151は、Linux120とRTOS130の初期化処理時に、制御システム150の初期化処理用プログラムがCPU110で実行されることにより形成される。制御システム150の初期化処理用プログラムのアドレスは、固定メモリ140の共通データ領域146に格納されている。
初期化部151は、まず、Linux120が自身の初期化処理時にCPU110に通知することにより設定されるLinuxベクタ領域142のベースアドレスを参照し、そのベースアドレスを自システム内データとして拡張ベクタ領域144に保持する。また、初期化部151は、RTOS130が自身の初期化処理時にCPU110に通知することにより設定されるRTOSベクタ領域148のベースアドレスも、自システム内データとして拡張ベクタ領域144に保持する。その後、拡張ベクタ領域144のベースアドレスをCPU110に通知する。前述したように、本実施の形態において、CPU110は割込参照アドレスの変更ができる。したがって、初期化部151からの拡張ベクタ領域144のベースアドレスの通知により、初期化処理後に初めて割込みが発生した際に、CPU110は、拡張ベクタ領域144のベースアドレスを参照することになる。これにより、制御システム150は、初期化処理後に初めて割込みが発生した際に、CPU110からの割込要求を先取りできるようになる。
初期化部151は、また、自システム(制御システム150)の制御対象となるハードウェア例えばシリアル装置180の割込状態の初期化を行うと共に、割込管理部152の割込管理テーブル153に、リアルタイム性が要求される割込処理に対応する割込要因と、当該割込処理を担う割込処理プログラムのアドレスとを対応付けて登録する。実際には、ハードウェア初期化処理ルーチンや割込管理部152の機能を形成するためのプログラムを呼び出して実行させる。
図5は、割込管理テーブル153の登録内容を示す。本実施の形態において、リアルタイム性が要求される割込要因とは、RTOS130により処理されるべき割込処理に対応する割込要因であり、割込管理テーブル153には、RTOS130により処理されるべき割込処理に対応する割込要因と、当該割込処理プログラムのアドレスとを対応付けて登録されている。なお、割込管理テーブル153におけるデータ「0」は、当該割込要因に対応する割込処理がLinux側により処理されるべき割込処理であり、リアルタイム性を要求されていないことを示す。
制御実行部158は、CPU110が参照するアドレスが拡張ベクタ領域144のベースアドレスであるときに起動され、割込発生時に割込制御処理を行う。図6は、制御実行部158による割込制御処理を示すフローチャートである。図6において、太線により示されるステップS224とS232は、本発明の特徴部分である。
制御実行部158は、まず、余分なオーバーヘッドを回避するために、CPU110の動作環境の一部、例えばCPU110のレジスタのうちの、割込判定に使用する部分を図示しないスタック内に一時的に保存した上で、割込要求を取得して割込判定を行う(S200、S202)。割込判定は、当該割込要求に対応する割込要因がRTOS130側が使用するものかLinux120側が使用するものかを判定する処理であり、図4に示す割込管理部152に設けられた割込管理テーブル153の登録内容に基づいて行われる。具体的には、「0」に対応する割込要因(図5に示す例では割込要因0、割込要因2、割込要因4、割込要因5)をLinux側が使用する割込要因であると判定し、「0」以外に対応する割込要因(例えば図5に示す例における割込要因1、割込要因3)をRTOS側が使用する割込要因であると判定する。
ステップS202における割込判定の結果、RTOS側が使用する割込要因ではない、すなわちLinux側が使用する割込要因である場合(S204:No)、制御実行部158は、ステップS200で保存したCPU110のレジスタを復旧させて(S210)、その割込要求に対する制御権をLinux120に移行させ、Linuxシステムを復帰させる(S212、S214)。具体的には、初期化部151が初期化処理時に拡張ベクタ領域144に保存したLinuxベクタ領域142のベースアドレスから割込要求に対応したLinux120側の起動プログラムのアドレスを知り、そのアドレスのプログラムに制御権を渡す。これにより、Linux120の割込実行部124により、当該割込処理が実行される。
一方、ステップS202における割込判定の結果、RTOS側が使用する割込要因である場合(S204;Yes)、制御実行部158は、CPU110の残りのレジスタを保存する(S220)と共に、Linux120側が使用する割込要因を全てマスクする(S222)。これにより、Linuxタスクはペンディングされる。
そして、制御実行部158は、RTOSベクタ領域148のベースアドレスをCPU110に通知すると共に、制御権をRTOS130に移行させる(S224、S226)。制御権をRTOS130に移行させる際に、制御実行部158は、具体的には、共通データ領域146からRTOS側スケジューラ起動プログラムのアドレスを知り、そのアドレスのプログラムに制御権を渡す。
その後、RTOSシステムがLinuxタスクのスケジューリングを再び開始した後、制御実行部158は、RTOS側から制御権が戻るまで(S228:No)待機する。RTOS側から制御権が戻ると(S228:Yes)、制御実行部158は、ステップS222で行ったマスクを解除する(S230)。そして、拡張ベクタ領域144のベースアドレスをCPU110に通知すると共に、CPU110の全てのレジスタを復旧させ、制御権をLinux120に移行させる(S232、S234、S236)。
ステップS226でRTOS側への移行が行われた後、RTOSシステムの処理が行われる。これらの処理は、具体的には、RTOS割込処理、RTOSカーネル処理、RTOSスケジューリング処理、RTOSタスク処理などである。前述したように、ハイブリッドシステムにおいて、LinuxはRTOSのタスクの一つ(Linuxタスク)として動作しており、Linuxタスクは、RTOSの全てのタスクの中で最も低い優先度を与えられている。そのため、一旦RTOS130に制御権が渡ると、RTOSシステムの処理として必要な処理が全て完了するまで、制御権はLinux側に戻されることがない。
すなわち、ステップS222(Linux側が使用する全ての割込要因のマスク)から、ステップS228(RTOS側からの復帰)まで、Linux側が使用する割込要因は、発生することがない。
本実施の形態において、ステップS224では、制御実行部158は、RTOSベクタ領域148のベースアドレスをCPU110に通知する。これにより、その後に割込みが発生した際に、CPU110がRTOSベクタ領域148を参照することにより、RTOS側起動プログラムに含まれるRTOS割込処理のプログラムが起動される。このRTOS割込処理プログラムは、RTOSシステムが単体で動作する場合の割込処理を行うプログラムと同一であり、RTOS130の割込実行部134と割込管理部136により実行される。
図7は、割込実行部134と割込管理部136によるRTOS割込処理のフローチャートを示す。割込が発生した際に、割込管理部136は、CPU110のレジスタを保存すると共に、該割込みの内容に対応する割込処理プログラムのアドレスを割込実行部134に提供する(S300、S302)。割込実行部134は、割込管理部136からアドレスが提供されたプログラムを実行して割込処理を行う(S304)。図7に示す処理は、CPU110に通知された割込用のベースアドレスがRTOSベクタ領域148である限り、割込みが生じる度に行われる。
図6において、RTOSシステムの処理が完了すると(S228:Yes)、制御実行部158は、Linux側の割込要因のマスクを解除すると共に、拡張ベクタ領域144のベースアドレスをCPU110に通知する(S230、S232)。これにより、その後、割込みが発生すると、CPU110が拡張ベクタ領域144のベースアドレスを参照するため、図6に示す制御実行部158による割込制御処理が実行される。
こうすることにより、Linuxタスクの動作中においてのみ、割込みが発生した際に図6に示す処理フローが実施され、Linux側の割込要因がマスクされて、Linuxタスクがペンディングされている間には、図7に示すRTOS割込処理が実行される。そのため、図10に示す従来の割込処理のフローにあった無駄な処理(Linux側の割込要因がマスクされている間の、割込要因がLinux側のものかRTOS側のものかの判定と、既にマスクされているLinux側の割込要因のさらなるマスク)を回避することができる。その結果、RTOSの割込応答性能が向上し、高いリアルタイム性を保証することができる。
<第2の実施の形態>
第1の実施の形態において、制御システム150は、Linux側の割込要因のマスクと、Linux側の割込要因のマスク解除に伴って、割込みが発生したときにCPU110が参照するアドレス(割込参照アドレス)を、拡張ベクタ領域144とRTOSベクタ領域148のベースアドレス(先頭番地)間で切り替えることにより、Linux側の割込要因がマスクされていない間は割込要求を先取りし、Linux側の割込要因がマスクされている間は割込要求を先取りせずに、RTOS130により割込要求を受け取ることを実現している。この手法は、CPU110は、割込参照アドレスの変更が可能であることを前提とする。本第2の実施の形態として、割込参照アドレスの変更ができないCPUの場合の対応手法を説明する。
まず、割込参照アドレスを拡張ベクタ領域のベースアドレスに設定する。これにより、制御システムは常に割込要求を先取りする。
この場合、制御システムは、Linux側の割込要因がマスクされているか否かに応じ制御を行えばよい。具体的には、制御システムは、Linux側の割込要因をマスクした後解除するまでの間、割込要求に対する制御権を常にRTOS側に渡すようにする。また、Linux側の割込要因がマスクされていない間には、割込要因がLinuxとRTOSのいずれで使用されるものかの判定を行って、判定結果に応じて制御権をLinuxまたはRTOSに渡す。RTOSに渡す場合には、Linux側の割込要因をマスクし、RTOSがLinuxタスクを再びスケジューリングするようになれば、マスクを解除する。なお、割込要求に対する制御権をRTOSまたはLinuxに渡すかの処理は、RTOS側スケジューラ起動プログラムのアドレスと、Linux側起動プログラムのアドレス間で切替可能なポインタを設けることにより実現できる。このポインタの切替えは、図6に示す処理におけるステップS224(RTOSベクタ領域148のベースアドレスをCPUに通知する処理)と、ステップS232(拡張ベクタ領域144のベースアドレスをCPUに通知する処理)と同様の効用を有する。該制御システムの他の処理については、図6に示す処理と同様であるので、ここで詳細な説明を省略する。
本第2の実施の形態によれば、割込参照アドレスの変更ができないCPUの場合にも、第1の実施の形態と同様の効果を得ることができる。
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した各実施の形態に対してさまざまな変更、増減、組合せを行ってもよい。これらの変更、増減、組合せが行われた変形例も本発明の範囲にあることは当業者に理解されるところである。
本発明の第1の実施の形態にかかるハイブリッドシステムを示す図である。 図1に示すハイブリッドシステムにおけるLinux、RTOS、固定メモリ、制御システムを機能的に示す図である。 固定メモリの各領域の詳細を示す図である。 図1に示すハイブリッドシステムにおける制御システムを示す図である。 図2に示す制御システムにおける割込管理部の管理テーブルの登録例を示す図である。 図2に示す制御システムによる割込制御処理を示すフローチャートである。 RTOS内の割込処理を示すフローチャートである。 ハイブリッド構造のモデルを示す図である。 特許文献1による割込処理手法を示すフローチャートである。 非特許文献2による実装手法の考えられる処理フローを示すフローチャートである。
符号の説明
100 ハイブリッドシステム
110 CPU
120 Linux
122 Linux側AP
124 割込実行部
126 割込管理部
130 RTOS
132 RTOS側AP
134 割込実行部
136 割込管理部
140 固定メモリ
142 Linuxベクタ領域
144 拡張ベクタ領域
146 共通データ領域
148 RTOSベクタ領域
150 制御システム
151 初期化部
152 割込管理部
153 割込管理テーブル
158 制御実行部
160 入力装置
170 出力装置
180 シリアル装置
190 入出力制御部

Claims (16)

  1. CPUを含むハードウェア資源と、
    第1のOS(Operating Sysytem)と、
    前記第1のOSと前記ハードウェア資源を共有し、前記第1のOSの優先度の最も低いタスクである第2OSタスクとして動作する第2のOSと、
    割込制御部とを備えたハイブリッドシステムにおいて、
    前記割込制御部は、
    前記第2のOS側の割込要因がマスクされていないときの割込要求に対して、
    前記第1のOS側の割込要因か前記第2のOS側の割込要因かの判定をし、
    前記第2のOS側の割込要因であるときに、該割込要求に対する制御権を前記第2のOSに移行させ、
    前記第1のOS側の割込要因であるときに、前記第2のOS側の割込要因をマスクすると共に前記制御権を前記第1のOSに移行させ、その後、前記第1のOSが前記第2OSタスクをスケジューリングするようになったときに前記第2のOS側の割込要因へのマスクを解除し、
    前記第2のOS側の割込要因がマスクされている間の割込要求に対して、
    前記第1のOSによる前記制御権の保持を継続させることを特徴とするハイブリッドシステム。
  2. 前記CPUは、割込みが発生したときに参照するアドレスである割込参照アドレスの変更が可能なものであり、
    前記割込制御部は、
    前記第2のOS側の割込要因へのマスクを解除するときに、前記割込参照アドレスが、該割込制御部の起動プログラムのアドレスになり、
    前記第2のOS側の割込要因をマスクするときに、前記割込参照アドレスが、前記第1のOS内で割込処理を制御するプログラムのアドレスになるように前記CPUの割込参照アドレスを書き換えることを特徴とする請求項1に記載のハイブリッドシステム。
  3. 割込みが発生したときに前記CPUが参照する割込参照アドレスを格納する拡張ベクタ領域をさらに備え、
    前記CPUは、割込参照アドレスの変更が不可能なものであり、
    前記拡張ベクタ領域に格納された割込参照アドレスは、前記割込制御部の起動プログラムのアドレスであることを特徴とする請求項1に記載のハイブリッドシステム。
  4. 前記第1のOSは、前記第2のOSよりリアルタイム性が高いOSであることを特徴とする請求項1から3のいずれか1項に記載のハイブリッドシステム。
  5. 前記第1のOSはリアルタイムOSであり、前記第2のOSはLinuxであることを特徴とする請求項4に記載のハイブリッドシステム。
  6. 第1のOS(Operating Sysytem)と、CPUを含むハードウェア資源を前記第1のOSと共有し、前記第1のOSの優先度の最も低いタスクである第2OSタスクとして動作する第2のOSとを備えたハイブリッドシステムにおける割込制御装置であって、
    前記割込制御部は、
    前記第2のOS側の割込要因がマスクされていないときの割込要求に対して、
    前記第1のOS側の割込要因か前記第2のOS側の割込要因かの判定をし、
    前記第2のOS側の割込要因であるときに、該割込要求に対する制御権を前記第2のOSに移行させ、
    前記第1のOS側の割込要因であるときに、前記第2のOS側の割込要因をマスクすると共に前記制御権を前記第1のOSに移行させ、その後、前記第1のOSが前記第2OSタスクをスケジューリングするようになったときに前記第2のOS側の割込要因へのマスクを解除し、
    前記第2のOS側の割込要因がマスクされている間の割込要求に対して、
    前記第1のOSによる前記制御権の保持を継続させることを特徴とする割込制御装置。
  7. 前記CPUは、割込みが発生したときに参照するアドレスである割込参照アドレスの変更が可能なものであり、
    前記第2のOS側の割込要因へのマスクを解除するときに、前記割込参照アドレスが、該割込制御部の起動プログラムのアドレスになり、
    前記第2のOS側の割込要因をマスクするときに、前記割込参照アドレスが、前記第1のOS内で割込処理を制御するプログラムのアドレスになるように前記CPUの割込参照アドレスを書き換えることを特徴とする請求項6に記載の割込制御装置。
  8. 前記CPUは、割込みが発生したときに参照する割込参照アドレスの変更が不可能なものであり、
    自身の起動プログラムのアドレスが前記割込参照アドレスに設定され、割込が発生したときに割込要求を先取りすることを特徴とする請求項6に記載の割込制御装置。
  9. 前記第1のOSは、前記第2のOSよりリアルタイム性が高いOSであることを特徴とする請求項6から8のいずれか1項に記載の割込制御装置。
  10. 前記第1のOSはリアルタイムOSであり、前記第2のOSはLinuxであることを特徴とする請求項9に記載の割込制御装置。
  11. 第1のOS(Operating Sysytem)と第2のOSがハードウェア資源を共有し、前記第2のOSが、前記第1のOSの優先度の最も低いタスクである第2OSタスクとして動作するハイブリッドシステムにおける割込制御方法であって、
    前記第2のOS側の割込要因がマスクされていないときの割込要求に対して、
    前記第1のOS側の割込要因か前記第2のOS側の割込要因かの判定をし、
    前記第2のOS側の割込要因であるときに、該割込要求に対する制御権を前記第2のOSに移行させ、
    前記第1のOS側の割込要因であるときに、前記第2のOS側の割込要因をマスクすると共に前記制御権を前記第1のOSに移行させ、その後、前記第1のOSが前記第2OSタスクをスケジューリングするようになったときに前記第2のOS側の割込要因へのマスクを解除し、
    前記第2のOS側の割込要因がマスクされている間の割込要求に対して、
    前記第1のOSによる前記制御権の保持を継続させることを特徴とする割込制御方法。
  12. 前記第1のOSは、前記第2のOSよりリアルタイム性が高いOSであることを特徴とする請求項11に記載の割込制御方法。
  13. 前記第1のOSはリアルタイムOSであり、前記第2のOSはLinuxであることを特徴とする請求項12に記載の割込制御方法。
  14. 第1のOS(Operating Sysytem)と第2のOSがハードウェア資源を共有し、前記第2のOSが、前記第1のOSの優先度の最も低いタスクである第2OSタスクとして動作するハイブリッドシステムにおける割込制御処理をコンピュータに実行せしめるプログラムであって、
    前記第2のOS側の割込要因がマスクされていないときの割込要求に対して、
    前記第1のOS側の割込要因か前記第2のOS側の割込要因かの判定をし、
    前記第2のOS側の割込要因であるときに、該割込要求に対する制御権を前記第2のOSに移行させ、
    前記第1のOS側の割込要因であるときに、前記第2のOS側の割込要因をマスクすると共に前記制御権を前記第1のOSに移行させ、その後、前記第1のOSが前記第2OSタスクをスケジューリングするようになったときに前記第2のOS側の割込要因へのマスクを解除し、
    前記第2のOS側の割込要因がマスクされている間の割込要求に対して、
    前記第1のOSによる前記制御権の保持を継続させることをコンピュータに実行せしめることを特徴とするプログラム。
  15. 前記第1のOSは、前記第2のOSよりリアルタイム性が高いOSであることを特徴とする請求項14に記載のプログラム。
  16. 前記第1のOSはリアルタイムOSであり、前記第2のOSはLinuxであることを特徴とする請求項15に記載のプログラム。
JP2008327983A 2008-12-24 2008-12-24 ハイブリッドシステムおよび割込制御装置並びに割込制御方法 Pending JP2010152513A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008327983A JP2010152513A (ja) 2008-12-24 2008-12-24 ハイブリッドシステムおよび割込制御装置並びに割込制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008327983A JP2010152513A (ja) 2008-12-24 2008-12-24 ハイブリッドシステムおよび割込制御装置並びに割込制御方法

Publications (1)

Publication Number Publication Date
JP2010152513A true JP2010152513A (ja) 2010-07-08

Family

ID=42571559

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008327983A Pending JP2010152513A (ja) 2008-12-24 2008-12-24 ハイブリッドシステムおよび割込制御装置並びに割込制御方法

Country Status (1)

Country Link
JP (1) JP2010152513A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013541241A (ja) * 2010-07-30 2013-11-07 アルカテル−ルーセント ネットワークにおけるマルチ・セル・サポートのための装置
WO2019215795A1 (ja) * 2018-05-07 2019-11-14 三菱電機株式会社 情報処理装置、チューニング方法およびチューニングプログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013541241A (ja) * 2010-07-30 2013-11-07 アルカテル−ルーセント ネットワークにおけるマルチ・セル・サポートのための装置
WO2019215795A1 (ja) * 2018-05-07 2019-11-14 三菱電機株式会社 情報処理装置、チューニング方法およびチューニングプログラム
JPWO2019215795A1 (ja) * 2018-05-07 2020-09-17 三菱電機株式会社 情報処理装置、チューニング方法およびチューニングプログラム
KR20200128589A (ko) * 2018-05-07 2020-11-13 미쓰비시덴키 가부시키가이샤 정보 처리 장치, 튜닝 방법 및 기록 매체에 저장된 튜닝 프로그램
KR102251451B1 (ko) 2018-05-07 2021-05-12 미쓰비시덴키 가부시키가이샤 정보 처리 장치, 튜닝 방법 및 기록 매체에 저장된 튜닝 프로그램

Similar Documents

Publication Publication Date Title
TWI442322B (zh) 在虛擬環境中對中斷結束訊息之延遲處理
EP2143001B1 (en) Master and subordinate operating system kernels for heterogeneous multiprocessor systems
JP6240745B2 (ja) 複数のハイパーバイザを実行するシステムおよび方法
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
US8776088B2 (en) Operating system distributed over heterogeneous platforms
WO2017070900A1 (zh) 多核数字信号处理系统中处理任务的方法和装置
WO2006055864A2 (en) Method and apparatus for implementing task management of computer operations
US20070124523A1 (en) Heterogeneous multiprocessor system and OS configuration method thereof
JP2018022345A (ja) 情報処理システム
US10241829B2 (en) Information processing device, information processing method, recording medium, calculation processing device, calculation processing method
JP2006099332A (ja) 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2006164266A (ja) オペレーティングシステムのパフォーマンスの改善
JP2005190207A (ja) 割り込み制御装置、制御方法
JP2010152513A (ja) ハイブリッドシステムおよび割込制御装置並びに割込制御方法
JP5819350B2 (ja) 計算機システム及び起動方法
JP5131269B2 (ja) マルチプロセッシングシステム
JP6814756B2 (ja) ハイパーバイザ、演算装置
JP4594889B2 (ja) 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム
JP2008009865A (ja) 分散コンピュータシステム
US20090193168A1 (en) Interrupt mitigation on multiple network adapters
JP3893136B2 (ja) 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム
JP4597032B2 (ja) コンピュータシステム、それにおける基本プログラムの起動方法、及びローダプログラム
JP2005234658A (ja) タスク管理プログラムおよびタスク管理装置
JP5540799B2 (ja) データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置
JP4325466B2 (ja) タスク実行システム