(57)【要約】【課題】複数のタスクの一が共有資源にアクセスするときに、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける排他制御を効率よく行うことができるタスク排他制御方法及びタスク排他制御装置を提供する。【解決手段】タスクＡとタスクＢは共有リソースにアクセスする。共有リソースアクセス期間（同図における★印を付した期間）はタスクＡによる共有リソースの占有を維持する必要がある。優先順位の低いタスクＡが共有リソースにアクセスすると、前記期間に入る前に、タスクＡは自分の優先順位「３」を「１」に上げる。この結果、強制的なタスク切り換えイベントであるＵＳＢ割込みイベント発生時においても、タスクＡによる共有リソースの占有が継続される。そして、タスクＡが完了すると、優先順位は「１」から元の「３」へ戻される。【選択図】　図３
2004127039.tif 000002
【特許請求の範囲】
【請求項１】
共有資源にアクセスする複数のタスクが存在し、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける期間が予め設定されており、共有資源を占有しているタスクが前記期間にあるときは、該タスクの優先順位を、共有資源を共有し合う他のタスクより上位の優先順位に動的に切り換えることを特徴とするタスク排他制御方法。
【請求項２】
共有資源にアクセスする複数のタスクと、
強制的なタスク切り換えイベント発生時に前記共有資源を占有しているタスクが切り換わらず占有し続ける期間が予め設定されており、
前記共有資源を占有しているタスクが前記期間にあるときは、当該タスクの優先順位を、前記共有資源を共有し合う他のタスクより上位の優先順位に動的に切り換える優先順位切換手段と
を備えていることを特徴とするタスク排他制御装置。
【請求項３】
強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、前記共有資源を占有しようとするタスクは、該共有資源を共有し合うタスクの中で優先順位の一番高いタスクである場合はその優先順位をそのまま維持し、一方、前記共有資源を共有し合うタスクの中で２番目以下の優先順位である場合は、共有資源を共有し合う他のタスクの優先順位を変化させず該他のタスクより上位の優先順位に自分で切り換えることを特徴とする請求項２に記載のタスク排他制御装置。
【請求項４】
前記優先順位切換手段は、前記共有資源にアクセスする複数のタスクの優先順位を管理する管理テーブルと、
強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、該共有資源を占有し続けようとするタスクは、該タスクの優先順位が前記共有資源を共有し合うタスクの中で一番高い優先順位になるように前記管理テーブルを書き替える書替手段とを備え、
起動すべきタスクを前記管理テーブルに設定された優先順位を参照して決定する起動タスク決定手段を備えたことを特徴とする請求項２又は請求項３に記載のタスク排他制御装置。
【請求項５】
前記共有資源にアクセスするタスクは、外部と通信するデータの切り換え制御を行う通信コントローラを制御するタスクであり、前記共有資源は通信コントローラに備えられたデータ格納部であることを特徴とする請求項２〜４のいずれか一項に記載のタスク排他制御装置。
【請求項６】
所定の優先順位が設定されている、プリンタ機能の一のタスクとスキャナ機能の一のタスクが各々アクセスする共有資源を備え、優先順位の低いタスクが前記共有資源にアクセスするときは、該タスクの優先順位を共有資源を共有する他のタスクより高い優先順位に上げる優先順位切換手段を備えたことを特徴とするタスク排他制御装置。
【請求項７】
前記スキャナ機能の一のタスクはスキャナの読取データを通信コントローラを介して出力する出力制御を行うタスクであり、前記プリンタ機能の一のタスクはプリンタに送信する印刷データを前記通信コントローラを介して入力する入力制御を行うタスクであって、前記両タスクは前記通信コントローラを共有資源とすることを特徴とする請求項６に記載のタスク排他制御装置。
【請求項８】
前記スキャナ機能の一のタスクは前記プリンタ機能の一のタスクよりも優先順位が低く設定されており、前記スキャナ機能の一のタスクが前記通信コントローラにアクセスするときは、前記優先順位切換手段は、該スキャナ機能の一のタスクの優先順位を前記プリンタ機能の一のタスクより高い優先順位に上げることを特徴とする請求項６又は７に記載のタスク排他制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、共有資源にアクセスする複数のタスクの排他制御を行うタスク排他制御方法及びタスク排他制御装置に関するものである。
【０００２】
【従来の技術】
従来、プリンタ機能とスキャナ機能とコピー機能を備えた複合型複写機（以下、複合機と称す）が知られている。この種の複合機では、通常、一つの入出力ポートを備え、ホストコンピュータから転送されてくる印刷データを入出力ポートで受信してプリンタ機能部へ送るとともに、スキャナ機能部で読み取られた画像データは入出力ポートからホストコンピュータに送信される。入出力ポートには例えばＵＳＢポートが使用されている。
【０００３】
従来、例えば図８（ａ）に示すように、複合機７０においてプリンタ部７１とスキャナ部７２はＵＳＢ１制御部７３とＵＳＢ２制御部７４を介してそれぞれハブ７５に接続されていた。そしてホストコンピュータ７６に対する入力データ（印刷データ）と出力データ（スキャナ読み取り画像データ）はハブ７５で切り換えることで制御していた。ＣＰＵ７７はプリンタ部７１、スキャナ部７２、ＵＳＢ１制御部７３およびＵＳＢ２制御部７４に接続され、ＵＳＢ１制御部７３およびＵＳＢ２制御部７４の通信制御を司る各タスク（通信制御タスク）を実行していた。この場合、ＵＳＢ１制御部７３及びＵＳＢ２制御部７４がそれぞれ通信制御タスク起動時に使用するメモリ空間は、図８（ｂ）に示すようにＵＳＢ１用とＵＳＢ２用でそれぞれ独立したアドレスが設けられていたので、両タスクが資源をめぐって競合することはなかった。
【０００４】
ところで、図２に示すように、プリンタ部２２とスキャナ部２３が共通のＵＳＢマルチエンド部２５に接続されたマルチエンド方式を採用すれば、ハブ７５を無くすことができる。この場合、ＵＳＢマルチエンド部２５では、ＣＰＵ２０が、印刷データのＩ／Ｆ処理を行うプリンタＩ／Ｆ制御タスクと、スキャナ部２３で読み取った画像データのＩ／Ｆ処理を行うスキャナＩ／Ｆ制御タスクを所定の優先順位に従って起動することになる。また、ＵＳＢマルチエンド部２５には、割込みマスクレジスタやエンドポイント応答制御レジスタ等のレジスタを備えているが、これらは図２（ｂ）に示すようにメモリ空間Ｍにおいて１つのアドレスしか持たず、プリンタＩ／Ｆ制御タスクとスキャナＩ／Ｆ制御タスクは資源（レジスタ）を共有することになる。
【０００５】
従来、２つのタスクＡ，Ｂが共有資源（共有リソース）にアクセスする場合、優先順位（プライオリティ）が予め設定され、各タスクは優先順位に従って優先順位の高い方が優先的に起動される。しかし、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが、優先順位の高いタスクに強制的に切り換えられると、その割り込み起動されたタスクが共有資源（例えばレジスタ）に先のタスクが設定したデータを別のデータに書替えてしまう。その後、その割込みタスクが完了し、先のタスクが再び起動されて続きの処理をするときに既に割込みタスクによって共有資源の設定データが書替えられてしまっているので、正しい処理が行えなくなる。このような不都合を回避するため、強制的なタスク切り換えイベント発生時であっても、共有資源を占有しているタスクが切り換わらず占有し続けるような排他制御が必要になる。
【０００６】
従来、この種の排他制御方法として、セマフォ値を用いて、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続けられるようにする排他制御技術が開示されている（例えば特許文献１）。上記の２つのタスクＡ，Ｂ間でセマフォ値を用いて排他制御する場合、例えば図９に示すようなタスク管理が行われることになる。
【０００７】
図９に示すように、タスクＡ、タスクＢの状態（ｒｕｎ，ｒｅａｄｙ，ｗａｉｔ等）と優先順位を管理するとともにセマフォ値を管理する。共有リソースにアクセスする期間（同表で★印の付された期間）は、同図中（０）のタイミングでセマフォ値が「０」に設定され、セマフォ資源（共有リソース）をタスクＡが占有することになる。その後、強制的なタスク切り換えイベントであるＵＳＢ割込みが発生すると、ＯＳはセマフォ値を確認しそれが「０」に設定されていることから、共有リソースのタスクＡ占有を維持させるべくタスクＢを「ｗａｉｔ」状態とする。こうして同表中（１）のタイミングでセマフォ資源をタスクＢが獲得しようとするが、タスクＡが返却するまでタスクＢはｗａｉｔ状態となる。そしてタスクＡの共有リソースアクセス期間が終了し、同図中（２）のタイミングでは、タスクＡがセマフォ資源を返却し、セマフォ待ちだったタスクＢがセマフォ資源の占有を引き継ぎ共有リソースへアクセスを開始する。
【０００８】
【特許文献１】
特開平５−２５０１８８号公報　（明細書第３−５頁、第１図−第７図）
【０００９】
【発明が解決しようとする課題】
しかし、セマフォ値で管理する方法を採用した場合、セマフォ値を管理する管理テーブルが余分に必要なり、しかも優先順位とセマフォ値の両方を確認する処理となるので、排他制御に必要な管理テーブルで必要となるメモリ資源が多く必要になるうえ、処理が複雑になるという問題があった。
【００１０】
本発明の目的は、複数のタスクの一が共有資源にアクセスするときに、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける排他制御を効率よく行うことができるタスク排他制御方法及びタスク排他制御装置を提供することにある。
【００１１】
【課題を解決するための手段】
上記目的を達成するために本発明では、タスク管理方法において、共有資源にアクセスする複数のタスクが存在し、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける期間が予め設定されており、共有資源を占有しているタスクが前記期間にあるときは、該タスクの優先順位を、共有資源を共有し合う他のタスクより上位の優先順位に動的に切り換えることを要旨とする。
【００１２】
この方法によれば、前記期間においては、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける。しかも優先順位を動的に切り換えることで排他制御を実現するので、資源管理テーブルを使用する排他制御方法に比べ、排他制御に要する処理時間を短縮できる。
【００１３】
また本発明では、タスク排他制御装置において、共有資源にアクセスする複数のタスクと、強制的なタスク切り換えイベント発生時に前記共有資源を占有しているタスクが切り換わらず占有し続ける期間が予め設定されており、前記有資源を占有しているタスクが前記期間にあるときは、当該タスクの優先順位を、前記共有資源を共有し合う他のタスクより上位の優先順位に動的に切り換える優先順位切換手段とを備えていることを要旨とする。
【００１４】
この構成によれば、請求項１の発明と同様の作用効果が得られる。
さらに本発明では、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、前記共有資源を占有しようとするタスクは、該共有資源を共有し合うタスクの中で優先順位の一番高いタスクである場合はその優先順位をそのまま維持し、一方、前記共有資源を共有し合うタスクの中で２番目以下の優先順位である場合は、共有資源を共有し合う他のタスクの優先順位を変化させず該他のタスクより上位の優先順位に自分で切り換えることを要旨とする。
【００１５】
この発明によれば、共有資源を占有しようとするタスクは、自分の優先順位を他のタスクより上位に切り換えるだけで、他のタスクの優先順位は変更されないので、優先順位を動的に切り換える処理が単純で済むうえ、優先順位の管理の一貫性を維持でき制御上の安定性も得られる。
【００１６】
また本発明では、前記優先順位切換手段は、前記共有資源にアクセスする複数のタスクの優先順位を管理する管理テーブルと、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、該共有資源を占有し続けようとするタスクは、該タスクの優先順位が前記共有資源を共有し合うタスクの中で一番高い優先順位になるように前記管理テーブルを書き替える書替手段とを備え、起動すべきタスクを前記管理テーブルに設定された優先順位を参照して決定する起動タスク決定手段を備えたことを要旨とする。
【００１７】
この構成によれば、管理テーブルに設定された優先順位を参照して起動タスクが決定されるので、資源を管理する管理テーブルを用いた構成に比べ、排他制御の処理時間が短く済む。
【００１８】
さらに本発明では、前記共有資源にアクセスするタスクは、外部と通信するデータの切り換え制御を行う通信コントローラを制御するタスクであり、前記共有資源は通信コントローラに備えられたデータ格納部であることを要旨とする。
【００１９】
この構成によれば、共有資源にアクセスするタスクは、外部と通信するデータの切り換え制御を行う通信コントローラを制御するタスクであるので、例えばハブを使用しない通信制御構造が可能となり、しかもデータの通信を行う複数のタスクの排他制御に要する処理時間が短く済む。
【００２０】
また本発明では、所定の優先順位が設定されている、プリンタ機能の一のタスクとスキャナ機能の一のタスクが各々アクセスする共有資源を備え、優先順位の低いタスクが前記共有資源にアクセスするときは、該タスクの優先順位を共有資源を共有する他のタスクより高い優先順位に上げる優先順位切換手段を備えたことを要旨とする。
【００２１】
この構成によれば、プリンタ機能の一のタスクとスキャナ機能の一のタスクのうち優先順位の低いタスクが共有資源にアクセスするときは、該タスクの優先順位が共有資源を共有する他のタスクより高い優先順位に上げられる。そして、優先順位に従って起動すべきタスクが決定されるとき、優先順位の低いタスクが共有資源を引き続き占有する状態を維持できる。このため、タスク間の競合が回避されるとともに、優先順位に従って起動タスクを決定する構成なため、資源管理テーブルを使用する排他制御方法に比べ、排他制御に要する処理時間を短縮できる。
【００２２】
また本発明では、前記スキャナ機能の一のタスクはスキャナの読取データを通信コントローラを介して出力する出力制御を行うタスクであり、前記プリンタ機能の一のタスクはプリンタに送信する印刷データを前記通信コントローラを介して入力する入力制御を行うタスクであって、前記両タスクは前記通信コントローラを共有資源とすることを要旨とする。
【００２３】
この構成によれば、スキャナの読取データの出力制御を行うタスクと、プリンタに送信する印刷データの入力制御を行うタスクとが排他制御により競合せず、しかも排他制御の処理速度が速いため処理時間が短く済む。
【００２４】
さらに本発明では、前記スキャナ機能の一のタスクは前記プリンタ機能の一のタスクよりも優先順位が低く設定されており、前記スキャナ機能の一のタスクが前記通信コントローラにアクセスするときは、前記優先順位切換手段は、該スキャナ機能の一のタスクの優先順位を前記プリンタ機能の一のタスクより高い優先順位に上げることを要旨とする。
【００２５】
この構成によれば、スキャナ機能の一のタスクがプリンタ機能の一のタスクよりも優先順位が低くなるように設定されることで、通常の優先順位に従って効率のよいタスクの排他制御が行われる。しかし、スキャナ機能の一のタスクが共有資源である通信コントローラにアクセスするときは、該スキャナ機能の一のタスクの優先順位がプリンタ機能の一のタスクより高い優先順位に上げられるため、これらのタスク間で競合しない排他制御が行われる。
【００２６】
【発明の実施の形態】
以下、本発明を具体化した一実施形態を、図１〜図４に基づいて説明する。
図４は、一台でスキャナ、プリンタ、コピーが可能な複合型複写機の斜視図である。複合型複写装置（以下、複合機という）１は、本体２の上面に開閉式のカバー３を備え、カバー３を開いた本体２の上部にはその上面がガラスなどの透明板からなるスキャナ読取面４を有するスキャナ装置５が内蔵され、本体２内のスキャナ装置５の下方にはプリンタ装置６が内蔵されている。
【００２７】
複合機１の本体２には操作パネル７が配設され、この操作パネル７にはＬＣＤ（液晶表示器）８、スキャナボタン１０、印刷実行ボタン１１およびコピーボタン１２が設けられている。スキャナボタン１０を操作すると、スキャナ装置５による読み取りが開始される。また、印刷実行ボタン１１が操作されると、プリンタ装置６による印刷が実行される。さらにコピーボタン１２が操作されると、スキャナ装置５で読み取られた画像がプリンタ装置６により印刷されるようになっている。複合機１で印刷された記録用紙１３は、トレイ１４に乗せられた状態で排紙口１５から排紙される。複合機１はＵＳＢポート（ＵＳＢコネクタ）１６を備え、ＵＳＢポート１６には通信ケーブル１７を介してホストコンピュータ３０（いずれも図２参照）が接続されている。
【００２８】
図２は、複合型複写装置の内部構成を示すブロック図である。
複合機１は、スキャナ（Ｓｃａｎｎｅｒ）と、プリンタ（Ｐｒｉｎｔｅｒ）と、コピー（Ｃｏｐｙ）の３つ機能（ＳＰＣ機能）を備えたものである。複合機１には、１つのＣＰＵ２０が搭載されている。ＣＰＵ２０はバス２１を介してプリンタ部２２およびスキャナ部２３に接続されている。また、バス２１上には、図示しない各種メモリ（ＲＯＭ及びＲＡＭ）が接続されている。プリンタ部２２およびスキャナ部２３はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ　Ｓｐｅｃｉｆｉｃ　ＩＣ（特定用途向けＩＣ））から構成されている。
【００２９】
複合機１はその筐体に設けられた図示しないＵＳＢポートに接続された通信ケーブル１７を介してホストコンピュータ３０と接続されている。複合機１とホストコンピュータ３０間で通信されるデータの入出力の切り換えは、通信コントローラとしてのＵＳＢマルチエンド部（以下、マルチエンド部という）２５が制御する。
【００３０】
マルチエンド部２５は、ホストコンピュータ３０等の外部から入力した印刷データをプリンタ部２２へ転送するプリンタＩ／Ｆ処理と、スキャナ部２３から受信した画像データ（読取データ）をホストコンピュータ３０等の外部へ出力するスキャナＩ／Ｆ処理とを司る。そして、マルチエンド部２５は、両Ｉ／Ｆ処理が効率よく行われるようにそのうち一方の処理に排他的に切り換える。
【００３１】
マルチエンド部２５は、これらＩ／Ｆ処理を行ううえで必要な設定データ等を一時記憶する複数のレジスタ（データ格納部）を備えている。図２（ｂ）はＣＰＵ２０が各種処理で使用するメモリ空間を示す。このメモリ空間Ｍにおいて、マルチエンド部２５は１つのアドレスしか持たず、プリンタＩ／Ｆ制御タスクとスキャナＩ／Ｆ制御タスクは資源（レジスタ）を共有することになる。もちろん、共有資源（共有リソース）はレジスタに限らず、ＲＡＭやＰＲＯＭなどその他のメモリ等であってもよい。
【００３２】
プリンタ部（プリンタＡＳＩＣ）２２は、メモリからテーブル等の各種設定データを読み出し、その設定データを参照して印刷データに基づき印刷を実行する。スキャナ部（スキャナＡＳＩＣ）２３は、スキャナ実行スイッチが操作されたときにＣＰＵ２０から指令を受け、撮像器（ＣＣＤ）を読取り駆動（移動）させて画像を読み取るとともにその撮像器からの読取信号に基づき画像データを生成する。
【００３３】
プリンタ部（プリンタＡＳＩＣ）２２は、タイマ回路、リセット回路、給紙モータ駆動回路、ヘッド駆動回路、センサ回路、キャリッジモータ駆動回路および紙送りモータ駆動回路等（いずれも図示省略）と接続されている。また、スキャナ部（スキャナＡＳＩＣ）２３は、ランプ駆動回路、モータ駆動回路、センサ回路およびＣＣＤ駆動ドライバ等（いずれも図示せず）と接続されている。プリンタ系のキャリッジモータ駆動回路や紙送りモータ駆動回路が、ＣＰＵ２０により制御される。また、スキャナ系のランプ駆動回路およびモータ駆動回路もＣＰＵ２０により制御される。ここで、プリンタ機能のうちプリンタ部（プリンタＡＳＩＣ）２２が担当しないプリンタ処理、およびスキャナ機能のうちスキャナ部（スキャナＡＳＩＣ）２３が担当しないスキャナ処理については、ＣＰＵ２０が実行する。
【００３４】
さらに複合機１はローカルコピー機能（以下、単にコピー機能という）を備えている。ＣＰＵ２０は、スキャナ部２３が撮像器（ＣＣＤ）の読取信号に基づき生成した画像データを内部で印刷データに変換するコピー処理を行う。ここで、コピー処理には色変換処理やハーフトーン処理などが含まれる。
【００３５】
ＣＰＵ２０はメモリに記憶された制御プログラムを実行する。制御プログラムは、ＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）およびアプリケーションプログラム等から構成され、アプリケーションプログラムは複数のタスク（作業プログラム（単位プログラム））から構成されている。タスクは、プリンタ機能、スキャナ機能およびコピー機能の各種作業別に複数用意されており、ＣＰＵ２０は複数のタスクのうちタスク優先順位（優先度）に従って選択された１つのタスクを起動させる。
【００３６】
図１は、共有リソースを共有する２つのタスクＡ，Ｂの排他制御を司るタスク管理装置の機能ブロック図である。ＯＳは、スケジューリングアルゴリズム採用するものである。
【００３７】
タスク排他制御装置４１は、ＯＳカーネル部４２、タスク優先順位管理テーブル４３、タスクＡおよびタスクＢを備え、さらにＯＳカーネル部４２は、スケジューラ４４とタスク状態管理部４５を備えている。なお、同図は、タスク群Ｔのうち共有リソースにアクセスする２つのタスクの排他制御を説明するため、共有リソースを共有しない他のタスクについては省略するが、共有リソースを共有しない他のタスクについてもタスク優先順位管理テーブル４３に予め定められた優先順位に従って起動される。
【００３８】
ＯＳカーネル部４２は、複数のタスクを同時に起動する場合の「スケジューリング」、「メモリ管理」、「割込処理」などを司る。スケジューラ４４は、タスク優先順位管理テーブル４３から取得したタスク優先順位と、タスク状態管理部４５に設定されたタスクの状態（ｒｕｎ，ｗａｉｔ，ｒｅａｄｙ等）とに基づいて起動すべきタスクを決定する。
【００３９】
本実施形態のタスク排他制御方法が従来技術（特許文献１）より優れている点は次のとおりである。すなわち、排他制御に必要な共有資源に関する管理テーブルを無くし、管理テーブル操作よりも一般的に高速処理可能なタスク優先順位設定を使用することによって、排他制御の処理時間やタスクスイッチ（タスク切換え）の処理時間を短縮できることである。従って、短縮された時間をその他の処理に振り向けて、全体として処理速度を向上させることができる。
【００４０】
図１において、タスクＡはタスクＢより通常時の優先順位が低く設定されており、共有リソースアクセス時は優先順位の低いタスクＡの優先順位がタスクＢの優先順位より高く（上位に）なるようその優先順位が動的に切り換えられるようになっている。本実施形態では、資源を共有するタスクＡ，Ｂは、ＵＳＢマルチエンド部２５において入出力データの切換え制御をする２つのタスクであって、タスクＡがスキャナＩ／Ｆ制御タスク、タスクＢがプリンタＩ／Ｆ制御タスクである。
【００４１】
特に問題となる共有資源は、割込みマスク制御レジスタや、ＵＳＢ　Ｉ／Ｆの物理層のＦＩＦＯの応答制御レジスタである。これらのレジスタは、一方のタスクＡ（Ｂ）の実行途中で強制的な割込みイベント発生により他方のタスクＢ（Ａ）が起動されてその設定内容が書替えられてしまうと、元のタスクＡ（Ｂ）が復帰したときにレジスタ内容が書替えられているため正しく機能しなくなる。このような不都合を避けるために本実施形態では、共有資源を占有しているタスクがその占有状態を維持する必要がある期間は、そのタスクの優先順位を共有資源を共有し合うタスクの中で一番高くし、強制的な割込みイベント発生時も、そのタスクの起動が維持されるよう優先順位を動的に切り換えるようにしている。ＯＳカーネル部４２とタスクＴ間のやりとりはシステムコールを通じて行われる。
【００４２】
タスク状態管理部４５は、各タスクの状態を管理するものである。タスクの状態には、休止状態（ｄｏｍａｎｔ）、待機状態（ｗａｉｔ）、起動可能状態（ｒｅａｄｙ）、起動状態（ｒｕｎ）などがある。タスク状態管理部４５は各タスクがどの状態にあるかを管理する。タスク状態管理部４５は、各タスクからシステムコールを通じてなされる通知に基づいて各タスクの状態を管理する。
【００４３】
休止状態とは、タスクが起動できない状態である。ｗａｉｔ状態とは、メッセージやイベントなどｒｅａｄｙ状態になれるトリガを待っている状態である。ｒｅａｄｙ状態とは、そのタスクが起動できるにもかかわらずＣＰＵ２０が割り当てられない状態で、自分より優先順位の高いタスクが実行中のときの状態である。ｒｕｎ状態とは、タスクがＣＰＵ２０を占有して起動されている状態で、１つのタスクのみがｒｕｎ状態をとり得る。
【００４４】
タスク状態管理部４５がタスク状態をどのように遷移させるかはシステムコールからのメッセージやイベントにより決まる。すなわち、「休止状態」からＳＴ（Ｓｔａｒｔ　Ｔａｓｋ）通知があると「ｒｅａｄｙ状態」に遷移する。「ｒｅａｄｙ状態」からＤＴ（Ｄｉｓｐａｔｃｈ）通知があると「ｒｕｎ状態」に遷移する。「ｒｕｎ状態」からＰＥ（Ｐｒｅｅｍｐｔ）　通知があると「ｒｅａｄｙ状態」に遷移する。また、「ｒｕｎ状態」からＲＭ（Ｒｅｃｅｉｖｅ　Ｍｓｇ）　通知、ＳＬ（Ｓｌｅｅｐ）　通知、ＧＭ（Ｇｅｔ　Ｍｅｍｏｒｙ）通知、ＷＥ（Ｗａｉｔ　Ｅｖｅｎｔ）のいずれかの通知があると「ｗａｉｔ状態」に遷移する。さらに「ｒｕｎ状態」からＴＴ（Ｔｅｒｍｉｎａｔｅ　Ｔａｓｋ）通知があると「休止状態」に遷移する。また、「ｗａｉｔ状態」から待ち状態解除通知があると「ｒｅａｄｙ状態」に遷移する。
【００４５】
例えばタスクは起動すべきトリガを受け付けたときにシステムコールを通じてタスク状態管理部４５にその旨を通知する（待ち状態解除通知）。すると、そのタスクはタスク状態管理部４５においてｒｅａｄｙ状態になる。タスク優先順位管理テーブル４３は、ｒｅａｄｙ状態のタスクとｒｕｎ状態のタスクのうち最も優先順位の高いタスクを判断する。そして最も優先順位の高いタスクをｒｕｎ状態にする。そのため、例えばｒｕｎ状態のタスクがない（すなわちＣＰＵ２０の空き時間（アイドル時間）の）ときに、ｒｅａｄｙ状態のタスクが複数あればそのうち最も優先順位の高いタスクがｒｕｎ状態になる。また、ｒｕｎ状態にあるタスクがあるときでもそのタスクより優先順位の高いタスクがｒｅａｄｙ状態になれば、ｒｕｎ状態のタスクはたとえ処理の途中であってもｒｅａｄｙ状態に遷移し、替わって優先順位のより高いタスクがｒｕｎ状態に遷移する。このようにどのタスクをｒｕｎ状態とするかを決めるために使用する優先順位が設定されているのが、タスク優先順位管理テーブル４３である。
【００４６】
タスク優先順位はおおよそ以下のルールに従って設定されている。
（１）　緊急性の高いタスクをなるべく優先する。
（２）　一連作業の中で下流側の作業を担うタスクをなるべく優先する。
（３）　一連作業の中で処理速度の律速となるタスクをなるべく優先する。
（４）　連続占有時間の短いタスクをなるべく優先する。
（５）　ユーザが操作したときの応答性を速くするタスクをなるべく優先する。
（６）　ホストコンピュータとやり取りするタスクをなるべく優先する。
【００４７】
上記（１）　のルールに従い緊急性を要するエマージェンシー管理処理タスクは最優先される。またタイマ管理処理タスクは、タイマの計測開始時刻が遅れると、タイマの計測時間を基準に動作する処理のタイミングの遅れを回避するため次に優先される。
【００４８】
ここで、主なタスクについて、初期的なタスク優先順位の設定は以下のようになる。ここで、各タスクは（１）→（６）の順で優先順位が低くなる。
（１）緊急処置実行制御タスク（ＥＭＧタスク）（ＳＰＣ）。
（２）プリンタＩ／Ｆ制御タスク（ＩＦＤタスク）（Ｐｒｉｎｔｅｒ）。
（３）時間管理（実行タイミング管理）制御タスク（ＴＩＭタスク）（ＳＰＣ）。
（４）ローカルコピー等の制御タスク（ＳＰＣタスク）（ＳＰＣ）。
（５）スキャナＩ／Ｆ制御タスク（ＳＩＦＤタスク）（Ｓｃａｎｎｅｒ）。
（６）プリンタコマンド制御タスク（ＥＲＴタスク）（Ｐｒｉｎｔｅｒ）。
なお、タスクの最後に付した、（Ｐｒｉｎｔｅｒ）はプリンタに関連することを意味し、（Ｓｃａｎｎｅｒ）はスキャナに関連することを意味し、（ＳＰＣ）はプリンタとスキャナ双方に関連することを意味する。
【００４９】
このシステムの優先度設定の考え方について説明する。まず緊急性の高いＥＭＧタスクは最優先する。このＥＭＧタスクはシステムを初期化する必要があるイベント発生に伴うタスクである。タイマタスク（ＴＩＭタスク）は、周期イベント発行の時間精度を確保するため比較的高い優先度とする。但し、プリンタＩ／Ｆ制御に特有の制御である受信バッファ監視（ＤＭＡＣによるＩ／Ｆ制御コントローラからＲＡＭへの自動転送状況の監視）の周期の時間規定を確保するため、ＩＦＤタスクのみ優先度をタイマタスク（ＴＩＭ）よりも上位に設定する。一方、システムの各種の実行時間の精度を確保するため、タイマタスク（ＴＩＭタスク）の優先順位を通常のスキャナＩ／Ｆ制御タスク（ＳＩＦＤタスク）よりも上位にする。ＳＰＣとしてスキャナＩ／Ｆ制御タスクは通常、タイマタスク（ＴＩＭ）よりも優先順位を低くし、優先順位を上げる期間を共有リソースアクセス時に必要となる排他制御を行なうときに限定することでシステムの実行時間の精度も確保しつつ、共有リソースの排他制御も実現できる。
【００５０】
上記の２つのタスクＡ，Ｂ間で排他制御する場合、例えば図３に示すようなタスク管理が行われることになる。同表では、タスク優先順位とタスク状態とを１つにまとめて示している。また、同表で★印の付された期間は、共有リソースを占有し続ける必要がある期間を示し、特にタスクＡにおいて優先順位が「１」に変更される期間が、共有リソースを占有し続ける必要があるとして予め定めた期間である。
【００５１】
また、タスクＡ，Ｂの初期的な優先順位設定、すなわち通常時の優先順位設定は、通常時の優先順位の一番高いタスクＢを「２」、優先順位の低い（２番目以下の）タスクＡを「３」に設定しており、タスクＡの優先順位を上げるときは、「３」から「１」に上げることにしている。優先順位を変更する対象とすることが可能なタスクはまさにこれから資源を占有しようとしている動作中のタスク自身とし、ｗａ　ｉｔもしくはｒｅａｄｙ状態にある他のタスクの優先順位を勝手に変更することはしないためである。これは優先順位の管理の一貫性の維持が難しいため、あまり有効でないからである。共有リソースにアクセスする複数のタスクの中で一番優先順位が高いタスクＢは優先順位を動的に変更することはしない。
【００５２】
図３に示すように、タスクＡ、タスクＢの状態（ｒｕｎ，ｒｅａｄｙ，ｗａｉｔ等）と優先順位を管理する。共有リソースにアクセスする期間（同表で★印の付された期間）に入る前に、同図中（０）のタイミングでタスクＡのタスク優先順位を一時的に「３」から「１」へ上げる。これによりタスクスイッチ（タスク切換え）をしないようにすることで共有リソースの排他制御を行う。このため、タスクＡが共有リソースを占有し続けることになる。
【００５３】
その後、強制的なタスク切り換えイベントであるＵＳＢ割込みイベントが発生すると、ＯＳ４２はタスク優先順位管理テーブル４３を確認する。このとき、タスク優先順位はタスクＡが「１」、タスクＢが「２」になっているので、タスクＡが共有リソースを占有し続けることになる。こうしてＵＳＢ割込みイベントが発生しても、タスクＡの共有リソースアクセス期間を少なくとも含む所定期間は、タスクＡによる共有リソースの占有が維持される。そしてタスクＡはタスク完了時など共有リソースの占有を維持する必要がなくなると、同図中（１）のタイミングでタスクＡの優先順位を「１」から元の「３」へ下げる。
【００５４】
そして、タスクＡが完了すると、ＣＰＵ占有権がＯＳ４２に戻り、スケジューラ４４がタスク優先順位管理テーブルを確認すると、優先順位はタスクＡが「３」、タスクＢが「２」になっているので、タスクＡをｗａｉｔ状態とする。
【００５５】
以上詳述したようにこの実施形態によれば、以下の効果が得られる。
（１）タスク優先順位管理テーブル４３から優先順位を参照するだけで済み、比較的処理時間のかかる管理テーブル操作を無くすことができる。このように共有資源に関する管理テーブルを無くし、管理テーブル操作よりも一般的に高速に処理可能なタスク優先順位設定を使用することによって、排他処理に要する処理時間やタスクスイッチ（タスク切換え）の処理時間を短縮できる。従って、短縮された時間をその他の処理に振り向けて、全体として処理速度を向上させることができる。
【００５６】
（２）これから共有リソースを占有しようとするタスクＡが自分の優先順位を他のタスクＢの優先順位より上げる方法を採用し、他のタスクＢの優先順位を変化させない。優先順位を動的に切り換える処理が単純で済むうえ、優先順位の管理の一貫性を維持でき制御上の安定性も得られる。
（第２の実施形態）
次に、第２の実施形態を説明する。前記第１の実施形態では、共有リソースにアクセスするタスクが２つの例であったが、３つとしたのが本実施形態である。基本的な考え方は前記第１の実施形態と同様である。
【００５７】
例えば図５に示すように、複合機１において、メモリカード（記録メディア）のデータを読み取るカードリーダー部（以下、リーダー部という）２４が備えられた例である。リーダー部２４がメモリカードから読み取った文字データや画像データは印刷することもできるが、そのままホストコンピュータ３０へ転送することもできる。この場合、リーダー部２４からの画像データはＵＳＢマルチエンド部２５を介してホストコンピュータ３０へ転送され、この出力制御を司るのが、リーダーＩ／Ｆ制御タスクとなる。
【００５８】
図７はこの複合機１にけるタスク排他制御装置の概略構成を示す。同図に示すように、タスク群Ｔにおいて、共有リソースにアクセスするタスクが、タスクＡ，Ｂ，Ｃの３つになっている。通常時の優先順位はタスクＡが最上位で，次にタスクＢ、最下位がタスクＣとなっている。本実施形態では、タスクＣがリーダーＩ／Ｆ制御タスクに相当する。
【００５９】
上記の３つのタスクＡ，Ｂ，Ｃ間で排他制御する場合、例えば図６に示すようなタスク管理が行われることになる。同表では、タスク優先順位とタスク状態とを１つにまとめて示している。また、同表で★印の付された期間は、共有リソースを占有し続ける必要がある期間を示し、特にタスクＢ，Ｃにおいて優先順位が「１」に変更される期間が、共有リソースを占有し続ける必要があるとして予め定めた期間である。
【００６０】
また、タスクＡ，Ｂ，Ｃの初期的な優先順位設定、すなわち通常時の優先順位設定は、通常時の優先順位の一番高いタスクＡを「２」、２番目に優先順位の高いタスクＢを「３」、３番目に優先順位の高い（つまり最下位の）タスクＣを「４」に設定している。そして、タスクＢの優先順位を上げるときは、「３」から「１」に上げ、またタスクＣの優先順位を上げるときは、「４」から「１」に上げることにしている。優先順位を変更する対象とすることが可能なタスクはまさにこれから資源を占有しようとしている動作中のタスク自身とし、ｗａｉｔもしくはｒｅａｄｙ状態にある他のタスクの優先順位を勝手に変更することはしないためである。これは前記第１の実施形態と同様の理由で、優先順位の管理の一貫性の維持が難しいためである。共有リソースにアクセスする複数のタスクの中で一番優先順位が高いタスクＡは優先順位を動的に変更することはしない。つまり常に「２」を維持する。
【００６１】
図６に示すように、タスクＡ、タスクＢ，タスクＣの状態（ｒｕｎ，ｒｅａｄｙ，ｗａｉｔ等）と優先順位を管理する。同図における（０）では、通常の優先順位にある。これは優先順位の一番高いタスクＡが共有リソースを占有する期間であり、この場合、タスクＡは「２」を維持する。
【００６２】
タスクＡが完了し同図における（１）のタイミングで、タスクＡがｗａｉｔ状態になる。すると、タスクスイッチ（タスク切換え）が発生する。タスクＢとタスクＣのうち優先順位のより高いタスクＢがｒｕｎ状態になる。そして同図における（２）のタイミングで共有リソースにアクセスする期間（同表で★印の付された期間）に入る前に、タスクＢの優先順位を一時的に「３」から「１」へ上げる。これによりタスクスイッチ（タスク切換え）をしないようにすることで共有リソースの排他制御を行う。このため、タスクＢが共有リソースを占有し続けることになる。
【００６３】
その後、強制的なタスク切り換えイベントであるＵＳＢ割込みイベントが発生すると、ＯＳ４２はタスク優先順位管理テーブル４３を確認する。このとき、タスク優先順位はタスクＡが「２」、タスクＢが「１」、タスクＣが「４」になっているので、タスクＢが共有リソースを占有し続けることになる。こうしてＵＳＢ割込みイベントが発生しても、タスクＢの共有リソースアクセス期間を少なくとも含む所定期間は、タスクＢによる共有リソースの占有が維持される。そしてタスクＢはタスク完了時など共有リソースの占有を維持する必要がなくなると、同図中（３）のタイミングでタスクＢの優先順位を「１」から元の「３」へ下げる。
【００６４】
そして、タスクＢが完了すると、ＣＰＵ占有権がＯＳ４２に戻り、スケジューラ４４がタスク優先順位管理テーブルを確認すると、優先順位はタスクＡが「２」、タスクＢが「３」、タスクＣが「４」になっており、そのうちｒｅａｄｙ状態にあるのは、タスクＣだけなので、タスクＣをｒｕｎ状態にする。そして同図における（４）のタイミングで共有リソースにアクセスする期間（同表で★印の付された期間）に入る前に、タスクＣの優先順位を一時的に「４」から「１」へ上げる。これによりタスクスイッチ（タスク切換え）をしないようにすることで共有リソースの排他制御を行う。このため、タスクＢが共有リソースを占有し続けることになる。
【００６５】
その後、強制的なタスク切り換えイベントであるＵＳＢ割込みイベントが発生すると、ＯＳ４２はタスク優先順位管理テーブル４３を確認する。このとき、タスク優先順位はタスクＡが「２」、タスクＢが「３」、タスクＣが「４」になっているので、タスクＣが共有リソースを占有し続けることになる。こうしてＵＳＢ割込みイベントが発生しても、タスクＣの共有リソースアクセス期間を少なくとも含む所定期間は、タスクＣによる共有リソースの占有が維持される。そしてタスクＣはタスク完了時など共有リソースの占有を維持する必要がなくなると、タスクＣの優先順位を「１」から元の「３」へ下げる。そして同図中（５）のタイミングでタスクＣがｗａｉｔ状態になったことからタスクスイッチが発生する。そして、優先順位の設定が通常時の値となり、優先順位の一番高いタスクＡがｒｕｎ状態になる。
【００６６】
以上詳述したようにこの実施形態によれば、共有リソースにアクセスするのが３つのタスクＡ，Ｂ，Ｃの場合も、前記第１の実施形態と同様の効果が得られる。
【００６７】
なお、実施の形態は、上記に限定されず以下の態様でも実施できる。
（変形例１）前記実施形態では通常時の優先順位を高い方から順に「２」「３」または「２」「３」「４」とし、２番目以下の優先順位のタスクの優先順位を上げるときには、その優先順位を「１」とすることで、他のタスクの優先順位を変更しない方法を採用した。これに対し、通常時の優先順位を高い方から順に「１」「２」または「１」「２」「３」とし、２番目以下の優先順位のタスクの優先順位を上げるときには、その優先順位を「１」とするとともに他のタスクの優先順位を「１」すつ下げる切換えをする方法を採用することもできる。
【００６８】
（変形例２）共有資源は通信コントローラに限定されない。他のコントローラを共有資源とする装置においてタスク排他制御装置を採用することもできる。要するに共有資源は何でも構わない。
【００６９】
（変形例３）共有資源にアクセスする各タスクの数は２つまたは３つに限定されない。共有資源にアクセスする各タスクの数は４つ以上でも構わない。
前各記実施形態及び変形例から把握される技術的思想を以下に記載する。
【００７０】
（１）　強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、前記共有資源を占有しようとするタスクは、該共有資源を共有し合うタスクの中で優先順位の一番高いタスクである場合はその優先順位をそのまま維持し、一方、前記共有資源を共有し合うタスクの中で２番目以下の優先順位である場合は、共有資源を共有し合う他のタスクの優先順位を変化させず該他のタスクより上位の優先順位に自分で切り換えることを特徴とする請求項１に記載のタスク排他制御方法。
【００７１】
（２）請求項２又は３の発明において、起動すべきタスクを前記動的に切り換えられた優先順位に基づいて決定する起動タスク決定手段を備えたことを特徴とするタスク排他制御装置。
【００７２】
（３）前記共有資源にアクセスする複数のタスクは、スキャナとプリンタを備えた複合機において、前記スキャナの読取データを前記通信コントローラを介して出力する出力制御を行うタスクと、前記通信コントローラを介して前記プリンタに送る印刷データを入力する入力制御を行うタスクとを備えることを特徴とする請求項５に記載のタスク排他制御装置。
【００７３】
（４）スキャナ機能の一のタスクと、プリンタ機能の一のタスクが各々アクセスする共有資源を備え、前記複数のタスクを起動する１つのＣＰＵと、前記タスクの状態を管理するタスク状態管理手段と、前記複数のタスクの優先順位が予め設定されるとともに、タスクの優先順位を管理するタスク優先順位管理手段と、前記タスクが共有資源にアクセスするときは、そのタスクの優先順位が前記共有資源を共有し合うタスクの中で一番高くなるように前記タスク優先順位管理手段に設定された優先順位を動的に変更する優先順位変更手段と、前記優先順位に従って起動すべき１つのタスクを選択し前記ＣＰＵに実行させる起動タスク決定手段とを備えたことを特徴とするタスク排他制御装置。
【００７４】
（５）前記技術思想（４）において、前記優先順位管理手段に設定された前記優先順位は、前記プリンタ機能の一のタスクがスキャナ機能の一のタスクよりも優先されるよう設定されており、スキャナ機能の一のタスクが共有資源にアクセスする際は、当該スキャナ機能の一のタスクの優先順位を前記プリンタ機能の一のタスクの優先順位よりも高くすることを特徴とするタスク排他制御装置。
【図面の簡単な説明】
【図１】第１の実施形態におけるタスク排他制御装置の概略構成図。
【図２】（ａ）は複合機の概略構成図、（ｂ）はメモリ空間を示す模式図。
【図３】タスク排他制御を説明する説明図。
【図４】複合型複写機の斜視図。
【図５】第２の実施形態における複合機の概略構成図。
【図６】タスク排他制御を説明する説明図。
【図７】タスク排他制御装置の概略構成図。
【図８】従来技術を示し、（ａ）は複合機の概略構成図、（ｂ）はメモリ空間を示す模式図。
【図９】従来技術におけるタスク排他制御を説明する説明図。
【符号の説明】
１…複合機としての複合型複写装置、２２…プリンタ部、２３…スキャナ部
２０…優先順位切換手段、タスク状態管理手段、起動タスク決定手段を構成するＣＰＵ、４２…ＯＳカーネル部、４３…優先順位管理手段としてのタスク優先順位管理テーブル、４４…起動タスク決定手段としてのスケジューラ、４５…タスク状態管理手段としてのタスク状態管理部、Ａ…タスク、Ｂ…書替手段を構成するタスク（第１の実施形態）、Ｂ，Ｃ…書替手段を構成するタスク（第２の実施形態）。
【図１】
2004127039.tif 000003
【図２】
2004127039.tif 000004
【図３】
2004127039.tif 000005
【図４】
2004127039.tif 000006
【図５】
2004127039.tif 000007
【図６】
2004127039.tif 000008
【図７】
2004127039.tif 000009
【図８】
2004127039.tif 000010
【図９】
2004127039.tif 000011