(57)【要約】【課題】複数のホストコンピュータから共通にアクセスされるストレージなどの共通デバイスにおいてデータの不整合を回避する。  【解決手段】複数のホストコンピュータが接続可能な電子機器において，前記複数のホストコンピュータからアクセスされる共通デバイスと，ホストコンピュータからのアクセス要求に応答して，当該アクセスに対応するコマンドを生成する複数のデバイスコントローラと，前記デバイスコントローラからの前記コマンドに応じて，前記共通デバイスへのアクセスを許可し，一方のアクセスを許可している場合に他方のアクセスを許可しない排他制御部を備える。【選択図】図２
2007299101.tif 000002
【特許請求の範囲】
【請求項１】
複数のホストコンピュータが接続可能な電子機器において，
前記複数のホストコンピュータからアクセスされる共通デバイスと，
第１のホストコンピュータからのアクセス要求に応答して，当該アクセスに対応する第１のコマンドを生成する第１のデバイスコントローラと，
第２のホストコンピュータからのアクセス要求に応答して，当該アクセスに対応する第２のコマンドを生成する第２のデバイスコントローラと，
前記第１，第２のデバイスコントローラからの前記第１，第２のコマンドに応じて，前記共通デバイスへのアクセスを許可し，一方のアクセスを許可している場合に他方のアクセスを許可しない排他制御部とを有する電子機器。
【請求項２】
請求項１において，
前記共通デバイスがストレージデバイスであり，
前記排他制御部は，ライトコマンドに応じて一方のアクセスを許可している場合に他方のアクセスを許可せず，リードコマンドに応じて一方のアクセスを許可している場合に他方のアクセスを許可する電子機器。
【請求項３】
請求項１において，
前記第１のホストコンピュータは前記電子機器とピアツーピア接続され，
前記第２のホストコンピュータは前記電子機器とネットワーク接続され，
さらに，前記第２のホストコンピュータからの前記アクセス要求を受信し，対応するアクセス要求を前記第２のデバイスコントローラに供給するネットワークコントローラを有する電子機器。
【請求項４】
請求項３において，
前記第１，第２のデバイスコントローラは，前記第１，第２のホストコンピュータとＵＳＢインターフェースで接続され，
前記第１，第２のコマンドはいずれもＳＣＳＩコマンドである電子機器。
【請求項５】
請求項１において，
前記第１のホストコンピュータは前記電子機器とピアツーピア接続され，
前記第２のホストコンピュータは前記電子機器とネットワーク接続され，
前記共通デバイスがストレージデバイスであり，１つのファイルが単一または複数のセクタで構成され，前記ファイルを構成するセクタのアドレスを有するファイル管理データを有し，
前記第１のホストコンピュータに前記ファイル管理データが格納され，
前記第１のデバイスコントローラは，前記第１のホストコンピュータからセクタ単位のアクセス要求を受信し，当該セクタ単位の前記第１のコマンドを生成し，
前記ファイル管理データが格納されるネットワークコントローラをさらに有し，
前記ネットワークコントローラは，前記第２のホストコンピュータからファイル単位のアクセス要求を受信し，当該アクセス要求されたファイルのセクタに対応したコマンド列を前記第２のデバイスコントローラに供給し，前記第２のデバイスコントローラは，前記コマンド列に応答して当該ファイル単位のアクセス要求を含む第２のコマンドを前記排他制御部に供給する電子機器。
【請求項６】
請求項１において，
前記共通デバイスがストレージデバイスであり，１つのファイルが単一または複数のセクタで構成され，
前記第１のホストコンピュータからのアクセス要求は，前記セクタ単位のアクセス要求であり，前記第１のデバイスコントローラは当該セクタ単位のアクセスコマンドを生成し，
前記第２のホストコンピュータからのアクセス要求は，前記ファイル単位のアクセス要求であり，前記第２のデバイスコントローラは当該ファイル単位のアクセスコマンド列を生成する電子機器。
【請求項７】
複数のホストコンピュータが接続可能であり，前記複数のホストコンピュータからアクセスされる共通デバイスを有する電子機器の制御方法において，
第１のホストコンピュータからのアクセス要求に応答して，当該アクセスに対応する第１のコマンドを生成する第１のコマンド生成工程と，
第２のホストコンピュータからのアクセス要求に応答して，当該アクセスに対応する第２のコマンドを生成する第２のコマンド生成工程と，
前記第１，第２のデバイスコントローラからの前記第１，第２のコマンドに応じて，前記共通デバイスへのアクセスを許可し，一方のアクセスを許可している場合に他方のアクセスを許可しない排他制御工程とを有する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，複数のホストコンピュータと接続可能であり，前記複数のホストコンピュータからアクセスされる共通デバイスを有する電子機器及びその制御方法に関し，特に，ホストコンピュータからのアクセス要求に対応したコマンドを生成し，そのコマンドに応じて前記共通デバイスへのアクセスを制御する電子機器及びその制御方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータなどのホストコンピュータとプリンタなどの周辺装置とを接続する方法として，１つのホストコンピュータと複数の周辺装置との通信を規定するインターフェースであるＵＳＢ（ユニバーサルシリアルバス）インターフェースによる接続方法が特許文献１に記載されている。
【０００３】
このようなＵＳＢインターフェースによりパーソナルコンピュータと接続される装置の一例として，プリンタやスキャナなどの複数機能を備え，さらにはメモリカード等の記憶媒体が装着可能な複合機をあげることができる。かかる複合機はパーソナルコンピュータとピアツーピアで接続されており，パーソナルコンピュータはホストコンピュータとして複合機の各機能を制御することができる。すると，複合機に装着されるメモリカードへもパーソナルコンピュータはデータの読み書きを行うことができる。
【特許文献１】特開２００４−６２４９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで，近時ではネットワーク上で資源を共有するために，上記のような従来の複合機にネットワーク接続のためのＵＳＢインターフェースをさらに設けることが求められている。すると，複合機がピアツーピアでホストコンピュータに接続されると同時にネットワークにも接続されることになり，次のような問題が生じる。
【０００５】
すなわち，複合機に装着されたメモリカードに対して，ネットワーク上のパーソナルコンピュータからも，ピアツーピア接続されたパーソナルコンピュータからもデータを読み書きするという状況が生じる。しかしながら，このように複数のホストコンピュータから同一のデータファイルに対し異なる内容の書込みや削除がなされると，データの不整合が生じてしまう。
【０００６】
そこで，上記に鑑み，本発明の目的は，複数のホストコンピュータから共通にアクセスされるメモリカードなどにおいてデータの不整合が生じないような電子機器及びその制御方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために，本発明の第１の側面によれば，複数のホストコンピュータが接続可能な電子機器において，前記複数のホストコンピュータからアクセスされる共通デバイスと，第１のホストコンピュータからのアクセス要求に応答して，当該アクセスに対応する第１のコマンドを生成する第１のデバイスコントローラと，第２のホストコンピュータからのアクセス要求に応答して，当該アクセスに対応する第２のコマンドを生成する第２のデバイスコントローラとを有する。そして，前記第１，第２のデバイスコントローラからの前記第１，第２のコマンドに応じて，前記共通デバイスへのアクセスを許可し，一方のアクセスを許可している場合に他方のアクセスを許可しない排他制御部をさらに有することを特徴とする。
【０００８】
上記第１の側面によれば，複数のホストコンピュータからの共通デバイスへのアクセス要求を受けた場合であっても，それぞれのアクセス要求に対応したコマンドを用いて排他制御を行うことが可能になる。よって，共通デバイスのデータに不整合が生じることを回避することができる。
【発明を実施するための最良の形態】
【０００９】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１０】
図１は，本実施の形態における電子機器の構成図である。本実施の形態における電子機器は，一例としてプリンタやスキャナなどの複数機能を有する複合機２００であり，画像データに基づき紙などの記録媒体上に印刷を行う印刷部２２６と，各種の原稿を撮像して画像データを出力する撮像部２２４とを有する。また，この複合機２００にはストレージドライブ２１８が設けられ，ストレージドライブ２１８にはストレージデバイス２２０が装着される。ストレージデバイス２２０は一例としてコンパクトフラッシュカード（登録商標）などのメモリカードであり，このストレージデバイス２２０には，印刷部２２６に提供する印刷データや，撮像部２２４で撮像した画像データなどが格納される。
【００１１】
複合機２００の各機能はＣＰＵ２０８により制御され，ＣＰＵ２０８はＲＯＭ２１０に格納された制御プログラムにしたがって，ＲＡＭ２１２を作業領域として演算処理等を行いながら各機能の制御を行う。また，ＣＰＵ２０８は，ＲＯＭ２１０に格納されたアプリケーションプログラム２１１を実行し，ストレージデバイス２２０から読み出したデータを印刷部２２６で印刷し，また，撮像部２２４で撮像したデータをストレージデバイス２２０へ書込む。また，操作表示部２２２は，複合機２００の各機能や，アプリケーションプログラム２１１が実行される際の操作入力を受け付けるユーザインターフェースを提供する。
【００１２】
複合機２００は，ＵＳＢインターフェースにより，パーソナルコンピュータ（以下，「ＰＣ」という）１００と接続される。複合機２００とピアツーピアで接続されることにより，ＰＣ１００はホストコンピュータとして複合機２００の各機能を制御する。例えば，ＰＣ１００は，印刷ジョブコマンドや印刷データを送信して印刷部２２６に印刷を実行させたり，撮像部２２４で撮像した画像データをＰＣ１００のアプリケーションプログラムにより修正したり，あるいはＰＣ１００の記憶装置に記憶したりすることができる。さらに，ＰＣ１００は，ストレージデバイス２２０に対してもデータの読み書きを行うことができ，ストレージデバイス２２０を外部記憶装置として使用することができる。
【００１３】
こうしたＰＣ１００と複合機２００との通信は，ＰＣ−ＵＳＢ回路２０６がＵＳＢケーブル１２０を介してＰＣ１００のＵＳＢホストコントローラ１０２とＵＳＢ規格に基づいたパケットを送受信することにより行われる。またＰＣ−ＵＳＢ回路２０６は，シリアルデータとパラレルデータとの相互変換，パケットの生成分解を行うとともに，撮像部２２４，印刷部２２６，ストレージデバイス２２０などの論理アドレスを管理し，ＰＣ１００からのコマンドやデータをパケットから取り出して対象となるデバイスへ渡す。このようにＰＣ−ＵＳＢ回路２０６はＵＳＢデバイスコントローラに対応する。
【００１４】
ＰＣ１００が複合機２００に接続されると，ファイルシステム１０４がストレージデバイス２２０に格納されたファイル管理情報２１３の読込みを行い，これを記憶する。ファイル管理情報２１３は，ストレージデバイス２２０に格納されるデータファイルの一覧と，各データファイルとこれを構成する論理ブロックのアドレスを対応付けたＦＡＴ（ファイルアロケーションテーブル）を有する。ここで，論理ブロックとは，ストレージデバイス２２０の記憶領域のセクタに対応する，記憶領域へのアクセス単位である。よって，ＰＣ１００がストレージデバイス２２０に格納されたファイルに読み書きを行うときは，ファイルシステム１０４が取得したファイル管理情報２１３を参照して，目的のファイルを構成する論理ブロックのアドレスを抽出して，論理ブロックごとにアクセスするコマンド１８０を生成することができる。そして，ＵＳＢホストコントローラ１０２が，生成されたコマンド１８０をＵＳＢ規格に従いＰＣ−ＵＳＢ回路２０６に送る。
【００１５】
ここで，ストレージデバイス２２０はＳＣＳＩコマンドを受け付けるデバイスであるので，ＰＣ１００からは，ＳＣＳＩコマンドの「Ｒｅａｄ」や「Ｗｒｉｔｅ」コマンドを有するコマンド１８０が送信される。よって，ＰＣ−ＵＳＢ回路２０６は，これらのコマンドをパケットから取り出して，ストレージデバイス２２０へ渡し，データの読み書きを行う。
【００１６】
また，複合機２００は，ネットワークコントローラ２０２によりネットワーク３００と接続される。これにより，ネットワーク３００上のパーソナルコンピュータ（以下，「ネットワークＰＣ」という）３０２，３０４，…  等はホストコンピュータとして複合機２００の各機能の利用ができる。例えば，ネットワークＰＣ３０２等からは，印刷ジョブコマンドや印刷データを送信することにより印刷部２２６に印刷を実行させたり，撮像部２２４で撮像した画像データを読込んだりすることができる。さらに，ネットワークＰＣ３０２等は，ストレージデバイス２２０に対してもデータの読み書きを行うことができ，ストレージデバイス２２０を一種のＮＡＳ（ネットワーク接続ストレージ）として使用することもできる。
【００１７】
こうしたネットワークＰＣ３０２等と複合機２００の通信は，ネットワークコントローラ２０２がネットワークＰＣ３０２等とネットワークプロトコルに基づいたパケットを送受信することにより行われる。ここで，ネットワークコントローラ２０２がネットワークＰＣ３０２等から受け取るストレージデバイス２２０へのアクセス要求は，例えばＮｅｔＢＥＵＩなどのネットワークプロトコルに従った「ファイルオープン」，「ファイルリード／ライト」，「ファイルクローズ」などのコマンド１４０である。よって，ネットワークコントローラ２０２はストレージデバイス２２０が受け付けることができるように，受け取ったコマンドに対応するＳＣＳＩコマンドである「Ｒｅｓｅｒｖｅ」，「Ｒｅａｄ」，「Ｗｒｉｔｅ」，「Ｒｅｌｅａｓｅ」などのコマンドを生成し，これらコマンドを有するコマンド列１６０をネットワーク−ＵＳＢ回路２０４へ渡す。
【００１８】
その際，ファイルシステム２０３がストレージデバイス２２０のファイル管理情報２１３を記憶し，ストレージデバイス２２０内の目的のファイルを構成する論理ブロックのアドレスを抽出し，論理ブロックごとにＳＣＳＩコマンドの「Ｒｅａｄ」や「Ｗｒｉｔｅ」コマンドをネットワーク−ＵＳＢ回路２０４へ渡す。
【００１９】
そして，ネットワーク−ＵＳＢ回路２０４は，撮像部２２４，印刷部２２６，ストレージデバイス２２０などの論理アドレスを管理し，ネットワークコントローラ２０２から受け取ったＳＣＳＩコマンドをストレージデバイス２２０へ渡す。
【００２０】
このようにネットワーク−ＵＳＢ回路２０４はＵＳＢデバイスコントローラに対応する。そして，ネットワークコントローラ２０２はＵＳＢホストコントローラとして，ＵＳＢデバイスコントローラとの間でＵＳＢインターフェースに基づくコマンドの送受信を行う。
【００２１】
このように，複合機２００がＰＣ１００とピアツーピアで接続され，かつネットワークＰＣ３０２等とネットワーク接続されることにより，ストレージデバイス２２０は，複数のホストコンピュータからアクセスされる。よって，ストレージデバイス２２０は本実施の形態における共通デバイスに対応する。さらに，ストレージデバイス２２０は上述のように，アプリケーションプログラム２１１を実行するＣＰＵ２０８からもアクセスされる。すると，１つのホストコンピュータ，例えばＰＣ１００からストレージデバイス２２０のデータファイルに書込みを行う場合に，他のホストコンピュータであるネットワークＰＣ３２０やＣＰＵ２０８からも同じデータファイルに対してデータの読み書きを行うと，データの不整合が生じてしまう。よって，これを回避するために，１つのホストコンピュータがストレージデバイス２２０のデータファイルに読み書きを行っている時は，他のホストコンピュータがストレージデバイス２２０に対しデータの読み書きを行えないように，排他制御部２１４がストレージデバイス２２０へのアクセスを排他制御する。
【００２２】
ここで，排他制御部２１４における排他制御の方法は種々可能であるが，一例としては，ストレージデバイス２２０の使用権（以下，単に「使用権」という）の空き状況を示すセマフォ変数などを用い，あるホストコンピュータからのアクセス要求を受けたときの変数の値により，使用権が空いていればそのホストコンピュータに使用許可・使用禁止を判断する。よって，１つのホストに使用権が許可されている間は，変数が使用権が占有される値を示し，他のホストコンピュータからの使用権要求は排除される。
【００２３】
具体的には，ＰＣ１００からは，ファイルシステム１０４によりストレージデバイス２２０に格納されたファイルを構成する論理ブロックごとにＳＣＳＩコマンドの「Ｒｅａｄ」や「Ｗｒｉｔｅ」コマンドがＰＣ−ＵＳＢ回路２０６に送られるので，ＰＣ−ＵＳＢ回路２０６はこれらのコマンドを排他制御部２１４に渡す。すなわち，ＰＣ−ＵＳＢ回路２０６は，論理ブロック単位のアクセスコマンドを生成して排他制御部２１４へ渡し，排他制御部２１４はこれらコマンドごとに使用許可・禁止を判断し，排他制御を行う。
【００２４】
一方，ネットワークＰＣ３０２等からはネットワークプロトコルに従って，ストレージデバイス２２０に格納されたファイルごとに「ファイルオープン」コマンドがネットワークコントローラ２０２に送信される。よって，ネットワークコントローラ２０２がこのコマンドに対応したＳＣＳＩコマンドの「Ｒｅｓｅｒｖｅ」コマンドをネットワーク−ＵＳＢ回路２０４へ渡し，ネットワーク−ＵＳＢ回路２０４はこれに応答して排他制御部２１４へ使用権を要求する。そして排他制御部２１４が使用許可することにより，ネットワークＰＣ３０２等からファイルアクセスが開始でき，「ファイルリード・ライト」コマンドがネットワークコントローラ２０２へ送信される。そして，アクセス終了時には，「ファイルクローズ」コマンドがネットワークＰＣ３０２から送信され，排他制御部２１４は排他制御を終了する。このように，ネットワーク−ＵＳＢ回路２０４は，ファイル単位のアクセスコマンドを有するアクセスコマンド列を生成して排他制御部２１４へ渡し，排他制御部２１４はこれらのアクセスコマンドに応答して，ファイル単位で排他制御を行う。
【００２５】
また，ＣＰＵ２０８はアプリケーションプログラム２１１の実行に際し，ＲＡＭ２１２が記憶するストレージデバイス２２０のファイル管理情報２１３を参照することにより，アクセスするファイルを構成する論理ブロックごとにＳＣＳＩコマンドの「Ｒｅａｄ」，「Ｗｒｉｔｅ」コマンドを送る。ただし，ファイルへのアクセスを開始する時に排他制御部２１４へ使用権を要求するので，ファイル単位で排他制御が行われる。
【００２６】
このように，本実施の形態においては，ＰＣ−ＵＳＢ回路２０６，ネットワーク−ＵＳＢ回路２０４などのＵＳＢデバイスコントローラが，ホストコンピュータ側からのアクセス要求に対応したＳＣＳＩコマンドによるアクセスコマンドを排他制御部２１４に送り，排他制御部２１４がそのＳＣＳＩコマンドに基づき使用許可・禁止を判断する。さらに排他制御部２１４は，詳しくは後述するが，ＰＣ−ＵＳＢ回路２０６やネットワーク−ＵＳＢ回路２０４からのＳＣＳＩコマンドの種類に応じて，データの書込みのみ禁止したり，データの読み書きともに禁止したり排他制御のレベルを変更することもできる。
【００２７】
次に，図２〜図６を用いて，ＰＣ１００，ネットワークＰＣ３０２等，及びアプリケーションプログラム２１１からのアクセス要求に応答して，排他制御部２１４が行う排他制御手順を説明する。
図２は，ネットワークＰＣ３０２等からのストレージデバイス２２０へのアクセス要求に対し排他制御部２１４が使用許可する場合の手順を説明する図である。
【００２８】
ネットワークＰＣ３０２等は，ストレージデバイス２２０に格納されたファイルへアクセスするために，ネットワークプロトコルに従って「ファイルオープン」コマンドをネットワークコントローラ２０２へ送信する（Ｓ２０２）。すると，ネットワークコントローラ２０２は，ストレージデバイス２２０の使用権を得るためにＳＣＳＩコマンドの「Ｒｅｓｅｒｖｅ」コマンドをネットワーク−ＵＳＢ回路２０４へ渡す（Ｓ２０４）。これに応答し，ネットワーク−ＵＳＢ回路２０４はＳＣＳＩコマンドで排他制御部２１４へストレージデバイス２２０の使用権を要求する（Ｓ２０６）。
【００２９】
排他制御部２１４は，使用権の空き状況を確認し，他のホストコンピュータへ使用許可しておらず使用権が空いていれば，ネットワーク−ＵＳＢ回路２０４に使用許可を通知する（Ｓ２０８）とともに，他のホストからのアクセスに対し排他制御を開始する（Ｓ２０９）。そして，ネットワーク−ＵＳＢ回路２０４はネットワークコントローラ２０２にＳＣＳＩコマンドで使用許可を通知し（Ｓ２１０），ネットワークコントローラ２０２はネットワークＰＣ３０２等へ，ネットワークプロトコルに従って使用許可を通知する（Ｓ２１２）。
【００３０】
すると，ネットワークＰＣ３０２等は目的のファイルへアクセスを開始することができるので，ネットワークプロトコルに従って，データを読み込む場合は「ファイルリード」コマンドを，データを書込む場合は「ファイルライト」コマンドをネットワークコントローラ２０２に送信する（Ｓ２１４）。するとネットワークコントローラ２０２のファイルシステム２０３は，「ファイルリード」コマンドに対応してＳＣＳＩコマンドの「Ｒｅａｄ」コマンドを，「ファイルライト」コマンドに対応してＳＣＳＩコマンドの「Ｗｒｉｔｅ」コマンドを，目的とするファイルを構成する論理ブロックごとにネットワーク−ＵＳＢ回路２０４へ渡す（Ｓ２１６）。
【００３１】
すると，ネットワーク−ＵＳＢ回路２０４は，ＳＣＳＩコマンドで排他制御部２１４に使用権を確認し（Ｓ２１８），ストレージデバイス２２０へＳＣＳＩコマンドの「Ｒｅａｄ」または「Ｗｒｉｔｅ」コマンドを渡して，データの読み書きを行う（Ｓ２２０）。
【００３２】
データの読込みを行う場合は，ネットワーク−ＵＳＢ回路２０４がストレージデバイス２２０から読み出したデータをネットワークコントローラ２０２へ転送し（Ｓ２２２，Ｓ２２４），ネットワークコントローラ２０２からネットワークＰＣ３０２へデータ転送が行われる（Ｓ２２６）。また，データの書込みを行う場合は，ネットワークＰＣ３０２から転送された（Ｓ２２６）データをネットワークコントローラ２０２がネットワーク−ＵＳＢ回路２０４に転送し（Ｓ２２４），ネットワーク−ＵＳＢ回路２０４がストレージデバイス２２０にデータを書込む（Ｓ２２２）。
【００３３】
そして，データの書込みに伴い変更されるファイル管理情報２１３をネットワーク−ＵＳＢ回路２０４がストレージデバイス２２０から読み出し（Ｓ２２２），ネットワークコントローラ２０２へ転送する（Ｓ２２４）。これにより，ファイルシステム２０３が記憶するファイル管理情報２１３を更新することができ，ファイルシステム２０３は次のアクセス時に正確なファイル管理情報２１３を参照することができる。
【００３４】
ネットワークＰＣ３０２等は，データの読み書きが終了すると，ネットワークプロトコルに従い，ファイルへのアクセス終了を示す「ファイルクローズ」コマンドをネットワークコントローラ２０２へ送信する（Ｓ２４０）。すると，ネットワークコントローラ２０２は，ＳＣＳＩコマンドの「Ｒｅｌｅａｓｅ」コマンドをネットワーク−ＵＳＢ回路２０４へ渡し（Ｓ２４２），ネットワーク−ＵＳＢ回路２０４は使用権開放を排他制御部２１４に通知して（Ｓ２４４），排他制御部２１４は排他制御を終了する（Ｓ２４６）。
【００３５】
ここで，排他制御部２１４は，手順Ｓ２０８で書込みについて使用許可をしたときは，ストレージデバイス２２０内のファイルにデータの書込みが行われることでストレージデバイス２２０のファイル管理情報２１３が変更されるので，ＰＣ−ＵＳＢ回路２０６にファイル管理情報２１３の変更を通知する（Ｓ２４５）。これにより，ＰＣ−ＵＳＢ回路２０６は，後述する手順によってＰＣ１００にファイルシステム１０４が記憶するファイル管理情報２１３を更新させることができる。よって，ファイルシステム１０４が書込み前のファイル管理情報２１３に基づきストレージデバイス２２０の論理ブロックにアクセスすることにより，指定した論理ブロックにデータが存在しなかったり，データの内容が異なっていたりというデータの不整合が生じることを回避できる。
【００３６】
排他制御部２１４がネットワークＰＣ３０２等に使用許可している間は，ＰＣ１００やアプリケーションプログラム２１１を実行するＣＰＵ２０８からのストレージデバイス２２０へのアクセスは排他制御される。ここで，ネットワークＰＣ３０２がストレージデバイス２２０のデータを読込む場合と書込む場合とを，排他制御部２１４は手順Ｓ２１８でネットワーク−ＵＳＢ回路２０４が使用権を確認する際に判断し，それぞれの場合に応じて異なる排他制御レベルで排他制御を行う。
【００３７】
具体的には，図３の表に示すように，ネットワークＰＣ３０２等がデータの読込みを行っている場合は，排他制御部２１４はＰＣ１００あるいはＣＰＵ２０８には，データの読み込みに限定して使用許可する。一方，ネットワークＰＣ３０２等がデータの書込みを行っている場合は，ＰＣ１００あるいはＣＰＵ２０８のデータの読み込み，書込みともに禁止する。そうすることにより，ネットワークＰＣ３０２等が読み込むデータが他のホストにより書き換えられたり，ネットワークＰＣ３０２等がデータの書込みを終了する前に他のホストが同じデータの読み書きを行ったりすることによるデータの不整合を回避することができる。
【００３８】
図２に戻り，例えば，ＰＣ１００がＰＣ−ＵＳＢ回路２０６に，ＳＣＳＩコマンドの「Ｒｅａｄ」や「Ｗｒｉｔｅ」コマンドを送信する（Ｓ２２８）と，ＰＣ−ＵＳＢ回路２０６は，排他制御部２１４に対しこれらのＳＣＳＩコマンドを渡す（Ｓ２３０）。これに応答して排他制御部２１４は，ネットワークＰＣ３０２等がデータの書込みをしている場合はＰＣ−ＵＳＢ回路２０６にＳＣＳＩコマンドで読込み書込みについての使用禁止を返し，ネットワークＰＣ３０２等がデータの読込みをしている場合はＰＣ−ＵＳＢ回路２０６にＳＣＳＩコマンドで書込みについての使用禁止を返す（Ｓ２３２）。すると，ＰＣ−ＵＳＢ回路２０６はＰＣ１００にＳＣＳＩコマンドでそれぞれの場合の使用禁止を通知する（Ｓ２３４）。これにより，排他制御部２１４はＰＣ１００からのストレージデバイス２２０へのアクセスを適切な排他制御レベルで制御する。
【００３９】
また，アプリケーションプログラム２１１を実行するＣＰＵ２０８から排他制御部２１４に対しＳＣＳＩコマンドでデータの読込み，または書込みのための使用権を要求する（Ｓ２３６）。すると，これに応答して排他制御部２１４からはＳＣＳＩコマンドで使用禁止を返す（Ｓ２３８）。ここでも，上記同様に，読込みのみ許可する場合と，読み書きともに禁止する場合とがある。これにより，排他制御部２１４はＣＰＵ２０８からのストレージデバイス２２０へのアクセスを適切な排他制御レベルで制御することができる。
【００４０】
図４は，ＰＣ１００からのストレージデバイス２２０へのアクセス要求に対し排他制御部２１４が使用許可する場合の手順を説明する図である。ＰＣ１００は，ストレージデバイス２２０内のファイルを構成する論理ブロックごとにＳＣＳＩコマンドの「Ｒｅａｄ」や「Ｗｒｉｔｅ」コマンドをＰＣ−ＵＳＢ回路２０６に送り（Ｓ４０２），ＰＣ−ＵＳＢ回路２０６はこれらのコマンドを排他制御部２１４に渡す（Ｓ４０４）。
【００４１】
排他制御部２１４は，「Ｒｅａｄ」や「Ｗｒｉｔｅ」コマンドが渡される度に，使用権の空き状況を確認し，他のホストコンピュータへ使用許可しておらず使用権が空いていれば，他のホストからのアクセスに対し排他制御を開始する（Ｓ４０６）。そしてＰＣ−ＵＳＢ回路２０６はストレージデバイス２２０に対しデータの読み書きを行う。データの読み込みを行う場合は，ＰＣ−ＵＳＢ回路２０６がストレージデバイス２２０から読み出したデータをＰＣ１００へ転送し（Ｓ４０８，Ｓ４１０），また，データの書込みを行う場合は，ＰＣ１００から転送された（Ｓ４１０）データをＰＣ−ＵＳＢ回路２０６がストレージデバイス２２０にデータを書込む（Ｓ４０８）。
【００４２】
そして，データの書込みに伴い変更されるファイル管理情報２１３をＰＣ−ＵＳＢ回路２０６がストレージデバイス２２０から読み出し（Ｓ４０８），ＰＣ１００へ転送する（Ｓ４１０）。これにより，ＰＣ１００はファイルシステム１０４が記憶するファイル管理情報２１３を更新することができ，ファイルシステム１０４は次のアクセス時に正確なファイル管理情報２１３を参照することができる。そして，データの読み書きが終了したら，排他制御部２１４は排他制御を終了する（Ｓ４２８）。
【００４３】
なお，ストレージデバイス２２０にデータの書込みが行われた場合は，書込み内容を一時的にＲＡＭ２１２に保持した後にストレージデバイス２２０に書込むという処理が行われる。よって，書込みが行われた場合には，ストレージデバイス２２０への書込みが行われる一定時間を経てから，排他制御部２１４は排他制御を終了する。
【００４４】
また，排他制御部２１４が「Ｗｒｉｔｅ」コマンドに応答してＰＣ１００に使用を許可した場合は，データの書込みが行われストレージデバイス２２０のファイル管理情報２１３が変更されたことを，ネットワーク−ＵＳＢ回路２０４に通知する（Ｓ４３０）。これにより，ネットワーク−ＵＳＢ回路２０４は，ネットワークコントローラ２０２に対してファイルシステム２０３が記憶するファイル管理情報２１３を更新させることができ，書込み前のファイル管理情報に基づいてストレージデバイス２２０のデータにアクセスすることによるデータの不整合を回避することができる。
【００４５】
排他制御部２１４がＰＣ１００に使用許可している間は，ネットワークＰＣ３０２等やアプリケーションプログラム２１１を実行するＣＰＵ２０８からのアクセスは排他制御される。ここで，排他制御部２１４は手順Ｓ４０４でＰＣ−ＵＳＢ回路２０６から受け取るＳＣＳＩコマンドの「Ｒｅａｄ」や「Ｗｒｉｔｅ」コマンドに基づいて，ＰＣ１００からデータの読込みをする場合と，データの書込みをする場合を判断し，それぞれの場合に応じて，図３の表に示すように異なる排他制御レベルで排他制御を行う。
【００４６】
すなわち，ＰＣ１００がデータの読込みを行っている場合は，排他制御部２１４はネットワークＰＣ３０２あるいはＣＰＵ２０８には，データの読み込みに限定して使用許可する。一方，ＰＣ１００がデータの書込みを行っている場合は，ネットワークＰＣ３０２あるいはＣＰＵ２０８のデータの読み込み，書込みともに禁止する。そうすることにより，ストレージデバイス２２０のデータに不整合が生じることを回避することができる。
【００４７】
図４に戻り，例えば，ネットワークＰＣ３０２等からネットワークコントローラ２０２に「ファイルオープン」コマンドが送信され（Ｓ４１２），ネットワークコントローラ２０２がＳＣＳＩコマンドの「Ｒｅｓｅｒｖｅ」コマンドをネットワーク−ＵＳＢ回路２０４へ渡す（Ｓ４１４）と，ネットワーク−ＵＳＢ回路２０４は排他制御部２１４へＳＣＳＩコマンドで使用権を要求する（Ｓ４１６）。しかし，これに応答して排他制御部２１４は，ネットワーク−ＵＳＢ回路２０４にＳＣＳＩコマンドで使用禁止を通知し（Ｓ４１８），ネットワーク−ＵＳＢ回路２０４はネットワークコントローラ２０２にＳＣＳＩコマンドで使用禁止を通知する（Ｓ４２０）。その際，上記したように，「Ｒｅａｄ」コマンドのみ許可する場合と，「Ｒｅａｄ」，「Ｗｒｉｔｅ」コマンド共に禁止する場合とがある。そして，ネットワークコントローラ２０２はネットワークプロトコルにしたがって，使用禁止をネットワークＰＣ３０２等へ通知する（Ｓ４２２）。これにより，排他制御部２１４はネットワークコントローラ２０２からのストレージデバイス２２０へのアクセスを適切な排他制御レベルで制御する。
【００４８】
また，アプリケーションプログラム２１１を実行するＣＰＵ２０８に対する排他制御手順Ｓ２３６，Ｓ２３８は，図２で説明したとおりであるので，説明を省略する。
【００４９】
図５は，アプリケーションプログラム２１１を実行するＣＰＵ２０８からストレージデバイス２２０へのアクセス要求に対し排他制御部２１４が使用許可する場合の手順を説明する図である。ＣＰＵ２０８は，まず排他制御部２１４に対し，ＳＣＳＩコマンドで使用権を要求する（Ｓ５０２）。これに応答して排他制御部２１４は使用権の空き状況を確認し，他のＵＳＢホストへ使用許可しておらず使用権が空いていれば，ＣＰＵ２０８に使用許可し（Ｓ５０４），他のホストからのアクセスに対し排他制御を開始する（Ｓ５０６）。そしてＣＰＵ２０８はストレージデバイス２２０に対し論理ブロックごとにＳＣＳＩコマンドの「Ｒｅａｄ」，「Ｗｒｉｔｅ」コマンドを送りデータの読み書きを行う。
【００５０】
すなわち，データの読込みを行う場合は，ＣＰＵ２０８がストレージデバイス２２０から読み出したデータを記録部２２６のバッファ等へ転送する（Ｓ５０８）。また，データの書込みを行う場合は，撮像部２２４のバッファ等に記憶されたデータをストレージデバイス２２０に書込む（Ｓ５０８）。そして，データの書込みに伴い変更されるファイル管理情報２１３をストレージデバイス２２０から読み出してＲＡＭ２１２に格納する。これにより，ＲＡＭ２１２に格納されるファイル管理情報２１３を更新することができ，ＣＰＵ２０８は次のアクセス時に正確なファイル管理情報２１３を参照することができる。
【００５１】
ＣＰＵ２０８は，データの読み書きが終了すると，使用権開放を排他制御部２１４に通知する（Ｓ５１０）。ここで，排他制御部２１４は，手順Ｓ５０４においてデータの書込みについて使用許可した場合には，ストレージデバイス２２０にデータの書込みが行われた結果ストレージデバイス２２０のファイル管理情報２１３が変更されたことを，ネットワーク−ＵＳＢ回路２０４に通知し（Ｓ５１４），また，ＰＣ−ＵＳＢ回路２０６に通知する（Ｓ５１６）。これにより，ネットワーク−ＵＳＢ回路２０４はネットワークコントローラ２０２に対してファイルシステム２０３が記憶するファイル管理情報２１３を更新させることができ，ＰＣ−ＵＳＢ回路２０６はＰＣ１００に対してファイルシステム１０４が記憶するファイル管理情報２１３を更新させることができる。そして，排他制御部２１４は排他制御を終了する（Ｓ５１２）。
【００５２】
排他制御部２１４がアプリケーションプログラム２１１を実行するＣＰＵ２０８に使用許可している間は，ネットワークＰＣ３０２等やＰＣ１００からのアクセスは排他制御される。ここで，ＣＰＵ２０８がストレージデバイス２２０のデータの読込みをする場合と，データの書込みをする場合とを排他制御部２１４は手順Ｓ５０４で使用許可する際に判断し，それぞれの場合に応じて，図３の表に示すように異なる排他制御レベルで排他制御を行う。
【００５３】
すなわち，ＣＰＵ２０８がデータの読込みを行っている場合は，排他制御部２１４はネットワークＰＣ３０２等あるいはＰＣ１００には，データの読み込みに限定して使用許可する。一方，ＣＰＵ２０８がデータの書込みを行っている場合は，ネットワークＰＣ３０２等あるいはＰＣ１００のデータの読み込み，書込みともに禁止する。そうすることにより，データの不整合を回避することができる。
【００５４】
なお，図５の手順において，ネットワークＰＣ３０２等に対する排他制御手順Ｓ４１２〜Ｓ４２２は図４で説明したとおりであり，また，ＰＣ１００に対する排他制御手順Ｓ２２８〜Ｓ２３４は図２で説明したとおりであるので，それぞれの説明は省略する。
【００５５】
図６は，ストレージデバイス２２０のデータが書き換えられた場合に，ファイルシステム１０４，２０３等がファイル管理情報を更新する手順について説明する図である。
【００５６】
まず，ネットワークコントローラ２０２のファイルシステム２０３が記憶するファイル管理情報２１３を更新する手順を，図６（Ａ）を用いて説明する。ＰＣ１００またはＣＰＵ２０８によりストレージデバイス２２０のデータ書込みが行われた場合は，ストレージデバイス２２０のファイル管理情報２１３の変さらに伴い，排他制御部２１４からネットワーク−ＵＳＢ回路２０４に変更の通知がされる（図４のＳ４３０，図５のＳ５１４）ので，ネットワーク−ＵＳＢ回路２０４はこれを記憶する。
【００５７】
その後，ネットワークＰＣ３０２等が排他制御部２１４から使用許可を得た場合において，ネットワークコントローラ２０２がネットワークネットワークＰＣ３０２等から送信される（Ｓ６０２）「ファイルリード／ライト」コマンドに対応して，ＳＣＳＩコマンドの「Ｒｅａｄ」や「Ｗｒｉｔｅ」コマンドをネットワーク−ＵＳＢ回路２０４へ渡す（６０４）。
【００５８】
すると，ネットワーク−ＵＳＢ回路２０４はこれに応答して，ＳＣＳＩコマンドでストレージデバイス２２０のファイル管理情報の変更通知を返す（Ｓ６０６）。これを受けてネットワークコントローラ２０２は，再度ＳＣＳＩコマンドの「Ｒｅａｄ」コマンドをネットワーク−ＵＳＢ回路２０４へ渡し（Ｓ６０７），ネットワーク−ＵＳＢ回路２０４はストレージデバイス２２０からファイル管理情報２１３を読み出して（Ｓ６０８），ネットワークコントローラ２０２に転送する（Ｓ６１０）。これにより，ネットワークコントローラ２０２はファイルシステム２０３のファイル管理情報を更新することができる。
【００５９】
次に，図６（Ｂ）を用いてＰＣ１００のファイルシステム１０４がファイル管理情報２１３を更新する手順を説明する。ネットワークコントローラ２０２またはＣＰＵ２０８によりストレージデバイス２２０のデータ書込みが行われた場合は，排他制御部２１４からＰＣ−ＵＳＢ回路２０６にファイル管理情報２１３の変更の通知がされるので，（図２のＳ２４５，図５のＳ５１６）ＰＣ−ＵＳＢ回路２０６はこれを記憶する。
【００６０】
その後，ＰＣ１００が使用許可を得て，ＰＣ−ＵＳＢ回路２０６へＳＣＳＩコマンドの「Ｒｅａｄ」や「Ｗｒｉｔｅ」コマンドを渡す（Ｓ６１２）。すると，ＰＣ−ＵＳＢ回路２０６はこれに対し，ＳＣＳＩコマンドで新たにデバイスが接続されたことを示すエラーを返すことにより，ファイル管理情報の変更をＰＣ１００に通知する（Ｓ６１６）。これを受けてＰＣ１００は再度ＳＣＳＩコマンドの「Ｒｅａｄ」コマンドをＰＣ−ＵＳＢ回路２０６へ渡し（Ｓ６１８），ＰＣ−ＵＳＢ回路２０６はストレージデバイス２２０からファイル管理情報２１３を読み出して（Ｓ６２０），ＰＣ１００に転送する（Ｓ６２２）。これにより，ＰＣ１００はファイルシステム１０４のファイル管理情報を更新することができる。
【００６１】
そして，図６（Ｃ）を用いてアプリケーションプログラム２１１を実行するＣＰＵ２０８が用いるファイル管理情報２１３を更新する場合の手順を説明する。ＣＰＵ２０８が使用許可を得て，排他制御部２１４へＳＣＳＩコマンドの「Ｒｅａｄ」や「Ｗｒｉｔｅ」コマンドを送る（Ｓ６２４）。ネットワークコントローラ２０２またはＰＣ１００によりストレージデバイス２２０のデータ書込みが行われた場合は，排他制御部２１４はこれを記憶しており，上記のコマンドに応答して，ＣＰＵ２０８にファイル管理情報の変更を通知する（Ｓ６２６）。これを受けてＣＰＵ２０８はストレージデバイス２２０へ「Ｒｅａｄ」コマンドを渡し，ファイル管理情報２１３を読み出してＲＡＭ２１２に格納し，ＲＡＭ２１２が記憶しているファイル管理情報２１３を更新する（Ｓ６２８）。
【００６２】
上記の手順によれば，ストレージデバイス２２０に記憶されたデータが書き換えられた場合に，ファイルシステム２０３，１０４などが書込み前のファイル管理情報２１３に基づき論理ブロックごとにコマンドを送信し，ストレージデバイス２２０において指定した論理ブロックにデータが存在しなかったり，データの内容が異なっていたりというデータの不整合を回避できる。
【００６３】
なお，上述した複合機２００において，共通デバイスはストレージデバイス２２０の他に，印刷部２２６，または撮像部２２４とすることができる。そうすることにより，例えば印刷部２２６に画像データを送り，プリンタを占有してこれを印刷する場合や，スキャナから読み込んだ画像データを撮像部２２４のバッファから読み出す場合において，複数のホストコンピュータ間で共通デバイスへの指示が競合することを回避することができる。
【００６４】
以上説明した手順によれば，複数のホストコンピュータから共通デバイスにアクセスされた場合に，共通デバイスのデータに不整合が生じることを回避することができる。  
【図面の簡単な説明】
【００６５】
【図１】本実施の形態における電子機器の構成図である。
【図２】ネットワークＰＣ３０２等からのストレージデバイス２２０へのアクセス要求に対し排他制御部２１４が使用許可する場合の手順を説明する図である。
【図３】排他制御部２１４が行う排他制御のレベルを説明する図である。
【図４】ＰＣ１００からのストレージデバイス２２０へのアクセス要求に対し排他制御部２１４が使用許可する場合の手順を説明する図である。
【図５】アプリケーションプログラム２１１を実行するＣＰＵ２０８からストレージデバイス２２０へのアクセス要求に対し排他制御部２１４が使用許可する場合の手順を説明する図である。
【図６】ストレージデバイス２２０のデータが書き換えられた場合に，ファイルシステム１０４，２０３等がファイル管理情報を更新する手順について説明する図である。
【符号の説明】
【００６６】
１００：パーソナルコンピュータ   ２０２：ネットワークコントローラ
２０４：ネットワーク−ＵＳＢ回路 ２０６：ＰＣ−ＵＳＢ回路
２２０：ストレージデバイス
【図１】
2007299101.tif 000003
【図２】
2007299101.tif 000004
【図３】
2007299101.tif 000005
【図４】
2007299101.tif 000006
【図５】
2007299101.tif 000007
【図６】
2007299101.tif 000008