(57)【特許請求の範囲】
【請求項１】
パケットを受信したときに、そのパケットに対するプロトコル処理のタスクを実行待ち状態とする第１の状態設定ステップと、
アプリケーションのプロセスを実行する優先度と、プロセスにより処理されるパケットに対するプロトコル処理を実行する優先度とが設定されたテーブルを参照し、実行待ち状態となっているプロセスのタスク及び前記第１の状態設定ステップにより実行待ち状態とされたプロトコル処理のタスクの中で、プロセスの優先度がプロトコル処理の優先度よりも高いときに最も優先度の高いプロセスのタスクを選択する第１の選択ステップと、
前記第１の選択ステップにより選択されたタスクを優先して実行する第１の実行ステップと、
をコンピュータに実現させることを特徴とするスケジューリングプログラム。
【請求項２】
前記プロトコル処理の優先度は、そのプロトコル処理の対象となるパケットを処理するアプリケーションのプロセスについて予め設定された優先度と同一であることを特徴とする請求項１記載のスケジューリングプログラム。
【請求項３】
前記第１の実行ステップは、実行したタスクがプロトコル処理のタスクであるときには、そのプロトコル処理が完了した後に、そのプロトコル処理の対象となるパケットを処理するアプリケーションのプロセスのタスクを実行待ち状態とすることを特徴とする請求項１又は請求項２に記載のスケジューリングプログラム。
【請求項４】
前記アプリケーションのプロセスは、受信したパケットを処理するアプリケーションのプロセス及び通信を伴わないアプリケーションのプロセスの両方を含むことを特徴とする請求項１〜請求項３のいずれか１つに記載のスケジューリングプログラム。
【請求項５】
パケットを受信したときに、受信したパケットを処理するアプリケーションのプロセスのタスクを、実行待ち状態且つパケットに対するプロトコル処理を要する状態とする第２の状態設定ステップと、
アプリケーションのプロセスを実行する優先度が設定されたテーブルを参照し、実行待ち状態となっているプロセスのタスクの中から、最も優先度の高いプロセスのタスクを選択する第２の選択ステップと、
前記選択されたタスクが第２の状態設定ステップによりパケットに対するプロトコル処理を要する状態とされているときには、そのタスクに係るプロセスにより処理されるパケットに対してプロトコル処理を実行すると共に前記タスクをプロトコル処理を要しない状態とする一方、前記選択されたタスクがプロトコル処理を要する状態でないときには、そのタスクに係るプロセスを実行する第２の実行ステップと、
をコンピュータに実現させることを特徴とするスケジューリングプログラム。
【請求項６】
パケットを受信したときに、そのパケットに対するプロトコル処理のタスクを実行待ち状態とする第１の状態設定ステップと、
アプリケーションのプロセスを実行する優先度と、プロセスにより処理されるパケットに対するプロトコル処理を実行する優先度とが設定されたテーブルを参照し、実行待ち状態となっているプロセスのタスク及び前記第１の状態設定ステップにより実行待ち状態とされたプロトコル処理のタスクの中で、プロセスの優先度がプロトコル処理の優先度よりも高いときに最も優先度の高いプロセスのタスクを選択する第１の選択ステップと、
前記第１の選択ステップにより選択されたタスクを優先して実行する第１の実行ステップと、
をコンピュータが実行することを特徴とするスケジューリング方法。
【請求項７】
パケットを受信したときに、そのパケットに対するプロトコル処理のタスクを実行待ち状態とする第１の状態設定手段と、
アプリケーションのプロセスを実行する優先度と、プロセスにより処理されるパケットに対するプロトコル処理を実行する優先度とが設定されたテーブルを参照し、実行待ち状態となっているプロセスのタスク及び前記第１の状態設定手段により実行待ち状態とされたプロトコル処理のタスクの中で、プロセスの優先度がプロトコル処理の優先度よりも高いときに最も優先度の高いプロセスのタスクを選択する第１の選択手段と、
前記第１の選択手段により選択されたタスクを優先して実行する第１の実行手段と、
を含んで構成されることを特徴とするスケジューリング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにおいて、複数のタスクの実行をスケジューリングする技術に関する。
【背景技術】
【０００２】
コンピュータシステムでは、サーバやクライアントなどのコンピュータがネットワークを介して相互に接続されている。そして、各コンピュータでは、他のコンピュータからパケットを受信したときに、オペレーティングシステム（ＯＳ：Operating System）において、受信したパケットに対してプロトコル処理が実行される。このプロトコル処理とは、受信したパケットのヘッダにおける各層のプロトコルに関連する処理をいう。例えば、トランスポート層のＴＣＰ（Transmission Control Protocol）ヘッダのチェックサムに基づいて、データが正常であるか否かを確認する処理等が該当する。そして、プロトコル処理が完了した後に、パケットのアプリケーションデータを処理するアプリケーションのプロセスが実行される。
【０００３】
ここで、かかるプロトコル処理は、通常、先に受信したパケットから順に行われる。このため、優先度の高いプロセスにより処理されるパケットのプロトコル処理も、優先度の低いプロセスにより処理されるパケットのプロトコル処理も、その優先度に関係なくパケットの受信順にＣＰＵ（Central Processing Unit）資源が割り当てられてしまう。従って、優先度の高いプロセスにより処理されるパケットのプロトコル処理の実行が遅延し、その結果、優先度の高いプロセスの実行が遅延してしまうという問題がある。そこで、かかる問題を解決するため、受信したパケットを処理するプロセスについて予め設定された優先度に基づいて、優先度の高いプロセスにより処理されるプロトコル処理から順に実行する技術が用いられている。また、受信したパケットを処理するプロセスの優先度が高ければ、そのパケットのプロトコル処理を即時に他のプロセスに割り込ませて実行する技術が用いられている。
【特許文献１】特許３８７６６８７公報
【特許文献２】特開２００５−２１７４９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、このように優先度の高いプロセスにより処理されるパケットのプロトコル処理を優先して実行した場合、さらに次のような問題がある。
即ち、プロトコル処理もプロセスも同様にＣＰＵ資源を使用するにも関わらず、あるパケットのプロトコル処理の優先度と、プロトコル処理が完了した他のパケットに対応するプロセスの優先度と、の比較はなされない。また、同様に、かかるプロトコル処理の優先度と、通信を伴わずに独立して実行されるアプリケーションのプロセスの優先度と、の比較もなされない。このため、優先度が低いプロセスにより処理されるパケットに対するプロトコル処理と、優先度が高いプロセスと、が同時に実行待ち状態になった場合、両者の実行順序は全く保証されなかった。従って、優先度の高いプロセスよりも先に、優先度の低いプロセスにより処理されるパケットに対するプロトコル処理にＣＰＵ資源が割り当てられ、実行されてしまうことがあった。このため、依然として、優先度の高いプロセスの処理が遅延してしまうという問題は解消されていなかった。
【０００５】
そこで、本発明は以上のような従来の問題点に鑑み、通信によりパケットのプロトコル処理が発生したとしても、プロトコル処理であるかプロセスであるかに関わらず、最も優先度の高いものを優先して実行することで、重要なプロセスに遅延を生じさせないことを目的とする。
【課題を解決するための手段】
【０００６】
このため、開示のシステムにおいては、パケットを受信したときに、受信したパケットのプロトコル処理のタスクを実行待ち状態とする。さらに、アプリケーションのプロセスを実行する優先度と、そのプロセスにより処理されるパケットに対するプロトコル処理を実行する優先度とが設定されたテーブルを参照する。そして、実行待ち状態となっている全てのプロセスのタスク及び全てのプロトコル処理のタスクから、最も優先度の高いタスクを選択し、優先して実行する。
【０００７】
また、他の手段として、パケットを受信したときに、受信したパケットを処理するアプリケーションのプロセスのタスクを、実行待ち状態且つパケットに対するプロトコル処理を要する状態とする。そして、アプリケーションのプロセスを実行する優先度が設定されたテーブルを参照し、実行待ち状態となっているプロセスのタスクの中から、最も優先度の高いプロセスのタスクを選択する。さらに、選択されたタスクが、パケットに対するプロトコル処理を要する状態とされているときには、そのタスクに係るプロセスにより処理されるパケットに対してプロトコル処理を実行すると共にタスクをプロトコル処理を要しない状態とする一方、選択されたタスクがプロトコル処理を要する状態でないときには、そのタスクに係るプロセスを実行する。
【発明の効果】
【０００８】
開示のシステムによれば、ＣＰＵ資源の割り当て待ちのタスクがプロトコル処理に係るものであるかプロセスに係るものであるかに関わらず、最も優先度の高いタスクに対して優先してＣＰＵ資源が割り当てられる。このため、優先度の低いプロセスに対応するパケットのプロトコル処理によって優先度の高いプロセスの実行が妨げられることなく、優先度の高いプロセスが優先して迅速に実行され、重要なプロセスの応答速度が向上することとなる。
【発明を実施するための最良の形態】
【０００９】
［第１実施例］
図１は、第１実施例において、本発明のスケジューリング機構を具現化したシステムの全体構成を示す。このシステムは、パケット受信部１０，パケット解析部２０，第１セッション管理部３０，第１スケジューラ４０，処理部５０，対応セッションテーブル６０，対応プロセステーブル７０，プロセス優先度テーブル８０及びプロトコル処理優先度テーブル９０を含む。これらの構成は、少なくともＣＰＵ（Central Processing Unit）及びメモリを備えたコンピュータにおいて実現される。そして、これらの構成は、コンピュータで読取可能な記憶媒体に記憶されたスケジューリングプログラムがメモリにロードされることにより実現される。なお、本実施例では、ＯＳとしてＬｉｎｕｘ２．６を用いた動作環境において、ＴＣＰ又はＵＤＰ（User Datagram Protocol）／ＩＰ（Internet Protocol）プロトコルを用いた通信を行う例を用いて説明する。
【００１０】
パケット受信部１０は、ネットワークインタフェースであり、他のコンピュータとネットワークを介して接続され、パケットを受信する。また、受信したパケットは、ＯＳが備えるデバイスドライバの機能により、パケット解析部２０へと送られる。
【００１１】
パケット解析部２０は、受信したパケットのヘッダを解析し、パケットの転送先及び転送元のＩＰアドレス及びポート番号並びにプロトコル種別（ＴＣＰ，ＵＤＰ等）を特定する。そして、対応セッションテーブル６０に基づいて、受信したパケットに対応するセッションを特定する。そして、受信したパケットをセッションごとに振り分け、セッションごとのパケットキューに接続する。ここで、セッションとは、パケットの送受信双方のＩＰアドレス及びポート番号によって定まる仮想的な通信パスを示す。
【００１２】
第１セッション管理部３０は、セッション及びそのセッションを経由するパケットを処理するアプリケーションのプロセスの対応付けを行い、後述する対応プロセステーブル７０にその対応関係を設定する。また、プロセス及びそのプロセスによって処理されるパケットに対するプロトコル処理のタスク（タスク構造体）に相当する実行エントリを生成する。この実行エントリは、ＣＰＵを割り当てることが可能か否かを特定する状態値を有する。そして、この状態値は、ＣＰＵが既に割り当てられ現在実行中の状態を示す「Run（RUNNING）」，ＣＰＵの割り当て待ちの状態であって即時実行可能な状態を示す「Ready（RUNNING）」，及び入出力待ち等の理由により即時にＣＰＵを割り当てることが不可能な状態を示す「Wait（INTERUPTIBLE/UNINTERUPTIBLE）」のいずれかである。第１セッション管理部３０では、セッション及びプロセスの対応付けが行われたとき、プロセス及びそのプロセスで処理するパケットに対するプロトコル処理の実行エントリを、まず「Wait」状態とする。そして、第１セッション管理部３０は、プロセスで処理するパケットがセッションのパケットキューに接続されたときに、これらの実行エントリを「Ready」状態とし、後述する第１スケジューラ４０が保持する実行待ちキュー（ＲＵＮキュー）に接続する。なお、第１セッション管理部３０が、第１の状態設定ステップ，第１の状態設定手段，第１の選択ステップ及び第１の選択手段として機能する。
【００１３】
第１スケジューラ４０は、「Ready」状態の実行エントリが接続される実行待ちキューを保持する。そして、実行エントリに係るプロトコル処理及びプロセスの実行についてスケジューリングを行い、各実行エントリに対してＣＰＵ資源を割り当てる。
【００１４】
処理部５０は、第１スケジューラ４０によりＣＰＵ資源が割り当てられ「Run」状態となった実行エントリに係るプロトコル処理又はプロセスを実行する。なお、第１スケジューラ４０及び処理部５０が、第１の実行ステップ及び第１の実行手段として機能する。
【００１５】
対応セッションテーブル６０は、通信システムコールの発行によりセッションが確立したときに、パケットとセッションとの対応関係が設定されるものである。そして、図２に示すように、パケットのヘッダ情報としての転送元ＩＰアドレス，転送元ポート番号，転送先ＩＰアドレス，転送先ポート番号及びプロトコル種別、並びにこれらの組み合わせに対応するセッションを含んで構成される。
【００１６】
対応プロセステーブル７０は、セッションとプロセスとの対応関係が設定されるものである。そして、図３に示すように、セッション及びこれに対応するプロセスを含んで構成される。なお、１つのセッションに対応するプロセスが複数の場合には、複数のプロセスが設定される。
【００１７】
プロセス優先度テーブル８０は、プロセスを実行する優先度を示す値が設定されるものである。そして、図４に示すように、プロセス及びその優先度を含んで構成される。この優先度は、値が大きいものほど優先して処理すべきであることを示す。
【００１８】
プロトコル処理優先度テーブル９０は、プロトコル処理を実行する優先度を示す値が設定されるものである。そして、図５に示すように、プロトコル処理及びその優先度を含んで構成される。
【００１９】
次に、本システムにおいて実行される処理について説明する。
図６は、初めに通信システムコール（bind，connect，accept等）が発行されてセッションが確立され、セッションとそのセッションで受信するパケットのヘッダ情報とが対応付けられ、その対応関係が対応セッションテーブル６０に設定されたときに、第１セッション管理部３０で実行される処理を示す。
【００２０】
ステップ１（図ではＳ１と略記する。以下同様）では、セッションと、そのセッションを経由するパケットを処理するアプリケーションのプロセスとを対応付け、その対応関係を対応プロセステーブル７０に設定する。
【００２１】
ステップ２では、対応付けたプロセス及びそのプロセスで処理するパケットに対するプロトコル処理の実行エントリを生成する。
ステップ３では、プロトコル処理優先度テーブル９０に、プロトコル処理の優先度を設定する。このとき、予め設定されているプロセス優先度テーブル８０を参照し、プロトコル処理の優先度として、そのプロトコル処理の対象となるパケットを処理するプロセスの優先度と同一の優先度を設定する。
【００２２】
また、既にセッションと対応付けられたプロセスにおいて、さらに当該プロセスを複製するシステムコール（fork，clone等）が発行された場合や、ファイルディスクリプタが複製され（dup等）、他のプロセスに受け渡すときなどにおいても、上記ステップ１〜３と同様の処理を行う。
【００２３】
図７は、パケット受信部１０においてパケットを受信したときに、パケット解析部２０（ステップ２１〜２２）及び第１セッション管理部３０（ステップ２３）で実行される処理を示す。
【００２４】
ステップ２１では、受信したパケットのヘッダを解析し、そのパケットに対応するセッションを特定する。具体的には、対応セッションテーブル６０を参照し、当該受信パケットのヘッダの転送元ＩＰアドレス，転送元ポート番号，転送先ＩＰアドレス，転送先ポート番号及びプロトコル種別が一致するレコードのセッションを特定する。
【００２５】
ステップ２２では、受信したパケットを、特定したセッションのパケットキューに接続する。かかる接続が行われることにより、第１セッション管理部３０に対し、パケットが受信されたことが通知される。
【００２６】
ステップ２３では、対応プロセステーブル７０を参照し、パケットがパケットキューに接続されたセッションに対応するプロセスを特定する。そして、特定したプロセスで処理するパケットに対するプロトコル処理の実行エントリを、第１スケジューラ４０の実行待ちキューに接続する。このとき、対応プロセステーブル７０において当該セッションが複数のプロセスに対応している場合には、複数のプロセスに対応するプロトコル処理の実行エントリ全てを実行待ちキューに接続する。
【００２７】
図８は、第１スケジューラ４０において実行される処理を示す。この処理は、ＣＰＵ資源に空きが生じたとき、即ち、実行待ちキューに接続されている実行エントリに対してＣＰＵ資源を新たに割り当てることが可能になったときに実行される。
【００２８】
ステップ３１では、実行待ちキューに接続された実行エントリの全てについて、プロセスの実行エントリであればプロセス優先度テーブル８０、プロトコル処理の実行エントリであればプロトコル処理優先度テーブル９０に夫々設定された優先度を比較する。そして、最も優先度の値の大きいプロセス又はプロトコル処理の実行エントリを選択する。
【００２９】
ステップ３２では、選択した実行エントリがプロセス又はプロトコル処理のいずれに係るものであるかを判定する。選択した実行エントリがプロセスに係るものであれば、ステップ３３に進み、選択した実行エントリがプロトコル処理に係るものであれば、ステップ３４に進む。
【００３０】
ステップ３３では、選択した実行エントリに係るプロセスにＣＰＵ資源を割り当てる。
ステップ３４では、選択した実行エントリに係るプロトコル処理にＣＰＵ資源を割り当てる。
【００３１】
そして、このように第１スケジューラ４０においてＣＰＵが割り当てられたプロセス又はプロトコル処理が、処理部５０で実行されることとなる。
さらに、プロトコル処理完了後、第１スケジューラ４０では、当該プロトコル処理の対象となるパケットを処理するプロセスの実行エントリを、実行待ちキューに接続する。こうすることで、次回のＣＰＵ資源の割り当てにおいては、プロセスの実行エントリにＣＰＵ資源が割り当てられる。
【００３２】
次に、パケット受信部１０，パケット解析部２０，第１セッション管理部３０及び第１スケジューラ４０における処理について、具体例を示しつつ説明する。
図９は、これらの各構成要素の機能及び処理データの具体例を示す説明図である。まず、通信が確立された時点で、第１セッション管理部３０で、セッション１とプロセスＡ，セッション２とプロセスＢ及びＣを夫々対応付ける。そして、かかる対応関係を、図３のように対応プロセステーブル７０に登録する。また、プロセスＡ，プロセスＢ及びプロセスＣ並びにこれらのプロセスにより処理されるパケットに対するプロトコル処理としてのプロトコル処理Ａ，プロトコル処理Ｂ及びプロトコル処理Ｃの実行エントリを夫々生成する。さらに、図４のプロセス優先度テーブル８０と同一の優先度を、図５に示すプロトコル処理優先度テーブル９０に、対応するプロトコル処理の優先度として設定する。例えば、プロセス優先度テーブル８０の「プロセスＡ」の優先度５を、プロトコル処理優先度テーブル９０に、対応する「プロトコル処理Ａ」の優先度として設定する。
【００３３】
そして、パケット受信部２０でパケットを受信すると、パケット解析部２０において、パケットのヘッダの解析を行う。さらに、パケットはそのヘッダ情報により、図２に示す対応セッションテーブル６０に基づいてセッション１又はセッション２のいずれかに振り分けられ、パケットキューに接続される。
【００３４】
各セッションのパケットキューにパケットが接続されると、第１セッション管理部３０では、当該セッションに対応するプロセスで処理するパケットに対するプロトコル処理の実行エントリを第１スケジューラ４０の実行待ちキューに接続する。そして、第１スケジューラ４０では、プロセス優先度テーブル８０及びプロトコル処理優先度テーブル９０を参照し、実行待ちキューに接続された実行エントリの中から、優先度が最も高いプロセス又はプロトコル処理の実行エントリを選択してＣＰＵ資源を割り当てる。
【００３５】
ここで、当該具体例における第１スケジューラ４０の実行待ちキューについて、図１０を用いてさらに詳細に説明する。図１０は実行待ちキューの説明図であり、各ブロックは、実行エントリを示す。図１０に示すように、実行待ちキューには、プロセスＡ，プロセスＢ及びプロセスＣの各プロセスにより処理されるパケットに対するプロトコル処理としてのプロトコル処理Ａ，プロトコル処理Ｂ及びプロトコル処理Ｃの実行エントリが接続されている。また、通信を伴わないプロセスＤの実行エントリが接続されている。なお、プロトコル処理Ａ，プロトコル処理Ｂ及びプロトコル処理Ｃが完了すると、プロセスＡ，プロセスＢ及びプロセスＣが夫々実行されるため、図１０では、これらのプロセスの実行エントリを破線で示す。
【００３６】
そして、この図１０の例においては、プロセスＤは、優先度が７であり、接続されている実行エントリの中で最も優先度が高いため、最優先でＣＰＵ資源が割り当てられ、実行される。また、次に優先度が高いのは、優先度が５であるプロトコル処理Ａである。このため、次にこのプロトコル処理Ａが実行される。さらに、このプロトコル処理Ａの実行が完了すると、プロセスＡが実行待ちキューに接続される。このため、プロトコル処理Ａの次には、優先度が５であるプロセスＡが実行されることとなる。そして、同様に、優先度が３であるプロトコル処理Ｂ及びプロセスＢが実行され、さらに、優先度が１であるプロトコル処理Ｃ及びプロセスＣが実行されることとなる。
【００３７】
このように、本システムによれば、パケットのプロトコル処理の優先度として、そのパケットを処理するアプリケーションのプロセスの優先度と同じ値が設定され、これらが同じ基準で比較される。そして、実行待ち状態の実行エントリについて、プロトコル処理に係る実行エントリであるかプロセスに係る実行エントリであるかに関わらず、最も優先度の高い実行エントリに対して優先してＣＰＵ資源が割り当てられる。このため、通信においてパケットが受信され、プロトコル処理を実行する必要が生じても、そのパケットを処理するプロセスの優先度が低ければ、かかるプロトコル処理によって他の優先度の高いプロセスの実行が妨げられることがない。また、パケットを処理するプロセスの優先度が高ければ、そのプロセスと同じ優先度が設定された当該パケットのプロトコル処理が優先して実行され、これに続いて、当該パケットを処理する優先度の高いプロセスが実行されることとなる。従って、いずれにしても、結果として優先度の高いプロセスが優先して迅速に実行され、応答速度が向上することとなる。
【００３８】
また、本システムでは、アプリケーションのプロセスは、パケットを処理するプロセス及び通信を伴わないプロセスの両方について優先度が設定されている。そして、実行待ち状態のプロセスがパケットを処理するプロセス又は通信を伴わないプロセスのいずれであっても、同様に優先度の比較がなされる。このため、プロセスが通信を伴うものであるか否かに依存することなく、優先度の高いプロセスが一貫して優先されることとなる。
【００３９】
なお、上述の実施例では、プロトコル処理の優先度をプロトコル処理の実行エントリを生成したときに設定しているが、プロセスの優先度と同様に、予め設定しておいてもよい。
【００４０】
また、プロトコル処理の優先度としては、プロセスの優先度と完全一致する値に限らず、例えば、プロセスの優先度に対して、プロトコル処理の優先度を全体に低くするなど、独自の値を設定するようにしてもよい。そのようにすれば、システムの運用状況次第で通信処理を一律で後回しにするなど、ＣＰＵの割り当て順序をさらに柔軟に調整することができる。
【００４１】
［第２実施例］
次に、本システムにおける第２実施例について説明する。
図１１は、第２実施例において、本発明のスケジューリング機構を具現化したシステムの全体構成を示す。第２実施例では、パケット受信部１０，パケット解析部２０，第２セッション管理部３００，第２スケジューラ４００，処理部５０，対応セッションテーブル６０，対応プロセステーブル７０及びプロセス優先度テーブル８０を含む。
【００４２】
ここで、パケット受信部１０，パケット解析部２０，処理部５０，対応セッションテーブル６０，対応プロセステーブル７０及びプロセス優先度テーブル８０については、第１実施例と同一の構成であるため、以下、説明を省略する。
【００４３】
第２セッション管理部３００は、セッション及びそのセッションで受信するパケットを処理するアプリケーションのプロセスの対応付けを行い、後述する対応プロセステーブル７０にその対応関係を設定する。また、プロセスのタスクを示す実行エントリを生成する。ここで、この第２実施例における実行エントリは、プロセスによって処理されるパケットに対するプロトコル処理を含んでいる。さらに、第２実施例では、実行エントリの状態値として、「Run（RUNNING）」，「Ready（RUNNING）」及び「Wait（INTERUPTIBLE/UNINTERUPTIBLE）」に加え、「Semi-Ready（Semi-RUNNING）」を有する。この「Semi-Ready」状態は、アプリケーションのプロセスの前にプロトコル処理を要する状態を示す。一方、「Ready」状態は、プロトコル処理を要せず、即時にアプリケーションのプロセスを実行可能な状態を示す。そして、第２セッション管理部３００では、セッション及びプロセスの対応付けが行われたとき、プロセスの実行エントリを、まず「Wait」状態とする。そして、第２セッション管理部３００は、プロセスで処理するパケットがセッションのパケットキューに接続されたときに、この実行エントリを「Semi-Ready」状態とし、第２スケジューラ４００が保持する実行待ちキューに接続する。なお、第２セッション管理部３００が、第２の状態設定ステップ，第２の状態設定手段，第２の選択ステップ及び第２の選択手段として機能する。
【００４４】
第２スケジューラ４００は、「Semi-Ready」及び「Ready」状態の実行エントリが接続される実行待ちキューを保持する。そして、実行エントリが「Semi-Ready」状態であれば、実行エントリに係るプロトコル処理にＣＰＵ資源を割り当てる一方、実行エントリが「Ready」状態であれば、実行エントリに係るプロセスにＣＰＵ資源を割り当てる。
【００４５】
図１２は、初めに通信システムコールが発行されてセッションが確立され、セッションとそのセッションで受信するパケットのヘッダ情報とが対応付けられ、その対応関係が対応セッションテーブル６０に設定されたときに、第２セッション管理部３００で実行される処理を示す。
【００４６】
ステップ４１では、セッションと、そのセッションで受信するパケットを処理するアプリケーションのプロセスとを対応付け、その対応関係を対応プロセステーブル７０に設定する。
【００４７】
ステップ４２では、対応付けたプロセスの実行エントリを生成する。
図１３は、パケット受信部１０においてパケットを受信したときに、パケット解析部２０（ステップ５１〜５２）及び第２セッション管理部３００（ステップ５３）で実行される処理を示す。
【００４８】
ステップ５１では、受信したパケットのヘッダを解析し、そのパケットに対応するセッションを特定する。具体的には、対応セッションテーブル６０を参照し、当該受信パケットのヘッダの転送元ＩＰアドレス，転送元ポート番号，転送先ＩＰアドレス，転送先ポート番号及びプロトコル種別が一致するレコードのセッションを特定する。
【００４９】
ステップ５２では、受信したパケットを、特定したセッションのパケットキューに接続する。かかる接続が行われることにより、第２セッション管理部３００に対し、パケットが受信されたことが通知される。
【００５０】
ステップ５３では、対応プロセステーブル７０を参照し、パケットがパケットキューに接続されたセッションに対応するプロセスを特定する。そして、特定したプロセスの実行エントリを、第２スケジューラ４００の実行待ちキューに接続する。このとき、対応プロセステーブル７０において当該セッションが複数のプロセスに対応している場合には、複数のプロセスの実行エントリ全てを実行待ちキューに接続する。
【００５１】
図１４は、第２スケジューラ４００で実行される処理を示す。
ステップ６１では、実行待ちキューに接続された実行エントリ、即ち「Ready」状態又は「Semi-Ready」状態の実行エントリの全てについて、プロセス優先度テーブル８０に設定された優先度を比較する。そして、実行待ちキューに接続されている実行エントリの中から、実行エントリに係るプロセスの優先度が最も高い実行エントリを選択する。
【００５２】
ステップ６２では、実行エントリがどの状態であるかを判定する。実行エントリが「Ready」状態であれば、ステップ６３に進み、実行エントリが「Semi-Ready」状態であれば、ステップ６４に進む。
【００５３】
ステップ６３では、選択した実行エントリに係るプロセスにＣＰＵ資源を割り当てる。
ステップ６４では、選択した実行エントリに係るプロセスに対応するプロトコル処理にＣＰＵ資源を割り当てる。
【００５４】
そして、このように第２スケジューラ４００においてＣＰＵが割り当てられたプロセス又はプロトコル処理が、処理部５０で実行されることとなる。
さらに、プロトコル処理完了後、第２スケジューラ４００では、当該実行エントリを「Ready」状態にする。なお、こうすることで、当該実行エントリに対する次回のＣＰＵ資源の割り当てにおいては、プロセスにＣＰＵ資源が割り当てられる。
【００５５】
図１５は、当該第２実施例において、パケット受信部１０，パケット解析部２０，セッション管理部３００及び第２スケジューラ４００における各機能及び処理データの例を示す説明図である。第２実施例では、上述のように、プロセスの実行エントリがそのプロセスによって処理されるパケットに対するプロトコル処理を含んでいる。このため、プロセス及びこれに対応するプロトコル処理は１つの実行エントリとなっている。
【００５６】
そして、図１６は、図１５で示した具体例において、かかる「Semi-Ready」状態を導入した場合の実行待ちキューを示す。この図１５において、実線で囲われたブロックは「Ready」状態であり、破線で囲われたブロックは「Semi-Ready」状態であることを示す。ここで、プロセスＤは、通信を伴わずプロトコル処理が不要なものであり、「Ready」状態となっている。一方、プロセスＡ，プロセスＢ及びプロセスＣは、プロトコル処理を伴い、かつそのプロトコル処理が完了していないため、「Semi-Ready」状態となっている。そして、これらのプロセスＡ，プロセスＢ及びプロセスＣについては、第２スケジューラ４００により、まず夫々のプロセスにより処理されるパケットに対するプロトコル処理にＣＰＵ資源が割り当てられ、処理部５０によりそのプロトコル処理が実行される。そして、そのプロトコル処理が完了すると、これらの実行エントリは「Ready」状態とされる。
【００５７】
この図１５の例においては、プロセスＤは、優先度が７であり、接続されている実行エントリの中で最も優先度が高いため、最優先でＣＰＵ資源が割り当てられ、実行される。また、次に優先度が高いのは、優先度が５であるプロセスＡである。ここで、このプロセスＡの実行エントリは「Semi-Ready」状態であるため、プロセスＡに対応するプロトコル処理ＡにＣＰＵ資源が割り当てられ、実行される。さらに、このプロトコル処理Ａの実行が完了すると、プロセスＡの実行エントリは「Ready」状態とされる。このため、次には、この優先度が５であるプロセスＡの実行エントリについて、プロセスＡが実行されることとなる。そして、同様に、優先度が３であるプロトコル処理Ｂ及びプロセスＢが実行され、さらに、優先度が１であるプロトコル処理Ｃ及びプロセスＣが実行されることとなる。
【００５８】
このように、第２実施例においても、実行待ち状態のプロセスの実行エントリについて、「Semi-Ready」状態であるか「Ready」状態であるか、即ち、プロトコル処理を要するか否かに関わらず、最も優先度の高いプロセスの実行エントリに対して優先してＣＰＵ資源が割り当てられる。このため、第１実施例と同じように、優先度の高いプロセスが、優先度の低いプロトコル処理に妨げられることなく優先して迅速に実行され、重要なプロセスの応答速度が向上することとなる。
【００５９】
以上の実施形態に関し、更に以下の付記を開示する。
【００６０】
（付記１）パケットを受信したときに、そのパケットに対するプロトコル処理のタスクを実行待ち状態とする第１の状態設定ステップと、アプリケーションのプロセスを実行する優先度及びそのプロセスにより処理されるパケットに対するプロトコル処理を実行する優先度が設定されたテーブルを参照し、実行待ち状態となっているプロセスのタスク及び前記第１の状態設定ステップにより実行待ち状態とされたプロトコル処理のタスクの中から、最も優先度の高いプロセスのタスク又はプロトコル処理のタスクを選択する第１の選択ステップと、前記第１の選択ステップにより選択されたタスクを優先して実行する第１の実行ステップと、をコンピュータに実現させることを特徴とするスケジューリングプログラム。
【００６１】
（付記２）前記プロトコル処理の優先度は、そのプロトコル処理の対象となるパケットを処理するアプリケーションのプロセスについて予め設定された優先度と同一であることを特徴とする付記１記載のスケジューリングプログラム。
【００６２】
（付記３）他のコンピュータとの通信におけるセッションが確立したときに、予めテーブルに設定された、そのセッションを経由するパケットを処理するアプリケーションのプロセスの優先度を参照し、その優先度と同一の優先度を、そのパケットに対するプロトコル処理の優先度としてテーブルに設定する優先度設定ステップをさらに含むことを特徴とする付記２記載のスケジューリングプログラム。
【００６３】
（付記４）前記第１の実行ステップは、実行したタスクがプロトコル処理のタスクであるときには、そのプロトコル処理が完了した後に、そのプロトコル処理の対象となるパケットを処理するアプリケーションのプロセスのタスクを実行待ち状態とすることを特徴とする付記１〜付記３のいずれか１つに記載のスケジューリングプログラム。
【００６４】
（付記５）前記アプリケーションのプロセスは、受信したパケットを処理するアプリケーションのプロセス及び通信を伴わないアプリケーションのプロセスの両方を含むことを特徴とする付記１〜付記４のいずれか１つに記載のスケジューリングプログラム。
【００６５】
（付記６）パケットを受信したときに、受信したパケットを処理するアプリケーションのプロセスのタスクを、実行待ち状態且つパケットに対するプロトコル処理を要する状態とする第２の状態設定ステップと、アプリケーションのプロセスを実行する優先度が設定されたテーブルを参照し、実行待ち状態となっているプロセスのタスクの中から、最も優先度の高いプロセスのタスクを選択する第２の選択ステップと、前記選択されたタスクが第２の状態設定ステップによりパケットに対するプロトコル処理を要する状態とされているときには、そのタスクに係るプロセスにより処理されるパケットに対してプロトコル処理を実行する一方、前記選択されたタスクがプロトコル処理を要する状態でないときには、そのタスクに係るプロセスを実行する第２の実行ステップと、をコンピュータに実現させることを特徴とするスケジューリングプログラム。
【００６６】
（付記７）パケットを受信したときに、そのパケットに対するプロトコル処理のタスクを実行待ち状態とする第１の状態設定ステップと、アプリケーションのプロセスを実行する優先度及びそのプロセスにより処理されるパケットに対するプロトコル処理を実行する優先度が設定されたテーブルを参照し、実行待ち状態となっているプロセスのタスク及び前記第１の状態設定ステップにより実行待ち状態とされたプロトコル処理のタスクの中から、最も優先度の高いプロセスのタスク又はプロトコル処理のタスクを選択する第１の選択ステップと、前記第１の選択ステップにより選択されたタスクを優先して実行する第１の実行ステップと、をコンピュータが実行することを特徴とするスケジューリング方法。
【００６７】
（付記８）パケットを受信したときに、そのパケットに対するプロトコル処理のタスクを実行待ち状態とする第１の状態設定手段と、アプリケーションのプロセスを実行する優先度及びそのプロセスにより処理されるパケットに対するプロトコル処理を実行する優先度が設定されたテーブルを参照し、実行待ち状態となっているプロセスのタスク及び前記第１の状態設定手段により実行待ち状態とされたプロトコル処理のタスクの中から、最も優先度の高いプロセスのタスク又はプロトコル処理のタスクを選択する第１の選択手段と、前記第１の選択ステップにより選択されたタスクを優先して実行する第１の実行手段と、を含んで構成されることを特徴とするスケジューリング装置。
【図面の簡単な説明】
【００６８】
【図１】スケジューリング機構を具現化したシステムの全体構成の説明図
【図２】対応セッションテーブルの説明図
【図３】対応プロセステーブルの説明図
【図４】プロセス優先度テーブルの説明図
【図５】プロトコル処理優先度テーブルの説明図
【図６】通信システムコール発行時の処理を示すフローチャート
【図７】パケット受信時の処理を示すフローチャート
【図８】スケジューリング処理を示すフローチャート
【図９】パケット受信部，パケット解析部，セッション管理部及びスケジューラにおける各機能及び処理データの例を示す説明図
【図１０】実行待ちキューの説明図
【図１１】スケジューリング機構を具現化したシステムの全体構成の説明図（第２実施例）
【図１２】通信システムコール発行時の処理を示すフローチャート（第２実施例）
【図１３】パケット受信時の処理を示すフローチャート（第２実施例）
【図１４】スケジューリング処理を示すフローチャート（第２実施例）
【図１５】パケット受信部，パケット解析部，セッション管理部及びスケジューラにおける各機能及び処理データの例を示す説明図（第２実施例）
【図１６】実行待ちキューの説明図（第２実施例）
【符号の説明】
【００６９】
１０    パケット受信部
２０    パケット解析部
３０    第１セッション管理部
４０    第１スケジューラ
５０    処理部
６０    対応セッションテーブル
７０    対応プロセステーブル
８０    プロセス優先度テーブル
９０    プロトコル処理優先度テーブル
３００    第２セッション管理部
４００    第２スケジューラ
【図１】
0005262329.tif 000002
【図２】
0005262329.tif 000003
【図３】
0005262329.tif 000004
【図４】
0005262329.tif 000005
【図５】
0005262329.tif 000006
【図６】
0005262329.tif 000007
【図７】
0005262329.tif 000008
【図８】
0005262329.tif 000009
【図９】
0005262329.tif 000010
【図１０】
0005262329.tif 000011
【図１１】
0005262329.tif 000012
【図１２】
0005262329.tif 000013
【図１３】
0005262329.tif 000014
【図１４】
0005262329.tif 000015
【図１５】
0005262329.tif 000016
【図１６】
0005262329.tif 000017