(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024136260
(43)【公開日】2024-10-04
(54)【発明の名称】情報処理システム及び情報処理プログラム
(51)【国際特許分類】
G06F 9/52 20060101AFI20240927BHJP
【FI】
G06F9/52 120Z
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023047323
(22)【出願日】2023-03-23
(71)【出願人】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】大竹 裕仁
(72)【発明者】
【氏名】田中 英憲
(72)【発明者】
【氏名】諏訪 辰寿
(57)【要約】
【課題】それぞれ通信を行う複数のプロセッサを備えて排他制御する資源以外の資源を使用する場合であっても自動復旧可能な情報処理システム及び情報処理プログラムを提供することを目的とする。
【解決手段】サブプロセッサ14がOS間通信コマンドを受信して資源を確保した際に、資源に関する情報を資源情報管理部34に保持する。そして、例外発生した際に、サブプロセッサ14が、当該処理に対応する資源情報管理部34に保持した資源に関する情報を更新し、OS間通信コマンドに対応する処理の例外発生をメインプロセッサ12に送信する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
それぞれ通信を行う複数のプロセッサを備え、
前記複数のプロセッサのうち処理コマンドを受信した第1プロセッサは、
受信した前記処理コマンドの処理に対応して確保する資源に関する情報を予め定めた資源情報管理部に保持し、
前記処理コマンドに対応する処理で例外発生した際に、前記資源情報管理部に保持した当該処理に対応する前記資源に関する情報を更新し、
前記処理コマンドに対応する処理の例外発生を、前記処理コマンドを送信したプロセッサに送信する処理を行う情報処理システム。
【請求項2】
前記第1プロセッサは、前記資源が排他制御する資源の場合、前記資源情報管理部に保持した前記資源に関する情報からオペレーティングシステムの機能を用いて該当する前記資源を開放し、前記資源情報管理部に保持した前記資源に関する情報を獲得資源なしの状態に更新する請求項1に記載の情報処理システム。
【請求項3】
前記第1プロセッサは、前記資源が例外発生した処理以外から獲得された資源の場合、前記資源情報管理部に保持した前記資源に関する情報から前記資源を解放せずに保持する請求項1に記載の情報処理システム。
【請求項4】
前記第1プロセッサは、前記例外発生した処理を行うタスクをオペレーティングシステムの機能を用いて削除し、削除した前記タスクの処理機能を持つタスクを再生成する請求項1に記載の情報処理システム。
【請求項5】
前記第1プロセッサは、前記処理コマンドを再受信した場合、前記再生成したタスクにより、前記資源の獲得と、獲得した前記資源に関する情報の前記資源情報管理部への保持、及び前記処理コマンドに対応する処理を行う請求項4に記載の情報処理システム。
【請求項6】
コンピュータに、
処理コマンドを受信し、
受信した前記処理コマンドの処理に対応して確保する資源に関する情報を予め定めた資源情報管理部に保持し、
前記処理コマンドに対応する処理で例外発生した際に、前記資源情報管理部に保持した当該処理に対応する前記資源に関する情報を更新し、
前記処理コマンドに対応する処理の例外発生を、前記処理コマンドを送信したプロセッサに送信する処理を実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理システム及び情報処理プログラムに関する。
【背景技術】
【0002】
特許文献1には、複数のプロセスにより共有される資源の排他的使用権を表す排他制御モジュールを獲得したプロセスがそのセマフォに対応する資源の排他的使用権を獲得し、プロセスがセマフォを開放した場合にそれに対応する資源の排他的使用権を失うように制御されるコンピュータシステムにおいて、各セマフォに対応して、それが排他制御する資源の異常終了時の処理手順を記述した例外ハンドラを定義し、セマフォを獲得したままでタスクが異常終了した場合に、そのセマフォに定義されている例外ハンドラを起動するコンピュータシステムが提案されている。
【0003】
特許文献2には、複数のアプリケーションプログラムからなるAP部と、該アプリケーションプログラムに命令するためのプログラムを実行して該プログラムの実行状態を管理するOS部とを有し、該プログラムの実行状態を格納するシステム状態の格納部において、該OS部に複数のリソースを管理するリソース管理部とオペレーティングシステムの処理を実行するOS処理部とを設け、リソース管理部のタイマによりアプリケーションプログラムが獲得したリソースの使用時間を監視し、該リソースを所有している時間(獲得してから解放するまでの時間)を計測することにより該システムの異常状態を管理するシステム管理方法が提案されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平11-24947号公報
【特許文献2】特開平5-342023号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
それぞれ通信を行う複数のプロセッサを備える場合、複数のプロセッサのうち処理コマンドを受信したプロセッサが、処理コマンドに対応する処理で使用する資源を確保する。ここで、当該処理で例外発生した場合、例外発生時の資源が確保されたままになるため、処理コマンドを再受信した際に資源の確保に失敗し、処理がエラーになってしまい、ユーザによる再起動と再処理実行が必要となってしまう。
【0006】
そこで、本開示は、それぞれ通信を行う複数のプロセッサを備えて排他制御する資源以外の資源を使用する場合であっても自動復旧可能な情報処理システム及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、第1態様に係る情報処理システムは、それぞれ通信を行う複数のプロセッサを備え、前記複数のプロセッサのうち処理コマンドを受信した第1プロセッサは、受信した前記処理コマンドの処理に対応して確保する資源に関する情報を予め定めた資源情報管理部に保持し、前記処理コマンドに対応する処理で例外発生した際に、前記資源情報管理部に保持した当該処理に対応する前記資源に関する情報を更新し、前記処理コマンドに対応する処理の例外発生を、前記処理コマンドを送信したプロセッサに送信する処理を行う。
【0008】
第2態様に係る情報処理システムは、第1態様に係る情報処理システムにおいて、前記第1プロセッサは、前記資源が排他制御する資源の場合、前記資源情報管理部に保持した前記資源に関する情報からオペレーティングシステムの機能を用いて該当する前記資源を開放し、前記資源情報管理部に保持した前記資源に関する情報を獲得資源なしの状態に更新する。
【0009】
第3態様に係る情報処理システムは、第1態様に係る情報処理システムにおいて、前記第1プロセッサは、前記資源が例外発生した処理以外から獲得された資源の場合、前記資源情報管理部に保持した前記資源に関する情報から前記資源を解放せずに保持する。
【0010】
第4態様に係る情報処理システムは、第1態様に係る情報処理システムにおいて、前記第1プロセッサは、前記例外発生した処理を行うタスクをオペレーティングシステムの機能を用いて削除し、削除した前記タスクの処理機能を持つタスクを再生成する。
【0011】
第5態様に係る情報処理システムは、第4態様に係る情報処理システムにおいて、前記第1プロセッサは、前記処理コマンドを再受信した場合、前記再生成したタスクにより、前記資源の獲得と、獲得した前記資源に関する情報の前記資源情報管理部への保持、及び前記処理コマンドに対応する処理を行う。
【0012】
第6態様に係る情報処理プログラムは、コンピュータに、処理コマンドを受信し、受信した前記処理コマンドの処理に対応して確保する資源に関する情報を予め定めた資源情報管理部に保持し、前記処理コマンドに対応する処理で例外発生した際に、前記資源情報管理部に保持した当該処理に対応する前記資源に関する情報を更新し、前記処理コマンドに対応する処理の例外発生を、前記処理コマンドを送信したプロセッサに送信する処理を実行させる。
【発明の効果】
【0013】
第1態様によれば、それぞれ通信を行う複数のプロセッサを備えて排他制御する資源以外の資源を使用する場合であっても自動復旧可能な情報処理システムを提供できる。
【0014】
第2態様によれば、復旧する際に排他制御する資源を確保して例外発生から復旧できる。
【0015】
第3態様によれば、例外発生した処理以外で不整合が発生することを防止できる。
【0016】
第4態様によれば、例外発生した処理を再実行することが可能となる。
【0017】
第5態様によれば、処理コマンドを再受信することにより、例外発生した処理を実行できる。
【0018】
第6態様によれば、それぞれ通信を行う複数のプロセッサを備えて排他制御する資源以外の資源を使用する場合であっても自動復旧可能な情報処理プログラムを提供できる。
【図面の簡単な説明】
【0019】
【
図1】本実施形態に係る情報処理装置の前提の構成を示すブロック図である。
【
図2】ユーザにより装置の再起動と再処理実行が必要になる、従来の例外発生時の処理を説明するための図である。
【
図3】本実施形態に係る情報処理装置の具体的な構成を示すブロック図である。
【
図4】本実施形態に係る情報処理装置において、例外発生する場合の処理の手順を説明するための図である。
【
図5】本実施形態に係る情報処理装置におけるメインプロセッサで行われる処理の流れの一例を示すフローチャートである。
【
図6】本実施形態に係る情報処理装置におけるサブプロセッサで行われる処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【0020】
以下、図面を参照して本開示の実施の形態の一例を詳細に説明する。
図1は、本実施形態に係る情報処理装置の前提の構成を示すブロック図である。
【0021】
本実施形態に係る情報処理装置10は、
図1に示すように、複数のプロセッサを備えて、共有メモリ16を介して双方のプロセッサ間のデータ通信を行う。本実施形態では、一例として、画像形成装置や画像処理装置等に設けられた情報処理装置10を説明する。また、複数のプロセッサの一例として、メインプロセッサ12と第1プロセッサの一例としてのサブプロセッサ14の2つのプロセッサを備え、サブプロセッサ14が、画像処理に特化したサブプロセッサ14である場合を一例として説明する。
【0022】
本実施形態に係る情報処理装置10における大まかなデータ通信の流れは以下の通りである。なお、
図1中の1.~4.は処理の手順を示す。
【0023】
手順1.メインプロセッサ12は、メインプロセッサ12のOS間通信モジュール18からOS間通信コマンドを送信し、共有メモリ16のOS間通信コマンド格納領域22に格納する。OS間通信コマンドは、例えば、画像処理に必要な情報等の処理コマンドを共有メモリ16に送信する。
【0024】
手順2.サブプロセッサ14側のOS間通信モジュール20は、メインプロセッサ12側のOS間通信モジュール18から、OS間通信コマンドの格納完了の割り込み通知を受けて、共有メモリ16からOS間通信コマンドを受信する。
【0025】
手順3.サブプロセッサ14は、受信したOS間通信コマンドに対応する処理(例えば、画像処理)を実行して、サブプロセッサ14側のOS間通信モジュール20から実行結果を示すOS間通信コマンドを共有メモリ16に送信する。
【0026】
手順4.メインプロセッサ12側のOS間通信モジュール18は、サブプロセッサ14側のOS間通信モジュール20から画像処理の正常終了に伴うOS間通信コマンドの格納完了の割り込み通知を受けて、共有メモリ16からOS間通信コマンドを受信する。
【0027】
しかしながら、ソフトウェア例外発生時に、排他制御する資源であるセマフォなどの資源を確保している場合、装置の再起動と再処理の実行をしただけでは、ソフトウェアの再処理を正常に継続することができないため、ユーザにより装置の再起動と再処理実行が必要になってしまう。なお、本実施形態において資源とは、メインプロセッサ12またはサブプロセッサ14が画像処理等の各種処理を実行するために使用するメモリ領域を指す。
【0028】
ここで、資源の一例としてのセマフォについて説明する。セマフォを「獲得」することで、例えば、2つのタスク間で処理を排他または待ち合わせすることができる。
【0029】
本実施形態のように、マルチタスクで動作する環境においては、タスクAとタスクBが存在し、タスクAとタスクBは同じメモリへアクセスし、それぞれタスクAはメモリへの書き込み、タスクBはメモリへの読み出しを行うとする。
【0030】
期待値としては、タスクAでメモリへ「0x1」を書き込みして、タスクBでメモリから「0x1」を読み出すことを想定する。マルチタスク環境の場合、タスクAとタスクBが同時にメモリアクセスするため、タスクBで正しく「0x1」を読み出しできない場合がある。このような場合、タスクAがメモリへアクセス中には、タスクBはメモリへアクセスできないように処理を排他させるため、セマフォを使用する。排他させる手順は、以下のようになる。
【0031】
1.タスクAがメモリにアクセスする前に、処理排他用のセマフォを獲得(セマフォ数1→0)。
以下、タスクAでメモリアクセス中とする。
2.タスクBがメモリにアクセスする前に、処理排他用のセマフォを獲得しようとするが、獲得できるセマフォがないため、セマフォが獲得できるまで処理が待ち状態になる。
3.タスクAはメモリへ書き込みする処理が完了後、セマフォを解放(セマフォ数0→1)する。
4.タスクBはセマフォを獲得でき(セマフォ数1→0)、メモリへ読み出しすることができる。
【0032】
なお、セマフォはOS(Operating System)のシステムコールを使用して、OSの管理領域から資源を獲得する。
【0033】
次に、
図2を参照して、ユーザにより装置の再起動と再処理実行が必要になる、従来の例外発生時の処理について簡単に説明する。
図2は、ユーザにより装置の再起動と再処理実行が必要になる、従来の例外発生時の処理を説明するための図である。なお、
図2中の1.~13.は処理の手順を示す。
【0034】
手順1.メインプロセッサ12のOS間通信モジュール18から共有メモリ16へ画像処理に必要な情報をOS間通信コマンドとして送信し、共有メモリ16のOS間通信コマンド格納領域22に格納する。
【0035】
手順2.サブプロセッサ14側のOS間通信モジュール20は、メインプロセッサ12側のOS間通信モジュール18から、OS間通信コマンドの格納完了の割り込み通知を受けて、共有メモリ16からOS間通信コマンドを受信する。
【0036】
手順3.サブプロセッサ14側のOS間通信モジュール20(
図2中のタスク24)は、共有メモリ16から受信したOS間通信コマンドに応じた画像処理を排他または同期するためにセマフォの資源を獲得する。なお、ここでは、資源としてセマフォを挙げたが、資源はセマフォに限るものではない。
【0037】
手順4.サブプロセッサは、セマフォの資源獲得後の画像処理において、ハードウェアの不調などが起因としたソフトウェアの異常な演算処理が起こり、ソフトウェア例外が発生する。
【0038】
手順5.サブプロセッサ14側のOSが、ソフトウェアの例外発生を検知して、例外発生タスク復旧ルーチン26による例外ハンドラが作動する。
【0039】
手順6.サブプロセッサ14側で作動した例外ハンドラは、例外発生タスクをOSの機能を用いて削除をして、削除したタスク24と同じ処理機能を持つタスク28を再生成する。
【0040】
手順7.サブプロセッサ14側のOS間通信モジュール20から共有メモリ16へ例外が発生したことを示す情報を格納する。格納する情報としては、例えば、コマンドを識別するのと同じような定義値等を格納する。
【0041】
手順8.メインプロセッサ12側のOS間通信モジュール18は、サブプロセッサ14側のOS間通信モジュール20から例外発生情報の格納完了の割り込み通知を受けて、共有メモリ16に格納された例外発生情報を受信する。
【0042】
手順9.メインプロセッサ12側のOS間通信モジュール18は、共有メモリ16から受信した例外発生情報を受けて、例外発生直前に送信したOS間通信コマンドを共有メモリ16に再送信する。
【0043】
手順10.サブプロセッサ14側のOS間通信モジュール20は、メインプロセッサ12側のOS間通信モジュール18からOS間通信コマンドの格納完了の割り込み通知を受けて、共有メモリ16からOS間通信コマンドを受信する。なお、手順2.にて受信したOS間通信コマンドを処理する画像処理のタスク24と、手順10.において再受信されたOS間通信コマンドを処理する画像処理のタスク28は同じ役割を持ち、同じ処理を行うタスクである。ただし、手順6.においてタスクは再生成しているので、タスクを識別するタスクIDは異なる可能性がある。
【0044】
手順11.サブプロセッサ14側の画像処理のタスク28は、受信したOS間通信コマンドに応じた画像処理向けの処理を排他または同期するためにセマフォの資源を獲得しようとする。しかしながら、ソフトウェア例外発生時に、セマフォなどの資源が確保された状態のままのため、コマンド再送時の画像処理のタスク28が資源確保に失敗して、処理がエラー終了してしまう。
【0045】
手順12.サブプロセッサ14側のOS間通信モジュール20は、画像処理のエラー終了を示す情報を共有メモリ16に送信する。
【0046】
手順13.メインプロセッサ12側のOS間通信モジュール18は、サブプロセッサ14側のOS間通信モジュール20から画像処理のエラー終了を示すOS間通信コマンドの格納完了の割り込み通知を受けて、共有メモリ16からOS間通信コマンドを受信する。メインプロセッサ12では、再送されたOS間通信コマンドの応答は返ってくるが、処理結果がエラーとなり、ユーザにより装置の再起動と再処理実行が必要となる。
【0047】
そこで、本実施形態に係る情報処理装置10では、メインプロセッサ12から処理コマンドとしてのOS間通信コマンドを受信したサブプロセッサ14が、受信したOS間通信コマンドの処理に対応して確保する資源に関する情報を予め定めた資源情報管理部に保持し、OS間通信コマンドに対応する処理で例外発生した際に、資源情報管理部に保持した当該処理に対応する資源に関する情報を更新し、OS間通信コマンドに対応する処理の例外発生を、OS間通信コマンドを送信したメインプロセッサ12に送信する処理を行う。なお、プロセッサは3以上でもよい。すなわち、本実施形態に係る情報処理装置10は、複数のプロセッサのうち処理コマンドを受信した第1プロセッサが、受信した前記処理コマンドの処理に対応して確保する資源に関する情報を予め定めた資源情報管理部に保持し、前記処理コマンドに対応する処理で例外発生した際に、前記資源情報管理部に保持した当該処理に対応する前記資源に関する情報を更新し、前記処理コマンドに対応する処理の例外発生を、前記処理コマンドを送信したプロセッサに送信する処理を行う。
【0048】
具体的には、
図3に示すように、サブプロセッサ14を搭載する画像処理に特化したシステム32に、資源情報管理部34を設ける。そして、サブプロセッサ14がOS間通信コマンドを受信して資源を確保した際に、資源に関する情報を資源情報管理部34に保持する。そして、例外発生した際に、サブプロセッサ14が、当該処理に対応する資源情報管理部34に保持した資源に関する情報を更新し、OS間通信コマンドに対応する処理の例外発生をメインプロセッサ12に送信する。これにより、メインプロセッサ12からOS間通信コマンドが再送信され、OS間通信コマンドに応じた処理を実行する際に、資源情報が更新されているので、資源が確保され、例外発生した処理が実行される。従って、ユーザによる装置の再起動と再実行を行うことなく自動的に復旧される。なお、
図3は、本実施形態に係る情報処理装置10の具体的な構成を示すブロック図である。
【0049】
ここで、上述のように構成された本実施形態に係る情報処理装置10において、例外発生する場合の処理の手順について
図4を参照して詳細に説明する。
図4は、本実施形態に係る情報処理装置10において、例外発生する場合の処理の手順を説明するための図である。なお、
図4中の1.~13.は処理の手順を示す。
【0050】
手順1.情報処理装置10の図示しない電源をオン後、サブプロセッサ14側の画像処理前のタスク36は画像処理排他用のセマフォを生成し、画像処理に使用するメモリプールを獲得する。
【0051】
手順2.サブプロセッサ14側の画像処理前のタスク36は、獲得したメモリプールのメモリのアドレス等の獲得情報を資源情報管理部34に保存する。
【0052】
手順3.画像処理タスク40は生成後に画像処理要求待ちとなり、アイドルタスク38へ遷移する。
【0053】
手順4.メインプロセッサ12側のOS間通信モジュール18から共有メモリ16へ画像処理に必要な情報をOS間通信コマンドとして送信する。
【0054】
手順5.サブプロセッサ14側のOS間通信モジュール20は、メインプロセッサ12側のOS間通信モジュール18から、OS間通信コマンドの格納完了の割り込み通知を受けて、共有メモリ16からOS間通信コマンドを受信する。
【0055】
手順6.サブプロセッサ14側のOS間通信モジュール20は、画像処理要求のOS間通信コマンドを受信したため、アイドルタスク38から画像処理タスク40へ遷移する。
【0056】
手順7.サブプロセッサ14側の画像処理タスク40は、共有メモリ16から受信したOS間通信コマンドに応じた画像処理を排他または同期するためにセマフォの資源を獲得する。なお、ここでは、説明上セマフォを資源の一例として挙げたが、資源はセマフォに限るものではない。
【0057】
手順8.サブプロセッサ14側の画像処理タスク40は、セマフォを識別するセマフォID等のセマフォの獲得情報を資源情報管理部34に保存する。なお、手順2.及び手順8.により、資源情報管理部34には、例えば、画像処理タスク40の情報として、メモリプール: 資源獲得中(メモリのアドレスを保持)、資源獲得元:例外発生タスクとは別のタスク、セマフォ:資源獲得中(資源の識別IDを保持)、資源獲得元:例外発生タスクと同一タスク等のように情報が保存される。
【0058】
手順9.サブプロセッサ14側の画像処理タスク40は、セマフォの資源獲得後の画像処理において、ハードウェアの不調などが起因としたソフトウェアの異常な演算処理が起こり、ソフトウェア例外が発生する。
【0059】
手順10.サブプロセッサ14側のOSが、ソフトウェア例外の発生を検知して、例外発生タスク復旧ルーチン26によって例外ハンドラが作動する。
【0060】
手順11.サブプロセッサ14側で作動した例外ハンドラから、手順2.及び手順8.でアクセスした資源情報管理部34へアクセスして、例外発生した画像処理タスク40における資源獲得情報を取得する。
【0061】
手順12.サブプロセッサ14側で作動した例外ハンドラは、獲得した資源が例外発生した画像処理タスク40で獲得されたものであった場合にOSの機能を用いて該当資源を解放する。なお、例外発生した画像処理タスク40外から獲得された資源の場合、他タスクはその資源情報(例えば、セマフォIDやメモリプールのアドレス等)を保持しており、後の処理で不整合が起きてしまうため勝手に資源を解放しない。
【0062】
手順13.サブプロセッサ14側で作動した例外ハンドラは、手順2.及び手順8.でアクセスした資源情報管理部34へ再アクセスして、例外発生した画像処理タスク40における獲得資源情報であるセマフォを獲得資源なしの状態へステータスを更新する。例えば、資源情報管理部34は、画像処理タスク40で保存した情報が、メモリプール: 資源獲得中(メモリのアドレスを保持)、資源獲得元:例外発生タスクとは別のタスク、セマフォ:資源未獲得等のように更新される。
【0063】
手順14.サブプロセッサ14側で作動した例外ハンドラは、例外発生した画像処理タスク40をOSの機能を用いて削除をして、削除したタスクと同じ処理機能を持つ画像処理タスク42を再生成する。なお、生成したタスクは、OSの機能を使用してタスクを再生成するため、タスクIDは新たに付与される。
【0064】
手順15.再生成された画像処理タスク40は再生成後に画像処理要求待ちとなり、アイドルタスク38へ遷移する。
【0065】
手順16.サブプロセッサ14側のOS間通信モジュール20から共有メモリ16へ例外が発生したことを示す情報を格納する。例外が発生したことを示す情報としては、例えば、OS間通信コマンドを識別するのと同じような定義値等の情報を格納する。
【0066】
手順17.メインプロセッサ12側のOS間通信モジュール18は、サブプロセッサ14側のOS間通信モジュール20から例外発生情報の格納完了の割り込み通知を受けて、共有メモリ16に格納された例外発生情報を受信する。なお、例外発生情報は、例えば、各画像処理などのOS間通信コマンドを識別するID(例えば、0x1,0x2,・・・等)を定義するのと同じように、例外が発生したときに識別するID(例えば、0xff)である。
【0067】
手順18.メインプロセッサ12側のOS間通信モジュール18は、共有メモリ16から受信した例外発生情報を受けて、例外発生直前に送信したOS間通信コマンドを再度共有メモリ16に送信する。
【0068】
手順19.サブプロセッサ14側のOS間通信モジュール20は、メインプロセッサ12側のOS間通信モジュール18からOS間通信コマンドの格納完了の割り込み通知を受けて、共有メモリ16からOS間通信コマンドを受信する。なお、手順5.において受信したOS間通信コマンドを処理する画像処理タスク40と、手順18.において再受信されたOS間通信コマンドを処理する画像処理タスク42は同じ役割を持ち、同じ処理を行うタスクである。ただし、手順14.において画像処理タスク40は削除され、画像処理タスク42を再生成しているので、タスクIDは異なる可能性がある。
【0069】
手順20.アイドルタスク38は、画像処理要求のOS間通信コマンドを受信したため、画像処理タスク42へ遷移する。
【0070】
手順21.サブプロセッサ14側の画像処理タスク42は、受信したOS間通信コマンドに応じた画像処理向けの処理を排他または同期するためにセマフォの資源を獲得して、画像処理を実行し、正常に処理が終了する。
【0071】
手順22.サブプロセッサ14側のOS間通信モジュール20は、画像処理の正常終了に伴う情報を共有メモリ16に送信する。
【0072】
手順23.メインプロセッサ12側のOS間通信モジュール18は、サブプロセッサ14側のOS間通信モジュール20から画像処理の正常終了に伴うOS間通信コマンドの格納完了の割り込み通知を受けて、共有メモリ16からOS間通信コマンドを受信する。
【0073】
続いて、上述のように構成された本実施形態に係る情報処理装置10における各プロセッサを行われる具体的な処理について説明する。
【0074】
まず、メインプロセッサ12で行われる処理について説明する。
図5は、本実施形態に係る情報処理装置10におけるメインプロセッサ12で行われる処理の流れの一例を示すフローチャートである。なお、
図5の処理は、例えば、メインプロセッサ12がユーザによって画像処理の実行要求を受け付けた場合に開始する。
【0075】
ステップ100では、メインプロセッサ12が、共有メモリ16に画像処理に必要な情報を送信してステップ102へ移行する。すなわち、上述の手順4.により、メインプロセッサ12側のOS間通信モジュール18から共有メモリ16へ画像処理に必要な情報をOS間通信コマンドとして送信する。
ステップ102では、メインプロセッサ12が、例外発生を受信したか否かを判定する。該判定は、上述の手順17.により、共有メモリ16に格納された例外発生情報を受信したか否かを判定する。該判定が肯定された場合にはステップ104へ移行し、否定された場合にはステップ106へ移行する。
【0076】
ステップ104では、メインプロセッサ12が、例外発生直前に送信したOS間通信コマンドを再送信してステップ106へ移行する。すなわち、上述の手順18.により、メインプロセッサ12側のOS間通信モジュール18が、共有メモリ16から受信した例外発生情報を受けて、例外発生直前に送信したOS間通信コマンドを再度共有メモリ16に送信する。
ステップ106では、メインプロセッサ12が、正常終了を受信したか否かを判定する。該判定は、画像処理の正常終了に伴う情報を示すOS間通信コマンドを受信したか否かを判定する。例えば、例外発生があった場合には上述の手順23.により、共有メモリ16からOS間通信コマンドを受信したか否かを判定する。該判定が否定された場合にはステップ102に戻って上述の処理を繰り返し、判定が肯定されたところで一連の処理を終了する。
【0077】
次に、サブプロセッサ14で行われる処理について説明する。
図6は、本実施形態に係る情報処理装置10におけるサブプロセッサ14で行われる処理の流れの一例を示すフローチャートである。
【0078】
ステップ200では、サブプロセッサ14が、画像処理前のタスク36により画像処理排他用のセマフォ生成し、メモリプールを獲得してステップ202へ移行する。すなわち、上述の手順1.により、サブプロセッサ14側の画像処理前のタスク36が、画像処理排他用のセマフォを生成し、画像処理に使用するメモリプールを獲得する。
【0079】
ステップ202では、サブプロセッサ14が、メモリプールの獲得情報を資源情報管理部34に保存してステップ204へ移行する。すなわち、上述の手順2.により、サブプロセッサ14が、獲得したメモリプールのメモリのアドレス等の獲得情報を資源情報管理部34に保存する。
【0080】
ステップ204では、サブプロセッサ14が、アイドルタスク38へ移行してステップ206へ移行する。すなわち、上述の手順3.により、画像処理タスク40が生成後に画像処理要求待ちとなり、アイドルタスク38へ遷移する。
【0081】
ステップ206では、サブプロセッサ14が、割り込み通知を受信したか否かを判定する。該判定は、上述の手順5.により、サブプロセッサ14側のOS間通信モジュール20が、メインプロセッサ12側のOS間通信モジュール18から、OS間通信コマンドの格納完了の割り込み通知を受けたか否かを判定する。該判定が肯定されるまで待機してステップ208へ移行する。
【0082】
ステップ208では、サブプロセッサ14が、共有メモリ16からOS間通信コマンドを受信してステップ210へ移行する。すなわち、上述の手順5.により、サブプロセッサ14側のOS間通信モジュール20が、メインプロセッサ12側のOS間通信モジュール18から、OS間通信コマンドの格納完了の割り込み通知を受けて、共有メモリ16からOS間通信コマンドを受信する。
【0083】
ステップ210では、サブプロセッサ14が、画像処理タスク40へ遷移してステップ212へ移行する。すなわち、上述の手順6.により、サブプロセッサ14側のOS間通信モジュール20は、画像処理要求のOS間通信コマンドを受信したため、アイドルタスク38から画像処理タスク40へ遷移する。
【0084】
ステップ212では、サブプロセッサ14が、OS間通信コマンドに応じた資源を獲得してステップ214へ移行する。すなわち、上述の手順7.により、サブプロセッサ14側の画像処理タスク40が、共有メモリ16から受信したOS間通信コマンドに応じた画像処理を排他または同期するためにセマフォの資源を獲得する。
【0085】
ステップ214では、サブプロセッサ14が、資源の獲得情報を資源情報管理部34に保存してステップ216へ移行する。すなわち、上述の手順8.により、サブプロセッサ14側の画像処理タスク40が、セマフォを識別するセマフォID等のセマフォの獲得情報を資源情報管理部34に保存する。
【0086】
ステップ216では、サブプロセッサ14が、例外発生なく正常終了したか否かを判定する。ソフトウェア例外の発生を検知して判定が否定された場合にはステップ218へ移行し、判定が肯定された場合にはステップ230へ移行する。
【0087】
ステップ218では、サブプロセッサ14が、例外ハンドラを作動してステップ220へ移行する。すなわち、上述の手順10.により、サブプロセッサ14が、例外発生タスク復旧ルーチン26による例外ハンドラが作動する。
【0088】
ステップ220では、サブプロセッサ14が、例外ハンドラから資源情報管理部34にアクセスし、資源情報を取得してステップ222へ移行する。すなわち、上述の手順11.により、サブプロセッサ14側で作動した例外ハンドラから、資源情報管理部34へアクセスして、例外発生した画像処理タスク40における資源獲得情報を取得する。
【0089】
ステップ222では、サブプロセッサ14が、資源情報更新処理を行ってステップ224へ移行する。資源情報更新処理は、例えば、セマフォの解放や、メモリプールのメモリのアドレス情報の確保または解放等を行う。例えば、上述の手順12.により、サブプロセッサ14側で作動した例外ハンドラが、獲得した資源が例外発生した画像処理タスク40で獲得されたものであった場合にOSの機能を用いて該当資源を解放する。一方、例外発生した画像処理タスク40外から獲得された資源の場合は、他タスクはその資源情報(例えば、セマフォIDやメモリプールのアドレス等)を保持しており、後の処理で不整合が起きてしまうため勝手に資源を解放せずに待避して保持する。そして、上述の手順13.により、サブプロセッサ14側で作動した例外ハンドラが、資源情報管理部34へ再アクセスして、例外発生した画像処理タスク40における獲得資源情報であるセマフォを獲得資源なしの状態へステータスを更新する。
【0090】
ステップ224では、サブプロセッサ14が、OS機能により例外発生したタスクを削除し、タスクを再生成してステップ226へ移行する。すなわち、上述の手順14.により、サブプロセッサ14側で作動した例外ハンドラが、例外発生した画像処理タスク40をOSの機能を用いて削除して、削除したタスクと同じ処理機能を持つ画像処理タスク42を再生成する。
【0091】
ステップ226では、サブプロセッサ14が、アイドルタスク38へ遷移してステップ228へ移行する。すなわち、上述の手順15.により、再生成された画像処理タスク42は再生成後に画像処理要求待ちとなり、アイドルタスク38へ遷移する。
【0092】
ステップ228では、サブプロセッサ14が、例外発生したことを示す情報を共有メモリ16に送信してステップ230へ移行する。すなわち、上述の手順16.により、サブプロセッサ14側のOS間通信モジュール20から共有メモリ16へ例外が発生したことを示す情報を格納する。
【0093】
一方、ステップ230では、サブプロセッサ14が、正常終了に伴う情報を共有メモリ16に送信して一連の処理を終了する。例えば、例外発生があった合には、上述の手順22.により、サブプロセッサ14側のOS間通信モジュール20が、画像処理の正常終了に伴う情報を共有メモリ16に送信する。
【0094】
このように処理を行うことにより、例外発生の際に、資源情報管理部34に保持された資源に関する情報が更新される。これにより、OS間通信コマンドに応じた処理を再実行する際に、資源情報が更新されているので、資源が確保され、例外発生した処理が実行される。従って、ユーザによる装置の再起動と再実行を行うことなく自動的に復旧される。
【0095】
なお、上記の実施形態では、サブプロセッサ14が、画像処理に特化した処理を行う場合を一例として説明したが、サブプロセッサ14が行う処理はこれに限定されるものではなく、他の処理を行ってもよい。
【0096】
また、上記の実施形態では、メインプロセッサ12及びサブプロセッサ14をそれぞれ備えた情報処理装置10を情報処理システムの一例として説明したが、これに限るものではない。例えば、メインプロセッサ12とサブプロセッサ14がそれぞれ別の装置に搭載される形態を適用してもよい。
【0097】
また、上記の実施形態において、プロセッサとは広義的なプロセッサを指し、汎用的なプロセッサ(例えばCPU等)や、専用のプロセッサ(例えばGPU: Graphics Processing Unit、ASIC: Application Specific Integrated Circuit、FPGA: Field Programmable Gate Array、プログラマブル論理デバイス等)を含むものである。
【0098】
また、上記の実施形態におけるプロセッサの動作は、1つのプロセッサによって成すのみでなく、物理的に離れた位置に存在する複数のプロセッサが協働して成すものであってもよい。また、プロセッサの各動作の順序は上記各実施形態において記載した順序のみに限定されるものではなく、適宜変更してもよい。
【0099】
また、上記の実施形態に係る情報処理装置10の各プロセッサで行われる処理は、ソフトウェアで行われる処理として説明したが、ハードウェアで行われる処理としてもよいし、双方を組み合わせた処理としてもよい。また、情報処理装置10の各プロセッサで行われる処理は、プログラムとして記憶媒体に記憶して流通させるようにしてもよい。
【0100】
また、本開示は、上記に限定されるものでなく、上記以外にも、その主旨を逸脱しない範囲内において種々変形して実施可能であることは勿論である。
【0101】
以上の実施形態に関し、更に以下の付記を開示する。
(((1)))
それぞれ通信を行う複数のプロセッサを備え、
前記複数のプロセッサのうち処理コマンドを受信した第1プロセッサは、
受信した前記処理コマンドの処理に対応して確保する資源に関する情報を予め定めた資源情報管理部に保持し、
前記処理コマンドに対応する処理で例外発生した際に、前記資源情報管理部に保持した当該処理に対応する前記資源に関する情報を更新し、
前記処理コマンドに対応する処理の例外発生を、前記処理コマンドを送信したプロセッサに送信する処理を行う情報処理システム。
【0102】
(((2)))
前記第1プロセッサは、前記資源が排他制御する資源の場合、前記資源情報管理部に保持した前記資源に関する情報からオペレーティングシステムの機能を用いて該当する前記資源を開放し、前記資源情報管理部に保持した前記資源に関する情報を獲得資源なしの状態に更新する(((1)))に記載の情報処理システム。
【0103】
(((3)))
前記第1プロセッサは、前記資源が例外発生した処理以外から獲得された資源の場合、前記資源情報管理部に保持した前記資源に関する情報から前記資源を解放せずに保持する(((1)))又は(((2)))に記載の情報処理システム。
【0104】
(((4)))
前記第1プロセッサは、前記例外発生した処理を行うタスクをオペレーティングシステムの機能を用いて削除し、削除した前記タスクの処理機能を持つタスクを再生成する(((1)))~(((3)))の何れか1つに記載の情報処理システム。
【0105】
(((5)))
前記第1プロセッサは、前記処理コマンドを再受信した場合、前記再生成したタスクにより、前記資源の獲得と、獲得した前記資源に関する情報の前記資源情報管理部への保持、及び前記処理コマンドに対応する処理を行う(((4)))に記載の情報処理システム。
【0106】
(((6)))
コンピュータに、
処理コマンドを受信し、
受信した前記処理コマンドの処理に対応して確保する資源に関する情報を予め定めた資源情報管理部に保持し、
前記処理コマンドに対応する処理で例外発生した際に、前記資源情報管理部に保持した当該処理に対応する前記資源に関する情報を更新し、
前記処理コマンドに対応する処理の例外発生を、前記処理コマンドを送信したプロセッサに送信する処理を実行させるための情報処理プログラム。
【0107】
(((1)))によれば、それぞれ通信を行う複数のプロセッサを備えて排他制御する資源以外の資源を使用する場合であっても自動復旧可能な情報処理装置を提供できる。
【0108】
(((2)))によれば、復旧する際に排他制御する資源を確保して例外発生から復旧できる。
【0109】
(((3)))によれば、例外発生した処理以外で不整合が発生することを防止できる。
【0110】
(((4)))によれば、例外発生した処理を再実行することが可能となる。
【0111】
(((5)))によれば、処理コマンドを再受信することにより、例外発生した処理を実行できる。
【0112】
(((6)))によれば、それぞれ通信を行う複数のプロセッサを備えて排他制御する資源以外の資源を使用する場合であっても自動復旧可能な情報処理プログラムを提供できる。
【符号の説明】
【0113】
10 情報処理装置
12 メインプロセッサ
14 サブプロセッサ
16 共有メモリ
18、20 OS間通信モジュール
22 OS間通信コマンド格納領域
34 資源情報管理部