JP4179110B2 - 情報処理装置、情報処理プログラムおよび情報処理方法 - Google Patents

情報処理装置、情報処理プログラムおよび情報処理方法 Download PDF

Info

Publication number
JP4179110B2
JP4179110B2 JP2003312511A JP2003312511A JP4179110B2 JP 4179110 B2 JP4179110 B2 JP 4179110B2 JP 2003312511 A JP2003312511 A JP 2003312511A JP 2003312511 A JP2003312511 A JP 2003312511A JP 4179110 B2 JP4179110 B2 JP 4179110B2
Authority
JP
Japan
Prior art keywords
processing unit
priority
information processing
comparison
notification
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.)
Expired - Fee Related
Application number
JP2003312511A
Other languages
English (en)
Other versions
JP2005084707A (ja
JP2005084707A5 (ja
Inventor
正樹 内田
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation 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 Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2003312511A priority Critical patent/JP4179110B2/ja
Publication of JP2005084707A publication Critical patent/JP2005084707A/ja
Publication of JP2005084707A5 publication Critical patent/JP2005084707A5/ja
Application granted granted Critical
Publication of JP4179110B2 publication Critical patent/JP4179110B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Facsimiles In General (AREA)

Description

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

Claims (10)

  1. 複数の処理単位を略同時に処理するマルチタスク機能を有した情報処理装置であって、
    前記複数の処理単位のそれぞれの間で資源の共有部分が存在すると各処理単位間で同期を取るための制御を行う同期手段と、
    前記同期手段が同期を取ろうとする処理単位について設定されている優先順位を取得する取得手段と、
    前記取得手段が取得した優先順位を保持しておく保持手段と、
    前記保持手段が保持している先行処理単位についての優先順位と前記取得手段が新たに取得する後続処理単位についての優先順位とを比較する比較手段と、
    前記比較手段での比較結果を基に前記同期手段の動作制御を行うとともに、当該比較手段での比較の結果、前記先行処理単位についての優先順位のランクと前記後続処理単位についての優先順位のランクとの差が2段階以上あると、前記後続処理単位に対して同期を取るための制御を行わせないように前記同期手段の動作制御を行う制御手段と、
    前記比較手段での比較の結果、前記先行処理単位についての優先順位のランクと前記後続処理単位についての優先順位のランクとの差が2段階以上あると、その旨を当該情報処理装置外部の上位アプリケーションに通知するための通知手段と
    を備えることを特徴とする情報処理装置。
  2. 前記通知手段は、前記外部への通知を、エラーレベルの事象として行うものである
    ことを特徴とする請求項記載の情報処理装置。
  3. 前記通知手段は、前記外部への通知を、警告レベルの事象として行うものである
    ことを特徴とする請求項記載の情報処理装置。
  4. 前記通知手段は、前記外部への通知を、情報レベルの事象としてシステムログに記録することで行うものである
    ことを特徴とする請求項記載の情報処理装置。
  5. 前記複数の処理単位のスケジューリングを行うためのスケジューリング制御手段
    を備えることを特徴とする請求項1〜4のいずれか1項に記載の情報処理装置。
  6. 前記通知手段が通知する通知内容を受信するための通知受信手段に接続している
    ことを特徴とする請求項1〜のいずれか1項に記載の情報処理装置。
  7. 複数の処理単位を略同時に処理するマルチタスク機能に対応した情報処理プログラムであって、
    コンピュータを、
    前記複数の処理単位のそれぞれの間で資源の共有部分が存在すると各処理単位間で同期を取るための制御を行う同期手段と、
    前記同期手段が同期を取ろうとする処理単位について設定されている優先順位を取得する取得手段と、
    前記取得手段が取得した優先順位を保持しておく保持手段と、
    前記保持手段が保持している先行処理単位についての優先順位と前記取得手段が新たに取得する後続処理単位についての優先順位とを比較する比較手段と、
    前記比較手段での比較結果を基に前記同期手段の動作制御を行うとともに、当該比較手段での比較の結果、前記先行処理単位についての優先順位のランクと前記後続処理単位についての優先順位のランクとの差が2段階以上あると、前記後続処理単位に対して同期を取るための制御を行わせないように前記同期手段の動作制御を行う制御手段と、
    前記比較手段での比較の結果、前記先行処理単位についての優先順位のランクと前記後続処理単位についての優先順位のランクとの差が2段階以上あると、その旨を上位アプリケーションに通知するための通知手段
    として機能させることを特徴とする情報処理プログラム。
  8. 前記コンピュータを、
    前記複数の処理単位のスケジューリングを行うためのスケジューリング制御手段
    として機能させることを特徴とする請求項記載の情報処理プログラム。
  9. 前記コンピュータを、
    前記通知手段が通知する通知内容を受信するための通知受信手段
    として機能させることを特徴とする請求項7または8記載の情報処理プログラム。
  10. 複数の処理単位を略同時に処理するマルチタスク機能を有した情報処理装置で用いられる情報処理方法あって、
    前記複数の処理単位のそれぞれの間で資源の共有部分が存在すると各処理単位間で同期を取るための制御を行う同期ステップと、
    前記同期ステップが同期を取ろうとする処理単位について設定されている優先順位を取得する取得ステップと、
    前記取得ステップが取得した優先順位を保持しておく保持ステップと、
    前記保持ステップが保持している先行処理単位についての優先順位と前記取得ステップが新たに取得する後続処理単位についての優先順位とを比較する比較ステップと、
    前記比較ステップでの比較結果を基に前記同期ステップの動作制御を行うとともに、当該比較ステップでの比較の結果、前記先行処理単位についての優先順位のランクと前記後続処理単位についての優先順位のランクとの差が2段階以上あると、前記後続処理単位に対して同期を取るための制御を行わせないように前記同期ステップの動作制御を行う制御ステップと、
    前記比較ステップでの比較の結果、前記先行処理単位についての優先順位のランクと前記後続処理単位についての優先順位のランクとの差が2段階以上あると、その旨を当該情報処理装置外部の上位アプリケーションに通知するための通知ステップと
    を備えることを特徴とする情報処理方法。
JP2003312511A 2003-09-04 2003-09-04 情報処理装置、情報処理プログラムおよび情報処理方法 Expired - Fee Related JP4179110B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003312511A JP4179110B2 (ja) 2003-09-04 2003-09-04 情報処理装置、情報処理プログラムおよび情報処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003312511A JP4179110B2 (ja) 2003-09-04 2003-09-04 情報処理装置、情報処理プログラムおよび情報処理方法

Publications (3)

Publication Number Publication Date
JP2005084707A JP2005084707A (ja) 2005-03-31
JP2005084707A5 JP2005084707A5 (ja) 2006-10-12
JP4179110B2 true JP4179110B2 (ja) 2008-11-12

Family

ID=34413744

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003312511A Expired - Fee Related JP4179110B2 (ja) 2003-09-04 2003-09-04 情報処理装置、情報処理プログラムおよび情報処理方法

Country Status (1)

Country Link
JP (1) JP4179110B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4984153B2 (ja) * 2007-09-12 2012-07-25 独立行政法人産業技術総合研究所 実時間タスクにおけるブロック回避方法
JP5176230B2 (ja) * 2008-03-10 2013-04-03 株式会社日立製作所 計算機システム、計算機制御方法及び計算機制御プログラム
JP5162515B2 (ja) * 2009-04-03 2013-03-13 京セラドキュメントソリューションズ株式会社 画像処理装置
CN102632730B (zh) * 2011-02-09 2014-09-17 江门市得实计算机外部设备有限公司 打印机远程智能监控及优化升级的方法、系统和装置

Also Published As

Publication number Publication date
JP2005084707A (ja) 2005-03-31

Similar Documents

Publication Publication Date Title
US8166480B2 (en) Reducing lock contention by adding a time slice to an active thread holding a lock
EP2893444B1 (en) Quota-based resource management
US20170163762A1 (en) Asynchronous and idempotent distributed lock interfaces
JP4956418B2 (ja) コンピュータ装置用のオペレーティング・システムの、またはそれに関する改良
WO2009147802A1 (ja) 優先度制御装置及び優先度制御方法
US20050125789A1 (en) Executing processes in a multiprocessing environment
US20080028391A1 (en) Minimizing user disruption during modification operations
US7472214B2 (en) Real-time embedded simple monitor method and computer product
WO2010067492A1 (ja) マルチプロセッサシステム及びその排他制御の調停方法
JP2009187568A (ja) エージェントシステム
JP2008047112A (ja) エラーハンドリング及びファームウェア更新を調停するための方法及びシステム
JP4843372B2 (ja) 画像処理装置
KR20100006530A (ko) 경합을 줄이기 위한 윈도우 락
EP3158446B1 (en) Acquiring resource lease using multiple lease servers
JPWO2011096163A1 (ja) 情報処理システム、排他制御方法および排他制御用プログラム
JP4179110B2 (ja) 情報処理装置、情報処理プログラムおよび情報処理方法
US9021489B2 (en) Start, suspend and resume an application program where the application program utilizes the same handle to identify a resource upon resumption
US9665323B2 (en) Print control device using setting value limitation information that limits a print setting value selectable by a user program and print system therefore
US8832705B1 (en) Ordered mutual exclusion
US20140176979A1 (en) Management system of information processing apparatus, information processing apparatus, control method of information processing apparatus, and storage medium
JP2005149312A (ja) タスク管理システム
JP3840831B2 (ja) 情報処理装置
CN112540886A (zh) Cpu负荷值检测方法和装置
JP2003233519A (ja) ネットワーク上のファイル資源のためのファイル制御装置
CN115981968A (zh) 监控pdf文件加载的方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060824

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060824

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080408

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080606

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080805

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080818

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110905

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120905

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120905

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130905

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees