(57)【要約】【課題】より適切な通信の優先度決定を行い得る優先度決定装置等の提供。【解決手段】本発明の優先度決定装置は、取得手段と、実行状態識別手段と、優先度決定手段と、を備える。前記取得手段は、通信手段が行う通信に関連するプログラムの実行手段による実行位置を表す情報である実行位置情報の取得を行う。前記実行状態識別手段は、前記実行位置の実行以降に実行される前記プログラムの所定の部分の実行状態の識別を行う。前記優先度決定手段は、前記識別の結果により前記通信の優先度の決定を行う。【選択図】      図１
2017195452.tif 000002
【特許請求の範囲】
【請求項１】
通信手段が行う通信に関連するプログラムの実行手段による実行位置を表す情報である実行位置情報の取得を行う取得手段と、
前記実行位置の実行以降に実行される前記プログラムの所定の部分の実行状態の識別を行う実行状態識別手段と、
前記識別の結果により前記通信の優先度の決定を行う優先度決定手段、
とを備える、優先度決定装置。
【請求項２】
前記プログラムの実行を行う実行手段による、前記プログラムの予め特定された通信に関連する部分の実行の検出を行う検出手段をさらに備え、
前記取得手段が、前記検出により、前記取得を行う、
請求項１に記載された優先度決定装置。
【請求項３】
前記通信手段が受信したパケットから、前記プログラムの当該受信に係る部分を識別し、当該部分が予め定められたものに該当する場合に、前記取得手段に対し前記取得を行わせる、プログラム部分識別手段をさらに備える、請求項１又は請求項２に記載された優先度決定装置。
【請求項４】
前記実行状態識別手段が、前記プログラムの所定の命令からなる命令列により、前記実行状態情報の識別を行う、
請求項１乃至請求項３のうちのいずれか一に記載された優先度決定装置。
【請求項５】
前記所定の命令が、前記実行位置以降に行われる命令である、
請求項１乃至請求項４のうちのいずれか一に記載された優先度決定装置。
【請求項６】
前記実行状態識別手段が前記実行状態情報の識別を、予め設定された、実行状態を識別するためのルールである、実行状態識別ルール、により行う、請求項１乃至請求項５のうちのいずれか一に記載された優先度決定装置。
【請求項７】
前記優先度決定手段が、前記優先度の決定を、予め設定された、優先度を決定するためのルールである、優先度決定ルール、により行う、請求項１乃至請求項６のうちのいずれか一に記載された優先度決定装置。
【請求項８】
前記実行状態識別手段が、過去に識別した前記識別の結果を前記実行位置情報と関連付けた情報を記録し、前記関連付けた情報を、前記取得部が取得した前記実行位置情報により特定することにより、前記実行状態の識別を行う、請求項１乃至請求項７のうちのいずれか一に記載された優先度決定装置。
【請求項９】
前記プログラムを実行させることなく前記プログラムを分析することにより前記プログラムの部分の実行状態の第二の識別を行い前記プログラムにおける位置と前記第二の識別の結果との対応付けを行うプログラム分析手段をさらに備え、前記実行状態識別手段が前記対応付けの結果により前記識別を行う、請求項１乃至請求項８のうちのいずれか一に記載された優先度決定装置。
【請求項１０】
前記取得手段が、前記実行位置情報の取得に加えて、前記実行位置情報の取得際の前記プログラムの稼働状態の取得を行い、
前記優先度決定手段が、前記識別の結果に加えて、前記稼働状態により、前記通信の優先度の決定を行う、請求項１乃至請求項９のうちのいずれか一に記載された優先度決定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信の優先制御に関する。
【背景技術】
【０００２】
パケット通信における優先制御は、一般に、パケット送出のスケジューリングにより行われる。ここで、優先制御は、例えば、優先度の高いパケットを早期に伝送路に送出し、また、伝送路の帯域が不足するときは優先度の低いパケットの送出を待機させ、または、パケットを破棄させる制御である。
【０００３】
上記スケジューリングは、優先度を設定すべき通信の単位（以下、「フロー」という。）ごとに、与えるべき優先度や優先度を決めるための通信の特性が、事前に決まっている場合には有効である。しかしながら、フローの通信特性が事前には判定できない場合や、単一のフローが開始してから終了するまでに通信の特性が変わる場合には、フロー毎の優先度決定が困難である。そのような場合は、特性が異なる通信を繰り返す通信用プログラムの動作によって起こるため、上記課題の解決には通信用プログラムの動作状態から通信の優先度を決定することが有効になる。
【０００４】
通信用プログラムの動作状態から通信の優先度を決定する方法として、通信用プログラムの内部に通信の優先度を設定する手段を設ける方法が想定される。同方法において、通信用プログラムが自身が行う通信に該当するフローをどのように識別するかという課題がある。この課題については、システムソフトウエアが提供するＡＰＩやその他のサービスの利用により解決できる場合がある。例えば、非特許文献１は、ｇｅｔｓｏｃｋｎａｍｅ、ｇｅｔｐｅｅｒｎａｍｅシステムコールにより、ファイルディスクリプタからフローを識別するためのプロトコルヘッダの情報を取得する方法を開示する。また、非特許文献２は、プロトコルヘッダの情報からプログラムの識別子であるｐｒｏｃｅｓｓ  ｉｄを取得する方法を開示する。
【０００５】
また、本発明に関連して、非特許文献３は、後述のプログラム実行追跡機能の例であるｐｔｒａｃｅシステムコールを開示する。また、本発明に関連して、非特許文献４は、バッカス・ナウア記法について開示する。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】ＩＥＥＥ  ＳＴＡＮＤＡＲＤ１００３．１−２００８  −ＩＥＥＥ  Ｓｔａｎｄａｒｄ  ｆｏｒ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  −  Ｐｏｒｔａｂｌｅ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ  （ＰＯＳＩＸ（Ｒ））、［平成２８年４月４日検索］、インターネット（ｈｔｔｐｓ：／／ｓｔａｎｄａｒｄｓ．ｉｅｅｅ．ｏｒｇ／ｆｉｎｄｓｔｄｓ／ｓｔａｎｄａｒｄ／１００３．１−２００８．ｈｔｍｌ）。
【０００７】
【非特許文献２】ｉｐｔａｂｌｅｓ、ｏｗｎｅｒ  ｍａｔｃｈ、［平成２８年４月４日検索］、インターネット（ｈｔｔｐ：／／ｗｗｗ．ｉｐｔａｂｌｅｓ．ｉｎｆｏ／ｅｎ／ｉｐｔａｂｌｅｓ−ｍａｔｃｈｅｓ．ｈｔｍｌ＃ＯＷＮＥＲＭＡＴＣＨ）。
【０００８】
【非特許文献３】マーシャル・カーク  マキュージック、マイケル  カレルズ、キース  ボスティック、ジョン  クォーターマン著、ＡＳＣＩＩ出版、２００３年９月、４．４ＢＳＤの設計と実装、２００３年９月発行、ＩＳＢＮ９７８−４７５６１４３４６４、ｓｅｃｔｉｏｎ４．９。
【０００９】
【非特許文献４】第４回ＢＮＦ記法入門（１）─ＸＭＬ関連仕様を読むために─、［平成２８年４月５日検索］、インターネット（ｈｔｔｐ：／／ｗｗｗ．ａｔｍａｒｋｉｔ．ｃｏ．ｊｐ／ｆｘｍｌ／ｄｄｄ／ｄｄｄ００４／ｄｄｄ００４−ｂｎｆ．ｈｔｍｌ）。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、［背景技術］の項で説明した、通信用プログラムの内部に優先度を決定する手段を追加する方法には、適切な優先度をどのように決定するかという二つ目の課題がある。
【００１１】
この課題については、想定される通信動作を踏まえて優先度を決定する通信用プログラムの作成が考えられる。しかしながら、通信用プログラムが優先度を決定することは必ずしも適切でない場合がある。それは、一つには、優先度判定の基準が通信用プログラムの種類により異なり、適切な優先度が与えられない場合があるためである。また、二つには、通信用プログラムに設定された優先度を外部から制御できないので、不適切な優先制御が行われ得るためである。
【００１２】
これらの課題を解決するためには、通信用プログラムの外部が、通信状況を反映し得る通信用プログラムの動作状況を踏まえて、通信の優先度を設定することが有効である。
【００１３】
本発明は、上記課題を解決し、より適切な通信の優先度決定を行い得る優先度決定装置等の提供を目的とする。
【課題を解決するための手段】
【００１４】
本発明の優先度決定装置は、取得手段と、実行状態識別手段と、優先度決定手段と、を備える。前記取得手段は、通信手段が行う通信に関連するプログラムの実行手段による実行位置を表す情報である実行位置情報の取得を行う。前記実行状態識別手段は、前記実行位置の実行以降に実行される前記プログラムの所定の部分の実行状態の識別を行う。前記優先度決定手段は、前記識別の結果により前記通信の優先度の決定を行う。
【発明の効果】
【００１５】
本発明の優先度決定装置等は、より適切な通信の優先度決定を行い得る。
【図面の簡単な説明】
【００１６】
【図１】第一実施形態の優先度決定装置の構成例を表す概念図である。
【図２】対象命令情報の例を表す概念図である。
【図３】プログラム識別情報の例を表す概念図である。
【図４】実行状態識別ルール情報の例を表す概念図である。
【図５】図４に表す条件の記述方法の具体例を表す図である。
【図６】実行状態識別ルール情報２７２にマッチする処理を含む、プログラムの例を表す概念図である。
【図７】プログラムの命令列を表す図である。
【図８】プログラムに含まれるシンボル情報のシンボルテーブルを表す図である。
【図９】優先度ルール情報の例を表す概念図である。
【図１０】第一実施形態の優先度決定装置が行う処理の処理フロー例を表す概念図（その１）である。
【図１１】第一実施形態の優先度決定装置が行う処理の処理フロー例を表す概念図（その２）である。
【図１２】第一実施形態の優先度決定装置が行う、パケット受信時の処理の処理フロー例を表す概念図である。
【図１３】第二実施形態の優先度決定装置の構成例を表す概念図である。
【図１４】実行状態識別結果の例を表すイメージ図である。
【図１５】第二実施形態の優先度決定装置が行う、図１０に表すＳ６０４の処理を表す概念図である。
【図１６】第三実施形態の優先度決定装置の構成例を表す概念図である。
【図１７】プログラム分析手段が行う処理の処理フロー例を表わす概念図（その１）である。
【図１８】プログラム分析手段が行う処理の処理フロー例を表わす概念図（その２）である。
【図１９】本発明の優先度決定装置の最小限の構成を表す概念図である。
【発明を実施するための形態】
【００１７】
＜第一実施形態＞
第一実施形態は、プログラムの動作状態から通信の優先度を決定する装置である、優先度決定装置に関する実施形態である。
［構成と動作］
図１は、第一実施形態の優先度決定装置の例である優先度決定装置１００の構成を表す概念図である。本明細書中における所定の構成を表す図において、四角形で表すものは、優先度決定装置の構成を、紙状の形状（四角形の右下がめくれた形状）で表すものは優先度決定装置が備える情報を、それぞれ表す。
【００１８】
なお、優先度決定装置１００は、ハードウェア構成としては、典型的には、コンピュータである。
【００１９】
優先度決定装置１００は、実行手段１１０と、通信手段１２０と、制御手段１３０と、検出手段１４０と、取得手段１５０と、を備える。優先度決定装置１００は、さらに、プログラム部分識別手段１６０と、実行状態識別手段１７０と、優先度決定手段１８０と、記録手段１９０と、を備える。
【００２０】
記録手段１９０は、プログラム１１１と、対象命令情報１４１と、プログラム識別情報１６１と、シンボル情報群１７１と、実行状態識別ルール情報１７２と、優先度ルール情報１８１と、を保持する。そして、記録手段１９０は、優先度決定装置１００の各構成からの指示に従い、指示された情報を送る。
【００２１】
実行手段１１０は、優先度決定装置１００の各構成が指示する処理を、記録手段１９０から読み込んだ、プログラム１１１の当該処理のための部分、を実行させることにより行う。実行手段１１０は、典型的には中央演算処理装置である。
【００２２】
実行手段１１０は、プログラムカウンタ及びスタックポインタの二つのレジスタを備えてもよい。
【００２３】
プログラムカウンタは、プログラム１１１において次に実行される命令の位置（アドレス）を表す情報を保持する。プログラムカウンタは、典型的には、アドレスを格納するレジスタである。実行手段１１０は、プログラム１１１の命令の読み込みや実行と並行して、プログラムカウンタが保持する値（以下、「プログラムカウンタ値」という。）を自動的に更新する。そのため、プログラムカウンタ値により、プログラム１１１のどの命令が現在実行されているか知ることができる。
【００２４】
一方、スタックポインタは、プログラム１１１の実行データのうち、スタックの端点の位置（アドレス）を表す値（以下、「スタック値」という。）を保持する。スタックポインタは、典型的にはメモリ上のスタックの端のアドレスを格納するレジスタである。スタックポインタは、ルーチン呼び出しによって、引数や一時データなどがスタックに積まれると、その分だけ移動する。スタックには、ルーチン呼び出し時の引数、復帰先のアドレスが格納されている。そのため、スタックポインタが保持する値により、ルーチン呼び出し時の引数や呼び出し元のルーチンのアドレスなどを知ることができる。
【００２５】
通信手段１２０は、通信路経由で接続された、優先度決定装置１００の外部と、通信データの送受信を行う。通信手段１２０は、典型的には、ネットワークインタフェースカードやデバイスドライバである。通信手段１２０は、後述の制御手段１３０が行う優先制御に従う送受信処理を、前記外部と行う。
【００２６】
制御手段１３０は、通信手段１２０に対し、優先度決定手段１８０が送る送受信の優先度を表す情報に従う制御、である優先制御を行う。
【００２７】
検出手段１４０は、対象命令情報１４１を記録手段１９０から読み込む。ここで、対象命令情報１４１は、検出手段１４０が、プログラム１１１の命令の実行手段１１０による実行を検出する対象とする命令（以下、「対象命令」という。）の集合である。そして、検出手段１４０は、実行手段１１０による、対象命令の実行を監視する。検出手段１４０は、対象命令の実行手段１１０による実行を検出した場合は、取得手段１５０を起動させる。
【００２８】
図２は、図１に表す対象命令情報１４１の例である対象命令情報４４１を表す概念図である。
【００２９】
対象命令情報４４１は、シンボルと条件との組、の集合である。当該シンボルは、シンボルテーブルに記載された命令の名前である。また、当該条件は、対象命令実行時の引数の条件である。図２に表す２行目は、シンボル名がｒｅａｄであり、ｆｄ（ファイル記述子）の種類がｓｏｃｋｅｔであることを表す。図２には、対象命令実行時の引数の条件のみを条件とした場合を表すが、対象命令実行時の引数の条件に他の条件を追加したものを対象命令の条件としてもよい。
【００３０】
取得手段１５０は、検出手段１４０が、対象命令情報１４１に属する命令を検出した時点での、実行手段１１０によるプログラム１１１の実行位置を表す情報と稼働状態を表す情報とを取得する。当該実行位置は、例えば、プログラムカウンタ値やスタック値である。取得手段１５０は、取得した実行位置を表す情報を、実行状態識別手段１７０に送る。また、当該稼働状態は、取得手段１５０の起動時（又は、当該実行位置の取得の際）における、プログラム１１１の稼働状態である。当該稼働状態は、例えば、プログラム１１１を実行中か待機中かの別や、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のスケジューラが管理するプログラムの走行状態などである。
【００３１】
実行状態識別手段１７０は、取得手段１５０から送られた実行位置を表す情報を用いて、記録手段１９０が保持するプログラム１１１の命令のうち、実行位置の命令の実行以降に行われる命令からなる所定の命令列を導出する。そして、実行状態識別手段１７０は、当該命令列を用いて、記録手段１９０が保持する実行状態識別ルール情報１７２を検索する。当該検索は、当該命令列の命令と実行状態識別ルール情報１７２とのパターンマッチングにより行う。その際に、パターンマッチングのために、記録部１９０が保持するシンボル情報群１７１の情報を利用する。実行状態識別手段１７０は、該当する実行状態識別ルール情報１７２の要素（実行状態識別ルール）があると判定した場合は、当該要素を優先度決定手段１８０に送る。以下において、実行状態による実行状態識別ルール情報の検索、該当する実行状態識別ルールの有無の判定及び該当する実行状態識別ルールの特定を「実行状態識別」ということにする。
【００３２】
プログラム部分識別手段１６０は、通信手段１２０が送受信する通信データから、当該通信データを送受信するためのプログラム１１１の部分（以下、「プログラム部分」という。）を識別する。当該識別は、記録手段１９０が保持するプログラム識別情報１６１により行う。プログラム部分識別手段１６０の上記動作は、非特許文献２が開示するｉｐｔａｂｌｅｓ  の  ｏｗｎｅｒ  ｍａｔｃｈ  機能と同等であるので、説明を省略する。
【００３３】
図３は、図１に表すプログラム識別情報１６１の例であるプログラム識別情報５６１を表す概念図である。プログラム識別情報５６１は、キーとプログラム部分識別子との組み合わせの集合である。キーは、パケットのヘッダに含まれる情報である。また、プログラム部分識別子は、プログラム部分を識別する識別子である。プログラム部分識別手段１６０は、送受信に係るパケットのヘッダに含まれる情報をキーと照合することにより、そのパケットの送受信に用いるプログラム部分を識別することができる。
【００３４】
図４は、図１に表す実行状態識別ルール情報１７２の例である実行状態識別ルール情報２７２を表す概念図である。
【００３５】
実行状態識別ルール情報２７２は、条件と実行状態識別子との組み合わせ、の集合である。当該条件は、命令列の発生規則を表す情報である。図４の各条件に表すように、当該条件は、正規表現と呼び出し関係により表記することができる。
【００３６】
図５は、図４に表す条件の記述方法の具体例を表す図である。ただし、図５に表す表現は一例であり、同等以上の表現力を持つならば他の記述方法により記述してもよい。
【００３７】
図５の具体例は、バッカス・ナウア記法（ＢＮＦ）をベースに記述した例である。各記述の意味については、非特許文献４を参照いただきたい。
【００３８】
図５の１行目は、構文のスコープを定める記述である。また、２行目は条件の順序関係を、３行目は条件の和集合を表す記述である。また、４行目は繰り返しを表す記述である。４行目の「整数」は、整数値により繰り返し回数の上限の指定を表す。５行目はルーチン呼び出しの条件を表す記述である。６行目は出現すべき命令（’．’は任意の命令）を表す記述である。７行目は検出位置を表す記述である。
【００３９】
一方、前記命令は、ルーチン名または、ルーチン名に引数条件を付記したものである。ここで。引数条件は、変数の列である。引数が任意の値で良い場合は’．’と記述する。
【００４０】
以上を適用すると、図４の１行目の記述である「［ｒｅｃｖ（ｘ）！，ｓｅｎｄ（ｘ）］＊」は、次の条件を表す。すなわち、当該記述は、検出位置がループ内の受信命令（ｒｅｃｖ）で、ループ内で送信処理（ｓｅｎｄ）が後続しており、ｓｅｎｄ、ｒｅｃｖの第一引数が同一である、という条件を表す。当該記述は、同一セッションでの連続した往復通信を表す条件として用いることができる。
【００４１】
通常の処理においては、送信処理と受信処理の前後に他の命令があるのが一般的である。そのため、例えば、ｓｅｎｄ、ｒｅｃｖの間、前後に２０命令以内の任意の命令が含まれる場合を条件として想定する。すると、当該条件は、「（．＊２０，ｒｅｃｖ（ｘ）！，．＊２０，ｓｅｎｄ（ｘ），．＊２０）＊」と記述することができる。
【００４２】
一方、図４の２行目の記述は、ｓｅｎｄ命令と任意の命令列の繰り返し処理を表す条件の記述である。そして、繰り返されるｓｅｎｄ命令の第１引数は同一である。例えば、ＰＯＳＩＸ（非特許文献１参照）のｓｅｎｄシステムコールの第１引数はファイル記述子なので、その場合は、図４の２行目の記述は、同一セッションでの連続送信を表す条件に用いることができる。
【００４３】
さらに、図４の３行目の記述は、検出位置の呼び出し元がｇｅｔｈｏｓｔｂｙｎａｍｅ命令であり、その後１０命令以内にｓｅｎｄかｒｅｃｖが現れるという条件を表す。図４の３行目の記述は、ＰＯＳＩＸ  ＡＰＩ（非特許文献１参照）を使うプログラムで、名前解決を検出してその直後に通信がある場合を表す条件に用いることができる。
【００４４】
ここで、図４に表す実行状態識別ルール情報２７２の１行目の実行状態識別ルールを実行状態により特定する実行状態識別は、例えば以下のように行うことができる。
【００４５】
取得手段１５０が、実行位置として、プログラムカウンタ値やスタック値を取得したときに、プログラムカウンタ値Ｉと、スタック値Ｓとが把握される。以下は、スタック値Ｓを用いずにプログラムカウンタ値Ｉにより、次に行われる予定の命令列を特定し、実行状態識別を行う例である。
【００４６】
図６は、図４に表す実行状態識別ルール情報２７２にマッチする処理を含む、プログラム１１１の例であるプログラム１１１ａを表す概念図である。
【００４７】
プログラム１１１ａは、Ｃ言語で記述したプログラムである。なお、プログラム１１１ａは、実行状態識別手段１７０の動作の説明のために表すものであり、意味のある動作をするものではない。
【００４８】
図７は、プログラム１１１ａの命令列である命令列１１２ａを表す図である。命令列１１２ａは、プログラム１１１ａのオブジェクトコードから取得する。
【００４９】
命令列１１２ａは、Ｉｎｔｅｌ  ＩＡ−３２アーキテクチャ命令セットの機械命令のプログラムを、分析用のプログラムｏｂｊｄｕｍｐで逆アセンブル表示した例の一部分である。第１列（：より左）は命令のアドレス、第２列は命令とオペランド、第３列（英数字の列及びその右列）は、ニーモニックの形式で命令を読みやすく書いたものである。ここで、例えば、アドレス０ｘ４０１０８９の処理より前に、検出手段１４０により取得手段１５０が起動されたとする。すると、プログラムカウンタ値Ｉ＝０ｘ４０８０８９である。
【００５０】
図８は、図６に表すプログラム１１１ａに含まれるシンボル情報を列挙した情報であるシンボルテーブル１１３ａを表す図である。
【００５１】
アドレス０ｘ４０１０８９の命令はルーチン呼び出しであり、呼び出し先の番地は０ｘ４３３ｆ９０になっている。これは、シンボルテーブル１１３ａを参照すると＿ｒｅａｄである。一方、後続の命令の中に別のルーチン呼び出しがありその呼び出し先は０ｘ４３３ｆｆ０であり、シンボルテーブル１１３ａによると＿ｗｒｉｔｅである。さらにその後に比較つきジャンプ命令があり、ジャンプ前のアドレスは０ｘ４０１０７５である。アドレス０ｘ４０１０７５は、前記＿ｒｅａｄの呼び出しのアドレス０ｘ４０１０８９より前のアドレスである。すなわち、プログラム１１１ａは、ｒｅａｄとｗｒｉｔｅを繰り返し行うような構造が含まれることになる。
【００５２】
ここで、これらのルーチン呼び出しの第１引数は、上記のプラットフォーム（６４ｂｉｔ  Ｌｉｎｕｘ（登録商標））ではＥＤＩレジスタと呼ばれるポインタレジスタに保存され、いずれの呼び出しでも値４である。
【００５３】
これらにより、例えば、上記対象命令を検出した時点でのプログラム１１１ａの実行状態は実行状態識別ルール情報２７２の１乃至３行目の条件のいずれにもマッチすることを判定することができる。
【００５４】
なお、スタック値Ｓにより実行位置を特定する場合も、スタック値Ｓに対して上記と同様の動作を行うことで、実行状態の識別を行うことができる。
【００５５】
プログラム１１１ａの実行状態にマッチする実行状態識別ルールの特定は、プログラム１１１ａおよびスタックのバイト列のサーチとシンボルテーブル、引数等の条件の照合からなるパターンマッチングにより、行うことができる。当該パターンマッチングの具体的手法は公知であるので、その説明を省略する。
【００５６】
優先度決定手段１８０は、実行状態識別手段１７０が実行状態から導出した実行状態識別ルールの実行状態識別子に基づき当該実行状態に係る通信の優先度を決定する。優先度決定手段１８０は、制御手段１３０に対し、決定した優先度を含む情報を送る。
【００５７】
図９は、図１に表す優先度ルール情報１８１の例である優先度ルール情報３８１を表す概念図である。優先度ルール情報３８１は、実行状態識別子、起動条件、稼働状態及び優先度識別子の組、の集合である。ここで、実行状態識別子は、図４に表す実行状態識別ルール情報２７２における実行状態識別子である。また、起動条件は、実行状態識別が行われた起動条件である。起動条件は、より具体的には、例えば、取得手段１５０の起動が、検出手段１４０による対象命令の検出によるものか、後述の受信によるものかの別である。また、稼働状態は、取得手段１５０の起動時（又は、実行位置の取得の際）におけるプログラム１１１の稼働状態である。また、優先度識別子は、通信の優先度を表す識別子である。
［処理フロー］
図１０及び図１１は、図１に表す優先度決定装置１００が行う処理の処理フロー例を表す概念図である。なお、図１０、図１１及びそれらの説明において記述される符号は図１に表す各構成の符号である。また、明細書中の処理フロー図に表す各処理において、コロン記号より左の記述は処理の主体を表し、コロン記号より右の記述は処理内容を表す。
【００５８】
まず、実行手段１１０は、Ｓ６０１の処理として、記録手段１９０から、プログラム１１１の次に実行すべき命令を読み込む。
【００５９】
次に、検出手段１４０は、Ｓ６０２の処理として、Ｓ６０１の処理により実行手段１１０が読み込んだ命令が、対象命令情報１４１の対象命令に該当するかを判定する。
【００６０】
検出手段１４０は、Ｓ６０２の処理により、Ｓ６０１の処理により実行手段１１０が読み込んだ命令が、対象命令情報１４１に該当すると判定した場合（Ｓ６０２のＹの場合）は、Ｓ６０３の処理を行う。
【００６１】
一方、検出手段１４０は、Ｓ６０２の処理により、Ｓ６０１の処理により実行手段１１０が読み込んだ命令が、対象命令情報１４１に該当すると判定しなかった場合（Ｓ６０２のＮの場合）は、Ｓ６０５の処理を行う。
【００６２】
検出手段１４０は、Ｓ６０３の処理を行う場合は、同処理として、取得手段１５０に通知を送る。
【００６３】
そして、優先度決定装置１００は、Ｓ６０４の処理として、後述の、図１１に表すＳ７０１乃至Ｓ７１０の処理を行う。Ｓ７０１乃至Ｓ７１０の処理は、プログラム実行状態の取得から通信の優先度決定までの処理である。
【００６４】
そして、実行手段１１０は、Ｓ６０５の処理として、Ｓ６０１の処理で読み込んだ命令を実行する。
【００６５】
そして、実行手段１１０は、Ｓ６０６の処理として、図１０に表す処理を終了するかを判定する。実行手段１１０は、当該判定を、例えば外部から入力される情報により行う。
【００６６】
実行手段１１０は、Ｓ６０６の処理により、図１０に表す処理を終了することを判定した場合（Ｓ６０６のＹの場合）は同処理を終了する。
【００６７】
一方、実行手段１１０は、Ｓ６０６の処理により、図１０に表す処理を終了することを判定しなかった場合（Ｓ６０６のＮの場合）は、Ｓ６０１の処理を再度行う。
【００６８】
図１０に表す処理において、実行手段１１０は、プログラム１１１から命令を読み込み、その命令が対象命令でなければ（Ｓ６０２のＮ）、実行手段が該当命令を実行する（Ｓ６０５）。一方、その命令が対象命令であれば（Ｓ６０２のＹ）、実行手段１１０は、実行手段１１０以外の部分によるＳ６０２乃至Ｓ６０４の処理を実行した後、該当命令を実行する。
【００６９】
このような、プログラム実行中に特定の命令の実行を検出したことを契機としてプログラム実行の処理を中断し、別の処理を行う動作は、周知のプログラム実行追跡機能の動作と同じである。ＵＮＩＸ（登録商標）系のオペレーティングシステムでは、プログラム実行追跡機能として、典型的には、ｐｔｒａｃｅシステムコール（非特許文献３参照）が用いられる。
【００７０】
図１１は、図１０に表すＳ６０４の処理を表す概念図である。
【００７１】
図１０に表すＳ６０３の処理の次に、取得手段１５０は、Ｓ７０１の処理として実行位置を取得する。当該実行位置は、例えば、プログラムカウンタ値やスタック値である。
【００７２】
次に、実行状態識別手段１７０は、Ｓ７０２の処理として、前記プログラムカウンタ値の命令の実行以降に実行されるべきプログラム１１１の命令を、所定の数読み込む。当該所定の数は、当該所定の数の命令からなる命令列が実行状態識別ルールとのパターンマッチング処理に必要な最小の長さになるようにすることが望ましい。パターンマッチング処理の処理量（計算量）がより少なくなるためである。
【００７３】
そして、実行状態識別手段１７０は、Ｓ７０３の処理を行う。すなわち、実行状態識別手段１７０は、シンボル情報群１７１を記録手段１９０から読み込み、前記所定の数の各命令のアドレスから各命令のシンボル名を取得する。実行状態識別手段１７０は、さらに、プログラム１１１の命令のうち、ライブラリルーチン呼び出しやシステムコール等に対して、シンボル情報群１７１の要素（シンボル情報）を割り当てる。シンボル情報群１７１の要素（シンボル情報）の割り当ては、前述のプログラム実行追跡機能の動作と同様に行うことができるので、説明を省略する。
【００７４】
次に、実行状態識別手段１７０は、Ｓ７０４の処理として、Ｓ７０３の処理によりシンボル情報群１７１の要素（シンボル情報）を割り当てた命令列により、記録手段１９０が保持する実行状態識別ルール情報１７２を検索する。
【００７５】
そして、実行状態識別手段１７０は、Ｓ７０５の処理として、Ｓ７０３の処理によりシンボル情報を割り当てた命令列にマッチする実行状態識別ルールが、記録手段１９０が保持する実行状態識別ルール情報１７２にあるかを判定する。
【００７６】
実行状態識別手段１７０は、Ｓ７０５の処理により該当があると判定した場合（Ｓ７０５のＹの場合）は、Ｓ７０６の処理を行う。
【００７７】
一方、実行状態識別手段１７０は、Ｓ７０５の処理により該当するものがあると判定しなかった場合（Ｓ７０５のＮの場合）は、図１０に表すＳ６０５の処理を、実行手段１１０に行わせる。
【００７８】
実行状態識別手段１７０は、Ｓ７０６の処理を行う場合は、同処理として、優先度決定手段１８０に対し、Ｓ７０５の処理により該当があると判定した実行状態識別ルールを表す情報を送る。
【００７９】
そして、優先度決定手段１８０は、Ｓ７０７の処理として、Ｓ７０６の処理により実行状態識別手段１７０が送った実行状態識別ルールを用いて、記録手段１９０が保持する優先度ルール情報１８１の検索を行う。当該検索の際に、優先度決定手段１８０は、当該実行状態識別ルールの実行状態識別子をキーとし、起動条件を「命令検出」とし、稼働状態を取得手段１５０が取得した取得手段１５０の起動時（又は、実行位置の取得の際）におけるプログラム１１１の稼働状態とする。
【００８０】
そして、優先度決定手段１８０は、Ｓ７０８の処理として、当該キーおよび条件に該当する優先度ルールが優先度ルール情報１８１にあるかを判定する。ここで、優先度ルールは優先度ルール情報の要素である。
【００８１】
優先度決定手段１８０は、Ｓ７０８の処理により、該当する優先度ルールが優先度ルール情報１８１にあると判定した場合（Ｓ７０８のＹの場合）は、Ｓ７０９の処理を行う。
【００８２】
一方、優先度決定手段１８０は、Ｓ７０８の処理により、該当する優先度ルールが優先度ルール情報１８１にあると判定しなかった場合は、図１０に表すＳ６０５の処理を、実行手段１１０に行わせる。
【００８３】
優先度決定手段１８０は、Ｓ７０９の処理を行う場合は、Ｓ７０８の処理において該当があると判定した優先度ルールにより、制御手段１３０に対し、通信処理の優先度を通知する。ここで、当該通信処理は、図１０に表すＳ６０１の処理により実行手段１１０が読み込んだ命令に係る通信処理である。
【００８４】
そして、制御手段１３０は、Ｓ７１０の処理として、優先度決定手段１８０からのＳ７０９の処理による優先度に従い、当該通信に係る処理の優先制御を行う。この際に、制御手段１３０は、当該通信処理について既に設定された優先度がある場合は、その優先度を新たな優先度に置き換えて、優先制御を行う。
【００８５】
そして、制御手段１３０は、図１０に表すＳ６０５の処理を、実行手段１１０に行わせる。
【００８６】
以上により、優先度決定装置１００は、実行手段１１０によるプログラム１１１の実行中に、検出手段１４０が特定命令を検出することにより、通信優先度を決定することができる。
【００８７】
次に、優先度決定装置１００がパケット受信時に行う処理について説明する。
【００８８】
図１２は、優先度決定装置１００が行う、パケット受信時の処理の処理フロー例を表す概念図である。
【００８９】
まず、通信手段１２０は、Ｓ８０１の処理として、届いている未処理のパケットがあるかの判定を行う。ここで、未処理とは、後述のＳ８０２の処理をまだ行っていないという意味である。
【００９０】
通信手段１２０は、Ｓ８０１の処理により届いている未処理のパケットがあると判定した場合は、Ｓ８０２の処理を行う。
【００９１】
一方、通信手段１２０は、Ｓ８０１の処理により届いている未処理のパケットがあると判定しなかった場合はＳ８０１の処理を再度行う。
【００９２】
通信手段１２０は、Ｓ８０２の処理を行う場合には、届いている未処理のパケットの一つをプログラム部分識別手段１６０に送る。
【００９３】
次に、プログラム部分識別手段１６０は、Ｓ８０３の処理として、Ｓ８０２の処理により通信手段１２０が送ったパケットのヘッダ情報により、記録手段１９０が保持するプログラム識別情報１６１を検索する。
【００９４】
そして、プログラム部分識別手段１６０は、Ｓ８０４の処理として、当該ヘッダ情報にマッチするプログラム部分識別子が、プログラム識別情報１６１にあるかを判定する。
【００９５】
プログラム部分識別手段１６０は、Ｓ８０４の処理により、該当するプログラム部分識別子があると判定した場合は、実行手段１１０にＳ８０５の処理を行わせる。
【００９６】
一方、プログラム部分識別手段１６０は、Ｓ８０４の処理により該当するプログラム部分識別子があると判定しなかった場合は、通信手段１２０に、Ｓ８０７の処理を行わせる。
【００９７】
実行手段１１０は、Ｓ８０５の処理を行う場合は、同処理として、次に実行すべきプログラム部分を、プログラム部分識別手段１６０がＳ８０４の処理により該当すると判定したプログラム部分識別子のプログラム部分に設定する。
【００９８】
そして、優先度決定装置１００は、Ｓ８０６の処理として、前述の、図１１に表すＳ７０１乃至Ｓ７１０の処理を行う。図１１に表すＳ７０１乃至Ｓ７１０の処理の説明は前述の通りである。ただし、図１１に表すＳ７０１乃至Ｓ７１０の処理の説明における、Ｓ６０３、Ｓ６０４、Ｓ６０５は、この順に、Ｓ８０５、Ｓ８０６、Ｓ８０７と、それぞれ読み替える。
【００９９】
Ｓ８０６の処理の後に、通信手段１２０は、Ｓ８０７の処理として、Ｓ８０２の処理によりプログラム部分識別手段１６０に送ったパケットの受信処理を行う。
【０１００】
そして、優先度決定装置１００は、Ｓ８０８の処理として、図１２に表す処理を終了するかを判定する。優先度決定装置１００は、当該判定を、例えば、例えば外部から入力される情報により行う。
【０１０１】
優先度決定装置１００は、Ｓ８０８の処理により図１２に表す処理を終了すると判定した場合（Ｓ８０８のＹの場合）は、同処理を終了する。
【０１０２】
一方、優先度決定装置１００は、Ｓ８０８の処理により図１２に表す処理を終了すると判定しなかった場合（Ｓ８０８のＮの場合）は、前述のＳ８０１の処理を行う。
【０１０３】
このように、優先度決定装置１００は、通信手段１２０に届いたパケットがヘッダに備える情報により検索されるプログラム部分が登録されている場合（Ｓ８０４のＹの場合）に、図１１に表す各処理を行う。そして、優先度決定装置１００は、図１１について説明した所定の場合に、そのプログラム部分の実行に係る通信処理の優先度を決定する。当該通信処理には、Ｓ８０７における、パケットの受信処理が含まれ得る。すなわち、優先度決定装置１００は、予め登録されたプログラム部分で処理することが予定されたパケットの受信時に、当該プログラムに係る通信処理の優先度を決定することができる。
【０１０４】
以上説明したように、優先度決定装置１００は、プログラムの実行位置を取得する（図１１のＳ７０１乃至Ｓ７０２の処理）。そして、優先度決定装置１００は、当該実行位置以降に行われる所定の命令列の記述にマッチする実行状態識別ルールを検索し特定する（図１１のＳ７０３乃至Ｓ７０６の処理）。さらに、優先度決定装置１００は、特定した実行状態識別ルールにより、通信の優先度を決定する（Ｓ７０７乃至Ｓ７０９の処理）。ここで、通信手段１２０が通信を行う際には通信を行うためのプログラム部分を実行手段１１０が必ず実行する。そのため、プログラムの実行状態には、通信手段１２０が行う通信の状態が反映される。優先度決定装置１００は、プログラムの処理に依存した通信優先度決定を行うので、通信手段１２０が行う通信の状況を反映した適切な通信優先度を決定することができる。
［効果］
第一実施形態の優先度決定装置は、プログラムの実行位置を取得し、当該実行位置以降に行われる所定の数のプログラムの命令からなる命令列の記述にマッチする実行状態識別ルールを検索し特定する。さらに、第一実施形態の優先度決定装置は、特定した実行状態識別ルールにより、通信の優先度を決定する。ここで、通信手段が通信を行う際には通信を行うためのプログラムが必ず実行される。そのため、プログラムの実行状態には、通信手段が行う通信の状態が反映される。以上により、第一実施形態の優先度決定装置は、プログラムの処理に依存した通信優先度決定を行うので、通信手段が行う通信の状況を反映した適切な通信優先度決定を行うことができる。
【０１０５】
すなわち、第一実施形態の優先度決定装置は、より適切な通信の優先度決定を行い得る。
＜第二実施形態＞
第二実施形態は、導出した実行状態識別結果を保持し利用する優先度決定装置に関する実施形態である。
【０１０６】
第一実施形態の優先度決定装置は、通信の優先度を変更する処理の都度、プログラムの命令列の記述と実行状態識別情報とのマッチング処理を行う。しかしながら、プログラムの実行のたびに、処理量の多いマッチング処理を行うのは計算資源に無駄が多く非効率的である。第二実施形態の優先度決定装置は、当該マッチング処理により得られた実行状態識別結果を保持し後に再利用することにより、前記マッチング処理の頻度を減らせるようにしたものである。
［構成及び動作］
図１３は、第二実施形態の優先度決定装置の例である優先度決定装置１００ａの構成を表す概念図である。
【０１０７】
優先度決定装置１００ａは、図１に表す優先度決定装置１００とは、記録手段１９０が、他の情報と併せて実行状態識別結果９９１を保持する点が異なる。優先度決定装置１００ａについてのこの点及び下記以外の説明は、図１に表す優先度決定装置１００の説明と同じである。なお、優先度決定装置１００ａについての下記説明と図１に表す優先度決定装置１００の説明とが矛盾する場合は下記説明が優先される。
【０１０８】
実行状態識別手段１７０は、取得手段１５０が送った実行位置（プログラムカウンタ値やスタック値）により、記録手段１９０が保持する実行状態識別結果９９１を検索する。
【０１０９】
そして、実行状態識別手段１７０は、該当する実行状態識別結果９９１の要素があると判定した場合には当該要素を表す情報を優先度決定手段１８０に送る。
【０１１０】
実行状態識別結果９９１は、実行状態識別手段１７０による過去のマッチング結果の集合である。当該マッチング処理については第一実施形態の説明において述べた通りである。
【０１１１】
図１４は、図１３に表す実行状態識別結果９９１の例である実行状態識別結果１０９１及び１０９２を表すイメージ図である。
【０１１２】
実行状態識別結果１０９１は、プログラムカウンタ値と、スタック値と、条件と、実行状態識別子と、の組み合わせ、の集合である。
【０１１３】
実行状態識別結果１０９１における条件と実行状態識別子は、図４に表す実行状態識別ルール情報２７２における条件と実行状態識別子である。また、プログラムカウンタ値とスタック値は、過去において実行状態識別手段１７０が当該条件に合致することを判定した、プログラムカウンタ値とスタック値である。
【０１１４】
実行状態識別手段１７０は、実行状態識別結果１０９１を、プログラムカウンタ値とスタック値とをキーとして検索することが可能である。ただし、当該検索時においてスタック値がｎｏｎｅである場合（無い場合）は、実行状態識別手段１７０は、スタック値を無視するものとする。
【０１１５】
実行状態識別結果９９１の各要素（各組）は、実行状態識別結果１０９２のように、プログラムカウンタ値、スタック値、条件及び実行状態識別子、の組に、更新時刻及び更新回数を加えた組であっても構わない。
【０１１６】
なお、実行状態識別結果９９１は、要素数が所定の個数を超えた場合に、いずれかの要素が削除されたものであってもよい。当該削除は、例えば、最近最も使われてない要素を削除対象とすることにより行う。実行状態識別結果１０９２の更新時刻は、最近最も使われてない要素（組）の削除のために用いることができる。要素の中で最も更新時刻の古い組が削除対象とされるのである。
【０１１７】
あるいは、当該削除を、実行状態識別結果１０９２の更新回数が最も少ない組を対象とすることにより行うこともできる。
［処理フロー］
図１３に表す優先度決定装置１００ａが行う処理の処理フロー例は、図１０に表す処理フローにおけるＳ６０４の処理として、図１５に表す処理を行うものである。
【０１１８】
図１５は、優先度決定装置１００ａが行う、図１０に表すＳ６０４の処理を表す概念図である。
【０１１９】
優先度決定装置１００ａが行う、図１０に表すＳ６０４の処理は、以下を除いて、図１１に表すＳ７０１乃至Ｓ７１０の処理と同じである。以下には、図１１に表すＳ７０１乃至Ｓ７１０の処理と異なる部分を説明する。ただし、以下の説明と図１１に表すＳ７０１乃至Ｓ７１０の処理の説明とが矛盾する場合には、以下の説明を優先する。
【０１２０】
Ｓ７０１の処理の次に、実行状態識別手段１７０は、Ｓ７０１ａの処理として、記録手段１９０が保持する実行状態識別結果９９１を検索する。実行状態識別手段１７０は、当該検索を、取得手段１５０がＳ７０１の処理により取得した、プログラムカウンタ値及びスタック値により行う。
【０１２１】
そして、実行状態識別手段１７０は、Ｓ７０１ｂの処理として、実行状態識別結果９９１に、当該プログラムカウンタ値及びスタック値に該当するものがあるかを判定する。
【０１２２】
実行状態識別手段１７０は、Ｓ７０１ｂの処理により該当するものがあると判定した場合は、図１５に表すＳ７０６以降の処理を行う。Ｓ７０６乃至Ｓ７１０の処理の説明は、図１１の説明において述べた通りである。
【０１２３】
実行状態識別手段１７０は、Ｓ７０１ｂの処理により該当するものがあると判定しなかった場合は、Ｓ７０２の処理を行う。Ｓ７０２乃至Ｓ７０５の処理の説明は、図１１の説明において述べた通りである。
【０１２４】
そして、Ｓ７０５の処理により、該当する実行状態識別ルールがあると判定した場合は、実行状態識別手段１７０は、次に説明するＳ７０５ａの処理を行う。すなわち、実行状態識別手段１７０は、当該実行状態識別ルールが含むプログラムカウンタ値及びスタック値の組合せが実行状態識別結果９９１に無い場合は、当該実行状態識別ルールを実行状態識別結果９９１に追加する。また、実行状態識別手段１７０は、当該組合せが実行状態識別結果９９１に既にある場合は、当該組合せに係る実行状態識別ルールを更新する。その際に、実行状態識別結果９９１が図１４に表す実行状態識別結果１０９２のように更新時刻や更新回数を含む場合は、更新時刻や更新回数を併せて更新する。
【０１２５】
そして、実行状態識別手段１７０は、前述のＳ７０６の処理を行う。Ｓ７０６乃至Ｓ７１０の処理の説明は前述の通りである。
【０１２６】
以上説明したように、図１３に表す優先度決定装置１００ａは、実行状態識別手段１７０がマッチング処理により識別した実行状態識別ルールを、実行状態識別結果９９１に加えて、記録手段１９０に保持させる。そして、優先度決定装置１００ａは、対象命令を検出した場合（図１０のＳ６０２のＹの場合）に、まずは実行状態識別結果９９１からその命令以降に実行される命令列の記述にマッチする実行状態識別ルールを探す（Ｓ７０１乃至Ｓ７０１ｂ）。そして、優先度決定装置１００ｂは、実行状態識別ルールがある場合（図１５のＳ７０１ｂのＹの場合）には、当該ルールにより、その命令列に係る通信の優先度を決定する（図１５のＳ７０６乃至Ｓ７１０、ただしＳ７０８のＹの場合に限る。）。ここで、実行状態識別結果９９１からの実行状態識別ルールの検索は、マッチング処理を伴う実行状態識別ルールの検索、より処理量の少ない処理である。そのため、優先度決定装置１００ｂは、その命令についての実行状態識別ルールの導出を、図１に表す優先度決定装置１００より、プログラム１１１の命令実行時においてより少ない処理量の処理により行うことができる。
［効果］
第二実施形態の優先度決定装置は、第一実施形態の優先度決定装置と同じ構成を備えるので、まず、第一実施形態の優先度決定装置と同じ効果を奏する。
【０１２７】
第二実施形態の優先度決定装置は、それに加えて、過去に識別した実行状態識別ルールを実行状態識別結果を保持する。そして、第二実施形態の優先度決定装置は、対象命令を検出した場合に、まずは当該実行状態識別結果からその命令以降に実行される命令列にマッチする実行状態識別ルールを探す。そして、第二実施形態の優先度決定装置は、実行状態識別ルールがある場合には、当該実行状態識別ルールにより、その命令に関する通信の優先度を決定する。ここで、実行状態識別結果からの実行状態識別ルールの検索は、前述のように、実行状態識別ルール情報からのその命令についての実行状態識別ルールの検索より、処理量の少ない処理である。そのため、第二実施形態の優先度決定装置は、その命令にマッチする実行状態識別ルールの導出を、第一実施形態の優先度決定装置より、より少ない処理量の処理により行うことができる。
＜第三実施形態＞
第三実施形態は、実行手段によるプログラムの実行前に、予め、プログラムの各対象命令について実行状態の識別を行う、優先度決定装置に関する実施形態である。
［構成と動作］
図１６は、第三実施形態の優先度決定装置の例である優先度決定装置１００ｂの構成を表す概念図である。
【０１２８】
優先度決定装置１００ｂは、図１３に表す優先度決定装置１００ａに、記録手段１９０に接続されたプログラム分析手段１２９０を追加した構成である。
【０１２９】
優先度決定装置１００ｂの説明は、この点及び以下を除いて、図１３に表す優先度決定装置１００ａの説明と同じである。以下には、優先度決定装置１００ａと異なる部分を説明する。ただし、以下の説明と図１３に表す優先度決定装置１００ａの説明とが矛盾する場合は、以下の説明が優先される。
【０１３０】
プログラム分析手段１２９０は、実行手段１１０によるプログラム１１１の実行とは独立に動作する。
【０１３１】
プログラム分析手段１２９０は、まず、記録手段１９０に記録された対象命令情報１４１の対象命令の一つを特定する。プログラム分析手段１２９０は、特定した対象命令について、前述の実行状態識別を行い、実行状態識別ルール情報１７２に対応付け可能な実行状態識別ルールがある場合には、その対象命令についての実行状態識別ルールを特定する。そして、プログラム分析手段１２９０は、当該実行状態識別ルールのプログラムカウンタ値及びスタック値の組合せが実行状態識別結果９９１に無い場合は、当該実行状態識別ルールを実行状態識別結果９９１に追加する。また、プログラム分析手段１２９０は、当該組合せが実行状態識別結果９９１に既にある場合は、当該組合せに係る実行状態識別ルールを更新する。
【０１３２】
プログラム分析手段１２９０は、上記動作を、各対象命令について順次行う。
【０１３３】
プログラム分析手段１２９０が上記動作を行う時期は任意であるが、典型的には、プログラム１１１が記録手段１９０に導入された時点が想定される。
［処理フロー］
図１７及び図１８は、図１６に表す優先度決定装置１００ｂのプログラム分析手段１２９０が行う処理の処理フロー例を表わす概念図である。
【０１３４】
まず、プログラム分析手段１２９０は、Ｓ１３０１の処理として、次に説明するＳ１３０２の処理をまだ行っていない対象命令が対象命令情報１４１にあるかを判定する。
【０１３５】
プログラム分析手段１２９０は、Ｓ１３０１の処理により、Ｓ１３０２の処理をまだ行っていない対象命令があると判定した場合は、Ｓ１３０２の処理を行う。
一方、プログラム分析手段１２９０は、Ｓ１３０１の処理により、Ｓ１３０２の処理をまだ行っていない対象命令があると判定しなかった場合は、Ｓ１３０５の処理を行う。
【０１３６】
プログラム分析手段１２９０は、Ｓ１３０２の処理を行う場合は、Ｓ１３０２の処理をまだ行っていない対象命令の一つを特定し、当該対象命令をプログラム１１１から読み込む。
【０１３７】
そして、プログラム分析手段１２９０は、Ｓ１３０４として、後述の、図１８に表す、Ｓ７０１−２乃至Ｓ７０５ａ−２の処理を行う。
【０１３８】
そして、プログラム分析手段１２９０は、Ｓ１３０５の処理として、図１７に表す処理を終了するかを判定する。プログラム分析手段１２９０は、当該判定を、例えば、例えば外部から入力される情報により行う。
【０１３９】
プログラム分析手段１２９０は、Ｓ１３０５の処理により図１７に表す処理を終了することを判定した場合は、同処理を終了する。
【０１４０】
一方、プログラム分析手段１２９０は、Ｓ１３０５の処理により図１７に表す処理を終了することを判定しなかった場合は、Ｓ１３０１の処理を再度行う。
【０１４１】
図１８は、図１７に表すＳ１３０４の処理を表す概念図である。
【０１４２】
図１８に表す、Ｓ７０１−２乃至Ｓ７０５ａ−２の各処理の説明は、図１５に表す、Ｓ７０１乃至Ｓ７０５ａの各処理の説明と同じである。ただし、図１５に表す、Ｓ７０１乃至Ｓ７０５ａの各処理の説明において、図１５に表す各処理番号の後部に「−２」を付加し、また、図１５に表す各処理の主体を「プログラム分析手段１２９０」に読み替える。
【０１４３】
さらに、図１５の説明における、「実行位置」を「アドレスの番号」に読み替える。ここで、アドレスの番号は、図１７に表すＳ１３０２の処理により特定した対象命令のアドレスの番号である。当該アドレスの番号は、当該対象命令のプログラム１１１内の実行点のアドレスについて付与された番号である。当該アドレスの番号は、図１８に表す処理において図１５に表すＳ７０１乃至Ｓ７０５ａの処理におけるプログラムカウンタ値として用いられる。  なお、図１８に表す処理においてはスタック値は存在しないので、Ｓ７０４−２の処理の際に、呼び出し関係を表す実行状態識別ルールを予め検索対象から除外しても良い。また、Ｓ７０４−２の処理の際に、実行時でなければ決定できない情報を含む実行状態識別ルールは検索対象から除外しても良い。ここで、実行時でなければ実行状態識別ルールは、例えば、計算結果を利用したルールや間接参照の値を利用したルールなどである。
【０１４４】
また、プログラム分析手段１２９０は、更新時刻、回数など、プログラム１１１の実行時に記録すべき情報は、Ｓ７０５ａ−２の処理の際に更新しない。
【０１４５】
以上の処理により、プログラム分析手段１２９０は、実行手段１１０によるプログラム１１１の実行とは独立に、ある程度の実行状態識別結果９９１を作成することができる。そのため、優先度決定装置１００ｂは、実行手段１１０によるプログラム１１１の命令実行時の処理量を低減し得る。
［効果］
第三実施形態の優先度決定装置は、第二実施形態の優先度決定装置と同じ構成を備えるので、まず、第二実施形態の優先度決定装置と同じ効果を奏する。
【０１４６】
第三実施形態の優先度決定装置は、それに加えて、プログラム分析手段が、実行手段によるプログラムの実行とは独立に、ある程度の実行状態識別結果を作成することができる。そのため、第三実施形態の優先度決定装置は、実行手段によるプログラムの命令実行時の処理量を低減し得る。
【０１４７】
以上においては、優先度判定装置が、シンボル情報を利用して実行状態識別情報の検索を行う場合について説明した。シンボル情報はプログラムが含むルーチン等の識別子を記したもので、処理内容や特性の判定に有用である場合が多い。しかしながら、実行手段の構成によっては、シンボル情報はプログラムの実行に必ずしも必要ではない。そのため、シンボル情報を含まないプログラムも存在する。
【０１４８】
シンボル情報がプログラムに必ず含まれる例は、Ｊａｖａ（登録商標）言語で作成されたプログラムなどである。一方、アセンブリ言語などで作成されたプログラムや、Ｃ言語で作成され、シンボル情報を削除されたプログラムなどは、シンボル情報が含まれない可能性がある。
【０１４９】
シンボル情報がプログラムに含まれない場合には、シンボル情報の代わりにシステムコール番号を用いることができる。システムコール番号は、ＯＳが提供するシステムコールの種類毎に定義された番号で、プログラムがシステムコールを発行するときは、その値を引数などに入れてカーネルに処理を切り替える。通常は、通信プログラムはシステムコールにより処理されるので、システムコールを識別できれば、プログラム内のルーチン呼び出し等の情報は得られないものの、通信に係るプログラムの実行状態を識別できる場合がある。
【０１５０】
システムコール番号を用いた実行状態識別に用いられる実行状態識別ルールは、シンボル情報の代わりにシステムコール番号を用いたものになる。優先度決定装置のその他の構成や動作は、以上において説明した優先度決定装置の構成や動作と同様なので、説明を省略する。
【０１５１】
シンボル情報の代替としてシステムコール番号を用いた場合、第一乃至第三実施形態の優先度決定装置は、実行するプログラムがシンボル情報を含まないものであっても通信の優先度を決定することが可能である。
【０１５２】
図１９は、本発明の優先度決定装置の最小限の構成である優先度決定装置１００ｘを表す概念図である。
【０１５３】
優先度決定装置１００ｘは、取得手段１５０ｘと、実行状態識別手段１７０ｘと、優先度決定手段１８０ｘと、を備える。
【０１５４】
取得手段１５０ｘは、図示しない通信手段が行う通信に関連するプログラムの図示しない実行手段による実行位置を表す情報である実行位置情報の取得を行う。
【０１５５】
実行状態識別手段１７０ｘは、前記実行位置の実行以降に実行される前記プログラムの所定の部分の実行状態の識別を行う。
【０１５６】
優先度決定手段１８０ｘは、前記識別の結果により前記通信の優先度の決定を行う。
【０１５７】
優先度決定装置１００ｘは、実行状態識別手段１７０ｘが識別した当該実行状態に係る通信の優先度を優先度決定手段１８０ｘが決定する。優先度決定装置１００ｘは、当該優先度の決定を、取得手段１５０ｘが取得した前記実行位置の実行以降に実行される前記プログラムの所定の部分の実行状態の識別結果により行う。ここで、前記通信手段が通信を行う際には通信を行うためのプログラムが必ず実行される。そのため、当該実行状態には、通信手段が行う通信の状態が反映される。優先度決定装置は、プログラムの実行状態に依存した通信優先度決定を行うので、通信手段が行う通信の状況を反映した適切な通信優先度の決定を行うことができる。
【０１５８】
以上により、優先度決定装置１００ｘは、上記構成により、［発明の効果］の項に記載した効果を奏する。
【０１５９】
以上、好ましい実施形態をあげて本発明を説明したが、本発明は必ずしも上記実施形態に限定されるものではなく、その技術的思想の範囲内において様々に変形し実施することができる。
【０１６０】
また、上記の実施形態の一部又は全部は、以下の付記のようにも記述され得るが、以下には限られない。
【０１６１】
（付記Ａ１）
通信手段が行う通信に関連するプログラムの実行手段による実行位置を表す情報である実行位置情報の取得を行う取得手段と、
前記実行位置の実行以降に実行される前記プログラムの所定の部分の実行状態の識別を行う実行状態識別手段と、
前記識別の結果により前記通信の優先度の決定を行う優先度決定手段と、
を備える、優先度決定装置。
【０１６２】
（付記Ａ２）
前記プログラムの実行を行う実行手段による、前記プログラムの予め特定された通信に関連する部分の実行の検出を行う検出手段をさらに備え、
前記取得手段が、前記検出により、前記取得を行う、
付記Ａ１に記載された優先度決定装置。
【０１６３】
（付記Ａ３）
前記検出手段が、前記検出を、前記プログラムの命令の実行を検出することにより行う付記Ａ２に記載された優先度決定装置。
【０１６４】
（付記Ａ４）
前記通信手段が受信したパケットから、前記プログラムの当該受信に係る部分を識別し、当該部分が予め定められたものに該当する場合に、前記取得手段に対し前記取得を行わせる、プログラム部分識別手段をさらに備える、付記Ａ１又は付記Ａ２に記載された優先度決定装置。
【０１６５】
（付記Ａ５）
前記プログラム部分識別手段が、前記部分の識別を、前記パケットのヘッダに含まれる情報により行う、付記Ａ４に記載された優先度決定装置。
【０１６６】
（付記Ａ６）
前記実行手段がアドレスカウンタを備え、前記実行位置情報が、前記アドレスカウンタの保持する情報である、付記Ａ１乃至付記Ａ５のうちのいずれか一に記載された優先度決定装置。
【０１６７】
（付記Ａ７）
前記実行手段がスタックポインタを備え、前記実行位置情報が、前記スタックポインタの保持する情報である、付記Ａ１乃至付記Ａ６のうちのいずれか一に記載された優先度決定装置。
【０１６８】
（付記Ａ８）
前記実行状態識別手段が、前記プログラムの所定の命令からなる命令列により、前記実行状態情報の識別を行う、
付記Ａ１乃至付記Ａ７のうちのいずれか一に記載された優先度決定装置。
【０１６９】
（付記Ａ９）
前記所定の命令が、前記実行位置以降に行われる命令である、
付記Ａ１乃至付記Ａ８のうちのいずれか一に記載された優先度決定装置。
【０１７０】
（付記Ａ１０）
前記実行状態識別手段が、前記命令列と前記プログラムのシンボル情報とにより、前記実行状態情報の識別を行う、
付記Ａ９に記載された優先度決定装置。
【０１７１】
（付記Ａ１１）
前記実行状態識別手段が、前記命令列と前記プログラムのシステムコール番号とにより、前記実行状態情報の識別を行う、
付記Ａ９に記載された優先度決定装置。
【０１７２】
（付記Ａ１２）
前記実行状態識別手段が前記実行状態情報の識別を、予め設定された、実行状態を識別するためのルールである、実行状態識別ルール、により行う、付記Ａ１乃至付記Ａ１１のうちのいずれか一に記載された優先度決定装置。
【０１７３】
（付記Ａ１３）
前記優先度決定手段が、前記優先度の決定を、予め設定された、優先度を決定するためのルールである、優先度決定ルール、により行う、付記Ａ１乃至付記Ａ１２のうちのいずれか一に記載された優先度決定装置。
【０１７４】
（付記Ａ１４）
前記実行手段をさらに備える、付記Ａ１乃至付記Ａ１３のうちのいずれか一に記載された優先度決定装置。
【０１７５】
（付記Ａ１５）
前記実行状態識別手段が、過去に識別した前記識別の結果により、前記実行状態の識別を行う、付記Ａ１乃至付記Ａ１４のうちのいずれか一に記載された優先度決定装置。
【０１７６】
（付記Ａ１６）
前記実行状態識別手段が、過去に識別した前記識別の結果を前記実行位置情報と関連付けた情報を記録し、前記関連付けた情報を、前記取得部が取得した前記実行位置情報により特定することにより、前記実行状態の識別を行う、付記１５に記載された優先度決定装置。
【０１７７】
（付記Ａ１７）
前記プログラムを実行させることなく前記プログラムを分析することにより前記プログラムの部分の実行状態の第二の識別を行い前記プログラムにおける位置と前記第二の識別の結果との対応付けを行うプログラム分析手段をさらに備える、記Ａ１乃至付記Ａ１６のうちのいずれか一に記載された優先度決定装置。
【０１７８】
（付記Ａ１８）
前記実行状態識別手段が前記対応付けの結果により前記識別を行う、付記Ａ１７に記載された優先度決定装置。
【０１７９】
（付記Ａ１９）
前記取得手段が、前記実行位置情報の取得に加えて、前記実行位置情報の取得際の前記プログラムの稼働状態の取得を行う、付記Ａ１乃至付記Ａ１８に記載された優先度決定装置。
【０１８０】
（付記Ａ２０）
前記優先度決定手段が、前記識別の結果に加えて、前記稼働状態により、前記通信の優先度の決定を行う、付記Ａ１９に記載された優先度決定装置。
【０１８１】
（付記Ｂ１）
付記Ａ１乃至付記Ａ１８のうちのいずれか一に記載された優先度決定装置が決定した前記優先度により前記通信手段が行う通信の制御を行う制御手段をさらに備える、制御装置。
【０１８２】
（付記Ｃ１）
付記Ｂ１に記載された制御装置が行う前記制御に従う通信を行う前記通信手段をさらに備える通信装置。
【０１８３】
（付記Ｄ１）
通信に関連するプログラムの実行位置を表す情報である実行位置情報の取得を行い、
前記実行位置の実行以降に実行される前記プログラムの所定の部分の実行状態の識別を行い、
前記識別の結果により前記通信の優先度の決定を行う、
優先度決定方法。
【０１８４】
（付記Ｅ１）
通信に関連するプログラムの実行位置を表す情報である実行位置情報の取得を行う処理と、
前記実行位置の実行以降に実行される前記プログラムの所定の部分の実行状態の識別を行う処理と、
前記識別の結果により前記通信の優先度の決定を行う処理と、
をコンピュータに実行させる優先度決定プログラム。
【符号の説明】
【０１８５】
１００    優先度決定装置
１１１、１１１ａ    プログラム
１１２ａ    命令列
１１３ａ    シンボルテーブル
１１０    実行手段
１２０    通信手段
１３０    制御手段
１４０    検出手段
１４１、４４１    対象命令情報
１５０    取得手段
１６０    プログラム部分識別手段
１６１、５６１    プログラム識別情報
１７０    実行状態識別手段
１７１    シンボル情報群
１７２、２７２    実行状態識別ルール情報
１８０    優先度決定手段
１８１、３８１    優先度ルール情報
１９０    記録手段
９９１、１０９１、１０９２    実行状態識別結果
１２９０    プログラム分析手段
【図１】
2017195452.tif 000003
【図２】
2017195452.tif 000004
【図３】
2017195452.tif 000005
【図４】
2017195452.tif 000006
【図５】
2017195452.tif 000007
【図６】
2017195452.tif 000008
【図７】
2017195452.tif 000009
【図８】
2017195452.tif 000010
【図９】
2017195452.tif 000011
【図１０】
2017195452.tif 000012
【図１１】
2017195452.tif 000013
【図１２】
2017195452.tif 000014
【図１３】
2017195452.tif 000015
【図１４】
2017195452.tif 000016
【図１５】
2017195452.tif 000017
【図１６】
2017195452.tif 000018
【図１７】
2017195452.tif 000019
【図１８】
2017195452.tif 000020
【図１９】
2017195452.tif 000021