(57)【要約】【課題】排他制御の対象とすべき処理の実行中に、他の処理の実行要求を受け付けた場合であっても、適切に処理を制御することができる情報処理装置等を提供することを目的とする。【解決手段】排他制御の対象である第１処理の実行中に第２処理の実行要求を受け付けた場合に、第１処理と第２処理について所定の条件が満たされていると判定した場合には、第１処理についての排他制御を解除し、第２処理を実行する。【選択図】図８
2020194586.tif 000002
【特許請求の範囲】
【請求項１】
メモリとプロセッサを備える電子情報記憶媒体であって、
前記プロセッサは、
排他制御の対象である第１処理の実行中に排他制御の対象である第２処理の実行要求を受け付けた場合に、前記第１処理と前記第２処理について所定の条件を満たしているか判定し、前記所定の条件が満たされていると判定した場合には、前記第１処理についての前記排他制御を解除し、前記第２処理を実行し、
第１アプリケーションに従って前記第１処理を実行している際に、前記第１アプリケーションについて前記第２処理の実行要求を受け付けた場合に、前記所定の条件が満たされていると判定することを特徴とする電子情報記憶媒体。
【請求項２】
請求項１に記載の電子情報記憶媒体であって、
前記プロセッサは、排他制御の対象となる処理の実行中に、前記処理の取消事由が生じた場合に、前記排他制御を解除することを特徴とする電子情報記憶媒体。
【請求項３】
メモリとプロセッサを備える電子情報記憶媒体による情報処理方法であって、
前記プロセッサが、排他制御の対象である第１処理の実行中に排他制御の対象である第２処理の実行要求を受け付けた場合に、前記第１処理と前記第２処理について所定の条件を満たしているか判定し、前記所定の条件が満たされていると判定した場合には、前記第１処理についての前記排他制御を解除し、前記第２処理を実行する工程を含み、
前記プロセッサは、第１アプリケーションに従って前記第１処理を実行している際に、前記第１アプリケーションについて前記第２処理の実行要求を受け付けた場合に、前記所定の条件が満たされていると判定することを特徴とする情報処理方法。
【請求項４】
メモリとプロセッサを備える電子情報記憶媒体における前記プロセッサを、
排他制御の対象である第１処理の実行中に排他制御の対象である第２処理の実行要求を受け付けた場合に、前記第１処理と前記第２処理について所定の条件を満たしているか判定し、前記所定の条件が満たされていると判定した場合には、前記第１処理についての前記排他制御を解除し、前記第２処理を実行する制御手段として機能させ、
前記制御手段は、第１アプリケーションに従って前記第１処理を実行している際に、前記第１アプリケーションについて前記第２処理の実行要求を受け付けた場合に、前記所定の条件が満たされていると判定することを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
ＩＣチップ等の電子情報記憶媒体の技術分野に関する。
【背景技術】
【０００２】
ＵＩＭ（User Identity Module）カードをはじめとする従来のＩＣカードは、複数のアプリケーションを搭載することがあっても、これらのアプリケーションを管理する主体はＩＣカード発行者のみであった。一方、ＮＦＣ（Near Field Communication）対応のＵＩＭカードでは、ＵＩＭカード発行者に加えて、クレジット決済サービスなどのサービスを提供するサービス事業者が自ら提供するアプリケーションの管理主体となる。よって、特許文献１に開示されているように、複数のサービス事業者が各アプリケーションの管理主体となりうる。
【０００３】
例えば、図１に示すように、ユーザが、ＵＩＭカードＵＣが装着された携帯端末ＭＰを使って、利用するサービスに対応するアプリケーションをサービス提供者ＳＰ１、ＳＰ２のアプリケーションダウンロードサーバＡＳ２、ＡＳ３からネットワークＮＷを介してダウンロードするようになってきており、従来のＵＩＭ発行者ＵＩに加え、全く独立した主体である複数のサービス事業者ＳＰ１、ＳＰ２がＵＩＭカードＵＣに関与することがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４５２３８１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
アプリケーションの管理主体がＵＩＭカード発行者のみ場合は、その管理主体がＵＩＭのアプリケーションに関する処理を全て把握することができた。しかし、ＵＩＭに関与する主体が複数になったことにより、アプリケーション管理がそれぞれの主体によって独立して行われるため様々な問題が生じている。
【０００６】
例えば、アプリケーションダウンロードサーバからアプリケーションをダウンロードし、ＵＩＭカード内へダウンロードしたプログラムを配置する処理（ロード処理）は、現在のＵＩＭカードにとって負荷が大きいため（メモリが小さくＣＰＵも非力であるため）複数のプログラムのロード処理を並列に実行することはできないが、管理主体が複数となることで、そういった要求が起こり得る。具体的には、一つのアプリケーションのプログラムについてロード処理を実行している際に、他のアプリケーションのプログラムについてロード処理の開始要求を受け付けること、すなわち、ロード処理の競合が以前より起こりやすくなっている。
【０００７】
そこで、本発明は、ロード処理などの排他制御の対象とすべき処理の実行中に、他の処理の実行要求を受け付けた場合であっても、適切に処理を制御することができる電子情報記憶媒体や情報処理方法等を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に記載の発明は、メモリとプロセッサを備える電子情報記憶媒体であって、前記プロセッサは、排他制御の対象である第１処理の実行中に排他制御の対象である第２処理の実行要求を受け付けた場合に、前記第１処理と前記第２処理について所定の条件を満たしているか判定し、前記所定の条件が満たされていると判定した場合には、前記第１処理についての前記排他制御を解除し、前記第２処理を実行し、第１アプリケーションに従って前記第１処理を実行している際に、前記第１アプリケーションについて前記第２処理の実行要求を受け付けた場合に、前記所定の条件が満たされていると判定することを特徴とする。
【０００９】
請求項２に記載の発明は、請求項１に記載の電子情報記憶媒体であって、前記プロセッサは、排他制御の対象となる処理の実行中に、前記処理の取消事由が生じた場合に、前記排他制御を解除することを特徴とする。
【００１０】
請求項３に記載の発明は、メモリとプロセッサを備える電子情報記憶媒体による情報処理方法であって、前記プロセッサが、排他制御の対象である第１処理の実行中に排他制御の対象である第２処理の実行要求を受け付けた場合に、前記第１処理と前記第２処理について所定の条件を満たしているか判定し、前記所定の条件が満たされていると判定した場合には、前記第１処理についての前記排他制御を解除し、前記第２処理を実行する工程を含み、前記プロセッサは、第１アプリケーションに従って前記第１処理を実行している際に、前記第１アプリケーションについて前記第２処理の実行要求を受け付けた場合に、前記所定の条件が満たされていると判定することを特徴とする。
【００１１】
請求項４に記載の発明は、メモリとプロセッサを備える電子情報記憶媒体における前記プロセッサを、排他制御の対象である第１処理の実行中に排他制御の対象である第２処理の実行要求を受け付けた場合に、前記第１処理と前記第２処理について所定の条件を満たしているか判定し、前記所定の条件が満たされていると判定した場合には、前記第１処理についての前記排他制御を解除し、前記第２処理を実行する制御手段として機能させ、前記制御手段は、第１アプリケーションに従って前記第１処理を実行している際に、前記第１アプリケーションについて前記第２処理の実行要求を受け付けた場合に、前記所定の条件が満たされていると判定することを特徴とする。
【００１２】
また、別の第１発明は、メモリとプロセッサを備える電子情報記憶媒体であって、前記プロセッサは、排他制御の対象であり、且つ、一連の複数のコマンドからなる第１処理の実行中に、排他制御の対象であり、且つ、一連の複数のコマンドからなる第２処理の実行要求を受け付けた場合に、前記第１処理と前記第２処理について所定の条件を満たしているか判定し、前記所定の条件が満たされていると判定した場合には、前記第１処理についての前記排他制御を解除し、前記第２処理を実行することを特徴とする。
【００１３】
別の第２発明は、メモリとプロセッサを備える電子情報記憶媒体であって、前記プロセッサは、排他制御の対象である第１処理の実行中に排他制御の対象である第２処理の実行要求を受け付けた場合に、前記第１処理と前記第２処理について所定の条件を満たしているか判定し、前記所定の条件が満たされていると判定した場合には、前記第１処理についての前記排他制御を解除し、前記第２処理を実行し、第１アプリケーションに従って前記第１処理を実行している際に、前記第１アプリケーションより優先度の高い第２アプリケーションについて前記第２処理の実行要求を受け付けた場合に、前記所定の条件が満たされていると判定することを特徴とする。
【００１４】
別の第３発明は、前記別の第１発明であって、前記プロセッサは、前記第１処理の処理対象よりも前記第２処理の処理対象の優先度が高い場合に、前記所定の条件が満たされていると判定することを特徴とする。
【００１５】
別の第４発明は、メモリとプロセッサを備える電子情報記憶媒体による情報処理方法であって、前記プロセッサが、排他制御の対象であり、且つ、一連の複数のコマンドからなる第１処理の実行中に、排他制御の対象であり、且つ、一連の複数のコマンドからなる第２処理の実行要求を受け付けた場合に、前記第１処理と前記第２処理について所定の条件を満たしているか判定し、前記所定の条件が満たされていると判定した場合には、前記第１処理についての前記排他制御を解除し、前記第２処理を実行する工程を含むことを特徴とする。
【００１６】
別の第５発明は、メモリとプロセッサを備える電子情報記憶媒体における前記プロセッサを、排他制御の対象であり、且つ、一連の複数のコマンドからなる第１処理の実行中に、排他制御の対象であり、且つ、一連の複数のコマンドからなる第２処理の実行要求を受け付けた場合に、前記第１処理と前記第２処理について所定の条件を満たしているか判定し、前記所定の条件が満たされていると判定した場合には、前記第１処理についての前記排他制御を解除し、前記第２処理を実行する制御手段として機能させることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、排他制御の対象である第１処理の実行中に第２処理の実行要求を受け付けた場合に、第１処理と第２処理について所定の条件を満たしているか否かに応じて、第１処理についての排他制御が解除されることから、適切に第１処理と第２処理を制御することができる。
【図面の簡単な説明】
【００１８】
【図１】ＮＦＣサービスシステムの概要を示す図である。
【図２】本実施形態に係る携帯端末１の概要構成例を示すブロック図である。
【図３】本実施形態に係るＵＩＭカード１８の概要構成例を示すブロック図である。
【図４】ＳＤ（Security Domain）によるアプリケーションプログラムのロード処理を示すシーケンス図である。
【図５】（Ａ）はＳＥＬＥＣＴコマンドの構成例を示す図であり、（Ｂ）はＩＮＩＴＩＡＬＩＺＥ  ＵＰＤＡＴＥコマンドの構成例を示す図であり、（Ｃ）はＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドの構成例を示す図であり、（Ｄ）はＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドの構成例を示す図であり、（Ｅ）はＬＯＡＤコマンドの構成例を示す図である。
【図６】（Ａ）、（Ｂ）はロジカルチャネルの概要を示す図である。
【図７】ロード処理時におけるメモリの使用例を示す図である。
【図８】ＣＰＵ１８１による排他制御処理を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、携帯端末に備えられたＵＩＭカードに対して本発明を適用した場合の実施の形態である。
【００２０】
まず、図２等を参照して、本実施形態に係る携帯端末１の構成及び機能概要を説明する。
【００２１】
［１．携帯端末１の構成］
図２は、本実施形態に係る携帯端末１の概要構成例を示すブロック図である。図２に示すように、携帯端末１は、制御部１１、記憶部１２、無線通信部１３、表示部１４、入力部１５、ＩＣカードインターフェース１６、及びＣＬＦ１９等を備えて構成され、これらの構成要素はバス１７を介して相互に接続される。なお、携帯端末１は、例えば携帯電話機やスマートフォン、タブレット端末等である。
【００２２】
制御部１１は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、及びＲＡＭ（Random Access Memory）等により構成される。記憶部１２は、例えばフラッシュメモリ等の不揮発性メモリにより構成される。上記ＲＯＭまたは記憶部１２には、オペレーティングシステム（ＯＳ）及びミドルウェアが記憶される。また、記憶部１２には、携帯端末１にインストールされたＡＰＩ（Application Program Interface）及びアプリケーションソフトウェア（アプリケーションプログラム言語から構成されるソフトウェア）等が記憶される。ＡＰＩは、アプリケーションソフトウェアからオペレーティングシステムの機能を利用するためのインターフェースである。アプリケーションソフトウェアは、例えば所定のサーバからダウンロード可能なプログラムである。
【００２３】
無線通信部１３は、アンテナを有し、移動体通信網における基地局との間で行われる無線通信を制御する。表示部１４は、例えばタッチパネル方式の表示パネルを有し、表示パネルへの表示制御、及びユーザからの操作指示の受け付けを行う。入力部１５は、ユーザからの操作指示を入力するための操作ボタンを有し、操作ボタンに応じた信号を制御部１１に出力する。ＩＣカードインターフェース１６は、制御部１１とＵＩＭカード１８との間のインターフェース、及び制御部１１とＣＬＦ１９との間のインターフェースを担う。
【００２４】
ＵＩＭカード１８は、ＵＩＣＣ（Universal Integrated Circuit Card）の一つであり、例えば、従来のＳＩＭ（Subscriber Identity Module）をベースに機能を拡張された接触型ＩＣチップを搭載する。
【００２５】
ＣＬＦ１９は、ＮＦＣの規格で規定される非接触通信を行う非接触型ＩＣチップであり、非接触通信のフィールド内で読取装置（図示せず）との間で各種信号の送受信を行うためのアンテナに接続されている。そして、ユーザが携帯端末１を読取装置に翳すと、読取装置から送信されたコマンドを、インターフェイス（図示せず）を介してＳＩＭカード１８へ送信するようになっている。なお、ＣＬＦ１９は、携帯端末１のＯＳにより操作可能になっている。
【００２６】
［２．ＩＣチップＣの構成］
図３は、本実施形態に係るＵＩＭカード１８に搭載されるＩＣチップＣの概要構成例を示すブロック図である。図３に示すように、ＩＣチップＣは、ＣＰＵ１８１（「プロセッサ」の一例）、ＲＡＭ１８２、不揮発性メモリ１８３、及びＩ／Ｏ回路１８４等を備え、これらの構成要素はバス１８５を介して相互に接続される。
【００２７】
不揮発性メモリ１８３は、例えばフラッシュメモリであるが、ＥＥＰＲＯＭであってもよい。ＲＡＭ１８２には、例えばＯＳ及びミドルウェアが機能するうえで一時的に必要となるデータが記憶される。不揮発性メモリ１８３には、例えばＯＳ及びミドルウェアが記憶される。また、不揮発性メモリ１８３には、ＩＣチップＣ自身（全体）乃至ＩＣチップＣ内のアプリケーションプログラムを管理するためのアプリケーションであるＳＤ（Security Domain）が一つ以上記憶されている。
【００２８】
Ｉ／Ｏ回路１８４は、ＩＳＯ７８１６等によって定められた、Ｃ１〜Ｃ８の８個の接続端子を有する。ここで、Ｃ１端子は電源端子（ＶＣＣ）であり、Ｃ５端子はグランド端子（ＧＮＤ）である。また、Ｃ２端子は、リセット端子（ＲＳＴ）であり、Ｃ３端子は、クロック端子（ＣＬＫ）である。また、Ｃ７端子は、ＣＰＵ１８１と制御部１１との間の通信のために用いられる。また、Ｃ６端子は、ＣＰＵ１８１とＣＬＦ１９との間の通信のために用いられる。なお、上述したように、ＣＰＵ１８１とＣＬＦ１９間の通信プロトコルには、ＳＷＰ（Single Wire Protocol）が適用される。
【００２９】
そして、ＣＰＵ１８１は、ＣＬＦ１９からコマンドを受信すると、当該コマンドに応じたコマンド処理を実行し、当該処理の結果を示す応答をＣＬＦ１９へ行う（返信する）。また、ＣＰＵ１８１は、制御部１１からコマンドを受信すると、当該コマンドに応じたコマンド処理を実行し、当該処理の結果を示す応答を制御部１１へ行う。
【００３０】
次に、ＳＤについて説明する。ＳＤには、ＩＣカード発行者のセキュリティポリシーを実現するＩＳＤ（Issuer SD）と、ＮＦＣサービス提供者のセキュリティポリシーを実現するＳＳＤ（Supplementary SD）がある。
【００３１】
ＳＤは主に以下の機能をサポートすることで、ＩＣチップＣ内のカードコンテント（アプリケーションプログラム、アプリケーションインスタンス等）に対して、ＩＣカード発行者やＮＦＣサービス提供者の管理およびセキュリティポリシーを実現する。なお、以下、アプリケーションインスタンスをアプリケーションと表記することがある。
【００３２】
（機能例）
１．ＩＣカードのライフサイクル管理
２．アプリケーションプログラムのライフサイクル管理
３．アプリケーションインスタンスのライフサイクル管理
４．アプリケーションプログラムのロード
５．アプリケーションインスタンスの生成（インストール）
６．アプリケーションプログラム、インスタンスの削除
７．アプリケーション向け発行データの書込み
８．データの読出し
９．セキュアな通信路の確保(Secure Channel Protocol:SCP)
【００３３】
ここで、図４を用いて「４．アプリケーションプログラムのロード」について説明する。アプリケーションプログラムのロード処理は、アプリケーションダウンロードサーバ（以下、「サーバ」という場合がある）からアプリケーションプログラムをダウンロードする処理である（ダウンロードされるプログラムをロードプログラムという場合がある）。ＩＣチップＣ側では、予め記憶されているＳＤのうち、サーバ側から後述するＳＥＬＥＣＴコマンドにより選択されたＳＤが主体となってロード処理を行う。なお、一般にＳＥＬＥＣＴコマンドでは、ロードプログラムの送信元であるサーバを管理するサービス提供者が予め提供したＳＤが選択される。また、以下、ＳＤを主語として処理の説明をする場合、実際には、ＣＰＵ１８１がＳＤを実行することにより処理が行われる。
【００３４】
まず、サーバは、ロード処理を実行させるＳＤを指定するためのＳＥＬＥＣＴコマンドを送信する（ステップＳ１）。
【００３５】
ＳＥＬＥＣＴコマンドは、例えば、図５（Ａ）に示す構成となっている。ＳＥＬＥＣＴコマンドは、５バイトのコマンドヘッダ部５０１Ａと５バイトのデータフィールド部５０１Ｂから構成されている。コマンドヘッダ部５０１Ａの１バイト目はロジカルチャネル番号を示している。例えば、図５（Ａ）の例では、「００」（１６進数表記。以下同様）となっておりロジカルチャネル＃０を示している。コマンドヘッダ部５０１Ａの２バイト目はコマンドの内容（すなわち、「Ａ４」がＳＥＬＥＣＴ）を示している。コマンドヘッダ部５０１Ａの３バイト目はモードを示している。例えば、図５（Ａ）の例では「０４」となっており、データフィールド部５０１Ｂに格納されたアプリケーションＩＤ（ＡＩＤ）で識別されるアプリケーション（ＳＤ）を選択するモードを示している。コマンドヘッダ部５０１Ａの４バイト目は検索順序（先頭から検索するか又は最後尾から検索するか）を示している。コマンドヘッダ部５０１Ａの５バイト目はＡＩＤ長を示している。一方、データフィールド部５０１ＢにはＡＩＤを示す値が格納されている。すなわち、図５（Ａ）の例は、ＩＣチップＣのＯＳが管理するアプリ一覧の先頭から、アプリ名が「１１  ２２  ３３  ４４  ５５」であるアプリをロジカルチャネル＃０で選択する、ことを表している。
【００３６】
なお、ロジカルチャネルは、ＩＣチップＣの外部にあるアプリケーションがＩＣチップＣの内部にあるアプリケーションを特定する際に使用する論理上の通信路の識別番号を示している。例えば、図６（Ａ）は、外部プログラム２がロジカルチャネル＃０を介してＳＤへコマンドを送信し、ＳＤからレスポンスを受信することが可能な状態であることを示している。一方、図６（Ｂ）は、外部プログラム２がロジカルチャネル＃３を介してＡＰ１へコマンドを送信し、ＡＰ１からレスポンスを受信することが可能な状態であることを示し、また、外部プログラム１がロジカルチャネル＃１を介してＳＤへコマンドを送信し、ＳＤからレスポンスを受信することが可能な状態であることを示している。つまり、ロジカルチャネルは外部プログラムと内部プログラムの論理上の通信路を示しており、ロジカルチャネルの数はＩＣチップＣ毎に定められている。したがって、ＩＣチップＣがサポートしないロジカルチャネル番号へ外部プログラムからＳＥＬＥＣＴコマンドを受信した場合には、エラーが返信されることとなる。
【００３７】
図４に戻り、ＳＥＬＥＣＴコマンドにより選択されたＳＤは、正常終了応答をサーバに送信する（ステップＳ２）。但し、サポートしていないロジカルチャネル番号が指定された場合や、ＳＥＬＥＣＴコマンドに含まれるＡＩＤが見つからなかった場合はエラーが発生したことを示すレスポンスをサーバに送信する。なお、全てのロジカルチャネルが使用中であっても、サポートしているロジカルチャネル番号が指定されれば、ＳＥＬＥＣＴコマンドを処理することができるが、その前に選択状態であったアプリケーションのセッションは中断される。
【００３８】
次に、ＳＤとサーバは相互認証、セキュアチャネル開設処理を行う（ステップＳ３）。具体的には、サーバ側からＩＮＩＴＩＡＬＩＺＥ  ＵＰＤＡＴＥコマンド及びＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドが送信され、それに対するＳＤ側からのレスポンスが行われる。
【００３９】
ＩＮＩＴＩＡＬＩＺＥ  ＵＰＤＡＴＥコマンドは、例えば、図５（Ｂ）に示す構成となっている。ＩＮＩＴＩＡＬＩＺＥ  ＵＰＤＡＴＥコマンドは、５バイトのコマンドヘッダ部５０２Ａと８バイトのデータフィールド部５０２Ｂから構成されている。コマンドヘッダ部５０２Ａの１バイト目はロジカルチャネル番号を示している。コマンドヘッダ部５０２Ａの２バイト目はコマンドの内容（すなわち、「５０」がＩＮＩＴＩＡＬＩＺＥ  ＵＰＤＡＴＥ）を示している。コマンドヘッダ部５０２Ａの３バイト目は相互認証、セキュアチャネル開設に用いる鍵識別子を示している。コマンドヘッダ部５０２Ａの４バイト目には固定値「００」が格納されている。コマンドヘッダ部５０２Ａの５バイト目はホストチャレンジ長を示している。一方、データフィールド部５０２Ｂにはホストチャレンジを示す値が格納されている。なお、ホストチャレンジとは、セキュアチャネル用のセッションキー生成に用いる８バイトの乱数である。
【００４０】
ＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドは、例えば、図５（Ｃ）に示す構成となっている。ＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドは、５バイトのコマンドヘッダ部５０３Ａと１０バイトのデータフィールド部から構成されており、データフィールド部はホスト認証コード部５０３Ｂと、ＭＡＣ部５０３Ｃとから構成されている。コマンドヘッダ部５０３Ａの１バイト目はロジカルチャネル番号及びセキュアメッセージコーディングの有無を示している。セキュアメッセージコーディングの有無は、下位から３ビット目が「１」の場合、セキュアメッセージコーディング有りを示し、下位から３ビット目が「０」の場合、セキュアメッセージコーディング無しを示す。図５（Ｃ）におけるコマンドヘッダ部５０３Ａの１バイト目の「８４」は１６進数表記の「８４」であり、２進数表記では「１００００１００」であるので、セキュアメッセージコーディング有りを示している。コマンドヘッダ部５０３Ａの２バイト目はコマンドの内容（すなわち、「８２」がＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥ）を示している。コマンドヘッダ部５０３Ａの３バイト目はセキュアチャネルのセキュリティレベルを示している。コマンドヘッダ部５０３Ａの４バイト目には固定値「００」が格納されている。コマンドヘッダ部５０３Ａの５バイト目はデータフィールド部の長さを示している。一方、ホスト認証コード部５０３Ｂには、ホスト認証コードを示す値が格納されており、ＭＡＣ部５０３Ｃには、ＭＡＣを示す値が格納されている。
【００４１】
図４に戻り、ステップＳ３の処理が終了すると、サーバは、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドをＳＤに送信する（ステップＳ４）。
【００４２】
ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドは、例えば、図５（Ｄ）に示す構成となっている。ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドは、５バイトのコマンドヘッダ部５０４Ａと可変長のデータフィールド部から構成されており、データフィールド部はロードプログラム情報部５０４Ｂと、ＳＤ情報部５０４Ｃと、補足情報部５０４Ｃから構成されている。コマンドヘッダ部５０４Ａの１バイト目はロジカルチャネル番号及びセキュアメッセージコーディングの有無を示している。コマンドヘッダ部５０４Ａの２バイト目はコマンドの内容（すなわち、「Ｅ６」がＩＮＳＴＡＬＬ）を示している。コマンドヘッダ部５０４Ａの３バイト目はモード（すなわち、「０２」がｆｏｒ  ｌｏａｄ）を示している。コマンドヘッダ部５０４Ａの４バイト目には固定値「００」が格納されている。コマンドヘッダ部５０４Ａの５バイト目はデータフィールド部の長さを示している。一方、ロードプログラム情報部５０４Ｂには、ロードプログラム情報（すなわち、ロードされるパッケージ（プログラム）のＡＩＤの長さとその値が格納される。ＳＤ情報部５０４Ｃには、ロードされたパッケージ（プログラム）を管理するＳＤを示すＡＩＤの長さとその値が格納される。補足情報部５０４Ｃには、その他の情報（優先度を示す情報、プログラムサイズを示す情報等）が格納される。なお、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドは、セキュアチャネルが必須のため、実際にＩＣチップＣへ送信する場合、ＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドのコマンドヘッダ部５０３Ａの３バイト目で指定したセキュリティレベルに従ってセキュアメッセージコーディングを施す。例えば、ＭＡＣ付与及びデータフィールド部の暗号化がセキュリティレベルとして指定された場合、データフィールド部５０４Ｄの後にＭＡＣが付与され、データフィールド部５０４Ｂ、５０４Ｃ及び５０４Ｄは何れも暗号化される。
【００４３】
図４に戻り、ステップＳ４の処理に対してＳＤは、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドについて正常に処理が行われると、正常終了応答をサーバに送信する（ステップＳ５）。
【００４４】
次に、サーバは、ＬＯＡＤ（０）コマンドをＳＤに送信する（ステップＳ６）。
【００４５】
ＬＯＡＤコマンドは、ロードプログラムをｎ個に分割して送信する。ＬＯＡＤコマンドは、例えば、図５（Ｅ）に示す構成となっている。ＬＯＡＤコマンドは、５バイトのコマンドヘッダ部５０５Ａとデータフィールド部５０５Ｂから構成されている。コマンドヘッダ部５０５Ａの１バイト目はロジカルチャネル番号及びセキュアメッセージコーディングの有無を示している。コマンドヘッダ部５０５Ａの２バイト目はＬＯＡＤコマンドの内容（すなわち、「Ｅ８」がＬＯＡＤ）を示している。コマンドヘッダ部５０５Ａの３バイト目にはコマンド連鎖中（ロードプログラムを分割送信中）であることを示すデータ（００）か、最終送信分であることを示すデータ（８０）が格納されている。コマンドヘッダ部５０５Ａの４バイト目にはシークエンス番号（ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを送信後、何番目のＬＯＡＤコマンドであるかを示すシークエンス番号）が格納されている。なお、ステップＳ６で送信するＬＯＡＤコマンドのシークエンス番号は「０」である。コマンドヘッダ部５０５Ａの５バイト目はデータフィールド長を示している。一方、データフィールド部５０５Ｂは分割されたプログラム（バイナリデータ）が格納されている。なお、ＬＯＡＤコマンドは、セキュアチャネルが必須のため、実際にＩＣチップＣへ送信する場合、ＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドのコマンドヘッダ部５０３Ａの３バイト目で指定したセキュリティレベルに従ってセキュアメッセージコーディングを施す。例えば、ＭＡＣ付与及びデータフィールド部の暗号化がセキュリティレベルとして指定された場合、データフィールド部５０５Ｂの後にＭＡＣが付与され、データフィールド部５０５Ｂは暗号化される。
【００４６】
図４に戻り、ステップＳ６の処理に対してＳＤは、ＬＯＡＤコマンドについて正常に処理が行われると、正常終了応答をサーバに送信する（ステップＳ７）。但し、正常にＬＯＡＤコマンドを受信できなかった場合等にはエラーが発生したことを示すレスポンスをサーバに送信する。
【００４７】
以降、ステップＳ６の処理と、ステップＳ７の処理を繰り返し、サーバがロードプログラムの最終分割分（ｎ個目）を送信するためのＬＯＡＤ（ｎ−１）コマンドを送信し（ステップＳ８）、ＳＤが正常に処理を行うと、正常終了応答（ロード完了）をサーバに送信する（ステップＳ９）。
【００４８】
以上のように、アプリケーションプログラムのロード処理は、アプリケーションプログラムのイントロダクションの役割を担うＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドと、ロードプログラムを複数のバイナリデータに分割しＩＣチップＣへ送信する役割を担うＬＯＡＤコマンドからなる。また、サイズの大きなアプリケーションプログラムも最大２５６個まで分割することができるためＬＯＡＤコマンドで送信することができる。すなわち、アプリケーションプログラムのロード処理は、複数のコマンドから成る一連の処理を順番通りに全て正しく処理することで完了する。
【００４９】
次に、図７を用いてアプリケーションのロード処理時におけるメモリ（不揮発性メモリ１８３及びＲＡＭ１８２）の状況について説明する。
【００５０】
不揮発性メモリ１８３は、ＯＳプログラムが格納されるＯＳプログラムエリア２０１、ＵＩＭカードライブラリが格納されるＵＩＭライブラリエリア（ポストロードアプリ用）２０２、ポストロードアプリが格納されるポストロードアプリプログラム配置エリア２０３及びロード処理用ワークエリア２０４を含んで構成されている。一方、ＲＡＭ１８２は、ＯＳプログラム用エリア２１１、ロード処理用ワークエリア２１２及びポストロードアプリ用エリア２１３を含んで構成されている。なお、ポストロードアプリとは、ＵＩＭが市場に出た後、追加されるアプリケーションのことであり、ＬＯＡＤコマンドによって書き込んだプログラムを基に生成したアプリケーションが該当する。
【００５１】
まず、ＳＤは、ＬＯＡＤ（０）コマンドの受信によりロード処理が開始されると、ロード連鎖中における管理情報２２４を作成してＲＡＭ１８２のロード処理用ワークエリア２１２に記憶させる。
【００５２】
次いで、ＳＤは、ＬＯＡＤコマンドにより分割されたロードプログラムを受信する度に、プログラム（実体）２２１をポストロードアプリプログラム配置エリア２０３に書き込み、プログラム（一時情報）２２３をロード処理用ワークエリア２０４に書き込む。これと同時に、ＳＤはプログラム（一時情報）２２３を用いてＵＩＭライブラリとプログラム（実体）２２１の参照関係を構築する処理等を行い、動作可能な状態のプログラム（実体変換後）２２２に変換する。なお、図７では、プログラム（実体）２２１とプログラム（実体変換後）２２２を記載しているが、プログラム（実体）２２１をプログラム（実体変換後）２２２に変換しながら、プログラム（実体変換後）でプログラム（実体）を上書きすることにより、同じエリアを使用して使用領域を節約することもできる。
【００５３】
次いで、ＳＤは、最後のＬＯＡＤ（ｎ−１）コマンドを受信し、プログラムの変換処理を行うと、ＯＳへのプログラム登録処理を行い、次いで、プログラム（一時情報）２２３及び管理情報２２４を消去し、これらが記憶されていた部分を初期化する。
【００５４】
このように、アプリケーションのロード処理時には、プログラム（実体）２２１、プログラム（実体変換後）２２２及びプログラム（一時情報）２２３が不揮発性メモリ１８３の大部分を使用することとなる。また、これらの領域は複数のＬＯＡＤコマンドから成るロード処理が完了するまで保持し続ける必要がある。そのため、ＵＩＭカードはＲＡＭ１８２及び不揮発性メモリ１８３領域サイズの制約から、ＬＯＡＤコマンドで受信するバイナリデータを一時的に保存するワークエリアを複数のプログラムを並列にロードするために確保することは難しい。そのため、ＩＣチップＣでは、少なくともアプリケーションのロード処理についてＣＰＵ１８１が排他制御を行う必要がある。そこで以下では、ＣＰＵ１８１による排他制御処理について説明する。
【００５５】
［３．排他制御処理］
図８を参照して、ＣＰＵ１８１による排他制御処理について説明する。図８は、排他制御処理の一例を示すフローチャートである。ＣＰＵ１８１は、外部からＳＥＬＥＣＴコマンドを受信すると、ＳＥＬＥＣＴコマンドに含まれるＡＩＤで識別されるＳＤを実行することにより、当該ＳＤとして動作する。
【００５６】
まず、ＳＥＬＥＣＴコマンドにより選択されたＳＤ（以下、「選択されたＳＤ」という）は、発生したイベントが排他制御開始イベントか否かを判定する（ステップＳ１０１）。なお、本実施形態において発生するイベントとして、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドの受信と、ＬＯＡＤコマンドの受信があり、前者は排他制御開始イベントであり、後者は排他制御開始イベントではない。
【００５７】
選択されたＳＤは、発生したイベントが排他制御開始イベントではないと判定した場合（ＬＯＡＤコマンドを受信した場合）には（ステップＳ１０１：ＮＯ）、受信したコマンドに応じた処理を実行し（ステップＳ１０８）、ステップＳ１０９の処理に移行する。一方、選択されたＳＤは、発生したイベントが排他制御開始イベントであると判定した場合（ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを受信した場合）には（ステップＳ１０１：ＹＥＳ）、次いで、排他制御フラグは「１」であるか否かを判定する（ステップＳ１０２）。排他制御フラグは排他制御中（例えば、ロード処理実行中）であるか否かを示すフラグであり、「１」である場合は排他制御中であり、「０」である場合は排他制御中でないことを示す。なお、本実施形態では、排他制御フラグはＯＳが管理することとし、選択されたＳＤは、排他制御フラグが「１」であるか否かをＯＳに問い合わせて、問い合わせ結果に基づいてステップＳ１０２の判定を行う。
【００５８】
選択されたＳＤは、排他制御フラグは「１」ではないと判定した場合には（ステップＳ１０２：ＮＯ）、排他制御フラグに「１」をセットし（ステップＳ１０７）、受信したコマンドに応じた処理を実行し（ステップＳ１０８）、ステップＳ１０９の処理に移行する。なお、選択されたＳＤは、ステップＳ１０７の処理では、ＯＳに排他制御フラグに「１」をセットするよう要求し、ＯＳが当該要求に基づいて排他制御フラグに「１」をセットする。
【００５９】
一方、選択されたＳＤは、排他制御フラグは「１」であると判定した場合には（ステップＳ１０２：ＹＥＳ）、次いで、排他制御中断条件Ａが成立しているか否かを判定する（ステップＳ１０３）。ここで、排他制御中断条件Ａとは、例えば、排他制御中の処理を実行しているＳＤがＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを受信すること、又は、排他制御中の処理を実行しているＳＤより優先順位の高いＳＤがＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを受信することである。なお、選択されたＳＤは、排他制御中の処理を実行しているＳＤが何れのＳＤであるかを、ＯＳに問い合わせて判定する（但し、選択されたＳＤが排他制御中の処理を実行している場合にはＯＳに問い合わせることなく自らが排他制御中の処理を実行しているＳＤであると判定してもよい）。また、ＳＤ間の優先順位はＯＳが管理する。例えば、ＯＳは優先度毎に対応するＳＤを記述した優先度テーブル（例えば、優先度１（高い）：ＩＳＤ、優先度２：ＳＤ１、ＳＤ２、優先度３（低い）：ＳＤ３）を保持し、ＳＤ間の優先順位を判定する。選択されたＳＤは、排他制御中の処理を実行しているＳＤと、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドの受信対象であるＳＤのうち、優先順位が高いＳＤは何れであるかをＯＳに問い合わせて判定する。
【００６０】
選択されたＳＤは、排他制御中断条件Ａが成立していないと判定した場合には（ステップＳ１０３：ＮＯ）、排他制御中であることを示すレスポンスを、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドの送信元であるサーバに送信し（ステップＳ１０４）、本フローチャートに示す処理を終了する。一方、選択されたＳＤは、排他制御中断条件Ａが成立していると判定した場合には（ステップＳ１０３：ＹＥＳ）、排他制御中の処理をクリアする（ステップＳ１０５）。なお、排他制御中の処理を、選択されたＳＤ以外の他のＳＤが実行している場合には、ＯＳに他のＳＤに排他制御中の処理をクリアするように要求する（後述するステップＳ１１１も同様）。次いで、選択されたＳＤは、排他制御フラグに「０」をセットし（ステップＳ１０６）、ステップＳ１０７の処理に移行する。なお、選択されたＳＤは、ステップＳ１０６の処理では、ＯＳに排他制御フラグに「０」をセットするよう要求し、ＯＳは当該要求に基づいて排他制御フラグに「０」をセットする（後述するステップＳ１１３も同様）。また、排他制御中断条件Ａが成立したことにより、排他制御されていたロード処理が解除されるので、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドに続いてＬＯＡＤコマンドを受信することにより新たなロード処理が開始されることとなる。
【００６１】
選択されたＳＤは、ステップＳ１０８の処理を終了すると、次いで、排他制御フラグは「１」であるか否かを判定する（ステップＳ１０９）。選択されたＳＤは、排他制御フラグは「１」ではないと判定した場合には（ステップＳ１０９：ＮＯ）、本フローチャートに示す処理を終了する。一方、選択されたＳＤは、排他制御フラグは「１」であると判定した場合には（ステップＳ１０９：ＹＥＳ）、次いで、排他制御中断条件Ｂが成立しているか否かを判定する（ステップＳ１１０）。ここで、排他制御中断条件Ｂとは、例えば、ロード処理中にコマンドエラー（通信障害によるエラー等）が発生することである。
【００６２】
選択されたＳＤは、排他制御中断条件Ｂが成立していると判定した場合には（ステップＳ１１０：ＹＥＳ）、排他制御中の処理をクリアし（ステップＳ１１１）、排他制御フラグに「０」をセットし（ステップＳ１１３）、本フローチャートに示す処理を終了する。一方、選択されたＳＤは、排他制御中断条件Ｂが成立していないと判定した場合には（ステップＳ１１０：ＮＯ）、次いで、排他制御終了条件が成立しているか否かを判定する（ステップＳ１１２）。ここで、排他制御終了条件とは、例えば、最後（ｎ個目）のＬＯＡＤコマンドを受信し、正常に処理が行われたことである。
【００６３】
選択されたＳＤは、排他制御終了条件が成立していないと判定した場合には（ステップＳ１１２：ＮＯ）、本フローチャートに示す処理を終了する。一方、選択されたＳＤは、排他制御終了条件が成立していると判定した場合には（ステップＳ１１２：ＹＥＳ）、排他制御フラグに「０」をセットし（ステップＳ１１３）、本フローチャートに示す処理を終了する。
【００６４】
以上説明したように、本実施形態におけるＩＣチップＣ（「電子情報記憶媒体」の一例）は、不揮発性メモリ１８３（「メモリ」の一例）、ＲＡＭ（「メモリ」の一例）、ＣＰＵ１８１（「プロセッサ」の一例）を備え、ＣＰＵ１８１は、排他制御の対象であるロード処理（「第１処理」の一例）の実行中に、他のロード処理（「第２処理」の一例）の実行要求であるＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを受け付けた場合に、実行中のロード処理と他のロード処理について排他制御中断条件Ａ（「所定の条件」の一例）を満たしているか判定し、排他制御中断条件Ａが満たされていると判定した場合には、実行中のロード処理についての排他制御を解除（排他制御フラグに「０」をセット）し、他のロード処理を実行する。
【００６５】
したがって、本実施形態のＩＣチップＣによれば、排他制御の対象であるロード処理の実行中に他のロード処理の実行要求を受け付けた場合に、実行中のロード処理と他のロード処理について排他制御中断条件Ａを満たしているか否かに応じて、実行中のロード処理についての排他制御が解除されることから、適切に実行中のロード処理と他のロード処理を制御することができる。
【００６６】
また、ＣＰＵ１８１は、ＳＤ（「第１アプリケーション」の一例）に従ってロード処理を実行している際に、当該ＳＤより優先度の高いＳＤ（「第２アプリケーション」の一例）についてロード処理の実行要求を受け付けた場合に、排他制御中断条件Ａが満たされていると判定する。これにより、ロード処理を実行しているＳＤより優先度の高いＳＤに対するロード処理の実行要求を受け付けた場合に、優先度の高いＳＤに対するロード処理を実行することができる。
【００６７】
更に、ＣＰＵ１８１は、ＳＤ（「第１アプリケーション」の一例）に従ってロード処理を実行している際に、当該ＳＤについて他のロード処理の実行要求を受け付けた場合に、排他制御中断条件Ａが満たされていると判定する。これにより、ロード処理を実行しているＳＤに対して他のロード処理の実行要求を受け付けた場合に、実行しているロード処理を中断して、他のロード処理を実行することができる。
【００６８】
更にまた、ＣＰＵ１８１は、排他制御の対象となるロード処理の実行中に、排他制御中断条件Ｂ（例えば、ＬＯＡＤ処理中にコマンドエラーが発生すること）が成立した場合（「処理の取消事由が生じた場合」の一例）に、排他制御を解除する。これにより、排他制御中断条件Ｂとして排他制御を解除すべき条件を設定することにより、排他制御を解除すべき事案が発生した場合に、排他制御を解除することができる。
【００６９】
［４．変形例］
次に、上記実施形態の変形例について説明する。なお、以下に説明する変形例は適宜組み合わせることができる。
【００７０】
［４．１．変形例１］
排他制御中断条件Ａとして上記実施形態で説明した条件に、実行中のロード処理でロードされているプログラムよりも優先度の高いプログラムについてＩＮＳＴＡＬＬ［ｆｏｒ
ｌｏａｄ］コマンドを受信することという条件を加えてもよい。例えば、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンド内に、必ず優先すべきことを示す最優先コードを含ませることによって、ＣＰＵ１８１は最優先コードが含まれた当該コマンドに従ってロードされるプログラムは何れのプログラムよりも優先度が高いと判断することとしてもよい。これにより、ロード処理中のプログラムよりも優先度の高いプログラムについてロード要求があった場合に、実行中のロード処理の排他制御を解除して、優先度の高いプログラムについてロード処理を実行することができる。すなわち、実行中のロード処理よりも優先度の高いロード処理を優先させることができる。
【００７１】
［４．２．変形例２］
上記実施形態では、図８に示した各判定処理（ステップＳ１０１、ステップＳ１０２、ステップＳ１０３、ステップＳ１０９、ステップＳ１１０、ステップＳ１１２）を選択されたＳＤが行うこととしたが、ＩＣカードＣのＯＳが行うこととしてもよい。
【００７２】
［４．３．変形例３］
上記実施形態では、排他制御中断条件Ａに関して、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを受信したＳＤの優先度によって排他制御することとしたが、これに代えて又はこれに加えて、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドの補足情報５０４Ｄ（図５（Ｄ）参照）に記述された値（優先度）に応じて排他制御することとしてもよい。例えば、緊急度、重要度の高いＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドについては優先度「最大」を示す値を記述することとし、選択されたＳＤは、こうしたＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを受信した場合に、排他制御中断条件Ａが成立すると判定する。
【００７３】
なお、前者（ＳＤの優先度）と後者（コマンドの優先度）を併用する場合には、後者を優先することが好ましい。例えば、ＳＤの優先度がＩＳＤ＞ＳＤ１である場合において、ＳＤ１が優先度「最大」であるアプリケーションプログラムをロード処理中である場合、ＩＳＤでアプリケーションプログラムのロード処理の開始要求があったとしてもエラーとする、といった制御を行う。
【符号の説明】
【００７４】
１  携帯端末
１１  制御部
１２  記憶部
１３  無線通信部
１４  表示部
１５  入力部
１６  ＩＣカードインターフェース
１７  バス
１８  ＵＩＭカード
Ｃ  ＩＣチップ
１８１  ＣＰＵ
１８２  ＲＡＭ
１８３  不揮発性メモリ
１８４  Ｉ／Ｏ回路
１８５  バス
１９  ＣＬＦ
【図１】
2020194586.tif 000003
【図２】
2020194586.tif 000004
【図３】
2020194586.tif 000005
【図４】
2020194586.tif 000006
【図５】
2020194586.tif 000007
【図６】
2020194586.tif 000008
【図７】
2020194586.tif 000009
【図８】
2020194586.tif 000010