JP2004127039A - タスク排他制御方法及びタスク排他制御装置 - Google Patents
タスク排他制御方法及びタスク排他制御装置 Download PDFInfo
- Publication number
- JP2004127039A JP2004127039A JP2002291650A JP2002291650A JP2004127039A JP 2004127039 A JP2004127039 A JP 2004127039A JP 2002291650 A JP2002291650 A JP 2002291650A JP 2002291650 A JP2002291650 A JP 2002291650A JP 2004127039 A JP2004127039 A JP 2004127039A
- Authority
- JP
- Japan
- Prior art keywords
- task
- priority
- shared resource
- tasks
- switching
- 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
Links
Images
Landscapes
- Facsimiles In General (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
【課題】複数のタスクの一が共有資源にアクセスするときに、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける排他制御を効率よく行うことができるタスク排他制御方法及びタスク排他制御装置を提供する。
【解決手段】タスクAとタスクBは共有リソースにアクセスする。共有リソースアクセス期間(同図における★印を付した期間)はタスクAによる共有リソースの占有を維持する必要がある。優先順位の低いタスクAが共有リソースにアクセスすると、前記期間に入る前に、タスクAは自分の優先順位「3」を「1」に上げる。この結果、強制的なタスク切り換えイベントであるUSB割込みイベント発生時においても、タスクAによる共有リソースの占有が継続される。そして、タスクAが完了すると、優先順位は「1」から元の「3」へ戻される。
【選択図】 図3
【解決手段】タスクAとタスクBは共有リソースにアクセスする。共有リソースアクセス期間(同図における★印を付した期間)はタスクAによる共有リソースの占有を維持する必要がある。優先順位の低いタスクAが共有リソースにアクセスすると、前記期間に入る前に、タスクAは自分の優先順位「3」を「1」に上げる。この結果、強制的なタスク切り換えイベントであるUSB割込みイベント発生時においても、タスクAによる共有リソースの占有が継続される。そして、タスクAが完了すると、優先順位は「1」から元の「3」へ戻される。
【選択図】 図3
Description
【0001】
【発明の属する技術分野】
本発明は、共有資源にアクセスする複数のタスクの排他制御を行うタスク排他制御方法及びタスク排他制御装置に関するものである。
【0002】
【従来の技術】
従来、プリンタ機能とスキャナ機能とコピー機能を備えた複合型複写機(以下、複合機と称す)が知られている。この種の複合機では、通常、一つの入出力ポートを備え、ホストコンピュータから転送されてくる印刷データを入出力ポートで受信してプリンタ機能部へ送るとともに、スキャナ機能部で読み取られた画像データは入出力ポートからホストコンピュータに送信される。入出力ポートには例えばUSBポートが使用されている。
【0003】
従来、例えば図8(a)に示すように、複合機70においてプリンタ部71とスキャナ部72はUSB1制御部73とUSB2制御部74を介してそれぞれハブ75に接続されていた。そしてホストコンピュータ76に対する入力データ(印刷データ)と出力データ(スキャナ読み取り画像データ)はハブ75で切り換えることで制御していた。CPU77はプリンタ部71、スキャナ部72、USB1制御部73およびUSB2制御部74に接続され、USB1制御部73およびUSB2制御部74の通信制御を司る各タスク(通信制御タスク)を実行していた。この場合、USB1制御部73及びUSB2制御部74がそれぞれ通信制御タスク起動時に使用するメモリ空間は、図8(b)に示すようにUSB1用とUSB2用でそれぞれ独立したアドレスが設けられていたので、両タスクが資源をめぐって競合することはなかった。
【0004】
ところで、図2に示すように、プリンタ部22とスキャナ部23が共通のUSBマルチエンド部25に接続されたマルチエンド方式を採用すれば、ハブ75を無くすことができる。この場合、USBマルチエンド部25では、CPU20が、印刷データのI/F処理を行うプリンタI/F制御タスクと、スキャナ部23で読み取った画像データのI/F処理を行うスキャナI/F制御タスクを所定の優先順位に従って起動することになる。また、USBマルチエンド部25には、割込みマスクレジスタやエンドポイント応答制御レジスタ等のレジスタを備えているが、これらは図2(b)に示すようにメモリ空間Mにおいて1つのアドレスしか持たず、プリンタI/F制御タスクとスキャナI/F制御タスクは資源(レジスタ)を共有することになる。
【0005】
従来、2つのタスクA,Bが共有資源(共有リソース)にアクセスする場合、優先順位(プライオリティ)が予め設定され、各タスクは優先順位に従って優先順位の高い方が優先的に起動される。しかし、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが、優先順位の高いタスクに強制的に切り換えられると、その割り込み起動されたタスクが共有資源(例えばレジスタ)に先のタスクが設定したデータを別のデータに書替えてしまう。その後、その割込みタスクが完了し、先のタスクが再び起動されて続きの処理をするときに既に割込みタスクによって共有資源の設定データが書替えられてしまっているので、正しい処理が行えなくなる。このような不都合を回避するため、強制的なタスク切り換えイベント発生時であっても、共有資源を占有しているタスクが切り換わらず占有し続けるような排他制御が必要になる。
【0006】
従来、この種の排他制御方法として、セマフォ値を用いて、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続けられるようにする排他制御技術が開示されている(例えば特許文献1)。上記の2つのタスクA,B間でセマフォ値を用いて排他制御する場合、例えば図9に示すようなタスク管理が行われることになる。
【0007】
図9に示すように、タスクA、タスクBの状態(run,ready,wait等)と優先順位を管理するとともにセマフォ値を管理する。共有リソースにアクセスする期間(同表で★印の付された期間)は、同図中(0)のタイミングでセマフォ値が「0」に設定され、セマフォ資源(共有リソース)をタスクAが占有することになる。その後、強制的なタスク切り換えイベントであるUSB割込みが発生すると、OSはセマフォ値を確認しそれが「0」に設定されていることから、共有リソースのタスクA占有を維持させるべくタスクBを「wait」状態とする。こうして同表中(1)のタイミングでセマフォ資源をタスクBが獲得しようとするが、タスクAが返却するまでタスクBはwait状態となる。そしてタスクAの共有リソースアクセス期間が終了し、同図中(2)のタイミングでは、タスクAがセマフォ資源を返却し、セマフォ待ちだったタスクBがセマフォ資源の占有を引き継ぎ共有リソースへアクセスを開始する。
【0008】
【特許文献1】
特開平5−250188号公報 (明細書第3−5頁、第1図−第7図)
【0009】
【発明が解決しようとする課題】
しかし、セマフォ値で管理する方法を採用した場合、セマフォ値を管理する管理テーブルが余分に必要なり、しかも優先順位とセマフォ値の両方を確認する処理となるので、排他制御に必要な管理テーブルで必要となるメモリ資源が多く必要になるうえ、処理が複雑になるという問題があった。
【0010】
本発明の目的は、複数のタスクの一が共有資源にアクセスするときに、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける排他制御を効率よく行うことができるタスク排他制御方法及びタスク排他制御装置を提供することにある。
【0011】
【課題を解決するための手段】
上記目的を達成するために本発明では、タスク管理方法において、共有資源にアクセスする複数のタスクが存在し、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける期間が予め設定されており、共有資源を占有しているタスクが前記期間にあるときは、該タスクの優先順位を、共有資源を共有し合う他のタスクより上位の優先順位に動的に切り換えることを要旨とする。
【0012】
この方法によれば、前記期間においては、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける。しかも優先順位を動的に切り換えることで排他制御を実現するので、資源管理テーブルを使用する排他制御方法に比べ、排他制御に要する処理時間を短縮できる。
【0013】
また本発明では、タスク排他制御装置において、共有資源にアクセスする複数のタスクと、強制的なタスク切り換えイベント発生時に前記共有資源を占有しているタスクが切り換わらず占有し続ける期間が予め設定されており、前記有資源を占有しているタスクが前記期間にあるときは、当該タスクの優先順位を、前記共有資源を共有し合う他のタスクより上位の優先順位に動的に切り換える優先順位切換手段とを備えていることを要旨とする。
【0014】
この構成によれば、請求項1の発明と同様の作用効果が得られる。
さらに本発明では、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、前記共有資源を占有しようとするタスクは、該共有資源を共有し合うタスクの中で優先順位の一番高いタスクである場合はその優先順位をそのまま維持し、一方、前記共有資源を共有し合うタスクの中で2番目以下の優先順位である場合は、共有資源を共有し合う他のタスクの優先順位を変化させず該他のタスクより上位の優先順位に自分で切り換えることを要旨とする。
【0015】
この発明によれば、共有資源を占有しようとするタスクは、自分の優先順位を他のタスクより上位に切り換えるだけで、他のタスクの優先順位は変更されないので、優先順位を動的に切り換える処理が単純で済むうえ、優先順位の管理の一貫性を維持でき制御上の安定性も得られる。
【0016】
また本発明では、前記優先順位切換手段は、前記共有資源にアクセスする複数のタスクの優先順位を管理する管理テーブルと、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、該共有資源を占有し続けようとするタスクは、該タスクの優先順位が前記共有資源を共有し合うタスクの中で一番高い優先順位になるように前記管理テーブルを書き替える書替手段とを備え、起動すべきタスクを前記管理テーブルに設定された優先順位を参照して決定する起動タスク決定手段を備えたことを要旨とする。
【0017】
この構成によれば、管理テーブルに設定された優先順位を参照して起動タスクが決定されるので、資源を管理する管理テーブルを用いた構成に比べ、排他制御の処理時間が短く済む。
【0018】
さらに本発明では、前記共有資源にアクセスするタスクは、外部と通信するデータの切り換え制御を行う通信コントローラを制御するタスクであり、前記共有資源は通信コントローラに備えられたデータ格納部であることを要旨とする。
【0019】
この構成によれば、共有資源にアクセスするタスクは、外部と通信するデータの切り換え制御を行う通信コントローラを制御するタスクであるので、例えばハブを使用しない通信制御構造が可能となり、しかもデータの通信を行う複数のタスクの排他制御に要する処理時間が短く済む。
【0020】
また本発明では、所定の優先順位が設定されている、プリンタ機能の一のタスクとスキャナ機能の一のタスクが各々アクセスする共有資源を備え、優先順位の低いタスクが前記共有資源にアクセスするときは、該タスクの優先順位を共有資源を共有する他のタスクより高い優先順位に上げる優先順位切換手段を備えたことを要旨とする。
【0021】
この構成によれば、プリンタ機能の一のタスクとスキャナ機能の一のタスクのうち優先順位の低いタスクが共有資源にアクセスするときは、該タスクの優先順位が共有資源を共有する他のタスクより高い優先順位に上げられる。そして、優先順位に従って起動すべきタスクが決定されるとき、優先順位の低いタスクが共有資源を引き続き占有する状態を維持できる。このため、タスク間の競合が回避されるとともに、優先順位に従って起動タスクを決定する構成なため、資源管理テーブルを使用する排他制御方法に比べ、排他制御に要する処理時間を短縮できる。
【0022】
また本発明では、前記スキャナ機能の一のタスクはスキャナの読取データを通信コントローラを介して出力する出力制御を行うタスクであり、前記プリンタ機能の一のタスクはプリンタに送信する印刷データを前記通信コントローラを介して入力する入力制御を行うタスクであって、前記両タスクは前記通信コントローラを共有資源とすることを要旨とする。
【0023】
この構成によれば、スキャナの読取データの出力制御を行うタスクと、プリンタに送信する印刷データの入力制御を行うタスクとが排他制御により競合せず、しかも排他制御の処理速度が速いため処理時間が短く済む。
【0024】
さらに本発明では、前記スキャナ機能の一のタスクは前記プリンタ機能の一のタスクよりも優先順位が低く設定されており、前記スキャナ機能の一のタスクが前記通信コントローラにアクセスするときは、前記優先順位切換手段は、該スキャナ機能の一のタスクの優先順位を前記プリンタ機能の一のタスクより高い優先順位に上げることを要旨とする。
【0025】
この構成によれば、スキャナ機能の一のタスクがプリンタ機能の一のタスクよりも優先順位が低くなるように設定されることで、通常の優先順位に従って効率のよいタスクの排他制御が行われる。しかし、スキャナ機能の一のタスクが共有資源である通信コントローラにアクセスするときは、該スキャナ機能の一のタスクの優先順位がプリンタ機能の一のタスクより高い優先順位に上げられるため、これらのタスク間で競合しない排他制御が行われる。
【0026】
【発明の実施の形態】
以下、本発明を具体化した一実施形態を、図1〜図4に基づいて説明する。
図4は、一台でスキャナ、プリンタ、コピーが可能な複合型複写機の斜視図である。複合型複写装置(以下、複合機という)1は、本体2の上面に開閉式のカバー3を備え、カバー3を開いた本体2の上部にはその上面がガラスなどの透明板からなるスキャナ読取面4を有するスキャナ装置5が内蔵され、本体2内のスキャナ装置5の下方にはプリンタ装置6が内蔵されている。
【0027】
複合機1の本体2には操作パネル7が配設され、この操作パネル7にはLCD(液晶表示器)8、スキャナボタン10、印刷実行ボタン11およびコピーボタン12が設けられている。スキャナボタン10を操作すると、スキャナ装置5による読み取りが開始される。また、印刷実行ボタン11が操作されると、プリンタ装置6による印刷が実行される。さらにコピーボタン12が操作されると、スキャナ装置5で読み取られた画像がプリンタ装置6により印刷されるようになっている。複合機1で印刷された記録用紙13は、トレイ14に乗せられた状態で排紙口15から排紙される。複合機1はUSBポート(USBコネクタ)16を備え、USBポート16には通信ケーブル17を介してホストコンピュータ30(いずれも図2参照)が接続されている。
【0028】
図2は、複合型複写装置の内部構成を示すブロック図である。
複合機1は、スキャナ(Scanner)と、プリンタ(Printer)と、コピー(Copy)の3つ機能(SPC機能)を備えたものである。複合機1には、1つのCPU20が搭載されている。CPU20はバス21を介してプリンタ部22およびスキャナ部23に接続されている。また、バス21上には、図示しない各種メモリ(ROM及びRAM)が接続されている。プリンタ部22およびスキャナ部23はASIC(Application Specific IC(特定用途向けIC))から構成されている。
【0029】
複合機1はその筐体に設けられた図示しないUSBポートに接続された通信ケーブル17を介してホストコンピュータ30と接続されている。複合機1とホストコンピュータ30間で通信されるデータの入出力の切り換えは、通信コントローラとしてのUSBマルチエンド部(以下、マルチエンド部という)25が制御する。
【0030】
マルチエンド部25は、ホストコンピュータ30等の外部から入力した印刷データをプリンタ部22へ転送するプリンタI/F処理と、スキャナ部23から受信した画像データ(読取データ)をホストコンピュータ30等の外部へ出力するスキャナI/F処理とを司る。そして、マルチエンド部25は、両I/F処理が効率よく行われるようにそのうち一方の処理に排他的に切り換える。
【0031】
マルチエンド部25は、これらI/F処理を行ううえで必要な設定データ等を一時記憶する複数のレジスタ(データ格納部)を備えている。図2(b)はCPU20が各種処理で使用するメモリ空間を示す。このメモリ空間Mにおいて、マルチエンド部25は1つのアドレスしか持たず、プリンタI/F制御タスクとスキャナI/F制御タスクは資源(レジスタ)を共有することになる。もちろん、共有資源(共有リソース)はレジスタに限らず、RAMやPROMなどその他のメモリ等であってもよい。
【0032】
プリンタ部(プリンタASIC)22は、メモリからテーブル等の各種設定データを読み出し、その設定データを参照して印刷データに基づき印刷を実行する。スキャナ部(スキャナASIC)23は、スキャナ実行スイッチが操作されたときにCPU20から指令を受け、撮像器(CCD)を読取り駆動(移動)させて画像を読み取るとともにその撮像器からの読取信号に基づき画像データを生成する。
【0033】
プリンタ部(プリンタASIC)22は、タイマ回路、リセット回路、給紙モータ駆動回路、ヘッド駆動回路、センサ回路、キャリッジモータ駆動回路および紙送りモータ駆動回路等(いずれも図示省略)と接続されている。また、スキャナ部(スキャナASIC)23は、ランプ駆動回路、モータ駆動回路、センサ回路およびCCD駆動ドライバ等(いずれも図示せず)と接続されている。プリンタ系のキャリッジモータ駆動回路や紙送りモータ駆動回路が、CPU20により制御される。また、スキャナ系のランプ駆動回路およびモータ駆動回路もCPU20により制御される。ここで、プリンタ機能のうちプリンタ部(プリンタASIC)22が担当しないプリンタ処理、およびスキャナ機能のうちスキャナ部(スキャナASIC)23が担当しないスキャナ処理については、CPU20が実行する。
【0034】
さらに複合機1はローカルコピー機能(以下、単にコピー機能という)を備えている。CPU20は、スキャナ部23が撮像器(CCD)の読取信号に基づき生成した画像データを内部で印刷データに変換するコピー処理を行う。ここで、コピー処理には色変換処理やハーフトーン処理などが含まれる。
【0035】
CPU20はメモリに記憶された制御プログラムを実行する。制御プログラムは、OS(Operating System)およびアプリケーションプログラム等から構成され、アプリケーションプログラムは複数のタスク(作業プログラム(単位プログラム))から構成されている。タスクは、プリンタ機能、スキャナ機能およびコピー機能の各種作業別に複数用意されており、CPU20は複数のタスクのうちタスク優先順位(優先度)に従って選択された1つのタスクを起動させる。
【0036】
図1は、共有リソースを共有する2つのタスクA,Bの排他制御を司るタスク管理装置の機能ブロック図である。OSは、スケジューリングアルゴリズム採用するものである。
【0037】
タスク排他制御装置41は、OSカーネル部42、タスク優先順位管理テーブル43、タスクAおよびタスクBを備え、さらにOSカーネル部42は、スケジューラ44とタスク状態管理部45を備えている。なお、同図は、タスク群Tのうち共有リソースにアクセスする2つのタスクの排他制御を説明するため、共有リソースを共有しない他のタスクについては省略するが、共有リソースを共有しない他のタスクについてもタスク優先順位管理テーブル43に予め定められた優先順位に従って起動される。
【0038】
OSカーネル部42は、複数のタスクを同時に起動する場合の「スケジューリング」、「メモリ管理」、「割込処理」などを司る。スケジューラ44は、タスク優先順位管理テーブル43から取得したタスク優先順位と、タスク状態管理部45に設定されたタスクの状態(run,wait,ready等)とに基づいて起動すべきタスクを決定する。
【0039】
本実施形態のタスク排他制御方法が従来技術(特許文献1)より優れている点は次のとおりである。すなわち、排他制御に必要な共有資源に関する管理テーブルを無くし、管理テーブル操作よりも一般的に高速処理可能なタスク優先順位設定を使用することによって、排他制御の処理時間やタスクスイッチ(タスク切換え)の処理時間を短縮できることである。従って、短縮された時間をその他の処理に振り向けて、全体として処理速度を向上させることができる。
【0040】
図1において、タスクAはタスクBより通常時の優先順位が低く設定されており、共有リソースアクセス時は優先順位の低いタスクAの優先順位がタスクBの優先順位より高く(上位に)なるようその優先順位が動的に切り換えられるようになっている。本実施形態では、資源を共有するタスクA,Bは、USBマルチエンド部25において入出力データの切換え制御をする2つのタスクであって、タスクAがスキャナI/F制御タスク、タスクBがプリンタI/F制御タスクである。
【0041】
特に問題となる共有資源は、割込みマスク制御レジスタや、USB I/Fの物理層のFIFOの応答制御レジスタである。これらのレジスタは、一方のタスクA(B)の実行途中で強制的な割込みイベント発生により他方のタスクB(A)が起動されてその設定内容が書替えられてしまうと、元のタスクA(B)が復帰したときにレジスタ内容が書替えられているため正しく機能しなくなる。このような不都合を避けるために本実施形態では、共有資源を占有しているタスクがその占有状態を維持する必要がある期間は、そのタスクの優先順位を共有資源を共有し合うタスクの中で一番高くし、強制的な割込みイベント発生時も、そのタスクの起動が維持されるよう優先順位を動的に切り換えるようにしている。OSカーネル部42とタスクT間のやりとりはシステムコールを通じて行われる。
【0042】
タスク状態管理部45は、各タスクの状態を管理するものである。タスクの状態には、休止状態(domant)、待機状態(wait)、起動可能状態(ready)、起動状態(run)などがある。タスク状態管理部45は各タスクがどの状態にあるかを管理する。タスク状態管理部45は、各タスクからシステムコールを通じてなされる通知に基づいて各タスクの状態を管理する。
【0043】
休止状態とは、タスクが起動できない状態である。wait状態とは、メッセージやイベントなどready状態になれるトリガを待っている状態である。ready状態とは、そのタスクが起動できるにもかかわらずCPU20が割り当てられない状態で、自分より優先順位の高いタスクが実行中のときの状態である。run状態とは、タスクがCPU20を占有して起動されている状態で、1つのタスクのみがrun状態をとり得る。
【0044】
タスク状態管理部45がタスク状態をどのように遷移させるかはシステムコールからのメッセージやイベントにより決まる。すなわち、「休止状態」からST(Start Task)通知があると「ready状態」に遷移する。「ready状態」からDT(Dispatch)通知があると「run状態」に遷移する。「run状態」からPE(Preempt) 通知があると「ready状態」に遷移する。また、「run状態」からRM(Receive Msg) 通知、SL(Sleep) 通知、GM(Get Memory)通知、WE(Wait Event)のいずれかの通知があると「wait状態」に遷移する。さらに「run状態」からTT(Terminate Task)通知があると「休止状態」に遷移する。また、「wait状態」から待ち状態解除通知があると「ready状態」に遷移する。
【0045】
例えばタスクは起動すべきトリガを受け付けたときにシステムコールを通じてタスク状態管理部45にその旨を通知する(待ち状態解除通知)。すると、そのタスクはタスク状態管理部45においてready状態になる。タスク優先順位管理テーブル43は、ready状態のタスクとrun状態のタスクのうち最も優先順位の高いタスクを判断する。そして最も優先順位の高いタスクをrun状態にする。そのため、例えばrun状態のタスクがない(すなわちCPU20の空き時間(アイドル時間)の)ときに、ready状態のタスクが複数あればそのうち最も優先順位の高いタスクがrun状態になる。また、run状態にあるタスクがあるときでもそのタスクより優先順位の高いタスクがready状態になれば、run状態のタスクはたとえ処理の途中であってもready状態に遷移し、替わって優先順位のより高いタスクがrun状態に遷移する。このようにどのタスクをrun状態とするかを決めるために使用する優先順位が設定されているのが、タスク優先順位管理テーブル43である。
【0046】
タスク優先順位はおおよそ以下のルールに従って設定されている。
(1) 緊急性の高いタスクをなるべく優先する。
(2) 一連作業の中で下流側の作業を担うタスクをなるべく優先する。
(3) 一連作業の中で処理速度の律速となるタスクをなるべく優先する。
(4) 連続占有時間の短いタスクをなるべく優先する。
(5) ユーザが操作したときの応答性を速くするタスクをなるべく優先する。
(6) ホストコンピュータとやり取りするタスクをなるべく優先する。
【0047】
上記(1) のルールに従い緊急性を要するエマージェンシー管理処理タスクは最優先される。またタイマ管理処理タスクは、タイマの計測開始時刻が遅れると、タイマの計測時間を基準に動作する処理のタイミングの遅れを回避するため次に優先される。
【0048】
ここで、主なタスクについて、初期的なタスク優先順位の設定は以下のようになる。ここで、各タスクは(1)→(6)の順で優先順位が低くなる。
(1)緊急処置実行制御タスク(EMGタスク)(SPC)。
(2)プリンタI/F制御タスク(IFDタスク)(Printer)。
(3)時間管理(実行タイミング管理)制御タスク(TIMタスク)(SPC)。
(4)ローカルコピー等の制御タスク(SPCタスク)(SPC)。
(5)スキャナI/F制御タスク(SIFDタスク)(Scanner)。
(6)プリンタコマンド制御タスク(ERTタスク)(Printer)。
なお、タスクの最後に付した、(Printer)はプリンタに関連することを意味し、(Scanner)はスキャナに関連することを意味し、(SPC)はプリンタとスキャナ双方に関連することを意味する。
【0049】
このシステムの優先度設定の考え方について説明する。まず緊急性の高いEMGタスクは最優先する。このEMGタスクはシステムを初期化する必要があるイベント発生に伴うタスクである。タイマタスク(TIMタスク)は、周期イベント発行の時間精度を確保するため比較的高い優先度とする。但し、プリンタI/F制御に特有の制御である受信バッファ監視(DMACによるI/F制御コントローラからRAMへの自動転送状況の監視)の周期の時間規定を確保するため、IFDタスクのみ優先度をタイマタスク(TIM)よりも上位に設定する。一方、システムの各種の実行時間の精度を確保するため、タイマタスク(TIMタスク)の優先順位を通常のスキャナI/F制御タスク(SIFDタスク)よりも上位にする。SPCとしてスキャナI/F制御タスクは通常、タイマタスク(TIM)よりも優先順位を低くし、優先順位を上げる期間を共有リソースアクセス時に必要となる排他制御を行なうときに限定することでシステムの実行時間の精度も確保しつつ、共有リソースの排他制御も実現できる。
【0050】
上記の2つのタスクA,B間で排他制御する場合、例えば図3に示すようなタスク管理が行われることになる。同表では、タスク優先順位とタスク状態とを1つにまとめて示している。また、同表で★印の付された期間は、共有リソースを占有し続ける必要がある期間を示し、特にタスクAにおいて優先順位が「1」に変更される期間が、共有リソースを占有し続ける必要があるとして予め定めた期間である。
【0051】
また、タスクA,Bの初期的な優先順位設定、すなわち通常時の優先順位設定は、通常時の優先順位の一番高いタスクBを「2」、優先順位の低い(2番目以下の)タスクAを「3」に設定しており、タスクAの優先順位を上げるときは、「3」から「1」に上げることにしている。優先順位を変更する対象とすることが可能なタスクはまさにこれから資源を占有しようとしている動作中のタスク自身とし、wa itもしくはready状態にある他のタスクの優先順位を勝手に変更することはしないためである。これは優先順位の管理の一貫性の維持が難しいため、あまり有効でないからである。共有リソースにアクセスする複数のタスクの中で一番優先順位が高いタスクBは優先順位を動的に変更することはしない。
【0052】
図3に示すように、タスクA、タスクBの状態(run,ready,wait等)と優先順位を管理する。共有リソースにアクセスする期間(同表で★印の付された期間)に入る前に、同図中(0)のタイミングでタスクAのタスク優先順位を一時的に「3」から「1」へ上げる。これによりタスクスイッチ(タスク切換え)をしないようにすることで共有リソースの排他制御を行う。このため、タスクAが共有リソースを占有し続けることになる。
【0053】
その後、強制的なタスク切り換えイベントであるUSB割込みイベントが発生すると、OS42はタスク優先順位管理テーブル43を確認する。このとき、タスク優先順位はタスクAが「1」、タスクBが「2」になっているので、タスクAが共有リソースを占有し続けることになる。こうしてUSB割込みイベントが発生しても、タスクAの共有リソースアクセス期間を少なくとも含む所定期間は、タスクAによる共有リソースの占有が維持される。そしてタスクAはタスク完了時など共有リソースの占有を維持する必要がなくなると、同図中(1)のタイミングでタスクAの優先順位を「1」から元の「3」へ下げる。
【0054】
そして、タスクAが完了すると、CPU占有権がOS42に戻り、スケジューラ44がタスク優先順位管理テーブルを確認すると、優先順位はタスクAが「3」、タスクBが「2」になっているので、タスクAをwait状態とする。
【0055】
以上詳述したようにこの実施形態によれば、以下の効果が得られる。
(1)タスク優先順位管理テーブル43から優先順位を参照するだけで済み、比較的処理時間のかかる管理テーブル操作を無くすことができる。このように共有資源に関する管理テーブルを無くし、管理テーブル操作よりも一般的に高速に処理可能なタスク優先順位設定を使用することによって、排他処理に要する処理時間やタスクスイッチ(タスク切換え)の処理時間を短縮できる。従って、短縮された時間をその他の処理に振り向けて、全体として処理速度を向上させることができる。
【0056】
(2)これから共有リソースを占有しようとするタスクAが自分の優先順位を他のタスクBの優先順位より上げる方法を採用し、他のタスクBの優先順位を変化させない。優先順位を動的に切り換える処理が単純で済むうえ、優先順位の管理の一貫性を維持でき制御上の安定性も得られる。
(第2の実施形態)
次に、第2の実施形態を説明する。前記第1の実施形態では、共有リソースにアクセスするタスクが2つの例であったが、3つとしたのが本実施形態である。基本的な考え方は前記第1の実施形態と同様である。
【0057】
例えば図5に示すように、複合機1において、メモリカード(記録メディア)のデータを読み取るカードリーダー部(以下、リーダー部という)24が備えられた例である。リーダー部24がメモリカードから読み取った文字データや画像データは印刷することもできるが、そのままホストコンピュータ30へ転送することもできる。この場合、リーダー部24からの画像データはUSBマルチエンド部25を介してホストコンピュータ30へ転送され、この出力制御を司るのが、リーダーI/F制御タスクとなる。
【0058】
図7はこの複合機1にけるタスク排他制御装置の概略構成を示す。同図に示すように、タスク群Tにおいて、共有リソースにアクセスするタスクが、タスクA,B,Cの3つになっている。通常時の優先順位はタスクAが最上位で,次にタスクB、最下位がタスクCとなっている。本実施形態では、タスクCがリーダーI/F制御タスクに相当する。
【0059】
上記の3つのタスクA,B,C間で排他制御する場合、例えば図6に示すようなタスク管理が行われることになる。同表では、タスク優先順位とタスク状態とを1つにまとめて示している。また、同表で★印の付された期間は、共有リソースを占有し続ける必要がある期間を示し、特にタスクB,Cにおいて優先順位が「1」に変更される期間が、共有リソースを占有し続ける必要があるとして予め定めた期間である。
【0060】
また、タスクA,B,Cの初期的な優先順位設定、すなわち通常時の優先順位設定は、通常時の優先順位の一番高いタスクAを「2」、2番目に優先順位の高いタスクBを「3」、3番目に優先順位の高い(つまり最下位の)タスクCを「4」に設定している。そして、タスクBの優先順位を上げるときは、「3」から「1」に上げ、またタスクCの優先順位を上げるときは、「4」から「1」に上げることにしている。優先順位を変更する対象とすることが可能なタスクはまさにこれから資源を占有しようとしている動作中のタスク自身とし、waitもしくはready状態にある他のタスクの優先順位を勝手に変更することはしないためである。これは前記第1の実施形態と同様の理由で、優先順位の管理の一貫性の維持が難しいためである。共有リソースにアクセスする複数のタスクの中で一番優先順位が高いタスクAは優先順位を動的に変更することはしない。つまり常に「2」を維持する。
【0061】
図6に示すように、タスクA、タスクB,タスクCの状態(run,ready,wait等)と優先順位を管理する。同図における(0)では、通常の優先順位にある。これは優先順位の一番高いタスクAが共有リソースを占有する期間であり、この場合、タスクAは「2」を維持する。
【0062】
タスクAが完了し同図における(1)のタイミングで、タスクAがwait状態になる。すると、タスクスイッチ(タスク切換え)が発生する。タスクBとタスクCのうち優先順位のより高いタスクBがrun状態になる。そして同図における(2)のタイミングで共有リソースにアクセスする期間(同表で★印の付された期間)に入る前に、タスクBの優先順位を一時的に「3」から「1」へ上げる。これによりタスクスイッチ(タスク切換え)をしないようにすることで共有リソースの排他制御を行う。このため、タスクBが共有リソースを占有し続けることになる。
【0063】
その後、強制的なタスク切り換えイベントであるUSB割込みイベントが発生すると、OS42はタスク優先順位管理テーブル43を確認する。このとき、タスク優先順位はタスクAが「2」、タスクBが「1」、タスクCが「4」になっているので、タスクBが共有リソースを占有し続けることになる。こうしてUSB割込みイベントが発生しても、タスクBの共有リソースアクセス期間を少なくとも含む所定期間は、タスクBによる共有リソースの占有が維持される。そしてタスクBはタスク完了時など共有リソースの占有を維持する必要がなくなると、同図中(3)のタイミングでタスクBの優先順位を「1」から元の「3」へ下げる。
【0064】
そして、タスクBが完了すると、CPU占有権がOS42に戻り、スケジューラ44がタスク優先順位管理テーブルを確認すると、優先順位はタスクAが「2」、タスクBが「3」、タスクCが「4」になっており、そのうちready状態にあるのは、タスクCだけなので、タスクCをrun状態にする。そして同図における(4)のタイミングで共有リソースにアクセスする期間(同表で★印の付された期間)に入る前に、タスクCの優先順位を一時的に「4」から「1」へ上げる。これによりタスクスイッチ(タスク切換え)をしないようにすることで共有リソースの排他制御を行う。このため、タスクBが共有リソースを占有し続けることになる。
【0065】
その後、強制的なタスク切り換えイベントであるUSB割込みイベントが発生すると、OS42はタスク優先順位管理テーブル43を確認する。このとき、タスク優先順位はタスクAが「2」、タスクBが「3」、タスクCが「4」になっているので、タスクCが共有リソースを占有し続けることになる。こうしてUSB割込みイベントが発生しても、タスクCの共有リソースアクセス期間を少なくとも含む所定期間は、タスクCによる共有リソースの占有が維持される。そしてタスクCはタスク完了時など共有リソースの占有を維持する必要がなくなると、タスクCの優先順位を「1」から元の「3」へ下げる。そして同図中(5)のタイミングでタスクCがwait状態になったことからタスクスイッチが発生する。そして、優先順位の設定が通常時の値となり、優先順位の一番高いタスクAがrun状態になる。
【0066】
以上詳述したようにこの実施形態によれば、共有リソースにアクセスするのが3つのタスクA,B,Cの場合も、前記第1の実施形態と同様の効果が得られる。
【0067】
なお、実施の形態は、上記に限定されず以下の態様でも実施できる。
(変形例1)前記実施形態では通常時の優先順位を高い方から順に「2」「3」または「2」「3」「4」とし、2番目以下の優先順位のタスクの優先順位を上げるときには、その優先順位を「1」とすることで、他のタスクの優先順位を変更しない方法を採用した。これに対し、通常時の優先順位を高い方から順に「1」「2」または「1」「2」「3」とし、2番目以下の優先順位のタスクの優先順位を上げるときには、その優先順位を「1」とするとともに他のタスクの優先順位を「1」すつ下げる切換えをする方法を採用することもできる。
【0068】
(変形例2)共有資源は通信コントローラに限定されない。他のコントローラを共有資源とする装置においてタスク排他制御装置を採用することもできる。要するに共有資源は何でも構わない。
【0069】
(変形例3)共有資源にアクセスする各タスクの数は2つまたは3つに限定されない。共有資源にアクセスする各タスクの数は4つ以上でも構わない。
前各記実施形態及び変形例から把握される技術的思想を以下に記載する。
【0070】
(1) 強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、前記共有資源を占有しようとするタスクは、該共有資源を共有し合うタスクの中で優先順位の一番高いタスクである場合はその優先順位をそのまま維持し、一方、前記共有資源を共有し合うタスクの中で2番目以下の優先順位である場合は、共有資源を共有し合う他のタスクの優先順位を変化させず該他のタスクより上位の優先順位に自分で切り換えることを特徴とする請求項1に記載のタスク排他制御方法。
【0071】
(2)請求項2又は3の発明において、起動すべきタスクを前記動的に切り換えられた優先順位に基づいて決定する起動タスク決定手段を備えたことを特徴とするタスク排他制御装置。
【0072】
(3)前記共有資源にアクセスする複数のタスクは、スキャナとプリンタを備えた複合機において、前記スキャナの読取データを前記通信コントローラを介して出力する出力制御を行うタスクと、前記通信コントローラを介して前記プリンタに送る印刷データを入力する入力制御を行うタスクとを備えることを特徴とする請求項5に記載のタスク排他制御装置。
【0073】
(4)スキャナ機能の一のタスクと、プリンタ機能の一のタスクが各々アクセスする共有資源を備え、前記複数のタスクを起動する1つのCPUと、前記タスクの状態を管理するタスク状態管理手段と、前記複数のタスクの優先順位が予め設定されるとともに、タスクの優先順位を管理するタスク優先順位管理手段と、前記タスクが共有資源にアクセスするときは、そのタスクの優先順位が前記共有資源を共有し合うタスクの中で一番高くなるように前記タスク優先順位管理手段に設定された優先順位を動的に変更する優先順位変更手段と、前記優先順位に従って起動すべき1つのタスクを選択し前記CPUに実行させる起動タスク決定手段とを備えたことを特徴とするタスク排他制御装置。
【0074】
(5)前記技術思想(4)において、前記優先順位管理手段に設定された前記優先順位は、前記プリンタ機能の一のタスクがスキャナ機能の一のタスクよりも優先されるよう設定されており、スキャナ機能の一のタスクが共有資源にアクセスする際は、当該スキャナ機能の一のタスクの優先順位を前記プリンタ機能の一のタスクの優先順位よりも高くすることを特徴とするタスク排他制御装置。
【図面の簡単な説明】
【図1】第1の実施形態におけるタスク排他制御装置の概略構成図。
【図2】(a)は複合機の概略構成図、(b)はメモリ空間を示す模式図。
【図3】タスク排他制御を説明する説明図。
【図4】複合型複写機の斜視図。
【図5】第2の実施形態における複合機の概略構成図。
【図6】タスク排他制御を説明する説明図。
【図7】タスク排他制御装置の概略構成図。
【図8】従来技術を示し、(a)は複合機の概略構成図、(b)はメモリ空間を示す模式図。
【図9】従来技術におけるタスク排他制御を説明する説明図。
【符号の説明】
1…複合機としての複合型複写装置、22…プリンタ部、23…スキャナ部
20…優先順位切換手段、タスク状態管理手段、起動タスク決定手段を構成するCPU、42…OSカーネル部、43…優先順位管理手段としてのタスク優先順位管理テーブル、44…起動タスク決定手段としてのスケジューラ、45…タスク状態管理手段としてのタスク状態管理部、A…タスク、B…書替手段を構成するタスク(第1の実施形態)、B,C…書替手段を構成するタスク(第2の実施形態)。
【発明の属する技術分野】
本発明は、共有資源にアクセスする複数のタスクの排他制御を行うタスク排他制御方法及びタスク排他制御装置に関するものである。
【0002】
【従来の技術】
従来、プリンタ機能とスキャナ機能とコピー機能を備えた複合型複写機(以下、複合機と称す)が知られている。この種の複合機では、通常、一つの入出力ポートを備え、ホストコンピュータから転送されてくる印刷データを入出力ポートで受信してプリンタ機能部へ送るとともに、スキャナ機能部で読み取られた画像データは入出力ポートからホストコンピュータに送信される。入出力ポートには例えばUSBポートが使用されている。
【0003】
従来、例えば図8(a)に示すように、複合機70においてプリンタ部71とスキャナ部72はUSB1制御部73とUSB2制御部74を介してそれぞれハブ75に接続されていた。そしてホストコンピュータ76に対する入力データ(印刷データ)と出力データ(スキャナ読み取り画像データ)はハブ75で切り換えることで制御していた。CPU77はプリンタ部71、スキャナ部72、USB1制御部73およびUSB2制御部74に接続され、USB1制御部73およびUSB2制御部74の通信制御を司る各タスク(通信制御タスク)を実行していた。この場合、USB1制御部73及びUSB2制御部74がそれぞれ通信制御タスク起動時に使用するメモリ空間は、図8(b)に示すようにUSB1用とUSB2用でそれぞれ独立したアドレスが設けられていたので、両タスクが資源をめぐって競合することはなかった。
【0004】
ところで、図2に示すように、プリンタ部22とスキャナ部23が共通のUSBマルチエンド部25に接続されたマルチエンド方式を採用すれば、ハブ75を無くすことができる。この場合、USBマルチエンド部25では、CPU20が、印刷データのI/F処理を行うプリンタI/F制御タスクと、スキャナ部23で読み取った画像データのI/F処理を行うスキャナI/F制御タスクを所定の優先順位に従って起動することになる。また、USBマルチエンド部25には、割込みマスクレジスタやエンドポイント応答制御レジスタ等のレジスタを備えているが、これらは図2(b)に示すようにメモリ空間Mにおいて1つのアドレスしか持たず、プリンタI/F制御タスクとスキャナI/F制御タスクは資源(レジスタ)を共有することになる。
【0005】
従来、2つのタスクA,Bが共有資源(共有リソース)にアクセスする場合、優先順位(プライオリティ)が予め設定され、各タスクは優先順位に従って優先順位の高い方が優先的に起動される。しかし、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが、優先順位の高いタスクに強制的に切り換えられると、その割り込み起動されたタスクが共有資源(例えばレジスタ)に先のタスクが設定したデータを別のデータに書替えてしまう。その後、その割込みタスクが完了し、先のタスクが再び起動されて続きの処理をするときに既に割込みタスクによって共有資源の設定データが書替えられてしまっているので、正しい処理が行えなくなる。このような不都合を回避するため、強制的なタスク切り換えイベント発生時であっても、共有資源を占有しているタスクが切り換わらず占有し続けるような排他制御が必要になる。
【0006】
従来、この種の排他制御方法として、セマフォ値を用いて、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続けられるようにする排他制御技術が開示されている(例えば特許文献1)。上記の2つのタスクA,B間でセマフォ値を用いて排他制御する場合、例えば図9に示すようなタスク管理が行われることになる。
【0007】
図9に示すように、タスクA、タスクBの状態(run,ready,wait等)と優先順位を管理するとともにセマフォ値を管理する。共有リソースにアクセスする期間(同表で★印の付された期間)は、同図中(0)のタイミングでセマフォ値が「0」に設定され、セマフォ資源(共有リソース)をタスクAが占有することになる。その後、強制的なタスク切り換えイベントであるUSB割込みが発生すると、OSはセマフォ値を確認しそれが「0」に設定されていることから、共有リソースのタスクA占有を維持させるべくタスクBを「wait」状態とする。こうして同表中(1)のタイミングでセマフォ資源をタスクBが獲得しようとするが、タスクAが返却するまでタスクBはwait状態となる。そしてタスクAの共有リソースアクセス期間が終了し、同図中(2)のタイミングでは、タスクAがセマフォ資源を返却し、セマフォ待ちだったタスクBがセマフォ資源の占有を引き継ぎ共有リソースへアクセスを開始する。
【0008】
【特許文献1】
特開平5−250188号公報 (明細書第3−5頁、第1図−第7図)
【0009】
【発明が解決しようとする課題】
しかし、セマフォ値で管理する方法を採用した場合、セマフォ値を管理する管理テーブルが余分に必要なり、しかも優先順位とセマフォ値の両方を確認する処理となるので、排他制御に必要な管理テーブルで必要となるメモリ資源が多く必要になるうえ、処理が複雑になるという問題があった。
【0010】
本発明の目的は、複数のタスクの一が共有資源にアクセスするときに、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける排他制御を効率よく行うことができるタスク排他制御方法及びタスク排他制御装置を提供することにある。
【0011】
【課題を解決するための手段】
上記目的を達成するために本発明では、タスク管理方法において、共有資源にアクセスする複数のタスクが存在し、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける期間が予め設定されており、共有資源を占有しているタスクが前記期間にあるときは、該タスクの優先順位を、共有資源を共有し合う他のタスクより上位の優先順位に動的に切り換えることを要旨とする。
【0012】
この方法によれば、前記期間においては、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける。しかも優先順位を動的に切り換えることで排他制御を実現するので、資源管理テーブルを使用する排他制御方法に比べ、排他制御に要する処理時間を短縮できる。
【0013】
また本発明では、タスク排他制御装置において、共有資源にアクセスする複数のタスクと、強制的なタスク切り換えイベント発生時に前記共有資源を占有しているタスクが切り換わらず占有し続ける期間が予め設定されており、前記有資源を占有しているタスクが前記期間にあるときは、当該タスクの優先順位を、前記共有資源を共有し合う他のタスクより上位の優先順位に動的に切り換える優先順位切換手段とを備えていることを要旨とする。
【0014】
この構成によれば、請求項1の発明と同様の作用効果が得られる。
さらに本発明では、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、前記共有資源を占有しようとするタスクは、該共有資源を共有し合うタスクの中で優先順位の一番高いタスクである場合はその優先順位をそのまま維持し、一方、前記共有資源を共有し合うタスクの中で2番目以下の優先順位である場合は、共有資源を共有し合う他のタスクの優先順位を変化させず該他のタスクより上位の優先順位に自分で切り換えることを要旨とする。
【0015】
この発明によれば、共有資源を占有しようとするタスクは、自分の優先順位を他のタスクより上位に切り換えるだけで、他のタスクの優先順位は変更されないので、優先順位を動的に切り換える処理が単純で済むうえ、優先順位の管理の一貫性を維持でき制御上の安定性も得られる。
【0016】
また本発明では、前記優先順位切換手段は、前記共有資源にアクセスする複数のタスクの優先順位を管理する管理テーブルと、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、該共有資源を占有し続けようとするタスクは、該タスクの優先順位が前記共有資源を共有し合うタスクの中で一番高い優先順位になるように前記管理テーブルを書き替える書替手段とを備え、起動すべきタスクを前記管理テーブルに設定された優先順位を参照して決定する起動タスク決定手段を備えたことを要旨とする。
【0017】
この構成によれば、管理テーブルに設定された優先順位を参照して起動タスクが決定されるので、資源を管理する管理テーブルを用いた構成に比べ、排他制御の処理時間が短く済む。
【0018】
さらに本発明では、前記共有資源にアクセスするタスクは、外部と通信するデータの切り換え制御を行う通信コントローラを制御するタスクであり、前記共有資源は通信コントローラに備えられたデータ格納部であることを要旨とする。
【0019】
この構成によれば、共有資源にアクセスするタスクは、外部と通信するデータの切り換え制御を行う通信コントローラを制御するタスクであるので、例えばハブを使用しない通信制御構造が可能となり、しかもデータの通信を行う複数のタスクの排他制御に要する処理時間が短く済む。
【0020】
また本発明では、所定の優先順位が設定されている、プリンタ機能の一のタスクとスキャナ機能の一のタスクが各々アクセスする共有資源を備え、優先順位の低いタスクが前記共有資源にアクセスするときは、該タスクの優先順位を共有資源を共有する他のタスクより高い優先順位に上げる優先順位切換手段を備えたことを要旨とする。
【0021】
この構成によれば、プリンタ機能の一のタスクとスキャナ機能の一のタスクのうち優先順位の低いタスクが共有資源にアクセスするときは、該タスクの優先順位が共有資源を共有する他のタスクより高い優先順位に上げられる。そして、優先順位に従って起動すべきタスクが決定されるとき、優先順位の低いタスクが共有資源を引き続き占有する状態を維持できる。このため、タスク間の競合が回避されるとともに、優先順位に従って起動タスクを決定する構成なため、資源管理テーブルを使用する排他制御方法に比べ、排他制御に要する処理時間を短縮できる。
【0022】
また本発明では、前記スキャナ機能の一のタスクはスキャナの読取データを通信コントローラを介して出力する出力制御を行うタスクであり、前記プリンタ機能の一のタスクはプリンタに送信する印刷データを前記通信コントローラを介して入力する入力制御を行うタスクであって、前記両タスクは前記通信コントローラを共有資源とすることを要旨とする。
【0023】
この構成によれば、スキャナの読取データの出力制御を行うタスクと、プリンタに送信する印刷データの入力制御を行うタスクとが排他制御により競合せず、しかも排他制御の処理速度が速いため処理時間が短く済む。
【0024】
さらに本発明では、前記スキャナ機能の一のタスクは前記プリンタ機能の一のタスクよりも優先順位が低く設定されており、前記スキャナ機能の一のタスクが前記通信コントローラにアクセスするときは、前記優先順位切換手段は、該スキャナ機能の一のタスクの優先順位を前記プリンタ機能の一のタスクより高い優先順位に上げることを要旨とする。
【0025】
この構成によれば、スキャナ機能の一のタスクがプリンタ機能の一のタスクよりも優先順位が低くなるように設定されることで、通常の優先順位に従って効率のよいタスクの排他制御が行われる。しかし、スキャナ機能の一のタスクが共有資源である通信コントローラにアクセスするときは、該スキャナ機能の一のタスクの優先順位がプリンタ機能の一のタスクより高い優先順位に上げられるため、これらのタスク間で競合しない排他制御が行われる。
【0026】
【発明の実施の形態】
以下、本発明を具体化した一実施形態を、図1〜図4に基づいて説明する。
図4は、一台でスキャナ、プリンタ、コピーが可能な複合型複写機の斜視図である。複合型複写装置(以下、複合機という)1は、本体2の上面に開閉式のカバー3を備え、カバー3を開いた本体2の上部にはその上面がガラスなどの透明板からなるスキャナ読取面4を有するスキャナ装置5が内蔵され、本体2内のスキャナ装置5の下方にはプリンタ装置6が内蔵されている。
【0027】
複合機1の本体2には操作パネル7が配設され、この操作パネル7にはLCD(液晶表示器)8、スキャナボタン10、印刷実行ボタン11およびコピーボタン12が設けられている。スキャナボタン10を操作すると、スキャナ装置5による読み取りが開始される。また、印刷実行ボタン11が操作されると、プリンタ装置6による印刷が実行される。さらにコピーボタン12が操作されると、スキャナ装置5で読み取られた画像がプリンタ装置6により印刷されるようになっている。複合機1で印刷された記録用紙13は、トレイ14に乗せられた状態で排紙口15から排紙される。複合機1はUSBポート(USBコネクタ)16を備え、USBポート16には通信ケーブル17を介してホストコンピュータ30(いずれも図2参照)が接続されている。
【0028】
図2は、複合型複写装置の内部構成を示すブロック図である。
複合機1は、スキャナ(Scanner)と、プリンタ(Printer)と、コピー(Copy)の3つ機能(SPC機能)を備えたものである。複合機1には、1つのCPU20が搭載されている。CPU20はバス21を介してプリンタ部22およびスキャナ部23に接続されている。また、バス21上には、図示しない各種メモリ(ROM及びRAM)が接続されている。プリンタ部22およびスキャナ部23はASIC(Application Specific IC(特定用途向けIC))から構成されている。
【0029】
複合機1はその筐体に設けられた図示しないUSBポートに接続された通信ケーブル17を介してホストコンピュータ30と接続されている。複合機1とホストコンピュータ30間で通信されるデータの入出力の切り換えは、通信コントローラとしてのUSBマルチエンド部(以下、マルチエンド部という)25が制御する。
【0030】
マルチエンド部25は、ホストコンピュータ30等の外部から入力した印刷データをプリンタ部22へ転送するプリンタI/F処理と、スキャナ部23から受信した画像データ(読取データ)をホストコンピュータ30等の外部へ出力するスキャナI/F処理とを司る。そして、マルチエンド部25は、両I/F処理が効率よく行われるようにそのうち一方の処理に排他的に切り換える。
【0031】
マルチエンド部25は、これらI/F処理を行ううえで必要な設定データ等を一時記憶する複数のレジスタ(データ格納部)を備えている。図2(b)はCPU20が各種処理で使用するメモリ空間を示す。このメモリ空間Mにおいて、マルチエンド部25は1つのアドレスしか持たず、プリンタI/F制御タスクとスキャナI/F制御タスクは資源(レジスタ)を共有することになる。もちろん、共有資源(共有リソース)はレジスタに限らず、RAMやPROMなどその他のメモリ等であってもよい。
【0032】
プリンタ部(プリンタASIC)22は、メモリからテーブル等の各種設定データを読み出し、その設定データを参照して印刷データに基づき印刷を実行する。スキャナ部(スキャナASIC)23は、スキャナ実行スイッチが操作されたときにCPU20から指令を受け、撮像器(CCD)を読取り駆動(移動)させて画像を読み取るとともにその撮像器からの読取信号に基づき画像データを生成する。
【0033】
プリンタ部(プリンタASIC)22は、タイマ回路、リセット回路、給紙モータ駆動回路、ヘッド駆動回路、センサ回路、キャリッジモータ駆動回路および紙送りモータ駆動回路等(いずれも図示省略)と接続されている。また、スキャナ部(スキャナASIC)23は、ランプ駆動回路、モータ駆動回路、センサ回路およびCCD駆動ドライバ等(いずれも図示せず)と接続されている。プリンタ系のキャリッジモータ駆動回路や紙送りモータ駆動回路が、CPU20により制御される。また、スキャナ系のランプ駆動回路およびモータ駆動回路もCPU20により制御される。ここで、プリンタ機能のうちプリンタ部(プリンタASIC)22が担当しないプリンタ処理、およびスキャナ機能のうちスキャナ部(スキャナASIC)23が担当しないスキャナ処理については、CPU20が実行する。
【0034】
さらに複合機1はローカルコピー機能(以下、単にコピー機能という)を備えている。CPU20は、スキャナ部23が撮像器(CCD)の読取信号に基づき生成した画像データを内部で印刷データに変換するコピー処理を行う。ここで、コピー処理には色変換処理やハーフトーン処理などが含まれる。
【0035】
CPU20はメモリに記憶された制御プログラムを実行する。制御プログラムは、OS(Operating System)およびアプリケーションプログラム等から構成され、アプリケーションプログラムは複数のタスク(作業プログラム(単位プログラム))から構成されている。タスクは、プリンタ機能、スキャナ機能およびコピー機能の各種作業別に複数用意されており、CPU20は複数のタスクのうちタスク優先順位(優先度)に従って選択された1つのタスクを起動させる。
【0036】
図1は、共有リソースを共有する2つのタスクA,Bの排他制御を司るタスク管理装置の機能ブロック図である。OSは、スケジューリングアルゴリズム採用するものである。
【0037】
タスク排他制御装置41は、OSカーネル部42、タスク優先順位管理テーブル43、タスクAおよびタスクBを備え、さらにOSカーネル部42は、スケジューラ44とタスク状態管理部45を備えている。なお、同図は、タスク群Tのうち共有リソースにアクセスする2つのタスクの排他制御を説明するため、共有リソースを共有しない他のタスクについては省略するが、共有リソースを共有しない他のタスクについてもタスク優先順位管理テーブル43に予め定められた優先順位に従って起動される。
【0038】
OSカーネル部42は、複数のタスクを同時に起動する場合の「スケジューリング」、「メモリ管理」、「割込処理」などを司る。スケジューラ44は、タスク優先順位管理テーブル43から取得したタスク優先順位と、タスク状態管理部45に設定されたタスクの状態(run,wait,ready等)とに基づいて起動すべきタスクを決定する。
【0039】
本実施形態のタスク排他制御方法が従来技術(特許文献1)より優れている点は次のとおりである。すなわち、排他制御に必要な共有資源に関する管理テーブルを無くし、管理テーブル操作よりも一般的に高速処理可能なタスク優先順位設定を使用することによって、排他制御の処理時間やタスクスイッチ(タスク切換え)の処理時間を短縮できることである。従って、短縮された時間をその他の処理に振り向けて、全体として処理速度を向上させることができる。
【0040】
図1において、タスクAはタスクBより通常時の優先順位が低く設定されており、共有リソースアクセス時は優先順位の低いタスクAの優先順位がタスクBの優先順位より高く(上位に)なるようその優先順位が動的に切り換えられるようになっている。本実施形態では、資源を共有するタスクA,Bは、USBマルチエンド部25において入出力データの切換え制御をする2つのタスクであって、タスクAがスキャナI/F制御タスク、タスクBがプリンタI/F制御タスクである。
【0041】
特に問題となる共有資源は、割込みマスク制御レジスタや、USB I/Fの物理層のFIFOの応答制御レジスタである。これらのレジスタは、一方のタスクA(B)の実行途中で強制的な割込みイベント発生により他方のタスクB(A)が起動されてその設定内容が書替えられてしまうと、元のタスクA(B)が復帰したときにレジスタ内容が書替えられているため正しく機能しなくなる。このような不都合を避けるために本実施形態では、共有資源を占有しているタスクがその占有状態を維持する必要がある期間は、そのタスクの優先順位を共有資源を共有し合うタスクの中で一番高くし、強制的な割込みイベント発生時も、そのタスクの起動が維持されるよう優先順位を動的に切り換えるようにしている。OSカーネル部42とタスクT間のやりとりはシステムコールを通じて行われる。
【0042】
タスク状態管理部45は、各タスクの状態を管理するものである。タスクの状態には、休止状態(domant)、待機状態(wait)、起動可能状態(ready)、起動状態(run)などがある。タスク状態管理部45は各タスクがどの状態にあるかを管理する。タスク状態管理部45は、各タスクからシステムコールを通じてなされる通知に基づいて各タスクの状態を管理する。
【0043】
休止状態とは、タスクが起動できない状態である。wait状態とは、メッセージやイベントなどready状態になれるトリガを待っている状態である。ready状態とは、そのタスクが起動できるにもかかわらずCPU20が割り当てられない状態で、自分より優先順位の高いタスクが実行中のときの状態である。run状態とは、タスクがCPU20を占有して起動されている状態で、1つのタスクのみがrun状態をとり得る。
【0044】
タスク状態管理部45がタスク状態をどのように遷移させるかはシステムコールからのメッセージやイベントにより決まる。すなわち、「休止状態」からST(Start Task)通知があると「ready状態」に遷移する。「ready状態」からDT(Dispatch)通知があると「run状態」に遷移する。「run状態」からPE(Preempt) 通知があると「ready状態」に遷移する。また、「run状態」からRM(Receive Msg) 通知、SL(Sleep) 通知、GM(Get Memory)通知、WE(Wait Event)のいずれかの通知があると「wait状態」に遷移する。さらに「run状態」からTT(Terminate Task)通知があると「休止状態」に遷移する。また、「wait状態」から待ち状態解除通知があると「ready状態」に遷移する。
【0045】
例えばタスクは起動すべきトリガを受け付けたときにシステムコールを通じてタスク状態管理部45にその旨を通知する(待ち状態解除通知)。すると、そのタスクはタスク状態管理部45においてready状態になる。タスク優先順位管理テーブル43は、ready状態のタスクとrun状態のタスクのうち最も優先順位の高いタスクを判断する。そして最も優先順位の高いタスクをrun状態にする。そのため、例えばrun状態のタスクがない(すなわちCPU20の空き時間(アイドル時間)の)ときに、ready状態のタスクが複数あればそのうち最も優先順位の高いタスクがrun状態になる。また、run状態にあるタスクがあるときでもそのタスクより優先順位の高いタスクがready状態になれば、run状態のタスクはたとえ処理の途中であってもready状態に遷移し、替わって優先順位のより高いタスクがrun状態に遷移する。このようにどのタスクをrun状態とするかを決めるために使用する優先順位が設定されているのが、タスク優先順位管理テーブル43である。
【0046】
タスク優先順位はおおよそ以下のルールに従って設定されている。
(1) 緊急性の高いタスクをなるべく優先する。
(2) 一連作業の中で下流側の作業を担うタスクをなるべく優先する。
(3) 一連作業の中で処理速度の律速となるタスクをなるべく優先する。
(4) 連続占有時間の短いタスクをなるべく優先する。
(5) ユーザが操作したときの応答性を速くするタスクをなるべく優先する。
(6) ホストコンピュータとやり取りするタスクをなるべく優先する。
【0047】
上記(1) のルールに従い緊急性を要するエマージェンシー管理処理タスクは最優先される。またタイマ管理処理タスクは、タイマの計測開始時刻が遅れると、タイマの計測時間を基準に動作する処理のタイミングの遅れを回避するため次に優先される。
【0048】
ここで、主なタスクについて、初期的なタスク優先順位の設定は以下のようになる。ここで、各タスクは(1)→(6)の順で優先順位が低くなる。
(1)緊急処置実行制御タスク(EMGタスク)(SPC)。
(2)プリンタI/F制御タスク(IFDタスク)(Printer)。
(3)時間管理(実行タイミング管理)制御タスク(TIMタスク)(SPC)。
(4)ローカルコピー等の制御タスク(SPCタスク)(SPC)。
(5)スキャナI/F制御タスク(SIFDタスク)(Scanner)。
(6)プリンタコマンド制御タスク(ERTタスク)(Printer)。
なお、タスクの最後に付した、(Printer)はプリンタに関連することを意味し、(Scanner)はスキャナに関連することを意味し、(SPC)はプリンタとスキャナ双方に関連することを意味する。
【0049】
このシステムの優先度設定の考え方について説明する。まず緊急性の高いEMGタスクは最優先する。このEMGタスクはシステムを初期化する必要があるイベント発生に伴うタスクである。タイマタスク(TIMタスク)は、周期イベント発行の時間精度を確保するため比較的高い優先度とする。但し、プリンタI/F制御に特有の制御である受信バッファ監視(DMACによるI/F制御コントローラからRAMへの自動転送状況の監視)の周期の時間規定を確保するため、IFDタスクのみ優先度をタイマタスク(TIM)よりも上位に設定する。一方、システムの各種の実行時間の精度を確保するため、タイマタスク(TIMタスク)の優先順位を通常のスキャナI/F制御タスク(SIFDタスク)よりも上位にする。SPCとしてスキャナI/F制御タスクは通常、タイマタスク(TIM)よりも優先順位を低くし、優先順位を上げる期間を共有リソースアクセス時に必要となる排他制御を行なうときに限定することでシステムの実行時間の精度も確保しつつ、共有リソースの排他制御も実現できる。
【0050】
上記の2つのタスクA,B間で排他制御する場合、例えば図3に示すようなタスク管理が行われることになる。同表では、タスク優先順位とタスク状態とを1つにまとめて示している。また、同表で★印の付された期間は、共有リソースを占有し続ける必要がある期間を示し、特にタスクAにおいて優先順位が「1」に変更される期間が、共有リソースを占有し続ける必要があるとして予め定めた期間である。
【0051】
また、タスクA,Bの初期的な優先順位設定、すなわち通常時の優先順位設定は、通常時の優先順位の一番高いタスクBを「2」、優先順位の低い(2番目以下の)タスクAを「3」に設定しており、タスクAの優先順位を上げるときは、「3」から「1」に上げることにしている。優先順位を変更する対象とすることが可能なタスクはまさにこれから資源を占有しようとしている動作中のタスク自身とし、wa itもしくはready状態にある他のタスクの優先順位を勝手に変更することはしないためである。これは優先順位の管理の一貫性の維持が難しいため、あまり有効でないからである。共有リソースにアクセスする複数のタスクの中で一番優先順位が高いタスクBは優先順位を動的に変更することはしない。
【0052】
図3に示すように、タスクA、タスクBの状態(run,ready,wait等)と優先順位を管理する。共有リソースにアクセスする期間(同表で★印の付された期間)に入る前に、同図中(0)のタイミングでタスクAのタスク優先順位を一時的に「3」から「1」へ上げる。これによりタスクスイッチ(タスク切換え)をしないようにすることで共有リソースの排他制御を行う。このため、タスクAが共有リソースを占有し続けることになる。
【0053】
その後、強制的なタスク切り換えイベントであるUSB割込みイベントが発生すると、OS42はタスク優先順位管理テーブル43を確認する。このとき、タスク優先順位はタスクAが「1」、タスクBが「2」になっているので、タスクAが共有リソースを占有し続けることになる。こうしてUSB割込みイベントが発生しても、タスクAの共有リソースアクセス期間を少なくとも含む所定期間は、タスクAによる共有リソースの占有が維持される。そしてタスクAはタスク完了時など共有リソースの占有を維持する必要がなくなると、同図中(1)のタイミングでタスクAの優先順位を「1」から元の「3」へ下げる。
【0054】
そして、タスクAが完了すると、CPU占有権がOS42に戻り、スケジューラ44がタスク優先順位管理テーブルを確認すると、優先順位はタスクAが「3」、タスクBが「2」になっているので、タスクAをwait状態とする。
【0055】
以上詳述したようにこの実施形態によれば、以下の効果が得られる。
(1)タスク優先順位管理テーブル43から優先順位を参照するだけで済み、比較的処理時間のかかる管理テーブル操作を無くすことができる。このように共有資源に関する管理テーブルを無くし、管理テーブル操作よりも一般的に高速に処理可能なタスク優先順位設定を使用することによって、排他処理に要する処理時間やタスクスイッチ(タスク切換え)の処理時間を短縮できる。従って、短縮された時間をその他の処理に振り向けて、全体として処理速度を向上させることができる。
【0056】
(2)これから共有リソースを占有しようとするタスクAが自分の優先順位を他のタスクBの優先順位より上げる方法を採用し、他のタスクBの優先順位を変化させない。優先順位を動的に切り換える処理が単純で済むうえ、優先順位の管理の一貫性を維持でき制御上の安定性も得られる。
(第2の実施形態)
次に、第2の実施形態を説明する。前記第1の実施形態では、共有リソースにアクセスするタスクが2つの例であったが、3つとしたのが本実施形態である。基本的な考え方は前記第1の実施形態と同様である。
【0057】
例えば図5に示すように、複合機1において、メモリカード(記録メディア)のデータを読み取るカードリーダー部(以下、リーダー部という)24が備えられた例である。リーダー部24がメモリカードから読み取った文字データや画像データは印刷することもできるが、そのままホストコンピュータ30へ転送することもできる。この場合、リーダー部24からの画像データはUSBマルチエンド部25を介してホストコンピュータ30へ転送され、この出力制御を司るのが、リーダーI/F制御タスクとなる。
【0058】
図7はこの複合機1にけるタスク排他制御装置の概略構成を示す。同図に示すように、タスク群Tにおいて、共有リソースにアクセスするタスクが、タスクA,B,Cの3つになっている。通常時の優先順位はタスクAが最上位で,次にタスクB、最下位がタスクCとなっている。本実施形態では、タスクCがリーダーI/F制御タスクに相当する。
【0059】
上記の3つのタスクA,B,C間で排他制御する場合、例えば図6に示すようなタスク管理が行われることになる。同表では、タスク優先順位とタスク状態とを1つにまとめて示している。また、同表で★印の付された期間は、共有リソースを占有し続ける必要がある期間を示し、特にタスクB,Cにおいて優先順位が「1」に変更される期間が、共有リソースを占有し続ける必要があるとして予め定めた期間である。
【0060】
また、タスクA,B,Cの初期的な優先順位設定、すなわち通常時の優先順位設定は、通常時の優先順位の一番高いタスクAを「2」、2番目に優先順位の高いタスクBを「3」、3番目に優先順位の高い(つまり最下位の)タスクCを「4」に設定している。そして、タスクBの優先順位を上げるときは、「3」から「1」に上げ、またタスクCの優先順位を上げるときは、「4」から「1」に上げることにしている。優先順位を変更する対象とすることが可能なタスクはまさにこれから資源を占有しようとしている動作中のタスク自身とし、waitもしくはready状態にある他のタスクの優先順位を勝手に変更することはしないためである。これは前記第1の実施形態と同様の理由で、優先順位の管理の一貫性の維持が難しいためである。共有リソースにアクセスする複数のタスクの中で一番優先順位が高いタスクAは優先順位を動的に変更することはしない。つまり常に「2」を維持する。
【0061】
図6に示すように、タスクA、タスクB,タスクCの状態(run,ready,wait等)と優先順位を管理する。同図における(0)では、通常の優先順位にある。これは優先順位の一番高いタスクAが共有リソースを占有する期間であり、この場合、タスクAは「2」を維持する。
【0062】
タスクAが完了し同図における(1)のタイミングで、タスクAがwait状態になる。すると、タスクスイッチ(タスク切換え)が発生する。タスクBとタスクCのうち優先順位のより高いタスクBがrun状態になる。そして同図における(2)のタイミングで共有リソースにアクセスする期間(同表で★印の付された期間)に入る前に、タスクBの優先順位を一時的に「3」から「1」へ上げる。これによりタスクスイッチ(タスク切換え)をしないようにすることで共有リソースの排他制御を行う。このため、タスクBが共有リソースを占有し続けることになる。
【0063】
その後、強制的なタスク切り換えイベントであるUSB割込みイベントが発生すると、OS42はタスク優先順位管理テーブル43を確認する。このとき、タスク優先順位はタスクAが「2」、タスクBが「1」、タスクCが「4」になっているので、タスクBが共有リソースを占有し続けることになる。こうしてUSB割込みイベントが発生しても、タスクBの共有リソースアクセス期間を少なくとも含む所定期間は、タスクBによる共有リソースの占有が維持される。そしてタスクBはタスク完了時など共有リソースの占有を維持する必要がなくなると、同図中(3)のタイミングでタスクBの優先順位を「1」から元の「3」へ下げる。
【0064】
そして、タスクBが完了すると、CPU占有権がOS42に戻り、スケジューラ44がタスク優先順位管理テーブルを確認すると、優先順位はタスクAが「2」、タスクBが「3」、タスクCが「4」になっており、そのうちready状態にあるのは、タスクCだけなので、タスクCをrun状態にする。そして同図における(4)のタイミングで共有リソースにアクセスする期間(同表で★印の付された期間)に入る前に、タスクCの優先順位を一時的に「4」から「1」へ上げる。これによりタスクスイッチ(タスク切換え)をしないようにすることで共有リソースの排他制御を行う。このため、タスクBが共有リソースを占有し続けることになる。
【0065】
その後、強制的なタスク切り換えイベントであるUSB割込みイベントが発生すると、OS42はタスク優先順位管理テーブル43を確認する。このとき、タスク優先順位はタスクAが「2」、タスクBが「3」、タスクCが「4」になっているので、タスクCが共有リソースを占有し続けることになる。こうしてUSB割込みイベントが発生しても、タスクCの共有リソースアクセス期間を少なくとも含む所定期間は、タスクCによる共有リソースの占有が維持される。そしてタスクCはタスク完了時など共有リソースの占有を維持する必要がなくなると、タスクCの優先順位を「1」から元の「3」へ下げる。そして同図中(5)のタイミングでタスクCがwait状態になったことからタスクスイッチが発生する。そして、優先順位の設定が通常時の値となり、優先順位の一番高いタスクAがrun状態になる。
【0066】
以上詳述したようにこの実施形態によれば、共有リソースにアクセスするのが3つのタスクA,B,Cの場合も、前記第1の実施形態と同様の効果が得られる。
【0067】
なお、実施の形態は、上記に限定されず以下の態様でも実施できる。
(変形例1)前記実施形態では通常時の優先順位を高い方から順に「2」「3」または「2」「3」「4」とし、2番目以下の優先順位のタスクの優先順位を上げるときには、その優先順位を「1」とすることで、他のタスクの優先順位を変更しない方法を採用した。これに対し、通常時の優先順位を高い方から順に「1」「2」または「1」「2」「3」とし、2番目以下の優先順位のタスクの優先順位を上げるときには、その優先順位を「1」とするとともに他のタスクの優先順位を「1」すつ下げる切換えをする方法を採用することもできる。
【0068】
(変形例2)共有資源は通信コントローラに限定されない。他のコントローラを共有資源とする装置においてタスク排他制御装置を採用することもできる。要するに共有資源は何でも構わない。
【0069】
(変形例3)共有資源にアクセスする各タスクの数は2つまたは3つに限定されない。共有資源にアクセスする各タスクの数は4つ以上でも構わない。
前各記実施形態及び変形例から把握される技術的思想を以下に記載する。
【0070】
(1) 強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、前記共有資源を占有しようとするタスクは、該共有資源を共有し合うタスクの中で優先順位の一番高いタスクである場合はその優先順位をそのまま維持し、一方、前記共有資源を共有し合うタスクの中で2番目以下の優先順位である場合は、共有資源を共有し合う他のタスクの優先順位を変化させず該他のタスクより上位の優先順位に自分で切り換えることを特徴とする請求項1に記載のタスク排他制御方法。
【0071】
(2)請求項2又は3の発明において、起動すべきタスクを前記動的に切り換えられた優先順位に基づいて決定する起動タスク決定手段を備えたことを特徴とするタスク排他制御装置。
【0072】
(3)前記共有資源にアクセスする複数のタスクは、スキャナとプリンタを備えた複合機において、前記スキャナの読取データを前記通信コントローラを介して出力する出力制御を行うタスクと、前記通信コントローラを介して前記プリンタに送る印刷データを入力する入力制御を行うタスクとを備えることを特徴とする請求項5に記載のタスク排他制御装置。
【0073】
(4)スキャナ機能の一のタスクと、プリンタ機能の一のタスクが各々アクセスする共有資源を備え、前記複数のタスクを起動する1つのCPUと、前記タスクの状態を管理するタスク状態管理手段と、前記複数のタスクの優先順位が予め設定されるとともに、タスクの優先順位を管理するタスク優先順位管理手段と、前記タスクが共有資源にアクセスするときは、そのタスクの優先順位が前記共有資源を共有し合うタスクの中で一番高くなるように前記タスク優先順位管理手段に設定された優先順位を動的に変更する優先順位変更手段と、前記優先順位に従って起動すべき1つのタスクを選択し前記CPUに実行させる起動タスク決定手段とを備えたことを特徴とするタスク排他制御装置。
【0074】
(5)前記技術思想(4)において、前記優先順位管理手段に設定された前記優先順位は、前記プリンタ機能の一のタスクがスキャナ機能の一のタスクよりも優先されるよう設定されており、スキャナ機能の一のタスクが共有資源にアクセスする際は、当該スキャナ機能の一のタスクの優先順位を前記プリンタ機能の一のタスクの優先順位よりも高くすることを特徴とするタスク排他制御装置。
【図面の簡単な説明】
【図1】第1の実施形態におけるタスク排他制御装置の概略構成図。
【図2】(a)は複合機の概略構成図、(b)はメモリ空間を示す模式図。
【図3】タスク排他制御を説明する説明図。
【図4】複合型複写機の斜視図。
【図5】第2の実施形態における複合機の概略構成図。
【図6】タスク排他制御を説明する説明図。
【図7】タスク排他制御装置の概略構成図。
【図8】従来技術を示し、(a)は複合機の概略構成図、(b)はメモリ空間を示す模式図。
【図9】従来技術におけるタスク排他制御を説明する説明図。
【符号の説明】
1…複合機としての複合型複写装置、22…プリンタ部、23…スキャナ部
20…優先順位切換手段、タスク状態管理手段、起動タスク決定手段を構成するCPU、42…OSカーネル部、43…優先順位管理手段としてのタスク優先順位管理テーブル、44…起動タスク決定手段としてのスケジューラ、45…タスク状態管理手段としてのタスク状態管理部、A…タスク、B…書替手段を構成するタスク(第1の実施形態)、B,C…書替手段を構成するタスク(第2の実施形態)。
Claims (8)
- 共有資源にアクセスする複数のタスクが存在し、強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける期間が予め設定されており、共有資源を占有しているタスクが前記期間にあるときは、該タスクの優先順位を、共有資源を共有し合う他のタスクより上位の優先順位に動的に切り換えることを特徴とするタスク排他制御方法。
- 共有資源にアクセスする複数のタスクと、
強制的なタスク切り換えイベント発生時に前記共有資源を占有しているタスクが切り換わらず占有し続ける期間が予め設定されており、
前記共有資源を占有しているタスクが前記期間にあるときは、当該タスクの優先順位を、前記共有資源を共有し合う他のタスクより上位の優先順位に動的に切り換える優先順位切換手段と
を備えていることを特徴とするタスク排他制御装置。 - 強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、前記共有資源を占有しようとするタスクは、該共有資源を共有し合うタスクの中で優先順位の一番高いタスクである場合はその優先順位をそのまま維持し、一方、前記共有資源を共有し合うタスクの中で2番目以下の優先順位である場合は、共有資源を共有し合う他のタスクの優先順位を変化させず該他のタスクより上位の優先順位に自分で切り換えることを特徴とする請求項2に記載のタスク排他制御装置。
- 前記優先順位切換手段は、前記共有資源にアクセスする複数のタスクの優先順位を管理する管理テーブルと、
強制的なタスク切り換えイベント発生時に共有資源を占有しているタスクが切り換わらず占有し続ける前記期間にあるときは、該共有資源を占有し続けようとするタスクは、該タスクの優先順位が前記共有資源を共有し合うタスクの中で一番高い優先順位になるように前記管理テーブルを書き替える書替手段とを備え、
起動すべきタスクを前記管理テーブルに設定された優先順位を参照して決定する起動タスク決定手段を備えたことを特徴とする請求項2又は請求項3に記載のタスク排他制御装置。 - 前記共有資源にアクセスするタスクは、外部と通信するデータの切り換え制御を行う通信コントローラを制御するタスクであり、前記共有資源は通信コントローラに備えられたデータ格納部であることを特徴とする請求項2〜4のいずれか一項に記載のタスク排他制御装置。
- 所定の優先順位が設定されている、プリンタ機能の一のタスクとスキャナ機能の一のタスクが各々アクセスする共有資源を備え、優先順位の低いタスクが前記共有資源にアクセスするときは、該タスクの優先順位を共有資源を共有する他のタスクより高い優先順位に上げる優先順位切換手段を備えたことを特徴とするタスク排他制御装置。
- 前記スキャナ機能の一のタスクはスキャナの読取データを通信コントローラを介して出力する出力制御を行うタスクであり、前記プリンタ機能の一のタスクはプリンタに送信する印刷データを前記通信コントローラを介して入力する入力制御を行うタスクであって、前記両タスクは前記通信コントローラを共有資源とすることを特徴とする請求項6に記載のタスク排他制御装置。
- 前記スキャナ機能の一のタスクは前記プリンタ機能の一のタスクよりも優先順位が低く設定されており、前記スキャナ機能の一のタスクが前記通信コントローラにアクセスするときは、前記優先順位切換手段は、該スキャナ機能の一のタスクの優先順位を前記プリンタ機能の一のタスクより高い優先順位に上げることを特徴とする請求項6又は7に記載のタスク排他制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002291650A JP2004127039A (ja) | 2002-10-03 | 2002-10-03 | タスク排他制御方法及びタスク排他制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002291650A JP2004127039A (ja) | 2002-10-03 | 2002-10-03 | タスク排他制御方法及びタスク排他制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004127039A true JP2004127039A (ja) | 2004-04-22 |
Family
ID=32283190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002291650A Pending JP2004127039A (ja) | 2002-10-03 | 2002-10-03 | タスク排他制御方法及びタスク排他制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004127039A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007116496A (ja) * | 2005-10-21 | 2007-05-10 | Seiko Epson Corp | 多機能複合装置、リソース管理方法及びプログラム |
US7472214B2 (en) | 2005-08-05 | 2008-12-30 | Mitsubishi Denki Kabushiki Kaisha | Real-time embedded simple monitor method and computer product |
EP2207070A1 (en) * | 2009-01-09 | 2010-07-14 | Yokogawa Electric Corporation | Field control device and field control method |
US9042967B2 (en) | 2008-05-20 | 2015-05-26 | University Health Network | Device and method for wound imaging and monitoring |
JP2016055514A (ja) * | 2014-09-09 | 2016-04-21 | キヤノン株式会社 | 画像形成装置、該装置の制御方法、及びプログラム |
US10438356B2 (en) | 2014-07-24 | 2019-10-08 | University Health Network | Collection and analysis of data for diagnostic purposes |
-
2002
- 2002-10-03 JP JP2002291650A patent/JP2004127039A/ja active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7472214B2 (en) | 2005-08-05 | 2008-12-30 | Mitsubishi Denki Kabushiki Kaisha | Real-time embedded simple monitor method and computer product |
JP4687379B2 (ja) * | 2005-10-21 | 2011-05-25 | セイコーエプソン株式会社 | 多機能複合装置及びプログラム |
JP2007116496A (ja) * | 2005-10-21 | 2007-05-10 | Seiko Epson Corp | 多機能複合装置、リソース管理方法及びプログラム |
US11375898B2 (en) | 2008-05-20 | 2022-07-05 | University Health Network | Method and system with spectral filtering and thermal mapping for imaging and collection of data for diagnostic purposes from bacteria |
US9042967B2 (en) | 2008-05-20 | 2015-05-26 | University Health Network | Device and method for wound imaging and monitoring |
US11154198B2 (en) | 2008-05-20 | 2021-10-26 | University Health Network | Method and system for imaging and collection of data for diagnostic purposes |
US11284800B2 (en) | 2008-05-20 | 2022-03-29 | University Health Network | Devices, methods, and systems for fluorescence-based endoscopic imaging and collection of data with optical filters with corresponding discrete spectral bandwidth |
EP2207070A1 (en) * | 2009-01-09 | 2010-07-14 | Yokogawa Electric Corporation | Field control device and field control method |
US10438356B2 (en) | 2014-07-24 | 2019-10-08 | University Health Network | Collection and analysis of data for diagnostic purposes |
US11676276B2 (en) | 2014-07-24 | 2023-06-13 | University Health Network | Collection and analysis of data for diagnostic purposes |
US11954861B2 (en) | 2014-07-24 | 2024-04-09 | University Health Network | Systems, devices, and methods for visualization of tissue and collection and analysis of data regarding same |
US11961236B2 (en) | 2014-07-24 | 2024-04-16 | University Health Network | Collection and analysis of data for diagnostic purposes |
JP2016055514A (ja) * | 2014-09-09 | 2016-04-21 | キヤノン株式会社 | 画像形成装置、該装置の制御方法、及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5289153B2 (ja) | 情報処理装置及びその制御方法、並びにコンピュータプログラム | |
EP1909474B1 (en) | Image processor and its control method | |
JP5418097B2 (ja) | 情報処理装置、画像形成装置、動作モード切替方法 | |
JP2000211216A (ja) | 複合機器の情報処理方法及びシステム | |
JP2012244606A (ja) | 画像形成装置 | |
JP2004127039A (ja) | タスク排他制御方法及びタスク排他制御装置 | |
JP2014032583A (ja) | 画像処理装置、画像処理装置の制御方法、及びプログラム | |
JP5718305B2 (ja) | 画像形成装置 | |
US20100332797A1 (en) | Information processing apparatus, control method for information processing apparatus, and program | |
US6122699A (en) | Data processing apparatus with bus intervention means for controlling interconnection of plural busses | |
JP6049781B2 (ja) | 画像形成装置、制御方法、及びプログラム | |
JP5636653B2 (ja) | 半導体集積回路及び省電力制御方法 | |
CN111541825B (zh) | 电子装置及其控制方法 | |
JP2015123650A (ja) | 画像形成装置、画像形成装置の制御方法、及びプログラム | |
JPH11187190A (ja) | 複合機能処理装置および複合機能処理方法 | |
US7457943B2 (en) | Controller, image processing apparatus, and method of controlling execution of program | |
JP7009866B2 (ja) | 電子機器、通信処理方法及びプログラム | |
JP2007264978A (ja) | 情報処理装置、及びその起動方法 | |
JP7523925B2 (ja) | 情報処理装置及びその制御方法、並びにプログラム | |
JPH1097433A (ja) | 多機能並行処理型電子装置 | |
JP4190969B2 (ja) | バスシステム及びambaにおけるバス調停システム | |
JP2010283734A (ja) | 画像形成装置 | |
JP2003067243A (ja) | 画像処理装置、プログラム、プログラムが書き込まれた記録媒体および画像形成装置 | |
JP2002268940A (ja) | 画像処理装置 | |
JP2005025732A (ja) | コントローラ、画像処理装置およびプログラムの実行を制御する方法 |