(57)【特許請求の範囲】
【請求項１】
複数のタイマスロットを用いてタイマの制御を行うタイマ制御プログラムにおいて、
タイムスロット間をＮ（Ｎは２以上の整数）個に分割し、
前記複数のタイマスロットのうち現時点のタイマスロットを示すカレントスロットと、タイマの登録要求で指定されたタイマ値と、タイムスライスの時間分休止するタイムスライス休止の開始時刻から前記タイマの登録までの経過時間を示すタイムスライス経過時間とから、前記タイマのタイムアウト処理が起床されるタイマスロットを決定し、決定したタイマスロットにタイマ要求を登録し、
前記カレントスロットと該カレントスロットから前記タイムスライスだけ後のタイマスロットとの間に、タイマ要求が登録されたタイマスロットが存在する場合、該登録されたタイマスロットの位置に応じてタイムスライスＰ個分（Ｐは１以上Ｎ−１以下の整数）進めた位置に前記カレントスロットが遷移する
処理をコンピュータに実行させることを特徴とするタイマ制御プログラム。
【請求項２】
前記カレントスロットと該カレントスロットから前記タイムスライスだけ後のタイマスロットとの間に、タイマが登録されたタイマスロットが存在しない場合、タイムスライスＮ個分進めた位置に前記カレントスロットが遷移することを特徴とする請求項１に記載のタイマ制御プログラム。
【請求項３】
前記タイマ要求が登録されたタイマスロットに遷移する処理又は前記タイムスライスだけ後のタイマスロットに遷移する処理の優先度を前記コンピュータの負荷状況又はタイマの誤差に基づいて変更する処理をさらに前記コンピュータに実行させることを特徴とする請求項２に記載のタイマ制御プログラム。
【請求項４】
前記優先度の増加量を算出する処理又は前記優先度を所定の算出式を用いて算出する処理をさらに前記コンピュータに実行させ、
前記変更する処理は、前記算出する処理により算出された優先度に変更することを特徴とする請求項３に記載のタイマ制御プログラム。
【請求項５】
複数のタイマスロットを用いてタイマの制御を行うタイマ制御方法において、
コンピュータが、
タイムスロット間をＮ（Ｎは２以上の整数）個に分割し、
前記複数のタイマスロットのうち現時点のタイマスロットを示すカレントスロットと、タイマの登録要求で指定されたタイマ値と、タイムスライスの時間分休止するタイムスライス休止の開始時刻から前記タイマの登録までの経過時間を示すタイムスライス経過時間とから、前記タイマのタイムアウト処理が起床されるタイマスロットを決定し、決定したタイマスロットにタイマ要求を登録し、
前記カレントスロットと該カレントスロットから前記タイムスライスだけ後のタイマスロットとの間に、タイマ要求が登録されたタイマスロットが存在する場合、該登録されたタイマスロットの位置に応じてタイムスライスＰ個分（Ｐは１以上Ｎ−１以下の整数）進めた位置に前記カレントスロットが遷移する
処理を実行することを特徴とするタイマ制御方法。
【請求項６】
メモリと該メモリに接続されたプロセッサとを有する情報処理装置において、
前記プロセッサに、
複数のタイマスロットを用いてタイマの制御を行う処理を実行させる際に、タイムスロット間をＮ（Ｎは２以上の整数）個に分割し、
前記複数のタイマスロットのうち現時点のタイマスロットを示すカレントスロットと、タイマの登録要求で指定されたタイマ値と、タイムスライスの時間分休止するタイムスライス休止の開始時刻から前記タイマの登録までの経過時間を示すタイムスライス経過時間とから、前記タイマのタイムアウト処理が起床されるタイマスロットを決定し、決定したタイマスロットにタイマ要求を登録し、
前記カレントスロットと該カレントスロットから前記タイムスライスだけ後のタイマスロットとの間に、タイマ要求が登録されたタイマスロットが存在する場合、該登録されたタイマスロットの位置に応じてタイムスライスＰ個分（Ｐは１以上Ｎ−１以下の整数）進めた位置に前記カレントスロットが遷移する
処理を実行させることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タイマ制御プログラム、タイマ制御方法及び情報処理装置に関する。
【背景技術】
【０００２】
多数のタイマを制御する方法として、タイムスライス毎に更新されるカレントスロットを保持し、カレントスロットから指定スロット数＋１進んだタイマスロットにタイマ要求を登録して、指定されたタイマ時間の経過後に処理する方法がある。ここで、タイムスライスとは、所定の単位時間であり、指定スロット数とは、タイムアウトまでの時間／タイムスライスの小数点以下を切り上げた整数である。また、タイマスロットは、タイムスライスの間隔で配置され、タイマ要求が登録される場所である。
【０００３】
図２６は、従来のタイマ制御を説明するための図である。図２６に示すように、タイマトラック上にタイムスライスの間隔で複数のタイマスロットが配置され、カレントスロットが指すタイマトラックは、タイムスライス毎に右に遷移する。タイマスロットにはタイマ要求が登録され、タイマ要求が登録されたタイマスロットにカレントスロットが遷移すると、登録されたタイマ要求のタイムアウト処理が行われる。ここで、タイムアウト処理とは、タイマ要求で指定されたタイマ時間が経過したときに行われる処理である。
【０００４】
例えば、タイムスライスを１００ｍｓｅｃ（ミリ秒）とし、カレントスロットが１の状態であるとする。このとき、２００ｍｓｅｃのタイマ要求があると、指定スロット数は２００／１００の小数点以下を切り上げた２となり、カレントスロットが２＋１＝３だけ進んだ４のタイマスロットにタイマ要求が登録される。そして、カレントスロットが４の状態になると、４のタイマスロットに登録されたタイマ要求が取り出されて、タイムアウト処理が行われる。
【０００５】
タイマ処理を行うタスクは、タイマスロットに登録されたタイマ要求の処理が終了すると、タイムスライスの間休止し、タイムスライスの時間が経過すると、起床されて次のタイマスロットに登録されたタイマ要求の処理を行う。
【０００６】
なお、複数のタイマを制御する従来技術として、監視時間をタイマの許容誤差で除した数のタイマを設け、タイマを許容誤差の時間分ずらしながら順次起動することで、許容誤差の時間で定義されるタイミング中に発生するタイマ起動要求を全て処理する技術がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平７−２００３６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、図２６で示したタイマ制御には、タイムスライスの量だけ誤差が生じるという問題がある。図２７は、図２６で示したタイマ制御の問題点を説明するための図である。カレントスロットはタイムスライス経過後に更新されるため、タイムスライス休止直後にタイマ登録された場合と、タイムスライス起床直前にタイマ登録された場合とでは、最大でタイムスライスの量のタイマ誤差が生じる。ここで、タイムスライス休止とは、タイムスライスの時間分、タイマ制御を休止することである。
【０００９】
図２７（ａ）は、タイムスライス休止直後にタイマ登録された場合を示し、図２７（ｂ）は、タイムスライス起床直前にタイマ登録された場合を示す。図２７（ａ）に示すように、タイムスライス休止直後として例えばタイムスライス休止の開始から１０ｍｓｅｃ経過後に指定タイマ値が２００ｍｓｅｃのタイマの登録が行われると、登録されたタイマは２９０ｍｓｅｃ後に処理される。ここで、指定タイマ値は、タイマ要求で指定された時間であり、タイマ値は、タイムアウトまでの時間である。
【００１０】
一方、図２７（ｂ）に示すように、タイムスライス起床直前として例えばタイムスライス休止の開始から９０ｍｓｅｃ経過後に指定タイマ値が２００ｍｓｅｃのタイマの登録が行われると、登録されたタイマは２１０ｍｓｅｃ後に処理される。すなわち、タイマ登録時におけるタイムスライス経過時間により、最大でタイムスライスの量の誤差が生じる。ここで、タイムスライス経過時間とは、タイムスライス休止の開始からタイマ登録までの経過時間である。なお、タイマ精度を向上させるためにタイムスライスを短くすると、タイマ制御の負荷が増加してしまう。
【００１１】
本発明は、１つの側面では、タイマ登録時におけるタイムスライス経過時間に起因するタイマ誤差を少なくすることを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示するタイマ制御プログラムは、１つの態様において、複数のタイマスロットを用いてタイマの制御を行うタイマ制御プログラムである。タイマ制御プログラムは、タイムスロット間をＮ（Ｎは２以上の整数）個に分割する。タイマ制御プログラムは、カレントスロット、タイマ値及びタイムスライス経過時間から、タイマのタイムアウト処理が起床されるタイマスロットをタイムスライスより小さい時間間隔のタイマスロットから決定する処理をコンピュータに実行させる。そして、タイマ制御プログラムは、決定したタイマスロットにタイマ要求を登録する処理をコンピュータに実行させる。また、タイマ制御プログラムは、前記カレントスロットと該カレントスロットから前記タイムスライスだけ後のタイマスロットとの間に、タイマ要求が登録されたタイマスロットが存在するか否かを判定する処理をコンピュータに実行させる。そして、存在する場合、タイマ制御プログラムは、該登録されたタイマスロットの位置に応じてタイムスライスＰ個分（Ｐは１以上Ｎ−１以下の整数）進めた位置にカレントスロットが遷移する処理をコンピュータに実行させる。
【発明の効果】
【００１３】
１実施態様によれば、タイマ登録時におけるタイムスライス経過時間に起因するタイマ誤差を少なくすることができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例に係る情報通信システムを説明するための図である。
【図２】図２は、仮想帯域を実現する方法を説明するための図である。
【図３】図３は、実施例に係る通信制御装置で実行されるソフトウェアの構成を示す図である。
【図４】図４は、タイマ登録を説明するための図である。
【図５】図５は、タイマ処理を説明するための図である。
【図６】図６は、タイムスライスを５０ｍｓｅｃとするタイマ制御方法と実施例に係るタイマ制御方法との相違を説明するための図である。
【図７】図７は、タイムスライス経過時間を特定する方法を説明するための図である。
【図８】図８は、タイマスロット間を４分割した場合のタイマ要求の登録位置を説明するための図である。
【図９】図９は、タイマスロット間を４分割した場合のタイマ処理を説明するための図である。
【図１０】図１０は、タイムスライスを２５ｍｓｅｃとするタイマ制御方法と実施例に係るタイマ制御方法との相違を説明するための図である。
【図１１】図１１は、タイマ処理の遅延を説明するための図である。
【図１２】図１２は、タイマ処理の遅延による問題を説明するための図である。
【図１３】図１３は、実行待ちタスク数に基づく実行優先度を示す図である。
【図１４】図１４は、タイマ誤差に基づく実行優先度を示す図である。
【図１５】図１５は、実行優先度の各変更要因の利点及び欠点を示す図である。
【図１６】図１６は、コネクション単位にタイマを起動して利用する処理のフローを示すフローチャートである。
【図１７】図１７は、電文単位にタイマを起動して利用する処理のフローを示すフローチャートである。
【図１８】図１８は、タイマ登録処理のフローを示すフローチャートである。
【図１９】図１９は、タイマスロット間をＮ分割した場合のタイマ登録処理のフローを示すフローチャートである。
【図２０】図２０は、タイマ処理のフローを示すフローチャートである。
【図２１】図２１は、スロット間タイマ処理のフローを示すフローチャートである。
【図２２】図２２は、タイマ管理表の一例を示す図である。
【図２３】図２３は、図２２に示したタイマ管理表を用いたタイマ登録処理の例を示す図である。
【図２４】図２４は、図２２に示したタイマ管理表を用いたタイマ処理の例を示す図である。
【図２５】図２５は、通信制御装置のハードウェア構成を示す図である。
【図２６】図２６は、従来のタイマ制御を説明するための図である。
【図２７】図２７は、図２６で示したタイマ制御の問題点を説明するための図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示するタイマ制御プログラム、タイマ制御方法及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。また、実施例では、主にタイムスライスが１００ｍｓｅｃ、タイマ要求で指定される指定タイマ値が２００ｍｓｅｃの場合を例として説明する。
【実施例】
【００１６】
まず、実施例に係る情報通信システムについて説明する。図１は、実施例に係る情報通信システムを説明するための図である。図１に示すように、情報通信システム１は、情報処理システム２と通信制御装置３を有し、他の情報通信システム４と通信する。
【００１７】
例えば、情報通信システム１は、金融機関の基幹システムであり、他の情報通信システム４は、他の金融機関のシステム、端末装置、ＡＴＭ（Automated  Teller  Machine）等である。情報処理システム２と通信制御装置３との間は、例えば、ＬＡＮ（Local  Area  Network）で接続され、情報通信システム１と他の情報通信システム４との間は、例えば、ＷＡＮ（Wide  Area  Network）で接続される。
【００１８】
情報通信システム１は、他の情報通信システム４と通信する場合に、１つの通信で帯域を占有することのないように、帯域を制限することがある。この場合、情報通信システム１は、コネクション毎に仮想的な帯域を設けることで、それぞれの通信の品質を保っている。図１では、仮想的な帯域幅が大である場合、中である場合、小である場合が示されている。
【００１９】
図２は、仮想帯域を実現する方法を説明するための図である。図２に示すように、通信制御装置３が、送信電文に対する応答電文を送信元に即座には応答せず、コネクション毎にタイマを利用して応答電文を規定時間内保持することで、単位時間当たりの電文量を制御する。このようなタイマの利用においては、コネクション毎にタイマが使用されるため、数千〜数万のオーダのタイマが使用される。
【００２０】
次に、実施例に係る通信制御装置３で実行されるソフトウェアの構成について説明する。図３は、実施例に係る通信制御装置３で実行されるソフトウェアの構成を示す図である。通信制御装置３は、ＣＰＵとメモリを有し、図３に示すタスクをＣＰＵで実行する。ここで、タスクとは、ＣＰＵで実行される実行単位であり、例えばプロセスである。
【００２１】
図３に示すように、通信制御装置３で実行されるタスクには、伝送制御タスク３１と、電文制御タスク３２と、伝送制御タスク３３と、タイマ登録タスク５１と、タイマ処理タスク５２とが含まれる。タイマ制御プログラム５は、タイマ制御を行うプログラムであり、タイマ登録タスク５１と、タイマ処理タスク５２と、タイマ管理表５３により実現される。
【００２２】
タイマ管理表５３には、タイマ制御に用いられる情報が登録される。タイマ管理表５３には、タイマ登録タスク５１及びタイマ処理タスク５２が使用する情報が登録される。タイマ管理表５３は、メモリに記憶される。なお、タイマ管理表５３の詳細については後述する。
【００２３】
伝送制御タスク３１は、情報処理システム２との通信を制御し、コネクションの確立等を行う。伝送制御タスク３１は、例えば、コネクション確立を監視するためにコネクション単位にタイマ登録を要求する。
【００２４】
電文制御タスク３２は、情報処理システム２と情報通信システム４との間で送受信される電文を中継する。電文制御タスク３２は、例えば、送信電文の応答を監視するために電文単位にタイマ登録を要求する。
【００２５】
伝送制御タスク３３は、情報通信システム４との通信を制御し、コネクションの確立等を行う。伝送制御タスク３３は、例えば、コネクション確立を監視するためにコネクション単位にタイマ登録を要求する。
【００２６】
タイマ登録タスク５１は、タイマ登録が要求されると起動され、カレントスロットと指定タイマ値とタイムスライス経過時間に基づいて、登録が要求されたタイマのタイムアウト処理を起床すべきタイマスロットを特定する。そして、タイマ登録タスク５１は、特定したタイマスロットにタイマを登録する。
【００２７】
図４は、タイマ登録を説明するための図である。図４（ａ）に示すように、タイマ制御プログラム５は、タイマスロット間をＮ分割する。したがって、タイマスロットの元々の数をＭとすると、タイマスロットの数はＭ×Ｎとなる。図４（ａ）では、Ｎ＝２であり、元のタイマスロットを黒丸で示し、分割により追加されたタイマスロットを模様付丸で示す。また、０のタイマスロットとＭのタイマスロットは同一のタイマスロットを表す。
【００２８】
タイマ登録タスク５１は、タイマ登録を要求されると、タイムスライス経過時間がタイムスライスの１／２より小さい場合には、図４（ｂ）に示すように、カレントスロット＋指定スロット数＋１／２のタイマスロットにタイマ登録する。図４（ｂ）では、カレントスロットが１であり、タイムスライス経過時間が５０ｍｓｅｃより小さいので、２００ｍｓｅｃのタイマが３．５のタイマスロットに登録される。
【００２９】
一方、タイムスライス経過時間がタイムスライスの１／２以上の場合には、図４（ｃ）に示すように、タイマ登録タスク５１は、カレントスロット＋指定スロット数＋１のタイマスロットにタイマ登録する。図４（ｃ）では、カレントスロットが１であり、タイムスライス経過時間が５０ｍｓｅｃ以上なので、２００ｍｓｅｃのタイマが４のタイマスロットに登録される。
【００３０】
タイマ処理タスク５２は、タイマ処理として、タイムスライスをＮ分割した時間に基づく可変の休止時間でカレントスロットを遷移させ、タイムアウト処理を行う。具体的には、タイマ処理タスク５２は、カレントスロットと次の整数のタイマスロットの間にタイマ登録が行われたタイマスロットがない場合には、カレントスロットと次の整数のタイマスロットとの差の時間を休止時間とする。そして、タイマ処理タスク５２は、休止時間後に次の整数のタイマスロットにカレントスロットを遷移させる。
【００３１】
図５は、タイマ処理を説明するための図である。図５（ａ）に示すように、カレントスロットが１のとき、１．５のタイマスロットにタイマ要求が存在しない場合には、タイマ処理タスク５２は、１００ｍｓｅｃ休止する。そして、タイマ処理タスク５２は、次の整数である２のタイマスロットにカレントスロットを遷移させる。すなわち、タイマ処理タスク５２は、１回にカレントスロットをＮ個進める。また、カレントスロットが２のとき、２．５のタイマスロットにタイマ要求が存在しない場合には、タイマ処理タスク５２は、１００ｍｓｅｃ休止後に次の整数である３のタイマスロットにカレントスロットを遷移させる。
【００３２】
一方、カレントスロットと次の整数のタイマスロットの間にタイマ登録が行われたタイマスロットがある場合には、タイマ処理タスク５２は、カレントスロットとタイマ登録が行われた最初のタイマスロットとの差の時間を休止時間とする。そして、タイマ処理タスク５２は、休止時間後に、タイマ登録が行われた最初のタイマスロットにカレントスロットを遷移させる。図５（ｂ）に示すように、カレントスロットが３のとき、３．５のタイマスロットにタイマ要求が存在する場合には、タイマ処理タスク５２は、５０ｍｓｅｃ休止する。そして、タイマ処理タスク５２は、タイマ登録が行われた最初のタイマスロットである３．５のタイマスロットにカレントスロットを遷移させ、タイムアウト処理を行う。すなわち、タイマ処理タスク５２は、１回にカレントスロットを１個進める。
【００３３】
このように、タイマ処理タスク５２は、カレントスロットと次の整数のタイマスロットの間にタイマ登録が行われたタイマスロットが有るか否かに基づいて休止時間を変更する。したがって、タイマ処理タスク５２は、タイムスライスをＮ分の１にする場合のように常にタイマ処理タスクがＮ倍動作することを防ぐことができる。
【００３４】
図６は、タイムスライスを５０ｍｓｅｃとするタイマ制御方法と実施例に係るタイマ制御方法との相違を説明するための図である。図６（ａ）はタイムスライスを５０ｍｓｅｃとするタイマ制御方法を示し、図６（ｂ）は実施例に係るタイマ制御方法を示す。
【００３５】
図６（ａ）に示すように、タイムスライスを５０ｍｓｅｃとするタイマ制御方法では、５０ｍｓｅｃ毎にタイマ処理が行われる。一方、実施例に係るタイマ制御方法では、図６（ｂ）に示すように、タイマスロット間の２分割により新たに追加されたタイマスロット、すなわち、０．５等のタイマスロットにタイマ要求が登録されている場合だけ５０ｍｓｅｃの休止後にタイマ処理が行われる。したがって、実施例に係るタイマ制御方法は、常にタイマ処理タスク５２が２倍動作することを防ぐことができる。
【００３６】
図７は、タイムスライス経過時間を特定する方法を説明するための図である。タイマ処理タスク５２は、休止する直前に休止開始時刻Ｘを獲得して記憶する。タイマ登録タスク５１は、タイマ登録時にタイマ登録時刻Ｙを獲得する。そして、タイマ登録タスク５１は、タイマ登録時刻Ｙと休止開始時刻Ｘとの差分Ｙ−Ｘを計算することでタイムスライス経過時間を特定する。
【００３７】
そして、タイマ登録タスク５１は、タイマ登録時刻Ｙ−休止開始時刻Ｘ＜タイムスライス／２の場合、カレントスロット＋指定スロット数＋１／２のタイマスロットにタイマ登録する。また、タイマ登録タスク５１は、タイマ登録時刻Ｙ−休止開始時刻Ｘ≧タイムスライス／２の場合、カレントスロット＋指定スロット数＋１のタイマスロットにタイマ登録する。
【００３８】
図８は、タイマスロット間を４分割した場合のタイマ要求の登録位置を説明するための図である。図８（ａ）に示すように、タイマスロット間を４分割した場合、１．２５、１．５、１．７５、２．２５、２．５、２．７５、３．２５、３．５、３．７５等のタイマスロットが追加される。
【００３９】
そして、タイマ登録タスク５１は、図８（ｂ）に示すように、タイマ登録時のタイムスライス経過時間が０からタイムスライス×１／４未満の場合、カレントスロット＋指定スロット数＋１／４のタイマスロットにタイマ登録する。また、タイマ登録タスク５１は、タイマ登録時のタイムスライス経過時間がタイムスライス×１／４以上タイムスライス×２／４未満の場合、カレントスロット＋指定スロット数＋２／４のタイマスロットにタイマ登録する。
【００４０】
また、タイマ登録タスク５１は、タイマ登録時のタイムスライス経過時間がタイムスライス×２／４以上タイムスライス×３／４未満の場合、カレントスロット＋指定スロット数＋３／４のタイマスロットにタイマ登録する。また、タイマ登録タスク５１は、タイマ登録時のタイムスライス経過時間がタイムスライス×３／４以上タイムスライス未満の場合、カレントスロット＋指定スロット数＋１のタイマスロットにタイマ登録する。
【００４１】
カレントスロットの値が整数のとき、タイマ処理タスク５２は、以下のように休止する。タイマ処理タスク５２は、カレントスロット＋１／４のタイマスロットにタイマ要求が存在する場合、タイムスライス×１／４の間休止し、カレントスロット＋２／４のタイマスロットにタイマ要求が存在する場合、タイムスライス×２／４の間休止する。また、タイマ処理タスク５２は、カレントスロット＋３／４のタイマスロットにタイマ要求が存在する場合、タイムスライス×３／４の間休止し、カレントスロット＋１／４〜カレントスロット＋３／４のタイムスロットにタイマ要求が存在しない場合、タイムスライスの間休止する。
【００４２】
図９は、タイマスロット間を４分割した場合のタイマ処理を説明するための図である。ここでは、図９（ａ）に示すように、カレントスロットが１で、３．２５と３．７５のタイマスロットにタイマ要求が存在する場合を例として説明する。
【００４３】
タイマ処理タスク５２は、カレントスロットとカレントスロット＋１の間にタイマ要求が存在しない場合、タイムスライスの間休止した後、カレントスロットを４個進める。例えば、図９（ｂ）に示すように、カレントスロットが１のとき、１と２のタイマスロットの間にはタイマ要求が存在するタイマスロットはないので、タイマ処理タスク５２は、１００ｍｓｅｃの間休止した後、カレントスロットを４個進める。同様に、カレントスロットが２のとき、２と３のタイマスロットの間にはタイマ要求が存在するタイマスロットはないので、タイマ処理タスク５２は、１００ｍｓｅｃの間休止した後、カレントスロットを４個進める。
【００４４】
一方、カレントスロットとカレントスロット＋１の間にタイマ要求が存在する場合、タイマ処理タスク５２は、タイマスロット間の直近のタイマ登録位置を特定する。例えば、図９（ｃ）に示すように、タイマ処理タスク５２は、タイマ登録位置として３．２５を特定する。そして、タイマ処理タスク５２は、タイムスライス×１／４＝２５ｍｓｅｃの間休止した後にカレントスロットを１個だけ遷移させ、３．２５のタイマスロットに登録されたタイマ要求を処理する。
【００４５】
次に、３．７５にタイマ要求が登録されているため、タイマ処理タスク５２は、図９（ｄ）に示すように、タイマ登録位置の３．７５とカレントスロット位置の３．２５との差分である１／２にタイムスライスを乗じた５０ｍｓｅｃの間休止する。そして、タイマ処理タスク５２は、５０ｍｓｅｃの間休止した後、カレントスロットを２個遷移させ、３．７５のタイマスロットに登録されたタイマ要求を処理する。
【００４６】
そして、３．７５と４のタイマスロットの間には、タイマ要求が存在しないため、タイマ処理タスク５２は、図９（ｅ）に示すように、２５ｍｓｅｃの間休止した後、カレントスロットを１個遷移させる。
【００４７】
このように、タイマ処理タスク５２は、カレントスロットとカレントスロットからタイムスライスだけ後のタイマスロットとの間に、タイマ要求が登録されたタイマスロットが存在するか否かを判定する。そして、タイマ処理タスク５２は、タイマ要求が登録されたタイマスロットが存在する場合、登録されたタイマスロットの位置に応じてタイムスライスＰ個分進めた位置にカレントスロットを遷移させる。ここで、Ｐは１以上Ｎ−１以下の整数である。したがって、タイマ制御プログラム５は、タイマ登録時におけるタイムスライス経過時間に起因するタイマ誤差を少なくすることができる。
【００４８】
図１０は、タイムスライスを２５ｍｓｅｃとするタイマ制御方法と実施例に係るタイマ制御方法との相違を説明するための図である。図１０（ａ）はタイムスライスを２５ｍｓｅｃとするタイマ制御方法を示し、図１０（ｂ）は実施例に係るタイマ制御方法を示す。
【００４９】
図１０（ａ）に示すように、タイムスライスを２５ｍｓｅｃとするタイマ制御方法では、２５ｍｓｅｃ毎にタイマ処理が行われる。一方、実施例に係るタイマ制御方法では、タイマスロット間の４分割により新たに追加されたタイマスロットにタイマ要求が登録されている場合だけ２５ｍｓｅｃに基づく可変時間の休止後にタイマ処理が行われる。
【００５０】
例えば、図１０（ｂ）では、カレントスロットが３及び３．７５のとき、２５ｍｓｅｃの間休止した後にタイマ処理が行われ、カレントスロットが３．２５のとき、５０ｍｓｅｃの間休止した後にタイマ処理が行われる。したがって、実施例に係るタイマ制御方法は、常にタイマ処理タスク５２が４倍動作することを防ぐことができる。
【００５１】
次に、タイマ処理の遅延について説明する。タイマ精度が求められる装置において、装置が高負荷状態になった場合、タイマ処理タスク５２の処理が遅延し、その結果、遅延時間がタイマ時間に上乗せされ、タイマ精度が悪化する。
【００５２】
図１１は、タイマ処理の遅延を説明するための図である。図１１（ａ）に示すように、カレントスロットが１の状況で４のタイマスロットにタイマ要求が登録されると、装置の負荷が少ない状況では、図１１（ｂ）に示すように、カレントスロットは１００ｍｓｅｃ毎に更新される。したがって、指定された指定タイマ値から誤差１００ｍｓｅｃ以内でタイムアウトする。
【００５３】
一方、装置の負荷が高くなると、タイマ処理タスクの処理遅延が発生することから、図１１（ｃ）に示すように、カレントスロットは例えば１２０ｍｓｅｃ毎に更新され、指定タイマ値を大幅に超えてタイムアウトする。タイマ処理タスクの処理遅延が発生する理由は、ＯＳ（Operating  System）に対して１００ｍｓｅｃ休止するように命令を出した場合、休止時間は最低１００ｍｓｅｃが保証されているにすぎないためである。なお、図１１では、タイマスロット間の分割数Ｎ＝１とする。
【００５４】
図１２は、タイマ処理の遅延による問題を説明するための図である。図１２に示すように、通信制御装置３のタイマ処理で遅延が発生すると、送信元に応答電文を返信するタイミングが延びることから、送信元からの次回電文送信も遅延する。その結果、通信量が低下することから、帯域を最大限利用することができない（帯域に無駄が生じる）という問題が発生する。
【００５５】
そこで、通信制御装置３は、従来は固定であったタイマ処理タスク５２の実行優先度を装置負荷又は実際のタイマ誤差に応じて動的に変化させる。通信制御装置３は、高負荷状態又は誤差が大きい状態ではタイマ処理タスク５２に高優先度を割り当てることで、タイマ処理の遅延を発生させない。また、不当にＣＰＵ資源を消費することのないように、通信制御装置３は、低負荷状態又は誤差が少ない状態ではタイマ処理タスク５２に通常優先度を割り当てることで、タイマ処理タスク５２の実行優先度が常に高い状態を回避する。
【００５６】
具体的には、タイマ処理タスク５２は、周期的に通信制御装置３の状況を取得する。監視周期は利用者で決定可能である。また、利用者は、通信制御装置３の状況として、装置負荷又はタイマ精度を選択できる。
【００５７】
実行優先度の変更要因として装置負荷を用いる場合、タイマ制御プログラム５は、以下のいずれかの方法で実行優先度を動的に変更する。また、タイマ制御プログラム５は、装置負荷として、実行待ちタスク数を用いる。
（１）装置負荷が閾値を超えている間、タイマ処理タスク５２及びタイムアウト処理タスクの実行優先度を周期的に固定値増加させる。ここで、タイムアウト処理タスクは、タイマ処理タスク５２により起床され、タイムアウト処理を行うタスクである。
（２）装置負荷によって、タイマ処理タスク５２及びタイムアウト処理タスクの実行優先度を一意に決定する。
【００５８】
（１）の方法では、タイマ制御プログラム５は、実行待ちタスク数の閾値を利用者に設定させる。タイマ処理タスク５２は、通信制御装置３の実行待ちタスク数を周期的に監視する。そして、タイマ処理タスク５２は、実行待ちタスク数が閾値を超えている間、タイマ処理タスク５２とタイムアウト処理タスクの実行優先度を増加させることで、高負荷状態におけるタイマ処理タスク５２の動作遅延を抑止し、タイマ精度を向上させる。また、タイマ処理タスク５２は、実行待ちタスク数が閾値を下回った場合、タイマ処理タスク５２とタイムアウト処理タスクを通常優先度に戻すことで、ＣＰＵ資源の不当な消費を抑止する。
【００５９】
装置内の実行待ちタスク数がＣＰＵコア数を超えている場合、タスクの実行遅延が発生する可能性がある。このため、（２）の方法では、処理タスク５２は、ＣＰＵコア数を超えた実行待ちタスク数により実行優先度を一意に決定する。実行待ちタスク数がＣＰＵコア数を超えている場合、処理タスク５２は、実行待ちタスク数をＣＰＵコア数に１以上の負荷係数（例えば、２）を乗じた値まで、実行優先度の指定範囲で分割することで実行優先度の設定段階を求める。ここで、実行優先度の設定段階は、実行優先度を１増加させるための実行タスク数である。そして、処理タスク５２は、実行優先度の設定段階から実行優先度を計算する。
【００６０】
すなわち、
実行優先度の設定段階＝（ＣＰＵコア数×負荷係数−ＣＰＵコア数）／（実行優先度最大値−実行優先度通常値）
とすると、
実行優先度＝（実行待ちタスク数−ＣＰＵコア数）／実行優先度の設定段階
となる。
【００６１】
例えば、ＣＰＵコア数が４、負荷係数が２、実行優先度通常値が０、実行優先度最大値が２０であるとすると、実行優先度の設定段階＝（４×２−４）／（２０−０）＝０．２であり、実行優先度＝（実行待ちタスク数−４）／０．２となる。図１３は、実行待ちタスク数に基づく実行優先度を示す図である。例えば、実行待ちタスク数が５であると実行優先度＝（５−４）／０．２＝５であり、実行待ちタスク数が６であると実行優先度＝（６−４）／０．２＝１０である。
【００６２】
実行優先度の変更要因としてタイマ精度を用いる場合、タイマ毎の許容誤差値をタイマ登録時にタイマ登録タスク５１が設定する。許容誤差値は、指定タイマ値／タイムスライスで算出される指定スロット数で割った値で管理される。例えば、指定タイマ値が１０００ｍｓｅｃ、許容誤差が２００ｍｓｅｃ、タイムスライスが１０ｍｓｅｃの場合、１０００（指定タイマ値）／１０（タイムスライス）＝１００、２００（許容誤差）／１００＝２ｍｓｅｃとなる。したがって、当該タイマの１タイムスライスあたりの許容誤差は２ｍｓｅｃとなる。
【００６３】
タイマトラック内には複数のタイマが存在し、それぞれ異なる許容誤差が設定されることがあるが、タイマ処理タスク５２が評価する許容誤差値は１つのみであるため、タイマ登録タスク５１は、登録済タイマ内の最小誤差をタイマ精度として採用する。なお、最小誤差として採用されているタイマがタイマキャンセルまたはタイムアウトした場合は、タイマ登録タスク５１は、２番目に許容誤差が小さいタイマの許容誤差値を採用する。
【００６４】
タイマ制御プログラム５は、以下のいずれかの方法で実行優先度を動的に変更する。
（１）タイマ誤差が閾値を超えている間、タイマ処理タスク５２及びタイムアウト処理タスクの実行優先度を周期的に固定値増加させる。
（２）タイマ誤差によって、タイマ処理タスク５２及びタイムアウト処理タスクの実行優先度を一意に決定する。
【００６５】
（１）の方法では、タイマ処理タスク５２は、タイムスライス休止直前〜当該タイムスライスに対するタイムアウト処理後までの経過時間を監視する。そして、タイマ処理タスク５２は、経過時間がタイムスライス＋許容誤差値を超えている間、タイマ処理タスク５２及びタイムアウト処理タスクの実行優先度を増加させる。したがって、タイマ処理タスク５２は、高負荷状態におけるタイマ処理タスク５２の動作遅延を抑止し、タイマ精度を向上させることができる。
【００６６】
（２）の方法では、タイマ処理タスク５２は、経過時間がタイムスライスまでの状況では実行優先度を通常値とし、許容誤差と同じタイマ誤差が発生している状況では実行優先度を最大値とする。そして、タイマ処理タスク５２は、その間を実行優先度の指定範囲で分割し、実行優先度を１増加させるためのタイマ誤差を実行優先度の設定段階として求める。そして、タイマ処理タスク５２は、実行優先度の設定段階から実行優先度を計算する。
【００６７】
すなわち、
実行優先度の設定段階＝１タイムスライスあたりの許容誤差／（実行優先度最大値−実行優先度通常値）
とすると、
実行優先度＝（１タイムスライスあたりのタイマ誤差）／実行優先度の設定段階
となる。
【００６８】
例えば、指定タイマ値が１０００ｍｓｅｃ、許容誤差が２００ｍｓｅｃ、タイムスライスが１０ｍｓｅｃ、１タイムスライスあたりの誤差が１．５ｍｓｅｃ（指定タイマ値の誤差が１５０ｍｓｅｃ）の場合、実行優先度の設定段階＝２ｍｓｅｃ／２０＝０．１ｍｓｅｃ、実行優先度＝タイマ誤差／０．１＝１５である。図１４は、タイマ誤差に基づく実行優先度を示す図である。ここで、実行優先度通常値は０、実行優先度最大値は２０である。例えば、１タイムスライス当りの誤差が０．１ｍｓｅｃであると実行優先度＝０．１／０．１＝１である。
【００６９】
実行優先度の変更要因として実行待ちタスク数とタイマ誤差のうちどちらを採用するかは、それぞれの利点及び欠点を踏まえて利用者が決定する。図１５は、実行優先度の各変更要因の利点及び欠点を示す図である。
【００７０】
図１５に示すように、実行待ちタスク数には、タイマ誤差が発生する前の前兆（実行待ちタスク数の増加）を検知して予め誤差の発生を抑止することが可能であるという利点がある。一方、実行待ちタスク数には、タイマ誤差が発生していない状況でもタイマ処理タスク５２の実行優先度を変更する場合があるため、ＣＰＵ資源を不当に消費する場合が有るという欠点がある。
【００７１】
タイマ誤差には、タイマ誤差の発生を契機にタイマ処理タスク５２の実行優先度を変更するため、ＣＰＵ資源がタイマ誤差の解消に効率よく使用可能であるという利点がある。一方、タイマ誤差には、タイマ誤差の発生を契機にタイマ処理タスク５２の実行優先度を変更するため、タイマ誤差発生を検知するまでのタイマ誤差を抑止不可であるという欠点がある。
【００７２】
次に、タイマを利用する処理のフローについて図１６及び図１７を用いて説明する。図１６は、コネクション単位にタイマを起動して利用する処理のフローを示すフローチャートである。ここでは、伝送制御タスク３１がコネクションを確立する場合について説明する。
【００７３】
図１６に示すように、伝送制御タスク３１は、コネクション確立を依頼し（ステップＳ１）、コネクション確立を監視するタイマを起動する（ステップＳ２）。そして、伝送制御タスク３１は、コネクション確立が完了したか否かを判定し（ステップＳ３）、完了した場合には、タイマを停止し（ステップＳ４）、コネクション確立成功処理を行う（ステップＳ５）。
【００７４】
一方、コネクション確立が完了していない場合には、伝送制御タスク３１は、監視タイマがタイムアウトしたか否かを判定し（ステップＳ６）、タイムアウトしていない場合には、ステップＳ３へ戻る。また、タイムアウトした場合には、伝送制御タスク３１は、コネクション確立失敗処理を行う（ステップＳ７）。
【００７５】
このように、伝送制御タスク３１は、タイマを利用して、コネクション確立を監視することができる。
【００７６】
図１７は、電文単位にタイマを起動して利用する処理のフローを示すフローチャートである。図１７に示すように、電文制御タスク３２は、電文を送信し（ステップＳ１１）、応答電文の受信を監視するタイマを起動する（ステップＳ１２）。そして、電文制御タスク３２は、応答電文を受信したか否かを判定し（ステップＳ１３）、受信した場合には、タイマを停止し（ステップＳ１４）、電文送信成功処理を行う（ステップＳ１５）。
【００７７】
一方、応答電文を受信していない場合には、電文制御タスク３２は、監視タイマがタイムアウトしたか否かを判定し（ステップＳ１６）、タイムアウトしていない場合には、ステップＳ１３へ戻る。また、タイムアウトした場合には、電文制御タスク３２は、電文送信失敗処理を行う（ステップＳ１７）。
【００７８】
このように、電文制御タスク３２は、タイマを利用して、電文の送信を監視することができる。
【００７９】
次に、タイマ登録処理のフローについて説明する。図１８は、タイマ登録処理のフローを示すフローチャートである。なお、ここでは、タイマスロット間の分割数Ｎを２とする。図１８に示すように、タイマ登録タスク５１は、タイマ登録時刻として現在時刻を取得し（ステップＳ２１）、タイマ管理表５３からタイマ処理タスク５２の休止開始時刻を獲得する（ステップＳ２２）。
【００８０】
そして、タイマ登録タスク５１は、タイマ登録時刻−休止開始時刻がタイムスライス／２未満であるか否かを判定する（ステップＳ２３）。その結果、タイムスライス／２未満である場合には、タイマ登録タスク５１は、カレントスロット＋指定スロット数＋１／２のタイマスロットにタイマ登録を行う（ステップＳ２４）。一方、タイムスライス／２未満でない場合には、タイマ登録タスク５１は、カレントスロット＋指定スロット数＋１のタイマスロットにタイマ登録を行う（ステップＳ２５）。
【００８１】
そして、タイマ登録タスク５１は、許容誤差順タイマキューにタイマ登録を行い（ステップＳ２６）、タイマ登録要求で指定された許容誤差が登録タイマ内で最小の許容誤差であるか否かを判定する（ステップＳ２７）。その結果、最小の許容誤差である場合には、当該タイマの許容誤差を許容タイマ誤差値とする（ステップＳ２８）。ここで、許容誤差順タイマキューは、許容誤差順にソートされたタイマのキューであり、許容タイマ誤差値は、タイマ登録毎にタイマ誤差について指定される誤差である。
【００８２】
このように、タイマ登録タスク５１が、タイマ登録時刻−休止開始時刻とタイムスライス／２に基づいてタイマ登録を行うタイマスロットを特定することによって、タイマ誤差を少なくすることができる。
【００８３】
次に、タイマスロット間をＮ分割した場合のタイマ登録処理のフローについて説明する。図１９は、タイマスロット間をＮ分割した場合のタイマ登録処理のフローを示すフローチャートである。図１９に示すように、タイマ登録タスク５１は、タイマ登録時刻として現在時刻を取得し（ステップＳ３１）、タイマ管理表５３からタイマ処理タスク５２の休止開始時刻を獲得する（ステップＳ３２）。
【００８４】
そして、タイマ登録タスク５１は、タイムスライス／Ｎをスロット間タイムスライスに設定し（ステップＳ３３）、現在時刻−休止開始時刻をタイムスライス経過時間に設定する（ステップＳ３４）。そして、タイマ登録タスク５１は、［タイムスライス経過時間／スロット間タイムスライス］／Ｎをスロット間登録位置に設定する（ステップＳ３５）。ここで、［Ｘ］は、Ｘの小数点以下を切り上げた値である。そして、タイマ登録タスク５１は、カレントスロット＋指定スロット数＋スロット間登録位置に設定する（ステップＳ３６）。
【００８５】
そして、タイマ登録タスク５１は、許容誤差順タイマキューにタイマ登録を行い（ステップＳ３７）、タイマ登録要求で指定された許容誤差が登録タイマ内で最小の許容誤差であるか否かを判定する（ステップＳ３８）。その結果、最小の許容誤差である場合には、当該タイマの許容誤差を許容タイマ誤差値とする（ステップＳ３９）。
【００８６】
このように、タイマ登録タスク５１が、タイムスライス経過時間とスロット間タイムスライスに基づいてタイマ登録を行うタイマスロットを特定することによって、タイマ誤差を少なくすることができる。
【００８７】
次に、タイマ処理のフローについて説明する。図２０は、タイマ処理のフローを示すフローチャートである。タイマ処理タスク５２は、現在時刻を休止開始時刻として記憶し（ステップＳ４１）、カレントスロット＋１の範囲内にタイマ登録済であるか否かを判定する（ステップＳ４２）。
【００８８】
その結果、タイマ処理タスク５２は、タイマ登録済でない場合には、タイムスライスの間休止し（ステップＳ４３）、タイマ登録済である場合には、スロット間タイマ処理を行う（ステップＳ４４）。ここで、スロット間タイマ処理とは、タイマスロット間の分割により追加されたタイマスロットに登録されたタイマ要求の処理である。
【００８９】
そして、タイマ処理タスク５２は、カレントスロットを遷移し（ステップＳ４５）、遷移先のタイマスロットに登録されたタイマ要求のタイムアウト処理を行う（ステップＳ４６）。そして、タイマ処理タスク５２は、装置状況の監視間隔だけ経過したか否かを判定し（ステップＳ４７）、経過していない場合には、ステップＳ４１に戻る。
【００９０】
一方、装置状況の監視間隔だけ経過した場合には、タイマ処理タスク５２は、負荷状況又はタイマ誤差を確認し（ステップＳ４８）、実行優先度の変更モードを判定する（ステップＳ４９）。その結果、増加モードである場合には、タイマ処理タスク５２は、負荷状況又はタイマ誤差が閾値以上であるか否かを判定する（ステップＳ５０）。
【００９１】
その結果、タイマ処理タスク５２は、閾値以上である場合には、実行優先度を固定値増加し（ステップＳ５１）、閾値以上でない場合には、実行優先度をデフォルトに戻す（ステップＳ５２）。一方、実行優先度の変更モードが一意決定モードである場合には、タイマ処理タスク５２は、負荷状況又はタイマ誤差から求めた実行優先度に変更する（ステップＳ５３）。
【００９２】
図２１は、スロット間タイマ処理のフローを示すフローチャートである。図２１に示すように、タイマ処理タスク５２は、スロット内位置を１に初期化し（ステップＳ６１）、休止時間をタイムスライス／Ｎに初期化する（ステップＳ６２）。そして、タイマ処理タスク５２は、スロット内位置がＮに到達したか否かを判定し（ステップＳ６３）、Ｎに到達した場合には、休止時間だけスリープする（ステップＳ６４）。
【００９３】
一方、スロット内位置がＮに到達していない場合には、タイマ処理タスク５２は、スロット内位置のタイマスロットにタイマ要求が有るか否かを判定し（ステップＳ６５）、有る場合には、休止時間だけスリープする（ステップＳ６６）。そして、タイマ処理タスク５２は、タイマ要求についてタイムアウト処理を行い（ステップＳ６７）、スロット内位置に１を加え（ステップＳ６８）、ステップＳ６２に戻る。
【００９４】
一方、スロット内位置のタイマスロットにタイマ要求が無い場合には、タイマ処理タスク５２は、休止時間にタイムスライス／Ｎを加える（ステップＳ６９）。そして、タイマ処理タスク５２は、スロット内位置に１を加え（ステップＳ７０）、ステップＳ６３に戻る。
【００９５】
このように、タイマ処理タスク５２は、スロット間タイマ処理を行うことによって、タイムスライスの間隔内に追加されたタイマスロットに登録されたタイマ要求を処理することができる。
【００９６】
次に、タイマ管理表５３の詳細について説明する。図２２は、タイマ管理表５３の一例を示す図である。図２２に示すように、タイマ管理表５３には、未使用タイマキュー６１と、タイマプール管理キュー６２と、休止開始時刻６３と、カレントスロット６４と、タイマトラック６５と、分割前タイマスロット数（Ｍ）６６とが含まれる。また、タイマ管理表５３には、スロット間分割数（Ｎ）６７と、許容誤差値６８と、負荷係数値６９と、許容誤差順タイマキュー７０と、１分以上タイマキュー７１とが含まれる。
【００９７】
未使用タイマキュー６１は、未使用のタイマを管理するＦＩＦＯ（First  In  First  Out）キューである。ここで、タイマは、タイマ要求を格納するセルである。タイマプール管理キュー６２は、タイマのセルプールを管理するＦＩＦＯキューである。休止開始時刻６３は、タイマ処理タスク５２が休止する直前に設定する時刻である。
【００９８】
カレントスロット６４は、タイマスロットの現在の位置を示すポインタである。タイマトラック６５は、タイマスロットの集合テーブルであり、Ｍ×Ｎ個のタイマスロットを含む。各タイマスロットは、タイムアウト処理されるタイマ要求が登録される領域である。タイマトラック６５は、６０秒のタイマスロットを含む。指定タイマ値が６０秒未満のタイマ要求が対応するタイマスロットに登録される。分割前タイマスロット数６６は、タイマスロット間が分割される前のタイマスロットの数である。スロット間分割数６７は、タイマスロット間の分割数である。なお、図２２に示すタイマ管理表５３では、分割後のタイマスロットを識別する数を整数とするため、タイマスロットを識別する数がＮ倍されている。
【００９９】
許容誤差値６８は、タイマ登録毎にタイマ誤差について指定される許容誤差のうち最小の値である。負荷係数値６９は、装置毎に指定される装置負荷の許容値である。許容誤差順タイマキュー７０は、許容誤差順にソートされたタイマのキューである。１分以上タイマキュー７１は、指定タイマ値が６０秒以上のタイマが一時的に登録されるキューである。
【０１００】
図２３は、図２２に示したタイマ管理表５３を用いたタイマ登録処理の例を示す図である。図２３は、カレントスロット６４が１の状態で指定タイマ値が２００ｍｓｅｃのタイマ要求を登録する場合の処理を示す。また、スロット間分割数６７＝２である。
【０１０１】
図２３に示すように、タイマ登録処理を開始すると、タイマ登録タスク５１は、未使用タイマキュー６１から未使用タイマを獲得し（ｔ１）、ＯＳ８１から現在時刻をタイマ登録時刻として取得する（ｔ２）。そして、タイマ登録タスク５１は、休止開始時刻６３を獲得し（ｔ３）、タイマ登録時刻−休止開始時刻６３とタイムスライス／２を比較する。
【０１０２】
その結果、タイマ登録時刻−休止開始時刻６３がタイムスライス／２未満の場合には、タイマ登録タスク５１は、（１＋２＋１／２）×２＝７のタイマスロットにタイマ登録する（ｔ４）。一方、タイマ登録時刻−休止開始時刻６３がタイムスライス／２以上の場合には、タイマ登録タスク５１は、（１＋２＋１）×２＝８のタイマスロットにタイマ登録する（ｔ５）。
【０１０３】
そして、タイマ登録タスク５１は、必要に応じてタイマ誤差値６８を更新するとともに、タイマ登録したタイマを許容誤差順タイマキュー７０に登録し（ｔ６）、タイマ登録処理を完了する。
【０１０４】
図２４は、図２２に示したタイマ管理表５３を用いたタイマ処理の例を示す図である。図２４は、カレントスロット６４が６の状態を示す。また、スロット間分割数６７＝２である。図２４に示すように、タイマ処理タスク５２は、現在時刻を休止開始時刻６３として取得し（ｔ１１）、休止開始時刻６３を記憶する（ｔ１２）。
【０１０５】
そして、タイマ処理タスク５２は、カレントスロット６４とカレントスロット６４＋２のタイマスロットとの間にタイマ要求が登録されたタイマスロットがある場合には、スロット間タイマ処理を行う（ｔ１３）。一方、カレントスロット６４とカレントスロット６４＋２のタイマスロットとの間にタイマ要求が登録されたタイマスロットがない場合には、タイマ処理タスク５２は、タイムスライス休止を行う（ｔ１４）。
【０１０６】
そして、タイマ処理タスク５２は、カレントスロット６４を２個進めるカレントスロット遷移を行う（ｔ１５）。図２４では、カレントスロット６４が６から８に遷移する。そして、タイマ処理タスク５２は、８のタイマスロットに登録されたタイマ要求に関してタイムアウト処理タスク８２にタイムアウト通知を行う（ｔ１６）。
【０１０７】
そして、タイマ処理タスク５２は、実行優先度の変更要因としてタイマ精度を用いる場合には、現在時刻をタイマ処理完了時刻として取得し（ｔ１７）、実行優先度の変更要因として装置負荷を用いる場合には、負荷状況を獲得する（ｔ１８）。そして、タイマ処理タスク５２は、負荷状況又はタイマ誤差から実行優先度の値を決定し（ｔ１９）、タイマ処理タスク５２及びタイムアウト処理タスク８２の実行優先度の変更をＯＳ８１に依頼する（ｔ２０）。
【０１０８】
次に、タイマ制御プログラム５等のソフトウェアを実行する通信制御装置３のハードウェア構成について説明する。図２５は、通信制御装置３のハードウェア構成を示す図である。図２５に示すように、通信制御装置３は、ＣＰＵ９１と、ＨＤＤ（Hard  Disk  Drive）９２と、メモリ９３と、ＬＡＮインタフェース９４とを有する。
【０１０９】
ＣＰＵ９１は、メモリ９３からプログラムを読み出して実行する中央処理装置である。ＨＤＤ９２は、プログラムやデータを格納するディスク装置である。メモリ９３は、プログラムやプログラムの実行途中結果などを記憶するＲＡＭ（Random  Access  Memory）である。ＬＡＮインタフェース９４は、通信制御装置３をＬＡＮ経由で情報処理システム２等に接続するためのインタフェースである。そして、通信制御装置３において実行されるタイマ制御プログラム５等は、ＨＤＤ９２に記憶され、メモリ９３に読み出されてＣＰＵ９１によって実行される。
【０１１０】
上述してきたように、実施例では、タイマ制御プログラム５は、タイマスロット間をＮ分割してタイマスロットを追加する。そして、タイマ登録タスク５１が、カレントスロットと指定タイマ値とタイムスライス経過時間とに基づいてタイムアウト処理を起床すべきタイマスロットをタイムスライス／Ｎの時間間隔のタイマスロットから特定してタイマ要求を登録する。そして、タイマ処理タスク５２が、カレントスロットとカレントスロット＋１のタイマスロットとの間にタイマ要求が登録されている場合には、スロット間タイマ処理を行う。一方、カレントスロットとカレントスロット＋１のタイマスロットとの間にタイマ要求が登録されていない場合には、タイマ処理タスク５２は、従来と同様にタイムスライスの間休止して次のタイマスロットに遷移する。したがって、タイマ制御プログラム５は、タイマ登録時におけるタイムスライス経過時間に起因するタイマ誤差を少なくすることができる。
【０１１１】
また、実施例では、タイマ処理タスク５２は、通信制御装置３の負荷状況又はタイマ精度に基づいてタイマ処理タスク５２及びタイムアウト処理タスク８２の実行優先度を動的に変更する。したがって、タイマ制御プログラム５は、通信制御装置３が高負荷の状態でも、タイマ精度の悪化を抑止することができる。
【０１１２】
また、実施例では、タイマ処理タスク５２は、タイマ処理タスク５２及びタイムアウト処理タスク８２の実行優先度の増加量又は実行優先度の値を計算し、計算した実行優先度に変更する。したがって、タイマ制御プログラム５は、実行優先度を柔軟に変更することができる。
【０１１３】
また、実施例では、通信制御装置について説明したが、本発明はこれに限定されるものではなく、情報処理装置などプロセッサとメモリを備え、タイマを利用する他の装置にも同様に適用することができる。
【０１１４】
また、実施例では、タイマスロット間をＮ個に等分割する場合について説明したが、本発明はこれに限定されるものではなく、タイマスロット間を異なる大きさにＮ分割する場合にも同様に適用することができる。
【符号の説明】
【０１１５】
１，４    情報通信システム
２    情報処理システム
３    通信制御装置
５    タイマ制御プログラム
３１，３３    伝送制御タスク
３２    電文制御タスク
５１    タイマ登録タスク
５２    タイマ処理タスク
５３    タイマ管理表
６１    未使用タイマキュー
６２    タイマプール管理キュー
６３    休止開始時刻
６４    カレントスロット
６５    タイマトラック
６６    分割前タイマスロット数
６７    スロット間分割数
６８    許容誤差値
６９    負荷係数値
７０    許容誤差順タイマキュー
７１    １分以上タイマキュー
８１    ＯＳ
８２    タイムアウト処理タスク
９１    ＣＰＵ
９２    ＨＤＤ
９３    メモリ
９４    ＬＡＮインタフェース
【図１】
0006341066.tif 000002
【図２】
0006341066.tif 000003
【図３】
0006341066.tif 000004
【図４】
0006341066.tif 000005
【図５】
0006341066.tif 000006
【図６】
0006341066.tif 000007
【図７】
0006341066.tif 000008
【図８】
0006341066.tif 000009
【図９】
0006341066.tif 000010
【図１０】
0006341066.tif 000011
【図１１】
0006341066.tif 000012
【図１２】
0006341066.tif 000013
【図１３】
0006341066.tif 000014
【図１４】
0006341066.tif 000015
【図１５】
0006341066.tif 000016
【図１６】
0006341066.tif 000017
【図１７】
0006341066.tif 000018
【図１８】
0006341066.tif 000019
【図１９】
0006341066.tif 000020
【図２０】
0006341066.tif 000021
【図２１】
0006341066.tif 000022
【図２２】
0006341066.tif 000023
【図２３】
0006341066.tif 000024
【図２４】
0006341066.tif 000025
【図２５】
0006341066.tif 000026
【図２６】
0006341066.tif 000027
【図２７】
0006341066.tif 000028