(57)【特許請求の範囲】
【請求項１】
ファイルを保持する記憶部と、外部との通信を制御する通信制御部と、該記憶部のファイルに対するアクセスを制御することにより該通信制御部にて受信したコマンドに応じたコマンド処理を実行するファイルアクセス制御部とをそなえ、複数のアプリケーションからのアクセスが同時に可能なカード型記憶媒体であって、
該通信制御部により外部から受信した非同期で発生する該複数のアプリケーションからのコマンドを随時受け付ける一方で、受け付けたコマンドに応じたコマンド処理を該ファイルアクセス制御部に順次要求するコマンド多重受信制御部がそなえられるとともに、
該ファイルアクセス制御部に、
該記憶部のファイルを所定のファイル単位毎に管理し、該コマンド多重受信制御部から要求された新たなコマンド処理の対象ファイル単位が既に他のコマンド処理のアクセス対象となっている場合、該新たなコマンド処理の当該ファイル単位に対するアクセスを禁止して、当該ファイル単位に対して同時に異なるコマンドによるアクセスを行なうことを禁止するように制御するアクセス排他制御部がそなえられ、
該コマンド多重受信制御部が、
外部から受信したコマンドを格納するコマンドキューイングテーブルと、
該通信制御部により外部からのコマンドを受信すると、コマンド受信割込みによって起動され、割込み可能状態を割込み禁止状態に切り換えてから当該コマンドを該コマンドキューイングテーブルに登録し、割込み禁止状態を割込み可能状態に切り換えることにより、当該コマンドの受付を行なう割込み処理部と、
該コマンドキューイングテーブルを監視し、該コマンドキューイングテーブルにコマンドが登録されている場合には、当該コマンドを読み出し、当該コマンドに応じたコマンド処理を該ファイルアクセス制御部に要求するコマンドディスパッチ処理部とから構成されていることを特徴とする、カード型記憶媒体。
【請求項２】
該コマンド多重受信制御部にて受け付けられたコマンドが、該記憶部の所定のファイル単位を、該ファイルアクセス制御部からアクセス可能なオープン状態にすることを要求するファイルオープンコマンドである場合、該ファイルオープンコマンドに、前記所定のファイル単位を指定するファイル名がパラメータ情報として予め設定されており、
前記所定のファイル単位をオープン状態にする際に当該ファイル単位に対する処理固有の識別子を生成する識別子生成部と、
該識別子生成部にて生成された前記識別子を該ファイルオープンコマンドの発行元に通知する通知部とがそなえられ、
該アクセス排他制御部が、該ファイルオープンコマンドのパラメータ情報であるファイル名と該識別子生成部にて生成された前記識別子とを対にして保持するファイル排他制御情報テーブルを作成し、該ファイル排他制御情報テーブルを参照して現在オープン状態になっているファイル単位を管理しながら、各ファイル単位に対するアクセス排他制御を行なうことを特徴とする、請求項１記載のカード型記憶媒体。
【請求項３】
該ファイルオープンコマンドに、前記所定のファイル単位が既にオープン状態になっている場合の動作を指定する動作モードがパラメータ情報として予め設定されており、
該動作モードが待機モードである場合には、該ファイルオープンコマンドを該コマンドキューイングテーブルに再度登録して該ファイル単位が解放されるまで待機する一方、
該動作モードが拒否モードである場合には、該ファイルオープンコマンドを拒否するとともに拒否した旨を該ファイルオープンコマンドの発行元に通知することを特徴とする、請求項１または請求項２に記載のカード型記憶媒体。
【請求項４】
該ファイルオープンコマンドに、該動作モードが待機モードである場合の指定リトライ回数がパラメータ情報として予め設定されており、
該動作モードが待機モードである場合に、同一のファイルオープンコマンドに応じたコマンド処理を該コマンド多重受信制御部から該ファイルアクセス制御部に要求した回数が前記指定リトライ回数を超えた時には、該ファイルオープンコマンドに応じたコマンド処理を実行することなく終了するとともに、その旨を該ファイルオープンコマンドの発行元に通知することを特徴とする、請求項３記載のカード型記憶媒体。
【請求項５】
該コマンド多重受信制御部にて受け付けられたコマンドが、既にオープン状態になっているファイル単位をクローズ状態にして当該ファイル単位に対するアクセスを終了させることを要求するファイルクローズコマンドである場合、該ファイルクローズコマンドに、当該ファイル単位に対する処理固有の識別子がパラメータ情報として予め設定されており、
該アクセス排他制御部が、該ファイルクローズコマンドのパラメータ情報である識別子が一致するエントリを、該ファイル排他制御情報テーブルから削除して、当該ファイル単位に対するアクセス排他制御を終了させることを特徴とする、請求項２〜請求項４のいずれかに記載のカード型記憶媒体。
【請求項６】
該コマンド多重受信制御部にて受け付けられたコマンドが、既にオープン状態になっているファイル単位に対するアクセスを要求するファイルアクセスコマンドである場合、該ファイルアクセスコマンドに、ファイルオープン時に該通知部により通知された当該ファイル単位に対する処理固有の識別子がパラメータ情報として予め設定されており、
該ファイルアクセス制御部が、該アクセス排他制御部で作成された該ファイル排他制御情報テーブルを参照して該ファイルアクセスコマンドのパラメータ情報である識別子をもつエントリの有無を確認した後、該ファイルアクセスコマンドに応じたコマンド処理を実行することを特徴とする、請求項２記載のカード型記憶媒体。
【発明の詳細な説明】
【０００１】
（目次）
産業上の利用分野
従来の技術（図１６〜図１８）
発明が解決しようとする課題（図１８〜図２０）
課題を解決するための手段（図１）
作用（図１）
実施例（図２〜図１５）
発明の効果
【０００２】
【産業上の利用分野】
本発明は、キャッシュレスカード，ＩＤカード，健康カード，自治体カード等として用いられる、例えばＩＣカード，光カード等のカード型記憶媒体に関し、特に、内部に記憶されたファイルに対して複数のアプリケーションからのアクセスを可能にするマルチアプリケーションサポート機能をもつカード型記憶媒体に関する。
【０００３】
【従来の技術】
一般に、図１６，図１７に示すように、ＩＣカード（カード型記憶媒体）１００は、マイクロプロセッサユニット（ＭＰＵ）１０１とメモリ（ファイル領域；例えばＥＰＲＯＭ／ＥＥＰＲＯＭ）１０２とを内蔵され、端子部１０３を介して図示しない取引装置（外部装置）に接続されるようになっている。
【０００４】
ここで、メモリ１０２には、データファイルを保持するデータ領域と、このデータ領域のデータファイルについての制御情報（ポインタ等）を保持するディレクトリ領域とがそなえられ、ＭＰＵ１０１により、ディレクトリ領域における制御情報に基づいてメモリ１０２のデータ領域におけるデータファイルが管理される。
【０００５】
例えば、ＭＰＵ１０１は、外部の取引装置から端子部１０３を介してアクセスコマンドを受けると、そのアクセスコマンドに応じてメモリ１０２に対する読出処理（リードアクセス），書込処理（ライトアクセス），消去処理（イレーズアクセス），再書込処理（リライトアクセス）等を実行する。
なお、ＭＰＵ１０１内には、制御動作を行なうためのプログラムを保持するＲＯＭ１０１Ａのほか、制御動作を行なう際のワークエリアとして用いられるＲＡＭ１０１Ｂがそなえられている。また、ＩＳＯ型のＩＣカード１００の場合、その端子部１０３には、８個の接点（VCC,RST,CLS,RFU,GND,VPP,I/O,RFU)がそなえられている。
【０００６】
このようなＩＣカード１００における従来の通信制御機能およびコマンド処理機能を図１８により説明する。まず、ＩＣカード１００が、端末等の取引装置のＲ／Ｗ（リーダ／ライタ；図示せず）に挿入されると、図１８の▲１▼に示すように、まずＩＣカード１００にハードウエアリセットがかかる。具体的には、ＩＣカード１００のリセット端子（図１７の端子部１０３における RST接点）からリセット信号が入力され、ＭＰＵ１０１のリセットが行なわれる。
【０００７】
ハードウエアリセットが行なわれると、ＩＣカード１００は、その応答としてＡＴＲ（Answer To Reset)を、通信制御部１０４によりＲ／Ｗ側へ通知した後（図１８の▲２▼参照）、コマンド受信待機状態（回線割込み可能状態；図１８の▲３▼参照）になる。
この状態でコマンドを受信すると（図１８の▲４▼参照）、ＩＣカード１００は、回線割込み禁止状態（他のコマンドを一切受け付けない状態）になり、今回受信したコマンドに応じた振分を行ないコマンド処理部１０５でコマンド処理を実行した後（図１８の▲５▼参照）、そのコマンドに対するレスポンスを、通信制御部１０４によりＲ／Ｗ側へ通知し（図１８の▲６▼参照）、再度、コマンド受信待機状態になる（図１８の▲７▼参照）。
【０００８】
【発明が解決しようとする課題】
ところで、ＩＣカードに関するＩＳＯ国際標準が１９９５年中にも確定する見通しがあることから、近年、ＩＣカードを利用したシステムが、再度、脚光を浴びてきており、各方面において、ＩＣカードの利用方法に関する標準仕様の検討がなされている。
【０００９】
またこれと同時に、ユーザニーズが多様化かつ高度化していくに伴い、ＩＣカードの様々な利用方法が提案されている。今後、これらのニーズの高まりに伴って、１枚のＩＣカードに対し複数のアプリケーションが同時にアクセスできるようにしたシステム形態が必要になり、そのシステム形態を実現するためのマルチアプリケーションサポート機能の確立が要求されることが想定される。
【００１０】
しかし、図１８にて前述した通り、従来のＩＣカード１００の通信制御機能としては、同期型半二重伝送方式（コマンド受信待機状態でコマンドを受け付けると、そのコマンド処理を終了してコマンド受信待機状態に戻るまでの間、他のコマンドを受け付けない方式）が採用されているため、ＩＣカード１００は、コマンド受信待機状態以外の状態でコマンドを受信することができず、複数のアプリケーションから複数のコマンドが非同期で発生した場合、これらのコマンドに対応することができず、マルチアプリケーションサポート機能を実現するには機能的に不十分である。
【００１１】
また、従来のＩＣカード１００では、単一のアプリケーションからアクセスを受ける場合のみを想定しているため、ＩＣカード１００のメモリ１０２内に保持されるファイルに対するアクセス制御において、あるファイルがオープンされてあるアプリケーションからのアクセスを受けている際に当該ファイルへの他のアクセスを禁止するといった排他制御機能はそなえられていない。
【００１２】
つまり、複数のアプリケーションからのアクセスを考えた場合、あるアプリケーションがＩＣカード１００内のファイル上のあるアドレスに対してアクセスを行なっている最中に、同一アドレスに対するアクセス要求が、同一もしくは他のアプリケーションから発生し、後述するようなデータ矛盾が生じるおそれがある。これに対応すべく、ファイルアクセス制御に前述のような排他制御機能が必要になるが、従来のＩＣカード１００には、その排他制御機能が未サポートであるため、やはり、マルチアプリケーションサポート機能を実現するには機能的に不十分である。
【００１３】
上述のごとく従来のＩＣカード１００の機能が不十分であるために、複数のアプリケーションからのアクセスが発生するようなシステムを構築した場合、次のような問題が生じてしまう。
一般に、マルチアプリケーション・システムでは、ＩＣカード１００に対するコマンドは非同期的に発生するため、例えば図１９に示すように、ＩＣカード１００が、アプリケーションＡからのコマンドを受信し、そのコマンドの処理を実行している最中に、他のアプリケーションＢからコマンドを送信される場合がある。
【００１４】
このとき、前述したように、従来のＩＣカード１００は、回線割込み禁止状態であり、アプリケーションＢからのコマンドを無視してしまい、結果的に、アプリケーションＢでは、ＩＣカード１００からのレスポンスブロック待ち状態でタイムオーバになってしまう。
即ち、レスポンスブロック待ち状態でタイムオーバした場合、コマンドの再送が必要になるが、この場合、ＩＣカード１００側の障害のためにタイムオーバが生じたのか、または、ＩＣカード１００によりコマンドが無視されたためにタイムオーバが生じたのかを、アプリケーションＢ側で判別することができない。そこで、アプリケーションＡ，Ｂが他のアプリケーションの状態を監視しながらＩＣカード１００に対してコマンドを発行することも考えられるが、このような構成にした場合、各アプリケーションＡ，Ｂが独立した処理を行なえなくなってしまう。
【００１５】
また、従来のＩＣカード１００は排他制御機能を有していないため、例えば図２０に示すごとく、ＩＣカード１００のあるファイルをオープンした状態で、アプリケーションＡが当該ファイル内のあるデータを“Ｃ”から“Ｄ”に書き換えた後に、ＩＣカード１００が、アプリケーションＢから、同一ファイル内の同一アドレスのデータを読み出すためのコマンドを受け付ける場合がある。
【００１６】
このような場合、アプリケーションＢは、そのファイルにデータ“Ｃ”が保持されていることを想定してデータの読み込みを行なったにもかかわらず、実際にはＩＣカード１００からデータ“Ｄ”が通知されてしまい、データ矛盾が発生してしまう。
本発明は、このような課題に鑑み創案されたもので、複数のアプリケーションからのアクセスを同時に可能にして、ユーザニーズの多様化や高度化に確実に対応できるようにしたカード型記憶媒体を提供することを目的とする。
【００１７】
【課題を解決するための手段】
図１は本発明の原理ブロック図で、この図１に示すカード型記憶媒体１は、記憶部２，通信制御部３およびファイルアクセス制御部４をそなえて構成されている。ここで、記憶部２は、ファイルを保持するものであり、通信制御部３は、外部との通信を制御するものであり、ファイルアクセス制御部４は、記憶部２のファイルに対するアクセスを制御することにより通信制御部３にて受信したコマンドに応じたコマンド処理を実行するものである。
【００１８】
そして、本発明では、コマンド多重受信制御部５がそなえられており、このコマンド多重受信制御部５は、通信制御部３により外部から受信した非同期で発生する複数のアプリケーションからのコマンドを随時受け付ける機能と、受け付けたコマンドに応じたコマンド処理をファイルアクセス制御部４に順次要求する機能とを有している。
また、ファイルアクセス制御部４にアクセス排他制御部６がそなえられ、このアクセス排他制御部６は、記憶部２のファイルを所定のファイル単位毎に管理して、コマンド多重受信制御部５から要求された新たなコマンド処理の対象ファイル単位が既に他のコマンド処理のアクセス対象となっている場合、その新たなコマンド処理のファイル単位に対するアクセスを禁止して、当該ファイル単位に対して同時に異なるコマンドによるアクセスを行なうことを禁止するように制御する機能を有している（請求項１）。
【００１９】
なお、コマンド多重受信制御部５は、コマンドキューイングテーブル，割込み処理部およびコマンドディスパッチ処理部から構成することができる。ここで、コマンドキューイングテーブルは、外部から受信したコマンドを格納するものであり、割込み処理部は、通信制御部３により外部からのコマンドを受信すると、コマンド受信割込みによって起動され、そのコマンドをコマンドキューイングテーブルに登録することにより、コマンドの受付を行なうものである。また、コマンドディスパッチ処理部は、コマンドキューイングテーブルを監視し、コマンドキューイングテーブルにコマンドが登録されている場合には、そのコマンドを読み出し、そのコマンドに応じたコマンド処理をファイルアクセス制御部４に要求するものである（請求項１）。
【００２０】
また、コマンド多重受信制御部５にて受け付けられたコマンドが、記憶部２の所定のファイル単位を、ファイルアクセス制御部４からアクセス可能なオープン状態にすることを要求するファイルオープンコマンドである場合、ファイルオープンコマンドに、所定のファイル単位を指定するファイル名がパラメータ情報として予め設定されている。そして、所定のファイル単位をオープン状態にする際にそのファイル単位に対する処理固有の識別子を生成する識別子生成部と、この識別子生成部にて生成された識別子をファイルオープンコマンドの発行元に通知する通知部とをカード型記憶媒体１にそなえ、アクセス排他制御部６が、ファイルオープンコマンドのパラメータ情報であるファイル名と識別子生成部にて生成された識別子とを対にして保持するファイル排他制御情報テーブルを作成し、このファイル排他制御情報テーブルを参照して現在オープン状態になっているファイル単位を管理しながら、各ファイル単位に対するアクセス排他制御を行なうように構成する（請求項２）。
【００２１】
さらに、ファイルオープンコマンドに、所定のファイル単位が既にオープン状態になっている場合の動作を指定する動作モードをパラメータ情報として予め設定しておき、その動作モードが待機モードである場合には、ファイルオープンコマンドをコマンドキューイングテーブルに再度登録してファイル単位が解放されるまで待機する一方、動作モードが拒否モードである場合には、ファイルオープンコマンドを拒否するとともに拒否した旨を該ファイルオープンコマンドの発行元に通知するように構成してもよい（請求項３）。
【００２２】
このとき、ファイルオープンコマンドに、動作モードが待機モードである場合の指定リトライ回数をパラメータ情報として予め設定しておき、動作モードが待機モードである場合に、同一のファイルオープンコマンドに応じたコマンド処理をコマンド多重受信制御部５からファイルアクセス制御部４に要求した回数が前記指定リトライ回数を超えた時には、ファイルオープンコマンドに応じたコマンド処理を実行することなく終了するとともに、その旨をファイルオープンコマンドの発行元に通知するように構成する（請求項４）。
【００２３】
一方、コマンド多重受信制御部５にて受け付けられたコマンドが、既にオープン状態になっているファイル単位をクローズ状態にしてそのファイル単位に対するアクセスを終了させることを要求するファイルクローズコマンドである場合、ファイルクローズコマンドに、そのファイル単位に対する処理固有の識別子がパラメータ情報として予め設定され、アクセス排他制御部６が、ファイルクローズコマンドのパラメータ情報である識別子が一致するエントリを、ファイル排他制御情報テーブルから削除して、そのファイル単位に対するアクセス排他制御を終了させるように構成する（請求項５）。
【００２４】
また、コマンド多重受信制御部５にて受け付けられたコマンドが、既にオープン状態になっているファイル単位に対するアクセスを要求するファイルアクセスコマンドである場合、ファイルアクセスコマンドに、ファイルオープン時に通知された識別子がパラメータ情報として予め設定され、ファイルアクセス制御部４が、アクセス排他制御部６で作成されたファイル排他制御情報テーブルを参照してファイルアクセスコマンドのパラメータ情報である識別子をもつエントリの有無を確認した後、ファイルアクセスコマンドに応じたコマンド処理を実行する（請求項６）。
【００２５】
【作用】
図１により上述した本発明のカード型記憶媒体１では、コマンド多重受信制御部５の機能により、非同期で発生する外部からのコマンドの受信が可能になるほか、このようにコマンドの多重受信を行なった場合に、アクセス排他制御部６の機能により、既にアクセス対象になっているファイル単位に対して、同時に異なるコマンドによるアクセスを行なうことを禁止する、いわゆるアクセス排他制御が実現され、前述のようなデータ矛盾等の発生を防止することができる（請求項１）。
【００２６】
なお、コマンド多重受信制御部５において、外部からコマンドを受信すると、そのコマンドを、割込み処理部によりコマンドキューイングテーブルに順次格納して受け付けることで、コマンドの多重受信が可能になる。そして、コマンドディスパッチ処理部により、常時、コマンドキューイングテーブルを監視・参照することで、受け付けたコマンドのディスパッチ処理（ファイルアクセス制御部４のコマンド処理依頼）が可能になっている（請求項１）。
【００２７】
また、コマンド多重受信制御部５にてファイルオープンコマンドを受け付けこのコマンドに応じて対象ファイル単位をオープン状態にする際には、そのファイル単位に対する処理固有の識別子が生成されてそのコマンドの発行元に通知されるとともに、アクセス排他制御部６により、オープンされたファイル単位のファイル名と識別子とが対となってファイル排他制御情報テーブルに登録される。従って、アクセス排他制御部６は、現在オープン状態になっているファイル単位を管理でき、ファイル排他制御情報テーブルを参照してアクセスの可否を確認することにより、ファイルオープン時の各ファイル単位に対するアクセス排他制御を実行することができる（請求項２）。
【００２８】
さらに、ファイルオープンコマンド処理を行なう際に対象ファイル単位がオープン状態（使用中）である時には、パラメータ情報として設定される動作モードにより、その後の処理を選択することができる。動作モードが待機モードである場合、そのファイルオープンコマンドをコマンドキューイングテーブルに再度登録（再エントリ）することにより、そのファイルオープンコマンドの待機・再実行を行なっている。また、動作モードが拒否モードである場合には、そのファイルオープンコマンドは拒否され、その旨がファイルオープンコマンドの発行元に通知される（請求項３）。
【００２９】
そして、動作モードとして待機モードを選択して同一のファイル単位にファイルオープンコマンド処理を再実行する場合、そのファイルオープンコマンド処理を実行できないまま延々待機し続けるデッドロック状態に陥る可能性があるが、同一のファイルオープンコマンド処理の繰り返し回数が所定回数（指定リトライ回数）を超えた時点で、そのファイルオープンコマンド処理を終了することで、デッドロック状態を回避することができる（請求項４）。
【００３０】
一方、コマンド多重受信制御部５にてファイルクローズコマンドを受け付けた際には、アクセス排他制御部６により、ファイルクローズコマンドのパラメータ情報である識別子が一致するエントリを、ファイル排他制御情報テーブルから削除することにより、そのファイル単位に対するアクセス排他制御を終了することができる（請求項５）。
【００３１】
また、コマンド多重受信制御部５にてファイルアクセスコマンドを受け付けた際には、ファイルアクセス制御部４においてファイル排他制御情報テーブルを参照し、ファイルアクセス対象のファイル名と対になる識別子が、そのファイルアクセスコマンドのパラメータ情報である識別子と一致するか否かを確認することで、ファイルアクセス時の各ファイル単位に対するアクセス排他制御を実行することができる（請求項６）。
【００３２】
【実施例】
以下、図面を参照して本発明の実施例を説明する。
図２は本発明の一実施例としてのカード型記憶媒体（ＩＣカード）の構成を示すブロック図であり、この図２において、１０はＩＣカード（カード型記憶媒体）で、このＩＣカード１０には、後述する各種制御機能を果たすマイクロプロセッサユニット（ＭＰＵ）１１と、記憶部としてのメモリ（ファイル領域；例えばＥＰＲＯＭ／ＥＥＰＲＯＭ）１２とが内蔵されており、このＩＣカード１０は、図１６，図１７により前述した端子部（図２には図示せず）を介して図示しない外部装置（上位装置，取引装置，端末装置）におけるＲ／Ｗ（リーダ／ライタ）に挿入・接続されるようになっている。
【００３３】
ここで、メモリ１２には、ファイル領域１２Ａがそなえられ、このファイル領域１２Ａに、階層構造のファイル単位〔ＤＦ(Dedicated File)／ＥＦ(Elementary File）〕１２Ｂが保持されている。このファイル領域１２Ａにおけるファイル単位１２Ｂは、メモリ１２内の図示しないディレクトリ領域に保持される制御情報（ポインタ等）によって管理される。
【００３４】
また、ＭＰＵ１１は、ＩＣカード１０を統括的に管理するためのもので、本実施例では、通信制御部１３，コマンド多重受信制御部１４およびファイルアクセス制御部１５としての機能を有している。
通信制御部１３は、外部（アプリケーション）との通信を制御するもので、外部装置からのコマンドの受信処理（伝送ブロックの受信処理）を行なうとともに、ＩＣカード１０からコマンドを受けた外部装置へのレスポンスの送信処理（伝送ブロックの作成処理）を行なうものである。
【００３５】
コマンド多重受信制御部１４は、通信制御部１３により外部から受信したコマンドを随時受け付ける機能と、受け付けたコマンドに応じたコマンド処理を後述するファイルアクセス制御部１５に順次要求する機能とを有するもので、後述するごとく、コマンドキューイングテーブル１６，割込み処理部１７およびコマンドディスパッチ処理部１８から構成されている。
【００３６】
ここで、コマンドキューイングテーブル１６は、外部から受信したコマンドを格納するものであり、具体的には図４に示すようなキューイング管理情報およびキューイングデータを格納している。
キューイング管理情報としては、コマンドキューイングテーブル１６にキューイングされているコマンドの数であるキューイング数と、次にコマンド処理を実行すべき位置を示すネクストコマンドポインタと、次に受け付けたコマンドを格納すべき位置を示すネクストポインタとが保持されている。
【００３７】
また、キューイングデータは、キューイングされたコマンド自体のデータであり、各コマンド毎に、コマンドメッセージと、このコマンドメッセージの長さを示すメッセージレングスと、後述するごとく各処理固有のノードＩＤ（識別子）とから構成されている。
そして、後述するごとく、キューイング数は割込み処理，コマンドディスパッチ処理，ファイルオープン処理を行なう度に更新され、ネクストコマンドポインタはコマンドディスパッチ処理を行なう度に更新され、ネクストポインタは割込み処理，ファイルオープン処理を行なう度に更新されるようになっている。
【００３８】
割込み処理部１７は、図７にて後述する手順に従って動作するもので、通信制御部１３により外部からのコマンドを受信すると、その受信割込みよって起動され、そのコマンドをコマンドキューイングテーブル１６に登録（キューイング）することにより、コマンドの受付を行なうものである。
また、コマンドディスパッチ処理部１８は、図９にて後述する手順に従って動作するもので、コマンドキューイングテーブル１６のキューイング数を常時監視し、コマンドキューイングテーブル１６にコマンドが登録されている場合（キューイング数が１以上）には、そのコマンドを順次読み出し、ファイルアクセス制御部１５のコマンド処理部１９へのディスパッチ（振分）を行なって、そのコマンドに応じたコマンド処理をファイルアクセス制御部１５（コマンド処理部１９）に要求するものである。
【００３９】
一方、ファイルアクセス制御部１５は、図１１〜図１４にて後述する手順に従って動作するもので、メモリ１２のファイル領域１２Ａに対するアクセスを制御することにより通信制御部１３にて受信したコマンドに応じたコマンド処理を実行するもので、後述するごとく、複数のコマンド処理部１９，アクセス排他制御部２０，ノードＩＤ生成部２１および通知部２２から構成されている。
【００４０】
ここで、各コマンド処理部１９は、コマンド多重受信制御部１４のコマンドディスパッチ処理部１８によって振り分けられたコマンドを受け、そのコマンドに応じた処理〔ファイルオープン処理，ファイルアクセス処理（リードアクセス，ライトアクセス等），ファイルクローズ処理〕を行なうものである。
アクセス排他制御部２０は、メモリ１２のファイル領域１２Ａをファイル単位１２Ｂ毎に管理して、コマンド多重受信制御部１４（コマンドディスパッチ処理部１８）から要求された新たなコマンド処理の対象ファイル単位１２Ｂが既に他のコマンド処理のアクセス対象となっている場合にその新たなコマンド処理のファイル単位１２Ｂに対するアクセスを禁止するアクセス排他制御を行なう機能を有している。
【００４１】
また、ノードＩＤ生成部（識別子生成部）２１は、コマンド処理部１９によるファイルオープン処理により所定のファイル単位１２Ｂをオープン状態にする際にそのファイル単位１２Ｂに対する処理固有のノードＩＤ（識別子）を生成するものである。このノードＩＤ生成部２１によるノードＩＤの生成処理は特に規定しないが、例えば、疑似乱数等を発生させる関数（数を動的，ランダムに発生するもの）を用い、その疑似乱数等をノードＩＤとして使用する。
【００４２】
さらに、通知部２２は、ノードＩＤ生成部２１にて生成されたノードＩＤを、通信制御部１３を介してファイルオープンコマンド発行元のアプリケーションに通知する機能を有するほか、図１１〜図１４にて後述するごとく、コマンド発行元のアプリケーションに対して二重オープンエラー通知，ファイル未オープン通知，リトライオーバ通知等を、通信制御部１３を介して行なう機能も有している。
【００４３】
なお、通知部２２によりアプリケーションに通知されたノードＩＤは、以降、同一のアプリケーションが同一のファイル単位１２Ｂに対してコマンドを発行する際、常に、そのコマンドに、パラメータ情報として付加され、このノードＩＤによって、正しいアプリケーションからアクセス（コマンド発行）が行なわれているか否かが識別されるようになっている。
【００４４】
そして、ファイルアクセス制御部１５におけるアクセス排他制御部２０は、その内部にファイル排他制御情報テーブル２０Ａを作成して有しており、このファイル排他制御情報テーブル２０Ａを参照して現在オープン状態になっているファイル単位１２Ｂを管理しながら、各ファイル単位１２Ｂに対するアクセス排他制御を行なうように構成されている。ファイル排他制御情報テーブル２０Ａには、例えば図５に示すように、既にオープン済のファイル単位１２Ｂに関する情報、つまり、ファイルオープンコマンドで指定されるファイル名（ＤＦ名／ＥＦ名）とノードＩＤ生成部２１にて生成されたノードＩＤとを対としてなるファイル排他制御情報が保持されている。
【００４５】
ところで、本実施例では、ファイルオープンコマンド（メモリ１２のファイル単位１２Ｂをファイルアクセス制御部１５からアクセス可能なオープン状態にすることを要求するコマンド）には、オープンすべきファイル単位１２Ｂを指定するファイル名（ＤＦ名／ＥＦ名）と、指定したファイル単位１２Ｂが既にオープン状態になっている場合の動作を指定する動作モードとがパラメータ情報として予め設定されるほか、必要に応じて、動作モードが待機モードである場合の指定リトライ回数がパラメータ情報として予め設定されている。
【００４６】
ファイルオープン処理時に、指定したファイル単位１２Ｂが既にオープン状態になっている場合、ファイルオープンコマンドに設定された動作モードが待機モード（WAIT MODE)であれば、そのファイルオープンコマンドは、コマンドキューイングテーブル１６に再度登録され、指定したファイル単位１２Ｂが解放されるまで待機する。一方、その動作モードが拒否モード（REJECT MODE)であれば、そのファイルオープンコマンドは拒否されるとともに、拒否した旨が、通知部２２により通信制御部１３を介してファイルオープンコマンド発行元のアプリケーションに通知されるようになっている。上述したファイルオープン処理の詳細は、図１１により説明する。
【００４７】
このとき、ファイルオープンコマンドに、前記指定リトライ回数がパラメータ情報として予め設定されている場合には、図６に示すように、コマンドキューイングテーブル１６Ａのキューイングデータとして、リトライ回数とパラメータリトライ回数（前記指定リトライ回数）とが追加・保持される。図６に示すコマンドキューイングテーブル１６Ａに保持される情報は、上述したリトライ回数およびパラメータリトライ回数以外は図４にて前述したコマンドキューイングテーブル１６に保持されるものと全く同じである。
【００４８】
指定リトライ回数が設定されたファイルオープンコマンドについては、再処理要求を行なう度にリトライ回数を更新しながら、そのコマンドをコマンドキューイングテーブル１６に再登録し、そのリトライ回数がパラメータリトライ回数を超えた時点で、ファイルオープンコマンドに応じたコマンド処理を実行することなく終了するとともに、その旨が、通知部２２により通信制御部１３を介してファイルオープンコマンド発行元のアプリケーションに通知されるようになっている。上述したファイルオープン処理の詳細は、図１２により説明する。
【００４９】
また、ファイルクローズコマンド（既にオープン状態になっているファイル単位１２Ｂをクローズ状態にしてそのファイル単位１２Ｂに対するアクセスを終了させることを要求するコマンド）には、クローズすべきファイル単位１２Ｂを指定するファイル名（ＤＦ名／ＥＦ名）とそのファイル単位１２Ｂに対する処理固有のノードＩＤとがパラメータ情報として予め設定されている。
【００５０】
ファイルアクセス制御部１５におけるアクセス排他制御部２０は、ファイルクローズコマンドを受けると、そのファイルクローズコマンドのパラメータ情報であるノードＩＤが一致するエントリを、ファイル排他制御情報テーブル２０Ａから削除して、そのファイル単位１２Ｂに対するアクセス排他制御を終了させるように構成されている。上述したファイルクローズ処理の詳細は、図１３により後述する。なお、このとき、ファイルクローズコマンドのパラメータ情報であるファイル名（ＤＦ名／ＥＦ名）とノードＩＤとの両方が一致するエントリを削除するように構成してもよい。
【００５１】
なお、上述したファイルオープンコマンドおよびファイルクローズコマンドは、本実施例では、前述したように、ファイル排他制御情報テーブル２０Ａ内のファイル排他制御情報を操作するための排他アクセス制御コマンドとしても用いられている。
さらに、ファイルアクセスコマンド（既にオープン状態になっているファイル単位１２Ｂに対するアクセスを要求するコマンド）には、前述したようにファイルオープン時に通知部２２によりアプリケーションに通知されたノードＩＤがパラメータ情報として予め設定されるとともに、アクセス情報〔アクセス種別（読出／書込等），レコードナンバー等）もパラメータ情報として予め設定されている。
【００５２】
ファイルアクセス制御部１５におけるコマンド処理部１９は、ファイルアクセスコマンドを受けると、アクセス排他制御部２０で作成されたファイル排他制御情報テーブル２０Ａを参照して、そのファイルアクセスコマンドのパラメータ情報であるノードＩＤをもつエントリの有無（そのノードＩＤがテーブル２０Ａに登録されているか否か）を確認した後、ファイルアクセスコマンドに応じたコマンド処理を実行するように構成されている。上述したファイルアクセス処理の詳細は、図１４により後述する。
【００５３】
なお、図３は本実施例のカード型記憶媒体（ＩＣカード）を示す機能ブロック図で、図中、図２にて説明した符号と同一の符号は同一部分を示している。この図３は、ＩＣカード１０に対して２つのアプリケーションＡ，Ｂが同時にアクセスを行なった場合の状態を機能的に示したもので、２種類の矢印により、その時のデータの流れおよび制御の流れが図示されている。
【００５４】
次に、上述のごとく構成された、本実施例のカード型記憶媒体としてのＩＣカード１０の動作を、図７〜図１５を参照しながら説明する。
まず、割込み処理部１７の動作を、図７に示すフローチャート（ステップＳ１〜Ｓ５）に従って説明する。
割込み処理部１７は、通信制御部１３からのコマンド受信割込みによって起動されると、まず、割込み可能状態を割込み禁止状態に切り換えてから（ステップＳ１）、通信制御部１３により受信されたコマンドを、コマンドキューイングテーブル１６のキューイング管理情報内のネクストポインタに示されるエントリ（アドレス）に、キューイングデータとして格納する（ステップＳ２）。
【００５５】
この後、キューイング管理情報内のネクストポインタを１エントリ分更新するとともに（ステップＳ３）、同じくキューイング管理情報内のキューイング数を更新（１加算）してから（ステップＳ４）、再び割込み可能状態に切り換えて（ステップＳ５）、割込み処理を終了し、コマンド受信割込みの発生時に実行していたアドレスにリターンする。
【００５６】
このとき、例えば図８に示すように、コマンドキューイングテーブル１６のキューイング管理情報内のネクストポインタが指示するエントリにコマンド３が格納された場合には、図７のステップＳ３の処理により、そのネクストポインタは、矢印Ａで示すエントリを指示するように更新される。
上述の割込み処理により、コマンドを受信すると、一旦割込み禁止状態にしてそのコマンドをコマンドキューイングテーブル１６に格納してコマンド受付を行なってから、直ちに割込み可能状態に推移しているため、複数のアプリケーションから非同期に発生するコマンドを随時受信するとができる。
【００５７】
図９は、コマンドディスパッチ処理部１８の動作を説明するためのフローチャート（ステップＳ６〜Ｓ１０）である。
この図９に示すように、コマンドディスパッチ処理部１８は、常時、コマンドキューイングテーブル１６のキューイング管理情報内のキューイング数を監視し（ステップＳ６）、コマンドキューイングテーブル１６内に受信コマンド（キューイングデータ）が存在する場合（ステップＳ６でＹＥＳ判定の場合）、キューイング管理情報内のネクストコマンドポインタが指示するエントリからそのコマンドを取り出す（ステップＳ７）。
【００５８】
そして、前記キューイング数を更新（１減算）するとともに（ステップＳ８）、ネクストコマンドポインタを１エントリ分更新してから（ステップＳ９）、そのコマンドに応じたコマンド処理を呼び出す（ステップＳ１０）。つまり、本実施例のコマンドディスパッチ処理部１８は、コマンドキューイングテーブル１６から読み出したコマンドに応じたコマンド処理を、ファイルアクセス処理部１５のコマンド処理部１９にディスパッチ（振分）して依頼・要求し、そのコマンド処理からのリターンを待つ。
【００５９】
このとき、例えば図１０に示すように、コマンドキューイングテーブル１６のキューイング管理情報内のネクストコマンドポインタがコマンド２を指示している場合には、図９のステップＳ７によりそのコマンド２が取り出された後、図９のステップＳ９の処理により、そのネクストコマンドポインタは、矢印Ｂで示すエントリつまりコマンド３を指示するように更新される。
【００６０】
ついで、図１１〜図１４により、ファイルアクセス制御部１５で行なわれる各種コマンド処理の手順について説明する。
図１１は、ファイルオープン処理手順を示すフローチャート（ステップＳ１１〜Ｓ２０）であり、この図１１に示すように、ファイルオープン処理に際しては、まず、コマンドキューイングテーブル１６から取り出されたエントリ（ファイルオープンを指示するコマンドメッセージをもつもの）に、ノードＩＤがセット済か否かを確認し、セット済でなければ、新たなファイルオープンコマンドであると判断して、ノードＩＤ生成部２１によりその処理に対するノードＩＤを創成する一方（ステップＳ１２）、ノードＩＤがセット済であれば、ファイルオープン処理の再実行であるとみなし、ステップＳ１２の処理をスキップする。
【００６１】
次に、アクセス排他制御部２０のファイル排他制御情報テーブル２０Ａを参照し、今回のファイルオープンコマンドのパラメータ情報であるファイル名とファイル排他制御情報テーブル２０Ａのエントリ（ファイル名）とを比較することにより、ファイル排他制御情報テーブル２０Ａに、今回のファイルオープン処理対象のファイル単位１２Ｂがエントリされているか否かを確認する（ステップＳ１３）。
【００６２】
ステップＳ１３の確認の結果、ファイル排他制御情報テーブル２０Ａに、今回のファイルオープン処理対象のファイル単位１２Ｂが未だエントリされていなければ、ファイル排他制御情報テーブル２０Ａに、そのファイル単位１２ＢについてのＤＦ名／ＥＦ名とノードＩＤとをファイル排他制御情報としてエントリ・登録してから（ステップＳ１５）、そのノードＩＤを、通知部２２および通信制御部１３の機能により、ファイルオープンを依頼した外部のアプリケーションに対して通知する（ステップＳ１６）。
【００６３】
ステップＳ１３により、今回のファイルオープン処理対象のファイル単位１２Ｂのエントリが確認された場合には、そのファイル単位１２Ｂは既にオープン済で他のコマンド処理のアクセス対象（他ノードで使用中）となっているので、本実施例では、パラメータ情報により指定されている動作モードが拒否モードか待機モードかを判定し（ステップＳ１４）、その動作モードに従って以降の処理を行なう。
【００６４】
動作モードとして拒否モード（REJECTモード）が指定されている場合には、そのファイルオープンコマンドの処理を拒否し、ファイル二重オープンエラーを、通知部２２および通信制御部１３の機能により、ファイルオープンを依頼した外部のアプリケーションに対して通知する（ステップＳ１７）。
一方、動作モードとして待機モード（WAITモード）が指定されている場合には、コマンド多重受信制御部１４の割込み処理部１７が、割込み禁止を行なって（ステップＳ１８）、今回のファイルオープンコマンドをコマンドキューイングテーブル１６に再エントリした後（ステップＳ１９）、割込み禁止を解除して割込み可能状態にしている（ステップＳ２０）。
【００６５】
なお、ステップＳ１９によるコマンドの再エントリは、図７のステップＳ２〜Ｓ４により説明した手順と全く同様に行なわれ、ノードＩＤ，コマンドメッセージが登録されるとともに、キューイング数の更新（１加算）およびネクストポインタの更新が行なわれる。
前述したステップＳ１６，Ｓ１７，Ｓ２０のいずれかを終了すると、本実施例のＩＣカード１０のＭＰＵ１１における処理は、図９にて説明したコマンドディスパッチ処理にリターンする。
【００６６】
ところで、マルチアプリケーションで同一ファイル単位１２Ｂに対してファイルオープンコマンドを発行した場合、前述したようにデッドロック状態に陥る可能性がある。これを防止するために、本実施例では、図６にて前述したごとく、ファイルオープンコマンドのパラメータ指定の動作モードが待機モードである場合、指定リトライ回数（パラメータリトライ回数）をパラメータ情報として追加することもできる。
【００６７】
このようにしてデッドロック防止機能をそなえた場合のファイルオープン処理動作を、図１２に示すフローチャート（ステップＳ１１〜Ｓ２３）に従って説明する。この図１２に示すように、基本的な動作は図１１により説明した動作と全く同じであり、図１２の各ステップのうち、図１１の各ステップに付与されたステップ番号と同一ステップ番号を付与されたものは、全く同一の処理を行なっているので、その説明は省略する。
【００６８】
図１２に示す処理動作と図１１に示す処理動作とで異なっている点は、ファイルオープンコマンドのコマンドキューイングテーブル１６への再エントリ処理（ステップＳ１９′）に際してエントリすべき情報が新たに２つ追加されている点と、新たなステップＳ２１〜Ｓ２３が付加されている点との２点である。
つまり、図１２に示す処理動作では、ステップＳ１９′による再エントリ処理に際して、図６に示したように、コマンドキューイングテーブル１６には、ノードＩＤ，コマンドメッセージの他に、実際のリトライ回数（そのファイルオープンコマンドを実行した回数）とパラメータリトライ回数とが登録されるとともに、キューイング数の更新（１加算）およびネクストポインタの更新が行なわれるようになっている。
【００６９】
そして、動作モードとして待機モード（WAITモード）が指定されている場合には、ステップＳ１４による判定後、前記リトライ回数をカウントアップ（１加算）した後（ステップＳ２１）、そのカウントアップ後のリトライ回数とパラメータ情報で指定される指定リトライ回数とを比較する（ステップＳ２２）。
その比較の結果、リトライ回数が指定リトライ回数を超えている場合、つまり指定リトライ回数だけファイルオープンコマンドの再実行を行なっても未だファイルオープン対象のファイル単位１２Ｂが他アプリケーション（他ノード）から解放されていない場合には、リトライオーバを、通知部２２および通信制御部１３の機能により、ファイルオープンを依頼した外部のアプリケーションに対してエラー通知し（ステップＳ２３）、そのファイルオープンコマンド処理を実行することなく終了する。この後、本実施例のＩＣカード１０のＭＰＵ１１における処理は、図９にて説明したコマンドディスパッチ処理にリターンする。上述のようにして、待機モード中のデッドロック状態の発生を確実に防止することができる。
【００７０】
図１３は、ファイルクローズ処理手順を示すフローチャート（ステップＳ３１〜Ｓ３３）であり、この図１３に示すように、ファイルクローズ処理に際しては、まず、ファイルクローズコマンドのパラメータ情報として指定されるノードＩＤが、ファイル排他制御情報テーブル２０Ａにエントリ・登録されているか否かを判定する（ステップＳ３１）。
【００７１】
そのノードＩＤが登録されている場合（ＹＥＳ判定の場合）には、ファイルクローズコマンドのパラメータ情報であるＤＦ名／ＥＦ名およびノードＩＤが一致するエントリを、ファイル排他制御情報テーブル２０Ａからクリアすることにより（ステップＳ３２）、アクセス排他制御部２０は、そのファイル単位１２Ｂに対するアクセス排他制御を終了するとともに、ファイルアクセス制御部１５は、そのファイル単位１２Ｂに対するアクセス処理を終了する。
【００７２】
一方、ステップＳ３１でノードＩＤが登録されていないと判定された場合（ＮＯ判定の場合）には、ファイルクローズ対象のファイル単位１２Ｂが未だオープンされていない旨（ファイル未オープン）を、通知部２２および通信制御部１３の機能により、ファイルオープンを依頼した外部のアプリケーションに対してエラー通知する（ステップＳ３３）。
【００７３】
前述したステップＳ３２，Ｓ３３のいずれかを終了すると、本実施例のＩＣカード１０のＭＰＵ１１における処理は、図９にて説明したコマンドディスパッチ処理にリターンする。
図１４は、ファイルアクセス処理手順を示すフローチャート（ステップＳ３４〜Ｓ３７）であり、この図１４に示すように、ファイルアクセス処理に際して、まず、ファイルアクセス制御部１５におけるコマンド処理部１９は、ファイル排他制御情報テーブル２０Ａを参照して、ファイルアクセスコマンドのパラメータ情報として指定されるノードＩＤがファイル排他制御情報テーブル２０Ａにエントリ・登録されているか否か、即ち、アクセス対象のファイル単位１２Ｂがオープン状態であるか否かを判定する（ステップＳ３４）。
【００７４】
そのノードＩＤが登録済（ＹＥＳ判定）であれば、コマンド処理部１９は、既にオープン状態のアクセス対象のファイル単位１２Ｂに対して、ファイルアクセスコマンドのパラメータ情報として指定されるアクセス情報（アクセス種別，レコードナンバー等）に応じたアクセスを行なってそのコマンド処理を実行する（ステップＳ３５）。この後、その処理結果（ファイルアクセスコマンドのレスポンス）を、通信制御部１３によりファイルアクセスを依頼した外部のアプリケーションに対して通知する（ステップＳ３６）。
【００７５】
一方、ステップＳ３４でノードＩＤが登録されていないと判定された場合（ＮＯ判定の場合）には、ファイルアクセス対象のファイル単位１２Ｂが未だオープンされていない旨（ファイル未オープン）を、通知部２２および通信制御部１３の機能により、ファイルオープンを依頼した外部のアプリケーションに対してエラー通知する（ステップＳ３７）。
【００７６】
前述したステップＳ３６，Ｓ３７のいずれかを終了すると、本実施例のＩＣカード１０のＭＰＵ１１における処理は、図９にて説明したコマンドディスパッチ処理にリターンする。
以下に、より具体的な例について図１５を参照しながら説明する。ここでは、例えば２つのアプリケーションＡ，Ｂが同一のＩＣカード１０内の２つのファイル単位１２Ｂ−１，１２Ｂ−２に同時にアクセスする場合を想定している。
【００７７】
図１５の▲１▼に示すように、まず、アプリケーションＡがＩＣカード１０内のファイル単位１２Ｂ−１に対してファイルオープンコマンドＯｐｅｎＡを発行し、そのファイル単位１２Ｂ−１がオープンされると、ＩＣカード１０からアプリケーションＡに対してノードＩＤ＝０１が通知される。
次に、図１５の▲２▼に示すように、アプリケーションＢがＩＣカード１０内のファイル単位１２Ｂ−１に対してファイルオープンコマンドＯｐｅｎＡを発行したとすると、この場合、ファイル単位１２Ｂ−１は、既にアプリケーションＡによって確保（オープン済）されているため、ファイルオープンコマンドＯｐｅｎＡのパラメータ情報で指定される動作モードに従って動作を行なう。ここでは、待機モード（Waitモード）が指定されているので、アプリケーションＢからのファイルオープンコマンドＯｐｅｎＡは、ファイル単位１２Ｂ−１が解放されるまで待機する（排他制御）。
【００７８】
このような状態で、図１５の▲３▼に示すように、アプリケーションＡがファイル単位１２Ｂ−１に対してファイルアクセスコマンド（ノードＩＤ＝０１）を発行すると、ＩＣカード１０は、ファイル単位１２Ｂ−１がノードＩＤ＝０１によりオープン済であるため、正常に当該アクセスコマンドを受け付け、そのコマンドに応じたアクセス処理を実行する。
【００７９】
そして、図１５の▲４▼に示すように、アプリケーションＡから、ノードＩＤ＝０１をもつファイルクローズコマンドＣｌｏｓｅが発行されると、ファイル単位１２Ｂ−１が解放されるため、待機状態であったアプリケーションＢからのファイル単位１２Ｂ−１に対するファイルオープンコマンドＯｐｅｎＡが実行可能になり、そのファイルオープン処理が実行されると、図１５の▲５▼に示すように、ＩＣカード１０からアプリケーションＢに対してノードＩＤ＝０２が通知される。
【００８０】
その後、図１５の▲６▼に示すように、アプリケーションＢは、ファイル単位１２Ｂ−１および１２Ｂ−２に対してオープン／アクセス処理を実行しているが、アプリケーションＡからＩＣカード１０に対するコマンドが発行されていないため、ファイル排他制御を行なう必要がなく、通常の状態で処理が実行される。
ただし、図１５の▲６▼で示すアプリケーションＢからのファイル単位１２Ｂ−２へのファイルオープンコマンドＯｐｅｎＢが、万一、ファイルオープンコマンドＯｐｅｎＡとしてファイル単位１２Ｂ−１に対して発行された場合には、同一のアプリケーションＢからのコマンドであっても、ファイル単位１２Ｂ−１は、アプリケーションＢによりノードＩＤ＝０２で確保されているため、パラメータ情報で指定される動作モード（待機／拒否モード）に移行する。
【００８１】
この場合、同一のアプリケーションＢが同一のファイル１２Ｂ−１に対して別々にオープンコマンドを発行していることになるため、ダンマリ状態（デッドロック状態）が発生してしまう。そこで、本実施例では、図１２にて前述したように、ファイルオープンコマンドのパラメータ情報でリトライ回数を指定することで、上述のようなデッドロック状態を回避することができる。
【００８２】
また、前述したような排他制御を行なうことにより、例えばアプリケーションＡ，Ｂが金額情報をもつ同一のファイル単位１２Ｂ−１に対してアクセスしようとした場合、一方のアプリケーションＡでファイル単位１２Ｂ−１を確保している間は、他方のアプリケーションＢによるファイルアクセスは不可能となるため、金額的なデータ矛盾等の発生を確実に防止することができる。
【００８３】
このように、本発明の一実施例によれば、コマンド多重受信制御部１４により非同期で発生する複数のアプリケーションからのコマンドの受信が可能になるほか、アクセス排他制御部２０によりアプリケーション毎（ノードＩＤ毎）の排他アクセスが可能になってデータ矛盾等の発生を防止できるので、１枚のＩＣカード１０に対して複数のアプリケーションからコマンドを同時に発行することが可能になる。
【００８４】
従って、従来通りのシングルアプリケーションでの利用に加え、マルチアプリケーションを動作させるようなシステムにも対応できるＩＣカード１０が提供され、システム形態の幅が広がり、ユーザニーズの多様化や高度化に確実に対応することができるのである。
なお、上述した実施例では、１枚のＩＣカード１０に対して２つのアプリケーションから同時にアクセスした場合について説明したが、本発明は、これに限定されるものではなく、３つ以上のアプリケーションから同時にアクセスを行なった場合にも上述と同様の作用効果を得ることができる。
【００８５】
また、上述した実施例では、カード型記憶媒体がＩＣカードである場合について説明したが、本発明は、これに限定されるものではなく、光カードなどの他種のカード型記憶媒体にも同様に適用され、上記実施例と同様の作用効果を得ることができる。
【００８６】
【発明の効果】
以上詳述したように、本発明のカード型記憶媒体によれば、コマンド多重受信制御部の機能により、非同期で発生する外部からのコマンドの受信が可能になるほか、アクセス排他制御部の機能によりアクセス排他制御が実現されてデータ矛盾等の発生を防止できるので、１枚のカード型記憶媒体に対して複数のアプリケーションからコマンドを同時に発行することが可能になる。
【００８７】
従って、従来通りのシングルアプリケーションでの利用に加え、マルチアプリケーションを動作させるようなシステムにも対応できるカード型記憶媒体を提供可能になり、システム形態の幅が広がり、ユーザニーズの多様化や高度化に確実に対応できる効果がある（請求項１，２，５，６）。
また、ファイルオープンコマンド処理を行なう際に対象ファイル単位がオープン状態（使用中）である時には、パラメータ情報として設定される動作モードにより、その後の処理として待機するか拒否するかを選択でき、ユーザあるいはアプリケーション側からの要望に応じた各種対応を実現することができる（請求項３）。
【００８８】
このとき、特に動作モードが待機モードである場合には、リトライ回数を指定することにより、ファイルオープンコマンド処理を受け付けたままデッドロック状態に陥ることを確実に回避することができる（請求項４）。
【図面の簡単な説明】
【図１】本発明の原理ブロック図である。
【図２】本発明の一実施例としてのカード型記憶媒体（ＩＣカード）の構成を示すブロック図である。
【図３】本実施例のカード型記憶媒体（ＩＣカード）を示す機能ブロック図である。
【図４】本実施例のキューイングテーブルの内容を説明するための図である。
【図５】本実施例のファイル排他制御情報テーブルの内容を説明するための図である。
【図６】  本実施例のキューイングテーブルの内容の変形例を説明するための図である。
【図７】本実施例の割込み処理手順を説明するためのフローチャートである。
【図８】割込み処理時のコマンドキューイングテーブルにおけるポインタの状態を説明するための図である。
【図９】本実施例のコマンドディスパッチ処理手順を説明するためのフローチャートである。
【図１０】コマンドディスパッチ処理時のコマンドキューイングテーブルにおけるポインタの状態を説明するための図である。
【図１１】本実施例のファイルオープン処理手順を説明するためのフローチャートである。
【図１２】デッドロック保護機能を付加した本実施例のファイルオープン処理手順を説明するためのフローチャートである。
【図１３】本実施例のファイルクローズ処理手順を説明するためのフローチャートである。
【図１４】本実施例のファイルアクセス処理手順を説明するためのフローチャートである。
【図１５】本実施例の動作を具体的に説明すべくＩＣカードと２つのアプリケーションとの間でのコマンドシーケンスを示す図である。
【図１６】一般的なＩＣカードの外観を示す平面図である。
【図１７】一般的なＩＣカードのハードウエア構成を示すブロック図である。
【図１８】ＩＣカードにおける従来の通信制御機能およびコマンド処理機能を説明するための図である。
【図１９】従来のＩＣカードにおいて生じるレスポンスブロック待ちタイムオーバについて説明するための図である。
【図２０】従来のＩＣカードにおいて生じるデータ矛盾について説明するための図である。
【符号の説明】
１  カード型記憶媒体
２  記憶部
３  通信制御部
４  ファイルアクセス制御部
５  コマンド多重受信制御部
６  アクセス排他制御部
１０  ＩＣカード（カード型記憶媒体）
１１  ＭＰＵ
１２  メモリ（記憶部）
１２Ａ  ファイル領域
１２Ｂ，１２Ｂ−１，１２Ｂ−２  ファイル単位（ＤＦ／ＥＦ）
１３  通信制御部
１４  コマンド多重受信制御部
１５  ファイルアクセス制御部
１６，１６Ａ  コマンドキューイングテーブル
１７  割込み処理部
１８  コマンドディスパッチ処理部
１９  コマンド処理部
２０  アクセス排他制御部
２０Ａ  ファイル排他制御情報テーブル
２１  ノードＩＤ生成部（識別子生成部）
２２  通知部
【図１】
0003691871.tif 000002
【図２】
0003691871.tif 000003
【図３】
0003691871.tif 000004
【図４】
0003691871.tif 000005
【図５】
0003691871.tif 000006
【図６】
0003691871.tif 000007
【図７】
0003691871.tif 000008
【図８】
0003691871.tif 000009
【図９】
0003691871.tif 000010
【図１０】
0003691871.tif 000011
【図１１】
0003691871.tif 000012
【図１２】
0003691871.tif 000013
【図１３】
0003691871.tif 000014
【図１４】
0003691871.tif 000015
【図１５】
0003691871.tif 000016
【図１６】
0003691871.tif 000017
【図１７】
0003691871.tif 000018
【図１８】
0003691871.tif 000019
【図１９】
0003691871.tif 000020
【図２０】
0003691871.tif 000021