(57)【要約】【課題】メモリカード未装着時のメモリカードのアクセス要求の発生を抑止する。【構成】ハンドラ２０２は、メモリカード１０の挿抜をメッセージ２１０でメディア検出タスク２０４に伝えると共に、フラグレジスタ２０６に挿抜状態を格納する。メディア検出タスク２０４は、ハンドラ２０２から複数のメッセージ２１０を受け取った場合に、最後に受け取ったメッセージのみを抽出し、フラグレジスタ２０６を参照して抽出したメッセージが有効性を判定し、有効であった場合にのみ、メッセージ２１２をメディア利用タスク２０９に通知する。メディア利用タスク２０８は、メディア検出タスク２０４とセマフォを介して排他動作し、受け取ったメッセージ２１２が示すメモリカードの状態とフラグレジスタ２０６が示すメモリカードの状態が共に装着で一致した場合にのみ、メモリカード１０のファイルアクセスを行う。【選択図】図２
2004334384.tif 000002
【特許請求の範囲】
【請求項１】
メモリカードを脱着可能に装着するデータ処理装置であって、
タスクのスケジューリングとタスク間メッセージの中継を行うオペレーティングシステムと、
フラグを格納するフラグ格納手段と、前記メモリカードの挿抜を検知するハンドラと、第１のタスクと、前記メモリカードに格納されたデータを利用する第２のタスクとを備え、
前記ハンドラは、前記メモリカードの挿抜を検知した場合に、前記フラグ格納手段のフラグに検知した前記メモリカードの挿抜状態を示す値を設定し、検知した前記メモリカードの挿抜状態を通知するメッセージを前記第１のタスクに送信し、
前記第１のタスクは、前記メモリカードの挿抜をメッセージで通知された場合に、その時点で受信可能な全てのメッセージ内の最後のメッセージが示す挿抜状態と、前記フラグ格納手段に格納されたフラグが示す挿抜状態が一致する場合にのみ、メッセージで通知されたメモリカードの挿抜状態を前記第２のタスクにメッセージで通知し、
前記第２のタスクは、前記メモリカードの挿抜状態をメッセージで通知された場合に、受信したメッセージが示す挿抜状態と、前記フラグ格納手段に格納されたフラグが示す挿抜状態が共に、メモリカードの装着を示している場合にのみ前記メモリカードのデータに対するアクセスを行うことを特徴とするデータ処理装置。
【請求項２】
請求項１記載のデータ処理装置であって、
前記第１のタスクと第２のタスクは交互にセマフォを獲得して処理を行うタスクであって、
前記セマフォを獲得した前記第１のタスクは、前記メッセージを前記第２のタスクに送信してセマフォを解放することを特徴とするデータ処理装置。
【請求項３】
タスクのスケジューリングとタスク間メッセージの中継を行うオペレーティングシステムが稼働するコンピュータによって読みとられ実行されるコンピュータプログラムであって、
当該コンピュータプログラムは、前記コンピュータに、
前記メモリカードの挿抜を検知するハンドラと、前記メモリカードに格納されたデータを利用するタスクとを実行させ、
前記ハンドラは、前記メモリカードの挿抜を検知した場合に、所定のフラグに、検知した前記メモリカードの挿抜状態を示す値を設定し、検知した前記メモリカードの挿抜状態を通知するメッセージを前記タスクに送信し、
前記タスクは、前記メモリカードの挿抜をメッセージで通知された場合に、その時点で受信可能な全てのメッセージ内の最後のメッセージが示す挿抜状態と、前記フラグが示す挿抜状態が共に、メモリカードの装着を示している場合にのみ前記メモリカードのデータに対するアクセスを行うことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、脱着可能なメモリカードを利用するデータ処理装置における、メモリカード装着時におけるメモリカードアクセスを制御する技術に関するものである。
【０００２】
【従来の技術】
オペレーティングシステムを備えたデータ処理装置において、アプリケーションタスクのメモリカード内のファイルへのアクセスにおける、メモリカードへの実際のアクセスの制御はオペレーティングシステムによって行われる。そして、メモリカードが装着されていない状態において行われたアプリケーションタスクのメモリカードアクセスに対するエラー処理の機能として、メモリカードアクセス完了が所定時間内に完了しないタイムアウトが生じてからアクセスエラーをアプリケーションタスクに返す機能しか備えていないオペレーティングシステムが存在する。
【０００３】
なお、メモリカードのデータ処理装置への装着を検出する技術としては、メモリカード装着スロットに、メモリカード挿入によってオン状態となるメカニカルなスイッチを設け、当該スイッチの状態に応じて、メモリカードがデータ処理装置に装着されているかどうかを検出する技術が知られている（たとえば、特開２００２−３６６９１９号公報）。
【０００４】
【特許文献１】
特開２００２−３６６９１９号公報
【０００５】
【発明が解決しようとする課題】
さて、前述のように、タイムアウトを用いたエラー処理の機能しか備えないオペレーティングシステムを用いる場合、メモリカードが装着されていない状態においてアプリケーションタスクがメモリカードアクセスを行うと、処理がアプリケーションタスクに戻るまでに長時間を要してしまい、その間、データ処理装置の動作が凍結してしまう問題が生じる。
【０００６】
このような問題の発生を回避するために、にメモリカードの装着／抜去を検知するタスクを設け、このタスクからアプリケーションタスクに、メモリカードの装着／抜去時にその旨を通知するようにし、アプリケーションタスクにおいて、メモリカードアクセスを行うときに、通知されている装着／抜去の内容に応じてメモリカード装着の有無を確認し、メモリカードが装着されていない場合には、メモリカードのアクセスをしないようにすることが考えれる。
【０００７】
しかしながら、タスク間の情報伝達の仕組みとしてオペレーティングシステムによってハンドリングされるメッセージを用いる場合、オペレーティングシステムのマルチタスク環境では、メッセージ送信から受信までの間にタスクの優先順位の影響で遅延が生じることが考えられる。また、アプリケーションタスクが、到達したメッセージを一つづつ実行するため、シーケンシャルな処理には適しているが、タイミングを重視する処理には適していない。
【０００８】
例えば、ユーザがメモリカードを装着後、すぐに抜去したときなどには、アプリケーションタスクが、メモリカード抜去のメッセージの到着前に、その前に到着したメモリカード装着のメッセージに従って、メモリカードのアクセスを実行してしまう。このような場合には、メモリカード抜去の処理において、前述したように、タイムアウト発生まで、データ処理装置の動作が凍結してしまう問題が生じることになる。
【０００９】
そこで、本発明は、メモリカード未装着時に、アプリケーションタスクによるメモリカードのアクセスが行われないよう抑止することを課題とする。
【００１０】
【課題を解決するための手段】
前記課題達成のために、本発明は、メモリカードを脱着可能に装着するデータ処理装置に、タスクのスケジューリングとタスク間メッセージの中継を行うオペレーティングシステムと、フラグを格納するフラグ格納手段と、前記メモリカードの挿抜を検知するハンドラと、第１のタスクと、前記メモリカードに格納されたデータを利用する第２のタスクとを備え、前記ハンドラにおいて、前記メモリカードの挿抜を検知した場合に、前記フラグ格納手段のフラグに検知した前記メモリカードの挿抜状態を示す値を設定し、検知した前記メモリカードの挿抜状態を通知するメッセージを前記第１のタスクに送信し、前記第１のタスクにおいて、前記メモリカードの挿抜をメッセージで通知された場合に、その時点で受信可能な全てのメッセージ内の最後のメッセージが示す挿抜状態と、前記フラグ格納手段に格納されたフラグが示す挿抜状態が一致する場合にのみ、メッセージで通知されたメモリカードの挿抜状態を前記第２のタスクにメッセージで通知し、前記第２のタスクにおいて、前記メモリカードの挿抜状態をメッセージで通知された場合に、受信したメッセージが示す挿抜状態と、前記フラグ格納手段に格納されたフラグが示す挿抜状態が共に、メモリカードの装着を示している場合にのみ前記メモリカードのデータに対するアクセスを行うようにしたものである。
【００１１】
このようなデータ処理装置によれば、伝達に遅延が生じる可能性のあるメッセージとは別に、フラグを用いて、メモリカードにアクセスする第２のタスクにメモリカードの挿抜の有無を通知するようにしたので、第２のタスクはメモリカード装着の有無を遅延なく認識し、メモリカードが装着されていない場合には、メモリカードのアクセスを行わないようにすることができる。また、第１のタスクにおいて、ハンドラが最後に送信したメッセージ以外の過去に送信したメッセージを破棄すると共に、ハンドラが最後に送信したメッセージとフラグが示す現在のメモリカードの挿抜の状態が一致しない場合には、第２のタスクにメッセージを送信しないようにしたので、処理の効率化と応答の高速化を図ることができる。
【００１２】
【発明の実施の形態】
以下、本発明の実施形態について説明する。
図１に本実施形態に係るデータ処理装置の構成例を示す。
図示するように、本データ処理装置は、ＣＰＵ１、メモリ２、表示装置３、入力装置４、外部記憶装置５、プリンタ６を備えている。また、データ処理装置は、メモリカード１０のアクセスを制御するカードコントローラ７、メモリカード１０を装着するためのカードスロット８、カードスロット８へのメモリカード１０の装着を検知する装着検知部９とを有する。このような構成において、ＣＰＵ１は外部記憶装置５からメモリ２にロードしたプログラムを実行することによりデータ処理装置上でオペレーティングシステムと各種タスクを稼働する。そして、各アプリケーションプロセスは、オペレーティングシステムにアクセス要求を発行することにより、メモリカード１０内のデータにアクセスする。オペレーティングシステムは、カードコントローラ７を介して、タスクからの要求に応じたメモリカード内データのアクセス処理を実行する。
【００１３】
図２に、このようなデータ処理装置の機能構成例を示す。
図示するように、本データ処理装置は、オペレーティングシステム２００上で、メディア検出タスク２０４とメディア利用タスク２０８が、オペレーティングシステム２００のタスクスケジュールに従って稼働する構成を有している。また、装着検知部９のメモリカード１０のカードスロット８への装着／抜去の検知信号による割り込み処理として実行されるハンドラ２０２と、メディア検出タスク２０４とメディア利用タスク２０８の双方が随時アクセス可能なフラグレジスタ２０６が設けられている。
【００１４】
そして、このような構成において、ハンドラ２０２、メディア検出タスク２０４、メディア利用タスク２０８は、オペレーティングシステム２００を介してメッセージ２１０又はメッセージ２１３を送受し、メディア検出タスク２０４、メディア利用タスク２０８はオペレーティングシステム２００を介してセマフォ２１４をやり取りする。
【００１５】
さて、ハンドラ２０２は、装着検知部９のメモリカード１０のカードスロット８への装着の検知信号による割り込みがあると、メディア検出タスク２０４に装着メッセージ２１０を送信し、フラグレジスタ２０６に装着状態を格納する。また、装着検知部９のメモリカード１０のカードスロット８への抜去の検知信号による割り込みがあると、メディア検出タス２０４クに抜去メッセージ２１０を送信し、フラグレジスタ２０６に抜去状態を格納する。ここで、装着状態と抜去状態を格納する領域は、同じ場所であるため、フラグレジスタ２０６には、常に排他的にどちらかの状態が格納されることになる。なお、フラグレジスタ２０６の初期状態は抜去状態を格納した状態である。
【００１６】
一方、メディア検出タスク２０４、メディア利用タスク２０８は、図３に示す処理を実行する。
すなわち、図３ａに示すようにメディア検出タスク２０４は、セマフォを獲得すると（ステップ３０２）、ハンドラ２０２からの装着メッセージの受信を待つ（ステップ３０４）。なお、初期状態において、セマフォはメディア検出タスク２０４に与える。
【００１７】
そして、装着メッセージを受信したならば（ステップ３０４）、メッセージキューの全ての情報を取得したかどうかを調べる（ステップ３０６）。ここで、通常は、１回のメッセージ受信の際には、ハンドラ２０２からメッセージ検出タスク２０４へ送信されたメッセージが格納されるメッセージキューには１個のメッセージのみが格納されるが、メモリカード１０の挿抜が頻繁に行われた場合、ハンドラ２０２が割り込み処理によってメッセージ検出タスク２０４に優先して動作するため、複数のメッセージがメッセージキューに溜まっている場合がある。そして、このような場合には、必要なメッセージ、すなわち、現在のメモリカード１０の挿抜状態を示すメッセージは最後に受信したメッセージである。そこで、最後に受信したメッセージ以外の不要なメッセージを読み捨てる処理を（ステップ３０４、３０６）を行うことにより、メディア利用タスク２０８に不要なメッセージを送信することを排除すると共に、負荷低減と応答性の高速化を図る。
【００１８】
次に、メッセージキューから取得した最後のメッセージ２１０が示すメモリカード１０の挿抜状態とフラグレジスタ２０６が示すメモリカード１０の挿抜状態が一致しているかを確認する（ステップ３０８）。ここで、フラグレジスタ２０６はハンドラ１０２が割り込みに応じてセットし、メッセージ２１０はオペレーティングシステム２００のスケジューリングに従ってメディア検出タスク２０４に通知されるため、両者が示す挿抜状態には、メッセージ２１０伝達の遅延による不一致が生じる場合がある。そこで、両者が示すメモリカード１０の挿抜状態が一致した場合にのみ、メディア利用タスク２０８にメモリカード１０の挿抜状態を通知するメッセージ２１２の送信（ステップ３１２）を行う。そして、両者が示すメモリカード１０の挿抜状態が不一致である場合には、所定のメディア処理異常終了通知（ステップ３１０）を行い、メディア利用タスク２０８にはメッセージを通知は行わない。
【００１９】
さて、その後、メディア検出タスク２０４が、セマフォを解放すると（ステップ３１４）、図３ｂに示すように、メディア利用タスク２０８がセマフォを獲得する（ステップ３５２）。
そして、メディア利用タスク２０８は、セマフォを獲得すると、メディア検出タスク２０４からメッセージ２１２を受信する（ステップ３５４）。そして、メッセージ２１２が示すメモリカード１０の挿抜状態とフラグレジスタ２０６が示すメモリカード１０の挿抜状態が一致しているかを確認する（ステップ３６６）。そして、一致していない場合には、所定のメディア処理異常終了通知（ステップ３６０）を行い、メモリカード１０のアクセスは一切行わないことにより、データ処理装置の動作が凍結してしまう問題を解決する。
さて、メッセージ２１２が示すメモリカード１０の挿抜状態とフラグレジスタ２０６が示すメモリカード１０の挿抜状態が一致した場合には、メッセージ２１２の示す示すメモリカード１０の挿抜状態によって処理が別れ、メッセージ２１２がメモリカード１０の装着を示す場合には、メディアマウント処理（ステップ３６２）でハードウエアの設定を行いメモリカード１０をレディ状態にし、メディアファイルの処理（ステップ３６８）で、実際のデータアクセスを行う。一方、メッセージ２１２がメモリカード１０の抜去を示す場合には、メディアアンマウント処理（ステップ３６４）で、メモリカード１０等のハードウエア資源からの解放を行う。
【００２０】
そして、以上の処理が終了したならばセマフォを解放する（ステップ３６８）。ここで、ステップ３６６で行う処理は、たとえば、オペレーティングシステム２００を介してメモリカード１０に記録されている画像ファイルを読み込んで、読み込んだ画像ファイルの画像を表示装置３に表示したり、プリンタ６から印刷出力する処理である。
【００２１】
上述した実施形態によれば、伝達に遅延が生じる可能性のあるメッセージとは別に、フラグレジスタ２０６を用いてメディア検出タスク２０４からメディア利用タスク２０８にメモリカード１０の抜去の有無を通知するようにしたので、メディア利用タスク２０８はメモリカード装着の有無を遅延なく認識し、メモリカード１０が装着されていない場合には、メモリカード１０のアクセスを行わないようにすることができる。
【００２２】
【発明の効果】
以上のように、本発明によれば、メモリカード未装着時に、アプリケーションタスクによるメモリカードのアクセスが行われないよう抑止することができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るデータ処理装置の構成を示す図である。
【図２】本発明の実施形態に係るデータ処理装置の機能構成を示す図である。
【図３】本発明の実施形態に係るデータ処理装置におけるタスクの処理を示すフローチャートである。
【符号の説明】
１…ＣＰＵ、２…メモリ、３…表示装置、４…入力装置、５…外部記憶装置、６…プリンタ、７…カードコントローラ、８…カードスロット、９…装着検知部、１０…メモリカード、２００…オペレーティングシステム、２０２…ハンドラ、２０４…メディア検出タスク、２０６…フラグレジスタ、２０８…メディア利用タスク。
【図１】
2004334384.tif 000003
【図２】
2004334384.tif 000004
【図３】
2004334384.tif 000005