(57)【要約】【課題】マルチタスク機能を実現する場合であっても、リアルタイム性を阻害する優先順位逆転の発生を、未然に、かつ、容易に防止することを可能とする。【解決手段】複数の処理単位間での同期を取る同期手段と、同期を取ろうとする処理単位について設定されている優先順位を取得する取得手段と、取得した優先順位を保持しておく保持手段と、保持している先行処理単位についての優先順位と新たに取得する後続処理単位についての優先順位とを比較する比較手段と、その比較結果を基に前記同期手段の動作制御を行う制御手段と、前記比較手段での比較の結果前記先行処理単位についての優先順位のランクと前記後続処理単位についての優先順位のランクとの差が２段階以上あるとその旨を外部に通知するための通知手段と、を備える情報処理装置を構成する。【選択図】図２
2005084707.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理単位を略同時に処理するマルチタスク機能を有した情報処理装置であって、
前記複数の処理単位間での同期を取る同期手段と、
前記同期手段が同期を取ろうとする処理単位について設定されている優先順位を取得する取得手段と、
前記取得手段が取得した優先順位を保持しておく保持手段と、
前記保持手段が保持している先行処理単位についての優先順位と前記取得手段が新たに取得する後続処理単位についての優先順位とを比較する比較手段と、
前記比較手段での比較結果を基に前記同期手段の動作制御を行う制御手段と、
前記比較手段での比較の結果、前記先行処理単位についての優先順位のランクと前記後続処理単位についての優先順位のランクとの差が２段階以上あると、その旨を外部に通知するための通知手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記比較手段での比較の結果、前記先行処理単位についての優先順位のランクと前記後続処理単位についての優先順位のランクとの差が２段階以上あると、前記後続処理単位に対して同期処理を提供しないように前記同期手段の動作制御を行うものである
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記通知手段は、前記外部への通知を、エラーレベルの事象として行うものである
ことを特徴とする請求項１または２記載の情報処理装置。
【請求項４】
前記通知手段は、前記外部への通知を、警告レベルの事象として行うものである
ことを特徴とする請求項１または２記載の情報処理装置。
【請求項５】
前記通知手段は、前記外部への通知を、情報レベルの事象として行うものである
ことを特徴とする請求項１または２記載の情報処理装置。
【請求項６】
前記複数の処理単位のスケジューリングを行うためのオペレーティングシステム手段
を備えることを特徴とする請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
前記通知手段が通知する通知内容を受信するための通知受信手段に接続している
ことを特徴とする請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
複数の処理単位を略同時に処理するマルチタスク機能に対応した情報処理プログラムであって、
コンピュータを、
前記複数の処理単位間での同期を取る同期手段と、
前記同期手段が同期を取ろうとする処理単位について設定されている優先順位を取得する取得手段と、
前記取得手段が取得した優先順位を保持しておく保持手段と、
前記保持手段が保持している先行処理単位についての優先順位と前記取得手段が新たに取得する後続処理単位についての優先順位とを比較する比較手段と、
前記比較手段での比較結果を基に前記同期手段の動作制御を行う制御手段と、
前記比較手段での比較の結果、前記先行処理単位についての優先順位のランクと前記後続処理単位についての優先順位のランクとの差が２段階以上あると、その旨を外部に通知するための通知手段
として機能させることを特徴とする情報処理プログラム。
【請求項９】
前記コンピュータを、
前記複数の処理単位のスケジューリングを行うためのオペレーティングシステム手段
として機能させることを特徴とする請求項８記載の情報処理プログラム。
【請求項１０】
前記コンピュータを、
前記通知手段が通知する通知内容を受信するための通知受信手段
として機能させることを特徴とする請求項８または９記載の情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理単位を略同時に処理するマルチタスク機能に対応した情報処理装置および情報処理プログラムに関するものである。情報処理装置の具体例としては、例えば、マルチタスク機能を有した複写機、スキャナ装置、プリンタ装置またはこれらの機能を統合した複合機が挙げられ、さらにはパーソナルコンピュータ（ＰＣ）やサーバ装置等も含まれる。
【背景技術】
【０００２】
近年、複写機、スキャナ装置およびプリンタ装置としての機能を統合した複合機が普及しているが、その中でも画像データをデジタルデータとして取り扱うデジタル複合機が広く用いられるようになっている。デジタル複合機では、アナログ機に比べて高画質化や画像処理の柔軟性等の点で優れているのに加えて、ネットワークプリンティング機能やマルチＰＤＬ（Page Description Language）機能等といった多様な機能にも対応することが可能である。これら機能の多くは、デジタル複合機のコントローラが組み込み用途向けリアルタイムオペレーティングシステム（以下「ＲＴＯＳ」と略す）を搭載しており、そのＲＴＯＳが複数のソフトウエアをアプリケーションタスクとして実行制御することによって実現される。つまり、このＲＴＯＳによって、デジタル複合機では、複数のアプリケーションタスクを略同時に処理するマルチタスク機能を実現することができる。
【０００３】
ＲＴＯＳは、組み込み用途に特化して設計・実装されたものであり、アプリケーションタスクの優先順位に基づく制御や、ハードウェアデバイスからの割り込みの高速な応答性等を実現可能にするものである。ただし、ＲＴＯＳでは、性能・コンパクトさを重視していることから、ソフトウエアの信頼性、安定性、汎用性といった面をある程度犠牲にしている。そのため、例えば、「ウインドウズ（Windows）」（マイクロソフト（Microsoft）社の登録商標）や「ユニックス（ＵＮＩＸ）」（エックス／オープン・カンパニー・リミテッド（X/Open Company Limited）の登録商標）等といった汎用オペレーティングシステム（以下「ＯＳ」と略す）で採用されている仮想記憶機能は、多くのＲＴＯＳでは標準装備しておらず、実装した実メモリ上にロードできるプログラムの種類や数等も実メモリの容量に制限される。その他、メモリ保護機能やファイルシステム等といった機能についても同様である。
【０００４】
これに対して、汎用ＯＳでは、これらの機能を標準で備えており、高機能なシステムを安定して実現することが容易である。特に「リナックス（Linux）」（トルヴアルドズ・リヌス（Linus Torvalds）氏の登録商標）に代表されるＵＮＩＸ互換ＯＳでは、オープンソースライセンスを採用しており、ソースコードの取得に関しては極めて低いコストで実現することができる。これらの汎用ＯＳの利点を生かしながら、かつ、組込み向けに使用するために、ＲＴＯＳが備えているリアルタイム性を拡張したＯＳも製品化されている。
【０００５】
ところで、複数のアプリケーションタスクを処理するマルチタスク機能を実現する場合には、その実現がＲＴＯＳによるものであっても、あるいはリアルタイム性を拡張をした汎用ＯＳによるものであっても、通常は、セマフォやミューテックス等を用いて、各タスクについて設定された優先順位に従いつつ、それぞれについての同期制御を行うようになっている。ただし、このような場合において、異なる優先順位のタスク間でセマフォやミューテックス等の同期機能を介したクリティカルセクション（資源の共有部分）があると、優先順位の逆転が発生することがあり、その結果リアルタイム性が阻害される要因となり得ることが知られている。
【０００６】
ここで、優先順位の逆転現象について簡単に説明する。例えば図７に示すように、優先順位が高い順に「TaskＡ」〜「TaskＣ」まで三つのタスクが存在する場合を考える。この場合には、図例のように、「TaskＡ」と「TaskＣ」がリソース共有中に、「TaskＢ」がプリエンプトされ、その結果「TaskＡ」のほうが「TaskＢ」よりも優先順位が高いにも拘わらず「TaskＡ」が待たされてしまうという、プライオリティインバージョン（優先順位逆転）が発生してしまう可能性がある。
【０００７】
このような優先順位の逆転現象を防止するためには、いわゆる「優先順位の継承」を行うことが提案されている（例えば、特許文献１参照）。詳しくは、例えば図８に示すように、「TaskＡ」と「TaskＣ」との間で、「TaskＡ」がクリティカルセクションに入ろうとしてブロックされると、「TaskＣ」が一時的に「TaskＡ」の優先度を継承する。これにより、「TaskＢ」の起動要求があっても、その時点では「TaskＣ」のほうが優先順位が高いので、「TaskＢ」がプリエンプトされてしまうことがなくなり、結果として「TaskＡ」が待たされてしまうというプライオリティインバージョンの発生を防止することができるのである。
【０００８】
【特許文献１】特開平８−７７０２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した優先順位の継承による優先順位の逆転現象の防止は、必ずしも容易に実現し得るとは言えず、以下に述べるような問題点が生じてしまうことが考えられる。
【００１０】
例えば、優先順位継承の機能については、ＯＳカーネルのスケジューリングが複雑になるのと同期機能の実装が複雑になるため、全ての商用ＯＳでサポートされていないという問題点がある。実際、「ブイエックスワークス（VxWorks）」（ウインドリバ−システムズ・インク（Wind River Systems,Inc.）の登録商標）等の一部の商用ＲＴＯＳではサポートされているが、フリーで入手できるLinuxなどの汎用ＯＳではサポートされておらず、将来もサポートされるとは限らない。仮に優先順位継承の機能がサポートされても、元々タスクに設定していた優先順位を変更することで優先度逆転を防止しているので、優先順位を変更したときにアプリケーションレベルで他のタスクに悪影響が出ないとも限らない。
また、タスクの実装規約として、異なる優先順位のタスクとは同期オブジェクトを共有しないように定めることも考えられるが、アプリケーションタスク等の場合には、アプリケーションタスクの実装者に、自タスクの優先順位や同期オブジェクトを共有する相手側のタスクの優先順位のことまで把握させるのは、現実的に非常に難しいという問題点もある。つまり、優先順位の逆転現象の発生を把握すること自体が容易ではない。
これらのことから、優先順位の継承による優先順位の逆転現象の防止は、必ずしも容易に実現し得るとは言えないのである。
【００１１】
そこで、本発明は、リアルタイム性を阻害する優先順位逆転の発生を、未然に、かつ、容易に防止することを可能とする情報処理装置および情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、上記目的を達成するために案出された情報処理装置である。すなわち、複数の処理単位を略同時に処理するマルチタスク機能を有した情報処理装置であって、前記複数の処理単位間での同期を取る同期手段と、前記同期手段が同期を取ろうとする処理単位について設定されている優先順位を取得する取得手段と、前記取得手段が取得した優先順位を保持しておく保持手段と、前記保持手段が保持している先行処理単位についての優先順位と前記取得手段が新たに取得する後続処理単位についての優先順位とを比較する比較手段と、前記比較手段での比較結果を基に前記同期手段の動作制御を行う制御手段と、前記比較手段での比較の結果、前記先行処理単位についての優先順位のランクと前記後続処理単位についての優先順位のランクとの差が２段階以上あると、その旨を外部に通知するための通知手段とを備えることを特徴とするものである。
【００１３】
また、本発明は、上記目的を達成するために案出された情報処理プログラムである。すなわち、複数の処理単位を略同時に処理するマルチタスク機能に対応した情報処理プログラムであって、コンピュータを、前記複数の処理単位間での同期を取る同期手段と、前記同期手段が同期を取ろうとする処理単位について設定されている優先順位を取得する取得手段と、前記取得手段が取得した優先順位を保持しておく保持手段と、前記保持手段が保持している先行処理単位についての優先順位と前記取得手段が新たに取得する後続処理単位についての優先順位とを比較する比較手段と、前記比較手段での比較結果を基に前記同期手段の動作制御を行う制御手段と、前記比較手段での比較の結果、前記先行処理単位についての優先順位のランクと前記後続処理単位についての優先順位のランクとの差が２段階以上あると、その旨を外部に通知するための通知手段として機能させることを特徴とするものである。
【００１４】
上記構成の情報処理装置および情報処理プログラムによれば、例えばタスク、プロセスまたはスレッドといった複数の処理単位についてのマルチタスク機能を実現するのにあたり、同期手段がこれらの処理単位間での同期を取るとともに、制御手段がその同期手段の動作制御を行う。このときの動作制御の内容としては、例えば、取得手段が取得する先行処理単位と後続処理単位とで資源利用の競合が生じた場合に、比較手段での比較結果を基に、後続処理単位をブロックしたり、先行処理単位に代わって後続処理単位をプリエンプトしたりすることが挙げられる。
ただし、このときに、比較手段での比較の結果、先行処理単位についての優先順位のランクと後続処理単位についての優先順位のランクとの差が２段階以上あると、通知手段は、その旨を外部に通知する。ここで、優先順位のランク差が２段階以上としたのは、ランク差が１段階であれば優先順位の逆転現象が発生することはなく、ランク差が２段階以上である場合にのみ、優先順位の逆転現象が発生し得るからである。つまり、通知手段は、優先順位の逆転現象が発生し得る状況になると、その旨を外部に通知する。したがって、通知手段からの通知は、優先順位の逆転現象の発生を未然に防止するための情報として活用し得るものとなる。
【発明の効果】
【００１５】
本発明の情報処理装置および情報処理プログラムでは、複数の処理単位についてのマルチタスク機能を実現する場合であっても、通知手段からの通知を基にすることで、リアルタイム性を阻害する優先順位の逆転現象の発生を未然に防止する同期制御を行うことが可能となる。すなわち、例えばアプリケーションタスクの実装者に優先順位逆転の発生を未然に防止するための情報を提供したり、システムレベルで優先順位逆転が発生することを事前に検知させたりすることが可能となる。また、例えば優先順位継承のように動的に優先順位を変更することもないので、動的に優先順位を変更することによるアプリケーションレベルでの悪影響を防止することも可能になる。さらには、例えばプロセスやスレッドの実装者が勝手に優先順位を変更していないかチェックするといったように、実装規約を守っているか否かのチェックを行うことも可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、図面に基づき本発明に係る情報処理装置および情報処理プログラムについて説明する。
【００１７】
図１は、本発明に係る情報処理装置を含むシステム全体の構成例を示す説明図である。ここでは、複写機、スキャナ装置およびプリンタ装置としての機能を統合した複合機１に、本発明を適用した場合を例に挙げて説明する。すなわち、図例の複合機１に搭載されたコピーモジュール（ただし不図示）が本発明に係る情報処理装置に相当し、そのコピーモジュールにて実行される制御プログラムが本発明に係る情報処理プログラムに相当する。
ただし、本発明は、必ずしも複合機１に適用されたものではなく、複写機、スキャナ装置若しくはプリンタ装置、またはＰＣやサーバ装置等に適用されたものであってもよいことは言うまでもない。
【００１８】
ここで説明する複合機１は、コピー機能やネットワークプリンティング機能等といった多様な機能に対応することが可能であり、コピーモジュールが複数のソフトウエアをアプリケーションタスクとして実行制御することによって、これら機能が実現されるようになっている。つまり、複合機１では、その複合機１に搭載されたコピーモジュールが複数のタスク等を略同時に処理するマルチタスク機能を有しており、これにより多様な機能が実現されるのである。
【００１９】
続いて、本発明に係る情報処理装置の一例である、複合機１におけるコピーモジュールのハードウエア構成について説明する。図２は、コピーモジュールのハードウエア構成の具体例を示すブロック図である。図例のように、複合機１に搭載されて用いられるコピーモジュール１０は、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、システム時計１４と、スキャナ部１５と、印刷部１６と、操作表示パネル１７と、制御部１８と、ハードディスク１９と、スケジューリング制御部２０と、同期制御部２１と、通知制御部２２と、これらを互いに接続するシステムバス２３と、を備えて構成されている。
【００２０】
ＣＰＵ１１は、システムバス２３を介してシステム全体、すなわち複合機１全体の制御を行うものである。
ＲＯＭ１２は、ＣＰＵ１１が行う制御処理に必要な制御プログラムを予め格納しているものである。この制御プログラムには、スキャナ部１５で入力された画像データに対して画像処理を行ったり、その画像データを印刷部１６で出力したり、操作表示パネル１７の制御を行ったりするためのものが含まれる。
ＲＡＭ１３は、プログラム制御変数や各種処理のためのデータ等を一時的に格納するためのものである。
システム時計１４は、時刻情報（年月日、時分秒）をＣＰＵ１１に提供するものである。なお、システム時計１４は、システム電源断時や停電時等に時刻情報が消滅しないようバックアップ用電池を備え、常に現時点の時刻を保持しているものとする。
【００２１】
スキャナ部１５は、読み取り対象となる原稿から、その原稿上に描かれている画像を光学的に読み取って、画像データを取得するためのものである。
印刷部１６は、スキャナ部１５が取得した画像データまたはネットワークインタフェース１９を通じて外部から取得した画像データを、記録用紙上に可視画像として印刷出力するためのものである。
操作表示パネル１７は、複合機のユーザが操作するためのもので、スキャン処理や印刷処理等の設定を行うためのものである。
制御部１８は、スキャナ部１５や印刷部１６との間、あるいは操作表示パネル１７との間で制御データの授受を行ったり、画像データの入出力などの制御を行ったりするためのものである。
ハードディスク１９は、制御プログラムによる各種処理のためのデータを格納したり、スキャナ部１５が取得した、あるいは印刷部１６で出力する画像データを格納したりするものである。
【００２２】
スケジューリング制御部２０は、ＣＰＵ１１または制御部１８が各種制御処理を行う場合において、それぞれの制御処理に対するスケジューリング制御を、その処理単位毎に行うためのものである。つまり、スケジューリング制御部２０は、マルチタスク機能を実現する場合において、複数の処理単位（タスク、プロセス、スレッド等）をどのように実行するかのスケジューリングを管理するものである。具体的には、例えば、各処理単位に与えられた優先順位に従いつつ、優先順位の高いものほど多く実行するようにする。
【００２３】
同期制御部２１は、スケジューリング制御部２０がマルチタスク機能を実現する場合において、それぞれの処理単位間で資源の共有部分が存在すると、各処理単位間の同期を取るための制御を行うものである。具体的には、同期制御部２１は、例えばセマフォまたはミューテックスを利用して、各処理単位間の同期を取ることが考えられる。なお、セマフォおよびミューテックスは、いずれも公知技術であるため、ここではその詳細な説明を省略する。
【００２４】
通知制御部２２は、外部への通知処理の制御を行うためのものである。ここでいう外部とは、コピーモジュール１０の外部のことである。したがって、通知制御部２２は、例えば複合機１が備えるユーザインタフェース部または複合機１と接続する外部装置に対して、詳細を後述する情報の通知処理を行うようになっている。
【００２５】
これらの各部うち、スケジューリング制御部２０、同期制御部２１および通知制御部２２は、例えばＡＳＩＣ（Application Specified Integrated Circuit）のような独立した回路によって具現化することが考えられる。ただし、必ずしも独立した回路構成とする必要はなく、例えばＣＰＵ１１がこれらの各部２０〜２２としての機能を兼ね備えるようにしても構わない。
【００２６】
以上のようなハードウエア構成に続き、コピーモジュール１０が実行するソフトウエア構成について説明する。図３は、コピーモジュールのソフトウエア構成の具体例を示すブロック図である。図例のように、コピーモジュール１０には、汎用ＯＳ３０がインストールされている。
【００２７】
汎用ＯＳ３０は、複合機１上で動作するコピーアプリケーション（Copy Application）４０やユーザインタフェースアプリケーション（UI Application）５０等からのタスクやプロセス等の処理要求に応じて、以下に述べるような制御処理動作を実現する。すなわち、汎用ＯＳ３０では、スキャンドライバ（Scan Driver）３１がスキャナ部１５を動作させ、プリントドライバ（Print Driver）３２が印刷部１６を動作させ、ユーザインタフェースドライバ（UI Driver）３３が操作表示パネル１７を動作させ、コピーモジュール１０が「イーサネット（Ethernet）」（富士ゼロックス株式会社の登録商標）等のネットワーク２４に接続している場合には、ネットワークドライバ（Network Driver）３４がそのネットワーク２４との通信を制御するようになっている。さらに、汎用ＯＳ３０は、仮想記憶機能３５をも有しており、その仮想記憶機能３５がＲＡＭ１３内に形成された主記憶部１３ａやハードディスク１９内に形成された二次記憶部１８ａにおけるデータの記憶動作を制御するようになっている。
【００２８】
また、汎用ＯＳ３０は、中核的な存在として機能するＯＳカーネル（Kernel）３６をも有しており、そのＯＳカーネル３６がコピーアプリケーション４０やＵＩアプリケーション５０等からの処理要求に対する管理を行うようになっている。
【００２９】
このとき、ＯＳカーネル３６は、コピーアプリケーション４０やＵＩアプリケーション５０等からの処理要求に対して、各処理単位について設定された優先順位に従いつつ、それぞれについてのスケジューリング制御を行うことで、複数の処理単位を略同時に処理するマルチタスク機能を実現する。つまり、汎用ＯＳ３０のＯＳカーネル３６を実行することで、コピーモジュール１０のＣＰＵ１１は、同コピーモジュール１０のスケジューリング制御部２０を本発明におけるオペレーティングシステム手段として機能させることになる。
【００３０】
さらに、ＯＳカーネル３６は、マルチタスク機能を実現する場合において、それぞれの処理単位間で資源の共有部分が存在すると、各処理単位間の同期を取るための制御を行う。詳しくは、ＯＳカーネル３６では、競合する複数の処理単位間での同期を取るのにあたり、同期を取ろうとする処理単位について設定されている優先順位を取得するとともに、取得した優先順位を保持しておき、既に保持している先行処理単位についての優先順位と新たに取得する後続処理単位についての優先順位とを比較して、その比較結果を基に同期制御を行うことで、マルチタスク機能を実現する。このことから、汎用ＯＳ３０のＯＳカーネル３６を実行することで、コピーモジュール１０のＣＰＵ１１は、同コピーモジュール１０の同期制御部２１を、本発明における同期手段、取得手段、保持手段、比較手段および制御手段として機能させることになる。
【００３１】
さらにまた、ＯＳカーネル３６は、その特徴的な機能として、複数の処理単位間についての同期制御を行う場合において、既に保持している先行処理単位についての優先順位と新たに取得する後続処理単位についての優先順位との比較の結果、詳細を後述するように、先行処理単位についての優先順位のランクと後続処理単位についての優先順位のランクとの差が２段階以上あると、その旨を外部に通知する。ここでいう外部とは、コピーモジュール１０の外部のことであり、例えばＵＩアプリケーション５０がこれに該当する。つまり、汎用ＯＳ３０のＯＳカーネル３６を実行することで、コピーモジュール１０のＣＰＵ１１は、同コピーモジュール１０の通知制御部２２を、本発明における通知手段として機能させることになる。そして、その通知を受けるＵＩアプリケーション５０は、本発明における通知受信手段として機能することになる。
【００３２】
なお、ＯＳカーネル３６では、上述したように複数の処理単位間の同期を取るための制御を行うようになっているが、先行処理単位についての優先順位のランクと後続処理単位についての優先順位のランクとの差が２段階以上ある場合には、後続処理単位に対して同期処理を提供しないようにその動作制御を行う。
【００３３】
次に、以上のようなハードウエア構成およびソフトウエア構成を有したコピーモジュール１０が、マルチタスク機能を実現する場合における処理動作例について説明する。
ここでは、処理が要求される処理単位がプロセスである場合を例に挙げる。プロセスとは、ＯＳカーネル３６がプログラムを管理するための単位の一つのことをいい、例えば汎用ＯＳ３０の機能を実現するための部品であるシステムプロセスや、ユーザ権限で動作するアプリケーションを含むユーザプロセス等に分類できる。
また、ここでは、ＯＳカーネル３６が同期制御部２１により各プロセス間の同期制御を行うのにあたり、その同期制御をセマフォを用いて行う場合を例に挙げる。なお、セマフォを同時に取得できるプロセス数は「１」とする。
【００３４】
図４は、マルチタスク機能を実現する場合におけるプロセス処理の手順に一例を示すフローチャートである。以下、特にプロセスがセマフォを取得してクリティカルセクションに入って処理をする流れに重点をおいて説明する。
図例のように、コピーアプリケーション４０またはＵＩアプリケーション５０が起動されて一つのプロセス（以下「プロセス１」という）が生成されると、コピーモジュール１０では、当該プロセス１についての初期処理を実行するとともに、セマフォの初期処理をも行う（ステップ１０１、以下ステップを「Ｓ」と略す）。セマフォの初期処理については、例えば、プロセス１がポジックス（ＰＯＳＩＸ；Portable Operating System Interface for UNIX）のセマフォのＡＰＩ（Application Program Interface）である「sem_init（）」をコールすることで実行すればよい。なお、ＰＯＳＩＸとは、IEEE 1003.1標準によって規定されたアプリケーションのためのＵＮＩＸシステムのインターフェイスであり、その詳細についてはIEEE 1003.1 1b-1993を参照すればよい。また、ＡＰＩは、汎用ＯＳ３０がコピーアプリケーション４０やＵＩアプリケーション５０等のアプリケーションに対して公開しているプログラムインターフェイスである。したがって、各アプリケーションは、基本的にすべての処理をＡＰＩを経由して行うことになる。現在、一般的なＯＳのＡＰＩは、関数の形式を採っている。つまり、アプリケーションからは、適当なパラメータ（引数）を指定して、ＡＰＩの関数を呼び出すことになる。
【００３５】
初期処理が終了したら、その後、コピーモジュール１０では、セマフォの取得の要求をする（Ｓ１０２）。ここでは、プロセス１がＰＯＳＩＸのセマフォのＡＰＩである「sem_wait（）」をコールすることで実行する。なお、セマフォの取得の要求処理の詳細については後述する。そして、セマフォの取得が成功したか否かを判断し（Ｓ１０３）、セマフォの取得が失敗したら、異常終了として、プロセス１の処理を終了する。
【００３６】
一方、セマフォの取得が成功すれば、コピーモジュール１０では、続いて、プロセス１のクリティカルセクションの処理を実行する（Ｓ１０４）。ここでの処理は、アプリケーションに依存する。例えば、プロセス間で共有メモリ領域の更新処理などである。そして、プロセス１のクリティカルセクションの処理の終了後は、セマフォの解放の要求をする（Ｓ１０５）。この処理は、プロセス１がＰＯＳＩＸのセマフォのＡＰＩである「sem_post（）」をコールすることで実行する。その後は、プロセス１の終了処理を実行する（Ｓ１０６）。ここでは、セマフォの終了処理をも行うこととする。セマフォの終了処理については、プロセス１がＰＯＳＩＸのセマフォのＡＰＩである「sem_destroy（）」をコールすることで実行する。
これらの一連の処理が終了したら、プロセス１についての処理が終了することになる。
【００３７】
次に、以上のような一連の処理のうち、本発明における特徴的な処理であるセマフォ取得処理（Ｓ１０２）について、さらに詳しく説明する。
【００３８】
ここで、セマフォ取得処理の説明に先立ち、そのセマフォ取得処理に必要となるセマフォ管理テーブルについて説明する。図５は、セマフォ管理テーブルの一具体例を示す説明図である。
コピーモジュール１０内または複合機１内のコピーモジュールがアクセスし得る箇所には、図５に示すようなセマフォ管理テーブルが格納されているものとする。
セマフォ管理テーブルには、“セマフォＩＤ”、“共有数”、“プロセスＩＤ”および“優先順位”に関する情報が登録されている。“セマフォＩＤ”は、セマフォの識別子を示す。“共有数”は、セマフォが取得（共有）されている数を示す。“プロセスＩＤ”は、該当するセマフォを取得しているプロセスの識別子を示す。“優先順位”は、該当するセマフォを取得しているプロセスの優先順位を示す。
このようなセマフォ管理テーブルを用いれば、該当するセマフォと該当するセマフォを取得しているプロセスとの関係を管理することができるようになる。
【００３９】
続いて、セマフォ取得処理について説明する。図６は、セマフォ取得処理の手順の一例を示すフローチャートである。ここでの処理は、例えば、ＰＯＳＩＸのセマフォのＡＰＩである「sem_wait（）」の処理として実現するものとする。
コピーモジュール１０では、プロセス１がＰＯＳＩＸのセマフォのＡＰＩである「sem_wait（）」をコールすることによって、プロセス１からセマフォ取得の要求を受け付けると（Ｓ２０１）、同期制御部２１が該当するセマフォ取得の要求側のプロセスのＩＤと優先順位を取得する（Ｓ２０２）。このとき、一般的にＯＳが提供するＡＰＩをコールすることで、プロセスのＩＤと優先順位を取得するものとする。例えば、「getpid（）」によりプロセスのＩＤを取得し、「getpriority（）」により優先順位を取得することができる。ここでは、該当するセマフォのＩＤが「３」であるものとする。
【００４０】
そして、要求側プロセスの優先順位の取得が成功すれば（Ｓ２０３）、続いて、同期制御部２１は、該当のセマフォは既に他のプロセスに取得されているものであるか否かを判断する（Ｓ２０４）。該当のセマフォが既に他のプロセスに取得されているかどうかは、セマフォ管理テーブル（図５参照）上で該当するセマフォの共有数を調べればわかる。例えば、セマフォ管理テーブルにおける“共有数”が「１」であれば、該当するセマフォは既に他のプロセスにより取得されており、「０」であればまだ他のプロセスに取得されていないことがわかる。
例えば、プロセスのＩＤとして「1030」、優先順位として「５」が取得できたものとし、該当するセマフォのＩＤが「３」であるとすると、図５のセマフォ管理テーブルによれば、該当のセマフォは、既に他のプロセスによって取得されていることがわかる。
【００４１】
該当のセマフォが既に他のプロセスに取得されている場合には、次いで、同期制御部２１は、当該他のプロセスについての優先順位、すなわち保存されている該当セマフォ取得済プロセスについての優先順位を取得する（Ｓ２０５）。この優先順位は、セマフォ管理テーブル（図５参照）上で該当するセマフォの優先順位から取得することができる。ここでは、該当するセマフォのＩＤが「３」であるので、保存されている優先順位として「３」が取得できるものとする。
【００４２】
優先順位を取得したら、同期制御部２１は、要求側の優先順位のランクと保存されている優先順位のランクとを比較する（Ｓ２０６）。そして、その比較の結果から、両者の優先順位のランク差が２段階以上であるか否かを判断する（Ｓ２０７）。
この判断の結果、両者の優先順位のランク差が１段階であれば、同期制御部２１は、従来と同様に、通常のセマフォの取得処理を行う（Ｓ２０８）。すなわち、該当するセマフォが既に他のプロセスに取得されている場合には、セマフォが解放されるまで待たされる。  これは、該当のセマフォが他のプロセスに取得されていない場合（Ｓ２０４）についても同様であり、同期制御部２１は、従来と同様に、通常のセマフォの取得処理を行う（Ｓ２０８）。
そして、セマフォが正常に取得できれば（Ｓ２０９）、同期制御部２１は、要求側のプロセスのＩＤと優先順位をセマフォ管理テーブルの該当するセマフォのエントリに保存（更新）する（Ｓ２１０）。
【００４３】
これに対して、要求側の優先順位のランクと保存されている優先順位のランクとの比較の結果、両者の優先順位のランク差が２段階以上ある場合には（Ｓ２０７）、コピーモジュール１０では、通知制御部２２がその旨の外部への通知処理を行う（Ｓ２１１）。例えば、要求側の優先順位のランクが「５」であり、保存されている優先順位のランクが「３」であるので、そのランク差が２段階であることがわかる。したがって、その場合には、通知制御部２２が通知処理を行う。通知処理は、例えば、ＡＰＩの戻り値や「errno」のセット等で通知を行うことができるが、その他にも様々な方法を採ることが考えられる。具体的には、要求側の優先順位のランク「５」と保存されている優先順位のランク「３」との差が２段階なので、例えば優先順位のランク「４」のプロセスにプリエンプトされて優先順位逆転が起こる可能性があるので、その場合には、ＡＰＩのエラーの戻り値と、「errno」で優先順位逆転が起こる可能性があることを示す番号をセットすることで、コピーモジュール１０の外部の上位アプリケーションであるＵＩアプリケーション５０に通知する。また、両者の優先順位のランク差が２段階以上ある場合において、同期制御部２１は、上述したようなセマフォの取得処理を行わず、要求側プロセスに対して同期処理を提供しないようにする。
なお、同期制御部２１および通知制御部２２は、優先順位取得（Ｓ２０３）またはセマフォ取得（Ｓ２０９）が正常に行えなかった場合にも、優先順位のランク差が２段階以上あった場合と同様の処理を行う（Ｓ２１１）。
【００４４】
以上のように、本実施形態で説明したコピーモジュール１０およびそのコピーモジュール１０で実行される汎用ＯＳ３０におけるＯＳカーネル３６によれば、既に他のプロセスに取得され保存されている先行プロセスについての優先順位と、新たに要求された後続プロセスについての優先順位とを比較し、両者の優先順位のランク差が２段階以上であれば、優先順位の逆転現象が発生し得ることから、その旨を外部へ通知するようになっている。つまり、優先順位逆転が発生しそうな場合に、同期の機能を提供するセマフォのＡＰＩがエラーの戻り値と該当する「errno」をセットするので、セマフォＡＰＩの呼出側のプロセスでそのことを検出することが可能になる。したがって、例えば、アプリケーションタスクのテスト中に、優先順位逆転が発生しそうなことが検出された場合には、優先順位の設定を変更するなどして、未然に防止することが可能になる。
【００４５】
また、本実施形態におけるコピーモジュール１０およびＯＳカーネル３６によれば、優先順位のランク差が２段階以上である場合に、通知制御部２２がその旨の通知処理を行うだけではなく、同期制御部２１が要求側プロセスに対して同期処理を提供しないようにしているので、優先順位の逆転現象の発生防止を確実なものとすることができる。つまり、複数のプロセスについてのマルチタスク機能を実現する場合であっても、リアルタイム性を阻害する優先順位の逆転現象の発生を確実に防止する同期制御を行うことが可能となる。
【００４６】
ところで、本実施形態におけるコピーモジュール１０およびＯＳカーネル３６では、優先順位のランク差が２段階以上であると、通知制御部２２による通知処理を、同期制御部２１による同期処理を提供停止を伴うエラーレベルの事象として行う場合を例に挙げて説明したが、本発明はこれに限定されるものではなく、例えば警告レベルの事象として行うものであっても、あるいは情報レベルの事象として行うものであってもよい。警告レベルの事象として行う場合には、同期制御部２１による同期処理を提供停止は伴わないが、優先順位のランク差が２段階以上である旨の情報を、通知制御部２２が異常状態に関する警告情報として通知する。また、情報レベルの事象として行う場合には、優先順位のランク差が２段階以上である旨の情報を、通知制御部２２が単にシステムログに記録する等のために通知する。
【００４７】
また、通知制御部２２による通知処理は、ＡＰＩの戻り値と「errno」のセットで実現することを例に挙げたが、上述した情報レベルの場合のようにシステムログ等に記録を残したり、メッセージ送信等で通知したりするなど、他の方法を用いて実現してもよい。ただし、通知制御部２２からの通知を受ける受信側が、当該他の方法に対応していることが条件となる。例えば、メッセージ送信で通知をする場合には、メッセージ受信による通知受信の手段を用意しておく必要が生じる。
【００４８】
いずれの場合にしても、優先順位のランク差が２段階以上である場合にその旨を外部に通知するようにすれば、例えばアプリケーションタスクの実装者に優先順位逆転の発生を未然に防止するための情報を提供したり、システムレベルで優先順位逆転が発生することを事前に検知させたりすることが可能となる。また、例えば優先順位継承のように動的に優先順位を変更することもないので、動的に優先順位を変更することによるアプリケーションレベルでの悪影響を防止することも可能になる。さらには、例えばプロセスやスレッドの実装者が勝手に優先順位を変更していないかチェックするといったように、実装規約を守っているか否かのチェックを行うことも可能となる。
つまり、リアルタイム性を阻害する優先順位逆転の発生を、未然に、かつ、容易に防止することが可能になるのである。
【００４９】
なお、本実施形態では、処理単位がプロセスである場合を例に挙げて説明したが、本発明はこれに限定されるものではなく、タスクやスレッド等といった他の処理単位を用いて実現してもよい。
また、本実施形態では、同期制御をセマフォを用いて行う場合を例に挙げて説明したが、本発明はこれに限定されるものではなく、ミューテックス等の他の同期手段を用いて実現してもよい。
さらに、本実施形態では、同時に取得できるセマフォの数が「１」である場合を例に挙げたが、「２」以上として実現してもよい。「２」以上とする場合には、セマフォ管理テーブル上で該当するセマフォに対して管理するプロセスを複数にして実現すればよい。このときは、要求側の優先順位と保存されている複数の優先順位をそれぞれ比較し、ランク差が２段階以上あれば、優先順位逆転現象が発生する可能性があると判断すればよいのである。
【図面の簡単な説明】
【００５０】
【図１】本発明に係る情報処理装置を含むシステム全体の構成例を示す説明図である。
【図２】本発明に係る情報処理装置のハードウエア構成の具体例を示すブロック図である。
【図３】本発明に係る情報処理装置のソフトウエア構成の具体例を示すブロック図である。
【図４】本発明に係る情報処理装置がマルチタスク機能を実現する場合におけるプロセス処理の手順に一例を示すフローチャートである。
【図５】セマフォ取得処理に必要となるセマフォ管理テーブルの一具体例を示す説明図である。
【図６】本発明に係る情報処理装置におけるセマフォ取得処理の手順の一例を示すフローチャートである。
【図７】優先順位の逆転の概要を示す説明図である。
【図８】優先順位の継承の概要を示す説明図である。
【符号の説明】
【００５１】
１…複合機、１０…コピーモジュール、１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、１４…システム時計、１５…スキャナ部、１６…印刷部、１７…操作表示パネル、１８…制御部、１９…ハードディスク、２０…スケジューリング制御部、２１…同期制御部、２２…通知制御部、２３…システムバス、３０…汎用ＯＳ、３１…スキャンドライバ、３２…プリントドライバ、３３…ＵＩドライバ、３４…ネットワークドライバ、３５…仮想記憶、３６…ＯＳカーネル、４０…コピーアプリケーション、５０…ＵＩアプリケーション
【図１】
2005084707.tif 000003
【図２】
2005084707.tif 000004
【図３】
2005084707.tif 000005
【図４】
2005084707.tif 000006
【図５】
2005084707.tif 000007
【図６】
2005084707.tif 000008
【図７】
2005084707.tif 000009
【図８】
2005084707.tif 000010