JP2010003030A - 情報処理装置およびその周期タスク実行方法 - Google Patents

情報処理装置およびその周期タスク実行方法 Download PDF

Info

Publication number
JP2010003030A
JP2010003030A JP2008160018A JP2008160018A JP2010003030A JP 2010003030 A JP2010003030 A JP 2010003030A JP 2008160018 A JP2008160018 A JP 2008160018A JP 2008160018 A JP2008160018 A JP 2008160018A JP 2010003030 A JP2010003030 A JP 2010003030A
Authority
JP
Japan
Prior art keywords
unit
information processing
time
periodic
correction unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008160018A
Other languages
English (en)
Other versions
JP5101403B2 (ja
Inventor
Tatsuya Maruyama
龍也 丸山
Tsutomu Yamada
山田  勉
Norihisa Yanagihara
徳久 柳原
Shinji Yonemoto
伸治 米本
Takashi Iwaki
隆志 岩城
Hiroshi Fujii
洋 藤井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Industrial Equipment Systems Co Ltd
Original Assignee
Hitachi Industrial Equipment Systems Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Industrial Equipment Systems Co Ltd filed Critical Hitachi Industrial Equipment Systems Co Ltd
Priority to JP2008160018A priority Critical patent/JP5101403B2/ja
Priority to PCT/JP2009/000563 priority patent/WO2009153900A1/ja
Publication of JP2010003030A publication Critical patent/JP2010003030A/ja
Application granted granted Critical
Publication of JP5101403B2 publication Critical patent/JP5101403B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】汎用OS等のスケジューリング周期よりも高速、高精度な制御周期が必要となる情報処理において、スケジューラの起動周期に制約されず、スケジューラの処理に起因する精度低下のない情報処理装置および制御方法を提供する。
【解決手段】タスク処理実行部と、タイマと、タスク処理実行部を起動する補正部と、周期処理登録部と、補正部を起動する補正部起動手段と、時計とを有する情報処理装置において、補正部は各周期の起動時刻の差分の最大値から周期を引いた値を初期待機期間とし、タスク処理実行部の起動時には次期目標待機時刻まで待機してからタスク処理実行部の周期処理を起動する。周期的割込みタイマにより初期待機期間待機し、その後現在時刻に周期を足した次期目標待機時刻を求めて周期処理を実行する。再びタイマ割込みで起動後に次期目標待機時刻まで待機し、次期目標待機時刻を再度計算してから周期処理を実行する。
【選択図】図1

Description

本発明は、周期タスクを実行する情報処理装置及び情報処理ソフトウェアを用いた情報処理制御方法に関する。
一般に計算機では、計算機上のハードウェアを抽象化し、計算機資源を効率よく管理する基本ソフトウェアとしてオペレーティングシステム(以下OSと称す)が稼動している。これらのOS上での実行処理の単位をタスクと呼び、ある一つのタスクは何らかの機能/目的を果たすために動作する。
マルチタスクOSは複数のタスクを動作させ、自身の持つスケジューリング機能によって動作するタスクを適宜切り替える。このようなタスクの切り替えを行う要素をスケジューラと呼ぶ。通常、スケジューラは一定周期で発生するクロックの割り込みによって起動され、OSの実装に依存した評価指標によって実行可能なタスク群から、次に実行するタスクを選択し起動させる。特に、評価指標としてタスクの時間的な制約を考慮したスケジューリングを実行するOSをリアルタイムOSという。
一般にスケジューラの処理時間は、必要最低限のことのみを行いなるべく短くなるように実装される。これは、スケジューラの実行によるオーバーヘッド(システム維持負荷)を最小化し、タスクの実行時間を長くしてシステム全体のスループットを向上させるためである。スケジューラの処理内容としては、実行タスクを選択するスケジューリング機能の他にソフトウェアタイマの更新やタスクキューの更新等が挙げられる。
また、スケジューラの起動周期の長さはプロセッサ等のハードウェアの性能に依存する。スケジューラの起動周期を短くすると、ソフトウェアタイマの分解能が高まることや単位時間あたりのタスク切り替えの機会が増える等の利点はあるものの、スケジューラの実行頻度が高まりシステム全体でのスループットは低下する。起動周期をスケジューラの処理時間と同等程度まで短くした場合は、タスクの実行時間はほぼゼロとなり、事実上スループットはゼロとなる。
逆に起動周期を長くした場合は、システム全体でのスループットは向上するが、ソフトウェアタイマの分解能が悪化することやタスク切り替えの機会が減少する等の短所があり、時間的制約を有するリアルタイムシステムには適さない。一般のOSでは、これらの状況を踏まえて適切なスケジューリング周期が設定される。
周期的な処理を実行する場合、これらのスケジューラやスケジューラ実行時に更新されるソフトウェアタイマを用いる方法が一般的である。周期的な処理では、その周期の時間経過をソフトウェアタイマによって管理し、指定する時間が経過した場合に該当する処理を起動する。
従来、特許文献1においては、ある目標時刻にタスクを起動するために、目標起動時刻よりも早く、スケジューラが起動するタイミングで該当するタスクを起動させ、その後、分解能補正部によって、スケジューリング周期よりも高い分解能で起動タイミングを補正する。また、特許文献2においては、スケジューラを起動するために用いるクロックとは別の第2のクロックを用いて、第2のクロックの割込みによって遊技制御処理を開始させている。
特許3734042号公報 特開2001−087523号公報
しかしながら、モーションコントロールやサーボモータ制御といった高速、高精度な制御周期が必要となる分野においては、現状の汎用OSやリアルタイムOSによる周期実行の実装では不十分である。周期の長さは、ソフトウェアタイマの分解能に依存し、その分解能はスケジューラの起動周期に依存している。そのため、スケジューラの起動周期よりも周期的な処理の周期を短くすることはできない。さらにスケジューラの起動周期は、プロセッサの性能に依存したスケジューリング処理の実行時間に依存している。
また、精度においても、スケジューラ内の処理でのソフトウェアタイマのタイムアウトによって、周期的な処理が開始されるため、スケジューラの処理時間が周期精度低下の原因となる。
前述の通り、スケジューラの処理時間はなるべく短くなるように実装され、一般の用途では問題にならないことが多いが、高速、高精度な制御周期が必要なる分野では問題となることがある。また、スケジューラの処理時間が毎回一定であれば周期精度の観点からは望ましいが、ソフトウェアタイマの数が不定であることやタスクキューの更新処理の時間が不定である等の原因から、実際はスケジューラの処理時間は一定とはならない場合が多い。
前述した従来例でも一定の対策は取られている。しかし例えば特許文献1では周期的な処理の起動は考慮されておらず、分解能補正部による補正期間の長さの考慮がなされていない。分解能補正部による待機中は他のタスクが動作することはできない。したがって、スケジューリング周期内における目標起動時刻までの待機期間が長すぎれば、他のタスクが動作できない時間が長くなりシステム全体のスループットが低下する。一方で、待機期間が短すぎればスケジューラの処理時間のジッタ内に目標起動時刻が設定されることとなり、スケジューリング処理終了後に周期的な処理を起動することとなり周期精度の低下を招く。特許文献2では、割込みによる制御処理の開始までの時間についてもスケジューラと同様にジッタ(信号の時間的ずれ)が存在するのが一般的であり、周期精度の低下を招く。また、特許文献1、特許文献2のいずれにおいても、クロックの割込みからタスクの処理が開始するまでの処理時間のジッタが考慮されていない。
本発明は、周期的なタスク処理を実行するタスク処理実行部と、所定の周期で割込みを発生可能なタイマと、前記タスク処理実行部を起動する補正部と、前記補正部からの依頼を受けて前記タイマの割込みから前記補正部を起動するように登録する周期処理登録部と、前記タイマの割込みから前記補正部を起動する補正部起動手段と、時刻を前記補正部に提供する時計とを有し、前記補正部は、補正部を周期起動させ各周期起動時刻の差分の最大値から周期を引いた値を初期待機期間とする待機期間設定部と、前記タスク処理実行部の初回起動時には初期待機期間のあいだ待機し、次回以降の起動時には次期目標待機時刻まで待機してから前記タスク処理実行部の周期処理を起動する待機部と、前記待機部が待機後の時刻に周期を足した時刻を次期目標待機時刻とする次期目標待機時刻設定部を有することを特徴とする。
また、前記補正部起動手段を割込みハンドラ起動部としたことを特徴とする。
また、前記情報処理装置は複数の情報処理装置間で時刻を同期できる同期部と、複数の情報処理装置間で情報を通信できる通信部とを備え、各情報処理装置で求めた前記初期待機期間を前記通信部を用いて各情報処理装置間で交換し、そのうちの最大となる初期待機期間を各情報処理装置の初期待機期間とし、各情報処理装置は前記同期部で同期されたタイミングで同時に周期処理を実行する情報処理装置システムであることを特徴とする。
また、前記補正部起動手段をスケジューラとしたことを特徴とする。
さらに、周期的なタスク処理を実行するタスク処理実行部と、所定の周期で割込みを発生可能なタイマと、前記タスク処理実行部を起動するとともに待機期間設定部と次期目標待機時刻設定部と待機部とを有する補正部と、前記補正部からの依頼を受けて前記タイマの割込みから前記補正部を起動するように登録する周期処理登録部と、前記タイマの割込みから前記補正部を起動する補正部起動手段と、時刻を前記補正部に提供する時計とを有する情報処理装置の周期タスク実行方法において、前記補正部の待機期間設定部は前記補正部を周期起動させ各周期の起動時刻の差分の最大値から周期を引いた値を初期待機期間とし、前記待機部は前記補正部による前記タスク処理実行部の初回起動時には初期待機期間のあいだ待機し、次回以降の前記補正部の起動時には前記次期目標待機時刻設定部が設定する次期目標待機時刻まで待機してから前記タスク処理実行部の周期処理を起動し、次期目標待機時刻設定部は前記待機部が待機後の時刻に周期を足した時刻を次期目標待機時刻とする情報処理装置の周期タスク実行方法であることを特徴とする。
さらに、前記情報処理装置は複数の情報処理装置間で時刻を同期できる同期部と、複数の情報処理装置間で情報を通信できる通信部とを備え、各情報処理装置で求めた前記初期待機期間を前記通信部を用いて各情報処理装置間で交換し、そのうちの最大となる初期待機期間を各情報処理装置の初期待機期間とし、各情報処理装置は前記同期部で同期されたタイミングで同時に周期処理を実行する情報処理装置システムの周期タスク実行方法であることを特徴とする。
さらに、所定の周期で割込みを発生させるように前記タイマを設定し、割込み発生から割込みハンドラ起動部の起動までの処理時間のジッタを計測し、初回の周期処理の実行時には計測した前記ジッタの最大値の間待機してから周期処理を実行し、次回以降は前回の周期処理開始時点に周期を足した時刻まで待機してから周期処理を実行する情報処理装置の周期タスク実行方法であることを特徴とする。
さらに、前記情報処理装置は複数の情報処理装置間で時刻を同期できる同期部と、複数の情報処理装置間で情報を通信できる通信部とを備え、それぞれの情報処理装置で、所定の周期で割込みを発生させるように前記タイマを設定し、割込み発生から割込みハンドラ起動部の起動までの処理時間のジッタを計測して、前記ジッタの最大値を他の情報処理装置と交換し、各情報処理装置は交換された前記ジッタの中の最大値の間、初回の周期処理の実行時に待機してから周期処理を実行し、次回以降は前回の周期処理開始時点に周期を足した時刻まで待機してから周期処理を実行する情報処理装置システムの周期タスク実行方法であることを特徴とする。
本発明はスケジューラの起動周期に制約されず、周期精度の高い周期処理を実行可能な情報処理装置およびその周期タスク実行方法を提供することができる。また、周期精度の高い周期処理を実行可能な情報処理システムを提供することができる。
さらに、複数の計算機で構成され各計算機が通信手段で接続されて、各計算機の時刻を同期させる同期手段を有するシステムにおいて、各計算機が同期されたタイミングでスケジューラの起動周期に制約されず、周期精度の高い周期処理を実行することができる情報処理装置システムを提供することができる。
以下に、本発明の実施形態を図面に基づいて説明する。
[第1の実施の形態]
図1は、本発明の第1の実施の形態におけるソフトウェア構成を示すブロック図である。タスク処理実行部100は所定の処理を実行し、OSの提供する機能を用いるアプリケーションとして実装される。タスク処理実行部100は、タスクを所定の周期で実行する周期処理部108を有する。周期処理部108が実行される各周期のタイミングは、補正部101によって定められる。
補正部101は、タスク処理実行部100内の周期処理部108でタスクが実行される各周期のタイミングを定める。補正部101は、待機部105、次期目標設定部106、待機期間設定部107から構成される。また、補正部101は周期処理登録部102へ周期処理実行の準備を依頼する。また、補正部101は時計109と接続する。補正部101の実装形態としては、アプリケーション、ライブラリ、ミドルウェア、カーネル、カーネルモジュール、サーバープロセス等が挙げられる。
次期目標待機時刻設定部106は、待機部105が待機し続けるまでの目標待機時刻を設定する。待機部105は、次期目標待機時刻設定部106が設定する目標待機時刻まで待機した後、周期処理部108を実行させる。待機期間設定部107は、次期目標設定部106が設定する目標待機時刻の設定に必要な初期待機期間を求める。
周期処理登録部102は補正部101の依頼を受けて周期処理実行を準備する。すなわち指定周期で割込みを発生するようにタイマ104を設定し、タイマ104の割込みによって補正部101が起動するように割込みハンドラ起動部103を設定する。割込み処理を行う割込みハンドラ起動部103は、タイマ104から通知された割込み信号によって補正部101を起動する。割込みハンドラ起動部103はOSに含まれる機能として実装される。タイマ104は、周期処理登録部102によって指定された周期で割込みを発生するタイマICである。
時計109は、補正部101に対して現在時刻を提供する。提供する情報の表現形態は、時間を表すものであればよい。したがって、時刻だけでなく、クロック数等でも構わない。時計109は、タイマ104と一体となっていても構わない。
図2は、本発明を適用したソフトウェア構成を実装する計算機システムの一実施例である。CPU110は、不揮発性記憶媒体112からプログラムをRAM111に転送して実行する。実行処理プログラムとしては、OSおよび図1に示されるソフトウェア構成を適用できる。
RAM111は、CPU110が動作するための一時的な記憶領域であり、不揮発性記憶媒体112から転送したOS、アプリケーションプログラム等が格納される。不揮発性記憶媒体112は、情報の記憶媒体で、CPU110を動作させるためのプログラムの保存、プログラムの実行結果の保存に利用される。
割込みコントローラ113は、割込み信号を通知可能な周辺デバイスと割込み信号を通じて接続し、周辺デバイス間の優先順位を考慮して、CPU110へ割込み信号を通知する。割込みコントローラ113はCPU110内に含まれていてもよく、バス115に接続されていなくてもよい。クロック発振器114は、CPU110を動作させるために必要なクロック信号を生成する。
バス115は、CPU110、RAM111、不揮発性記憶媒体112、割込みコントローラ113をそれぞれ接続する。バス115としては、PCIバス、ISAバス、PCI Expressバス、システムバス、メモリバス等が例示される。バス規格によって、CPU110、RAM111、不揮発性記憶媒体112、割込みコントローラ113、クロック発振器114、タイマ104、時計109の接続形態はさまざまであるが、本発明の効果が失われるものではない。タイマ116は、OSのスケジューラを起動するために、所定の周期で割込みを発生するタイマICである。
つぎに、本発明による周期処理の実行手順のフローチャートを図3に示す。はじめに、タスク処理実行部100は、周期処理実行の準備を補正部101に依頼する(S001)。次に待機期間設定部107が初期待機期間を求める(S002)。その後、周期処理部108は周期処理を実行する(S003)。
次に、周期処理実行のための準備手順について図4のフローチャートにより説明する。補正部101は、周期処理登録部102に周期処理実行の準備を依頼する(S010)。次に周期処理登録部102は、タイマ104の割込みによって補正部101が起動するように登録する(S011)。続けて、周期処理登録部102は、周期処理部108の指定する周期で割込み信号を発生させるようにタイマ104を設定し、タイマ104の動作を開始させる(S012)。タイマ104は、指定周期が経過すると割込みを発生させる(S013)。この割込みによって、割込みハンドラ起動部103は、補正部101を起動させる(S014)。
起動した補正部101の待機期間設定部107は現在の時刻を時計109から取得して保存する(S015)。次のタイマ104の割込みによって、再び待機期間設定部107が起動すると現在の時刻を時計109から取得して保存する(S016)。その後、前回保存した時刻との差分を求め、これまでに求めた計算値で最大のものを保存する(S017)。次に終了条件が成立したかをみて、成立していない場合はS016からの手順を繰り返し、成立していれば手順を終了する(S018)。これらの計測によって求められた差分の最大値から周期を引いた値を初期待機期間αとする(S019)。なお、これらの手順の中で計測できなかったより大きな差分が存在する可能性を考慮して、差分の最大値に所定の値を足した値を初期待機期間αとしてもよい。図4の準備手順によって初期待機期間αを求めるタイミングは、タスク処理実行部100が補正部101に依頼する時の他、OSのアイドル時に実行したり定期的に実行することができる。定期的実行の具体例として、UNIX系OSにおけるcronコマンドが挙げられる。
初期待機期間αは、これと別に割込み発生から割込みハンドラ起動までの処理時間のジッタを計測し、初回の周期処理の実行時には計測した前記ジッタの最大値を採用しても良い。所定の周期で割込みを発生させるように前記タイマを設定し、割込み発生から割込みハンドラ起動部の起動までの処理時間のジッタを計測し、初回の周期処理の実行時には計測した前記ジッタの最大値の間待機してから周期処理を実行し、次回以降は前回の周期処理開始時点に周期を足した時刻まで待機してから周期処理を実行することができる。
手順の終了条件としては、所定の回数タイマ104の割込みを発生させて差分を計算したか、所定の時間経過したか、所定のプログラム変数、レジスタ、メモリの値が所定の値になったか等が挙げられる。
時計109における時刻表現がクロック数の場合は、時計109の動作時間が時計109の計測可能な時間を越えた場合は、出力が初期化されて前回の計測値よりも現在時刻が小さい場合がある。その場合は差分計算を中止し、あるいは初期化を考慮して時計109の計測可能な時間を足して差分を計算する方法を使用しても良い。
次に、周期処理の実行手順を図5のフローチャートに示す。はじめに、タスク処理実行部100が補正部101に周期処理部108の開始を依頼する(S020)。次に補正部101は、周期処理登録部102に割込みハンドラの設定を依頼する(S021)。周期処理登録部102は、タイマ104の割込みによって補正部101が起動するように登録する(S022)。そして周期処理登録部102は、周期処理部108の指定する周期で割込み信号を発生させるようにタイマ104を設定し、タイマ104の動作を開始させる(S023)。タイマ104は、指定周期が経過すると割込みを発生させる(S024)。この割込みによって、割込みハンドラ起動部103は、補正部101を起動させる(S025)。
起動した補正部101の待機部106は、初期待機期間α待機する(S026)。その後、次期目標待機時刻設定部106が次期目標待機時刻Tnextを求める(S027)。それから、補正部101は周期処理部108を起動し、周期的な処理を実行する(S028)。周期的な処理の終了後、終了条件が成立したかをみて(S029)、成立していれば手順を終了する。成立していない場合は次のタイマ104の割込みを待つ。タイマ104は、指定周期が経過すると割込みを発生させる(S030)。この割込みによって、割込みハンドラ起動部103は、補正部101を起動させる(S031)。起動した補正部101の待機部106は、次期目標待機時刻Tnextまで待機する(S032)。その後、次期目標待機時刻設定部106が次期目標待機時刻Tnextを求める(S033)。それから、補正部101は周期処理部108を起動し、周期的な処理を実行する(S034)。あとはS029からの手順を繰り返す。
終了条件としては、所定の回数タイマ104の割込みを発生させて差分を計算したか、所定の時間経過したか、所定のプログラム変数、レジスタ、メモリの値が所定の値になったか等が挙げられる。
タスク処理実行部100が補正部101に周期処理部108の開始を依頼する実装としては、専用のAPI(アプリケーションプログラミングインターフェース)を定義することができる。その場合、引数には周期、周期処理部108へのポインタが例示される。その他の引数として、関数呼出し後、どれくらいの期間で周期処理部108を実行するかという時間、周期処理部108の開始条件となる事象、周期処理部108の1回あたりの最大処理時間等が用いられる。また、定義されたAPIの戻り値として所定の値を返すことができる。所定の値の内容としては、成功、周期指定が短すぎる、長すぎる、すでに他に周期処理が登録されており実行不能あるいは周期精度が期待できない等のエラーが挙げられる。
上記の事項手順において、補正部101が起動した時すでに次期目標待機時刻Tnextを過ぎていた場合は、以下の様な所定の処理を実行する。所定の処理の具体例として、OSの画面上に次期目標待機時刻Tnextを過ぎたことを知らせるダイアログを表示する、ログに記録する、周期処理を実行しない、次期目標待機時刻Tnextを過ぎた現在時刻に周期を足した時刻を次期目標待機時刻として周期処理を継続する、LED等の表示装置を計算機117に取り付け、外部へ通知する等が挙げられる。
タイマ104の割込み発生後の次期目標待機時刻Tnextの求め方を図6に示す。はじめに、タイマ104の割込みによって割込みハンドラ起動部103が補正部101を起動する(S040)。次に、補正部は周期処理が初回かどうかを判断する(S041)。初回であれば、初期待機期間α待機し(S042)、初回でなければ、次期目標待機時刻Tnextまで待機する(S043)。待機後、時計109から現在時刻を取得し、その現在時刻に周期を足した時刻を次のTnextとする(S044)。
次に、待機部105の二つの待機方法を図7、図8のフローチャートに示す。図7に示す第1の方法では、はじめに待機を開始すると(S050)、次に時計109から現在時刻を読み取る(S051)。読み取った現在時刻が目標待機時刻以降かどうかをみる(S052)。目標待機時刻以降でなければ手順S051を繰り返し、目標待機時刻以降であれば待機処理を終了する(S053)。
また、図8に空ループを用いた第2の待機方法を示す。空ループはC言語等ではfor文によって実装される。事前に空ループの1回の処理時間を計測し(S060)、目標待機時刻までの期間分の空ループの必要な実行回数を求める(S061)。そして、求めた実行回数分空ループを実行する(S062)。実行回数分空ループを実行すると待機終了となる(S063)。図7、図8のいずれの方法においても、待機していることを確認するため待機中は外部IOを用いて信号を出力することができる。
これらの構成をとることによって、タスク処理実行部100の周期処理部108は、待機部105の精度と、タイマ104の周期で実行することができる。割込みハンドラ起動部103によりタイマ104の割込みを用いることで、OSのスケジューラの周期とは独立して周期を指定することができ、且つ、スケジューラのスケジューリング処理を伴わないため、低ジッタ、低遅延で周期処理を実行することができる。したがって、スケジューラを用いて周期処理を実行する場合に比べて他のタスクの実行時間を増加させることができ、システム全体のスループットを向上することができる。
[第2の実施の形態]
図9は、本発明を適用したソフトウェア構成の第2の実施形態を示すブロック図である。図に使用する符号が同一の場合は特に断りのない限り第1の実施の形態で説明した機能や要素と同一である。
図1の割込みハンドラ起動部103に替えてスケジューラ120が設けられている。スケジューラ120は、一定周期で発生するクロックの割り込みによって起動され、OSの実装に依存した評価指標によって実行可能なタスク群から、次に実行するタスクを選択し起動させる。実行可能なタスク群には補正部101が含まれる。
図10は、本発明を適用したソフトウェア構成を実装するシステムを示すブロック図である。本発明による周期処理の実行手順の概要は第1の実施の形態における図3と同様である。
次に、周期処理実行のための準備手順について図11のフローチャートに示す。補正部101は、周期処理登録部102に周期処理実行の準備を依頼する(S070)。次に周期処理登録部102は、スケジューラ120の起動周期の整数倍である、周期処理部108の指定する周期で、周期処理部108が起動するようにスケジューラ120を設定する(S071)。周期処理部108の指定周期は、スケジューラ120の起動周期のN倍とする(S072)。スケジューラ120の実行回数の計測値Iを0とする(S073)。スケジューラ120が実行されると計測値Iを1増やす(S074)。次に、計測値IがNと等しいかどうかをみる(S075)。等しくなければ、S074からの手順を繰り返す。
計測値IがNと等しければ、補正部101を起動する(S076)。起動した補正部101は現在の時刻を時計109から取得して保存する(S077)。次に、再び補正部101が起動すると現在の時刻を時計109から取得して保存する(S078)。その後、前回保存した時刻との差分を求め、これまでに求めた計算値で最大のものを保存する(S079)。終了条件が成立したかをみて(S080)、成立していない場合はS078からの手順を繰り返し、成立していれば手順を終了する。これらの計測によって求められた差分の最大値から周期を引いた値を初期待機期間αとする(S081)。終了条件としては、所定の回数スケジューラ120が起動したかや、所定の時間経過したか、所定のプログラム変数、レジスタ、メモリの値が所定の値になったか等が挙げられる。
次に、周期処理の実行手順を図12に示す。はじめに、タスク処理実行部100が補正部101に周期処理部108の開始を依頼する(S090)。次に補正部101は、周期処理登録部102にスケジューラ120が補正部101を起動するように依頼する(S091)。次に周期処理登録部102は、スケジューラ120の起動周期の整数倍である、周期処理部108の指定する周期で、周期処理部108が起動するようにスケジューラ120を設定する(S092)。周期処理部108の指定周期は、スケジューラ120の起動周期のN倍とする(S093)。スケジューラ120の実行回数の計測値Iを0とする(S094)。スケジューラ120が実行されると計測値Iを1増やす(S095)。次に、計測値IがNと等しいかどうかをみる(S096)。等しくなければ、S095からの手順を繰り返す。
計測値IがNと等しければ補正部101を起動する(S097)。起動した補正部101の待機部106は、初期待機期間α待機する(S098)。その後、次期目標待機時刻設定部106が次期目標待機時刻Tnextを求める(S099)。それから、補正部101は周期処理部108を起動し、周期的な処理を実行する(S100)。周期的な処理の終了後、終了条件が成立したかをみて(S101)、成立していれば手順を終了する。
成立していない場合は次の補正部101の起動を待つ。スケジューラ120による補正部101の起動手順はS093〜S097の手順である。スケジューラ120は、補正部101を起動させる(S102)。起動した補正部101の待機部106は、次期目標待機時刻Tnextまで待機する(S103)。その後、次期目標待機時刻設定部106が次期目標待機時刻Tnextを求める(S104)。それから、補正部101は周期処理部108を起動し、周期的な処理を実行する(S105)。あとはS101からの手順を繰り返す。終了条件としては、所定の回数スケジューラ120が起動したかや、所定の時間経過したか、所定のプログラム変数、レジスタ、メモリの値が所定の値になったか等が挙げられる。次期目標待機時刻Tnextの求め方は図6と同様である。
以上の実施例によって、タスク処理実行部100の周期処理部108を、待機部105の精度と、スケジューラ120の周期で実行することができる。
[第3の実施の形態]
図13は、本発明を適用したソフトウェア構成の第3の実施の形態を示すブロック図である。実施例に使用する符号が同一の場合は、特に断りのない限り第1の実施の形態、第2の実施の形態で説明した機能や要素等と同一であることを意味する。図1に比較して、新たに同期部130、通信部131を備えている。
同期部130は、図13のソフトウェア構成を有する複数の計算機の同期部130とのタイミングの同期をとる。具体例としてはNTP(Network Time Protocol)、SNTP(Simple Network Time Protocol)、GPS、IEEE1588方式による同期等が挙げられる。通信部131は、図13のソフトウェア構成を有する複数の計算機と接続し、情報を送受信する。通信部131の具体例としては、Ethernet、TCP/IP、無線通信等が挙げられる。
図14は、本発明を適用したソフトウェア構成を実装するシステムを示すブロック図である。LAN140は、ネットワークとの通信機能を実装した送受信機ICである。LAN140の提供する通信規格としてEthernet等が例示される。ネットワーク141は、計算機117と図13のソフトウェア構成を有する計算機を含む他の計算機と接続し、所定の情報通信を行う。
初期待機期間を求める手順は図4と同様であるが、初期待機期間を求める前に、図14に示すシステムにネットワーク141で接続された図13のソフトウェア構成を有する複数の計算機の各補正部101に、補正部101は通信部131を用いて、同様に図4の手順を実行するように通知する。各計算機において、各初期待機間が求められたら、通信部131を通じて、それぞれの初期待機期間を交換し、交換された初期待機期間の中の最大値を最終的な初期待機期間として決定する。それから、各計算機の周期処理部108を実行させるタイミングを、同期部130によって同期させ、各計算機で図5の手順を実行する。
以上の実施例によって、複数の計算機において、同期部130によって同期されたタイミングで、各計算機はタスク処理実行部100の周期処理部108を、それぞれの計算機における待機部105の精度と、タイマ104の周期で実行することができる。
本発明の第1の実施形態のソフトウェア構成を示すブロック図である。 本発明の第1の実施形態のハードウェア構成のブロック図である。 本発明の第1の実施形態による周期処理手順の概要を示すフローチャートである。 本発明の第1の実施形態による周期処理実行の準備手順を示すフローチャートである。 本発明の第1の実施形態による周期処理の実行手順を示すフローチャートである。 本発明の第1の実施形態による次期目標待機時刻の求め方を示すフローチャートである。 本発明の第1の実施形態による第1の待機方法を示すフローチャートである。 本発明の第1の実施形態による第2の待機方法を示すフローチャートである。 本発明の第2の実施形態のソフトウェア構成を示すブロック図である。 本発明の第2の実施形態のハードウェア構成を示すブロック図である。 本発明の第2の実施形態による周期処理実行の準備手順を示すフローチャートである。 本発明の第2の実施形態による周期処理の実行手順を示すフローチャートである。 本発明の第3の実施形態のソフトウェア構成を示すブロック図である。 本発明の第3の実施形態のハードウェア構成のブロック図である。
符号の説明
100 … タスク処理実行部、101 … 補正部、102 … 周期処理登録部、103 … 割込みハンドラ起動部、104、116 … タイマ、105 … 待機部、106 … 次期目標待機時刻設定部、107 … 待機期間設定部、108 … 周期処理部、109 … 時計、110 … CPU、111 … RAM、112 … 不揮発性記憶媒体、113… 割込みコントローラ、114… クロック発振器、115 … バス、117 … 計算機、120 … スケジューラ、130 … 同期部、131 … 通信部、140 … LAN、141 … ネットワーク

Claims (12)

  1. 周期的なタスク処理を実行するタスク処理実行部と、所定の周期で割込みを発生可能なタイマと、前記タスク処理実行部を起動する補正部と、前記補正部からの依頼を受けて前記タイマの割込みから前記補正部を起動するように登録する周期処理登録部と、前記タイマの割込みから前記補正部を起動する補正部起動手段と、時刻を前記補正部に提供する時計とを有し、
    前記補正部は、補正部を周期起動させ各周期起動時刻の差分の最大値から周期を引いた値を初期待機期間とする待機期間設定部と、前記タスク処理実行部の初回起動時には初期待機期間のあいだ待機し、次回以降の起動時には次期目標待機時刻まで待機してから前記タスク処理実行部の周期処理を起動する待機部と、前記待機部が待機後の時刻に周期を足した時刻を次期目標待機時刻とする次期目標待機時刻設定部を有することを特徴とする情報処理装置。
  2. 請求項1記載の情報処理装置において、前記補正部起動手段を割込みハンドラ起動部としたことを特徴とする情報処理装置。
  3. 請求項1または2に記載の情報処理装置において、前記情報処理装置は複数の情報処理装置間で時刻を同期できる同期部と、複数の情報処理装置間で情報を通信できる通信部とを備え、各情報処理装置で求めた前記初期待機期間を前記通信部を用いて各情報処理装置間で交換し、そのうちの最大となる初期待機期間を各情報処理装置の初期待機期間とし、各情報処理装置は前記同期部で同期されたタイミングで同時に周期処理を実行することを特徴とする情報処理装置システム。
  4. 請求項1記載の情報処理装置において、前記補正部起動手段をスケジューラとしたことを特徴とする情報処理装置。
  5. 請求項4に記載の情報処理装置において、前記情報処理装置は複数の情報処理装置間で時刻を同期できる同期部と、複数の情報処理装置間で情報を通信できる通信部とを備え、各情報処理装置で求めた前記初期待機期間を前記通信部を用いて各情報処理装置間で交換し、そのうちの最大となる初期待機期間を各情報処理装置の初期待機期間とし、各情報処理装置は前記同期部で同期されたタイミングで同時に周期処理を実行することを特徴とする情報処理装置システム。
  6. 周期的なタスク処理を実行するタスク処理実行部と、所定の周期で割込みを発生可能なタイマと、前記タスク処理実行部を起動するとともに待機期間設定部と次期目標待機時刻設定部と待機部とを有する補正部と、前記補正部からの依頼を受けて前記タイマの割込みから前記補正部を起動するように登録する周期処理登録部と、前記タイマの割込みから前記補正部を起動する補正部起動手段と、時刻を前記補正部に提供する時計とを有する情報処理装置の周期タスク実行方法において、
    前記補正部の待機期間設定部は前記補正部を周期起動させ各周期の起動時刻の差分の最大値から周期を引いた値を初期待機期間とし、前記待機部は前記補正部による前記タスク処理実行部の初回起動時には初期待機期間のあいだ待機し、次回以降の前記補正部の起動時には前記次期目標待機時刻設定部が設定する次期目標待機時刻まで待機してから前記タスク処理実行部の周期処理を起動し、次期目標待機時刻設定部は前記待機部が待機後の時刻に周期を足した時刻を次期目標待機時刻とすることを特徴とする情報処理装置の周期タスク実行方法。
  7. 請求項6記載の情報処理装置の周期タスク実行方法において、前記補正部起動手段を割込みハンドラ起動部としたことを特徴とする情報処理装置の周期タスク実行方法。
  8. 請求項6または7に記載の情報処理装置の周期タスク実行方法において、前記情報処理装置は複数の情報処理装置間で時刻を同期できる同期部と、複数の情報処理装置間で情報を通信できる通信部とを備え、各情報処理装置で求めた前記初期待機期間を前記通信部を用いて各情報処理装置間で交換し、そのうちの最大となる初期待機期間を各情報処理装置の初期待機期間とし、各情報処理装置は前記同期部で同期されたタイミングで同時に周期処理を実行することを特徴とする情報処理装置システムの周期タスク実行方法。
  9. 請求項6記載の情報処理装置の周期タスク実行方法において、前記補正部起動手段をスケジューラとしたことを特徴とする情報処理装置の周期タスク実行方法。
  10. 請求項9に記載の情報処理装置の周期タスク実行方法において、前記情報処理装置は複数の情報処理装置間で時刻を同期できる同期部と、複数の情報処理装置間で情報を通信できる通信部とを備え、各情報処理装置で求めた前記初期待機期間を前記通信部を用いて各情報処理装置間で交換し、そのうちの最大となる初期待機期間を各情報処理装置の初期待機期間とし、各情報処理装置は、前記同期部で同期されたタイミングで同時に周期処理を実行することを特徴とする情報処理装置システムの周期タスク実行方法。
  11. 請求項7に記載の情報処理装置の周期タスク実行方法において、
    所定の周期で割込みを発生させるように前記タイマを設定し、割込み発生から割込みハンドラ起動部の起動までの処理時間のジッタを計測し、初回の周期処理の実行時には計測した前記ジッタの最大値の間待機してから周期処理を実行し、次回以降は前回の周期処理開始時点に周期を足した時刻まで待機してから周期処理を実行することを特徴とする情報処理装置の周期タスク実行方法。
  12. 請求項11に記載の情報処理装置の周期タスク実行方法において、前記情報処理装置は複数の情報処理装置間で時刻を同期できる同期部と、複数の情報処理装置間で情報を通信できる通信部とを備え、それぞれの情報処理装置で、所定の周期で割込みを発生させるように前記タイマを設定し、割込み発生から割込みハンドラ起動部の起動までの処理時間のジッタを計測して、前記ジッタの最大値を他の情報処理装置と交換し、各情報処理装置は交換された前記ジッタの中の最大値の間、初回の周期処理の実行時に待機してから周期処理を実行し、次回以降は前回の周期処理開始時点に周期を足した時刻まで待機してから周期処理を実行することを特徴とする情報処理装置システムの周期タスク実行方法。
JP2008160018A 2008-06-19 2008-06-19 情報処理装置およびその周期タスク実行方法 Expired - Fee Related JP5101403B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008160018A JP5101403B2 (ja) 2008-06-19 2008-06-19 情報処理装置およびその周期タスク実行方法
PCT/JP2009/000563 WO2009153900A1 (ja) 2008-06-19 2009-02-13 情報処理装置およびその周期タスク実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008160018A JP5101403B2 (ja) 2008-06-19 2008-06-19 情報処理装置およびその周期タスク実行方法

Publications (2)

Publication Number Publication Date
JP2010003030A true JP2010003030A (ja) 2010-01-07
JP5101403B2 JP5101403B2 (ja) 2012-12-19

Family

ID=41433827

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008160018A Expired - Fee Related JP5101403B2 (ja) 2008-06-19 2008-06-19 情報処理装置およびその周期タスク実行方法

Country Status (2)

Country Link
JP (1) JP5101403B2 (ja)
WO (1) WO2009153900A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7025966B2 (ja) * 2018-03-20 2022-02-25 日立Astemo株式会社 車両制御装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05158577A (ja) * 1991-12-11 1993-06-25 Fujitsu Ltd タイマカウンタ事前計算方式
JPH05177567A (ja) * 1992-01-06 1993-07-20 Canon Inc ロボット制御装置
JPH06175982A (ja) * 1992-12-08 1994-06-24 Fujitsu Ltd マルチプロセッサシステムにおけるtod同期化制御方法
JPH09223026A (ja) * 1996-02-19 1997-08-26 Fuji Electric Co Ltd 時刻スケジューラの時間補正方法
JP3734042B2 (ja) * 1994-11-30 2006-01-11 ソニー株式会社 プロセス管理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05158577A (ja) * 1991-12-11 1993-06-25 Fujitsu Ltd タイマカウンタ事前計算方式
JPH05177567A (ja) * 1992-01-06 1993-07-20 Canon Inc ロボット制御装置
JPH06175982A (ja) * 1992-12-08 1994-06-24 Fujitsu Ltd マルチプロセッサシステムにおけるtod同期化制御方法
JP3734042B2 (ja) * 1994-11-30 2006-01-11 ソニー株式会社 プロセス管理方法
JPH09223026A (ja) * 1996-02-19 1997-08-26 Fuji Electric Co Ltd 時刻スケジューラの時間補正方法

Also Published As

Publication number Publication date
WO2009153900A1 (ja) 2009-12-23
JP5101403B2 (ja) 2012-12-19

Similar Documents

Publication Publication Date Title
US10015278B2 (en) Adaptive scheduling and orchestration in a networked environment
JP7394986B2 (ja) データパケットを送信する方法、及びこの方法を実施する装置
JP6359098B2 (ja) 分散リアルタイムシステムにおいて周期的なタスクの間で適時にデータを引き渡す方法
KR101636496B1 (ko) 신호 동기 시스템, 노드 동기 시스템, 신호 동기 방법, 및 노드 동기 방법
JP2010182101A (ja) フィールド制御システム
Puck et al. Distributed and synchronized setup towards real-time robotic control using ROS2 on Linux
JP5101403B2 (ja) 情報処理装置およびその周期タスク実行方法
JP2006349364A (ja) 時刻補正方法
Karachatzis et al. An Evaluation of Time-triggered Scheduling in the Linux Kernel
Chen et al. A note on the period enforcer algorithm for self-suspending tasks
Kasparick et al. Measuring latencies of IEEE 11073 compliant service-oriented medical device stacks
Maruyama et al. Communication architecture of EtherCAT master for high-speed and IT-enabled real-time systems
Pérez et al. EDF scheduling for distributed systems built upon the IEEE 802.1 AS clock-A theoretical-practical comparison
Tijero et al. First steps towards an IEEE 802.1 AS clock for EDF scheduling in distributed real-time systems
Lakhani et al. Applying design patterns to improve the reliability of embedded systems through a process of architecture migration
Xu et al. Towards fault-tolerant real-time scheduling in the seL4 microkernel
Lee et al. Interrupt handler migration and direct interrupt scheduling for rapid scheduling of interrupt-driven tasks
Pérez Tijero et al. First steps towards an IEEE 802.1 AS clock for EDF scheduling in distributed real-time systems
Jahnke et al. Live in the express lane
Lee et al. On determinism in event-triggered distributed systems with time synchronization
Ericsson et al. A flexible communication stack design for time sensitive embedded systems
JP6869447B1 (ja) 時刻同期装置、時刻同期システム、時刻同期方法及びプログラム
Yongliang et al. Research on clock synchronization mechanism of distributed simulation system based on DDS
US20220276902A1 (en) Method and processing unit for performing tasks through master slave rotation
Olsson et al. Rust async for thread-per-core packet processing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100617

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120703

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120827

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120918

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120926

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151005

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5101403

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees