JP2007519060A - タスクスケジューリング装置、タスクスケジューリング方法、タスクスケジューリングプログラム、記録媒体、及び伝送媒体 - Google Patents
タスクスケジューリング装置、タスクスケジューリング方法、タスクスケジューリングプログラム、記録媒体、及び伝送媒体 Download PDFInfo
- Publication number
- JP2007519060A JP2007519060A JP2006519305A JP2006519305A JP2007519060A JP 2007519060 A JP2007519060 A JP 2007519060A JP 2006519305 A JP2006519305 A JP 2006519305A JP 2006519305 A JP2006519305 A JP 2006519305A JP 2007519060 A JP2007519060 A JP 2007519060A
- Authority
- JP
- Japan
- Prior art keywords
- priority
- task
- specific task
- setting unit
- specific
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、CPU資源を有効に利用することを可能にするタスクスケジューリング技術を提供する。
【解決手段】周期的高優先度設定部102は、周期T毎に特定タスクテーブル110に記録される特定タスク#1の高優先度を、タスク優先度テーブル111にタスク#1の優先度として書き込む。その後、周期Tよりも短い時間THが経過したときに、周期的低優先度設定部103は、特定タスクテーブル110に記録される特定タスク#1の低優先度を、タスク優先度テーブル111にタスク#1の優先度として書き込む。低優先度は高優先度よりも低く設定されている。タスク選択部101は、タスク優先度テーブル111に記録されている複数のタスク10のうち優先度が最も高いものを実行対象として選択する。
【選択図】図1
【解決手段】周期的高優先度設定部102は、周期T毎に特定タスクテーブル110に記録される特定タスク#1の高優先度を、タスク優先度テーブル111にタスク#1の優先度として書き込む。その後、周期Tよりも短い時間THが経過したときに、周期的低優先度設定部103は、特定タスクテーブル110に記録される特定タスク#1の低優先度を、タスク優先度テーブル111にタスク#1の優先度として書き込む。低優先度は高優先度よりも低く設定されている。タスク選択部101は、タスク優先度テーブル111に記録されている複数のタスク10のうち優先度が最も高いものを実行対象として選択する。
【選択図】図1
Description
本発明はマルチタスク環境においてタスクスケジューリングを行うタスクスケジューリング装置、方法、プログラム、記録媒体、及び伝送媒体に関する。
計算機装置(コンピュータ)は、大型計算機やパーソナルコンピュータのような情報処理を主目的とした装置形態のみならず、各種家電機器、携帯電話などの応用機器へも利用が進んでいる。計算機装置を搭載した家電機器などでは、一定の時間毎に一定の処理を行うことを保証したい場合がある。例えば、映像や音声などのストリーミングデータを扱う場合では、10msなどの時間単位でストリーミングデータのフレームが設定されている。この場合、個々のフレーム毎に必要なデータを確実に処理しないと映像や音声が途切れることになる。
マルチタスク型の計算機において一定の時間毎に一定の処理を必ず行うことの保証は、処理を行うタスクの優先度を十分高く設定することで達成可能である。例えば特許文献1は、入力されたコマンドに対応するプロセスの優先度を、一定時間にわたって固定的に高く設定することにより、コマンドの即時性能を保証する技術を開示している。
しかしながら、ストリーミングデータを扱う場合には、各フレームに対応する一定量のデータを処理する必要があるが、一定量を超えるデータの処理は不可欠ではない。最低限必要な量のデータの処理が終われば、他のタスクを実行することが望ましい場合もある。例えば、ユーザの入力に対して応答を返すタスクは、実行開始が余りにも遅れると、ユーザに不快感を与える恐れがある。したがって、映像及び音声が途切れないための最低限度の処理が終われば、応答を返すタスクが実行されるのが望ましい。特許文献1に開示される技術では、特定のタスクが高い優先度で実行される場合には、その期間において、優先度の低いタスクは全く実行されないこととなる。
この不都合を避けるものとして、優先度の高いタスクを通常はスリープ状態にし、周期的に起床させる技術を想定することができる。しかしながら、この想定技術では、一定周期毎に起床・スリープする特定タスクはスリープ中には一切実行されない。すなわち、特定タスクがスリープ中に他のタスクの処理が不要である場合、アクティブなタスクが存在しない空き時間が発生し、CPUのリソースを有効に使用できないという問題があった。
特開平4−335441号公報
本発明は上記課題を鑑みてなされたものであり、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、CPU資源を有効に利用することを可能にするタスクスケジューリング技術を提供するものである。
上記課題を解決し上記目的を達成するために、本発明の一態様に係るものは、複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置であって、前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択部と、所定の周期T毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第1優先度に設定する周期的高優先度設定部と、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tが経過する前に、前記特定のタスクの優先度を前記第1優先度よりも低い第2優先度に設定する周期的低優先度設定部とを備えるものである。
本発明の目的、特徴、局面、及び利点は、以下の詳細な説明と添付図面とによって、より明白となる。
以下本発明の実施の形態について、図面を参照にしながら説明する。
(実施の形態1)
図1は、本発明の実施の形態1によるタスクスケジューリング装置の構成を示すブロック図である。このタスクスケジューリング装置51は、計算機装置(コンピュータ)の一部を構成している。計算機装置は、少なくとも1つの中央演算装置(CPU)1、メモリ装置2、及びタイマー回路3を備えている。また、図示しないが、計算機装置は、入力装置、出力装置のような他の機器を備えていてもよい。
図1は、本発明の実施の形態1によるタスクスケジューリング装置の構成を示すブロック図である。このタスクスケジューリング装置51は、計算機装置(コンピュータ)の一部を構成している。計算機装置は、少なくとも1つの中央演算装置(CPU)1、メモリ装置2、及びタイマー回路3を備えている。また、図示しないが、計算機装置は、入力装置、出力装置のような他の機器を備えていてもよい。
CPU1は、処理性能が十分であれば任意のタイプのものを用いることができる。メモリ装置2には、一つ以上のタスク10、計算機装置のオペレーティングシステム(OS)100を含むプログラムやデータが格納されている。タスク10に含まれる個々のタスク#1、#2等は、一つのプログラム即ちプロセスであっても良く、プログラムの一部であるスレッドであっても良い。メモリ装置2は、十分な機能及び容量があればランダムアクセスメモリ(RAM)、フラッシュメモリのような任意のタイプのものを使用することができる。また、メモリ装置2は、単一のメモリ装置で構成されている必要はなく、同種の複数のメモリ装置、又はリードオンリーメモリ(ROM)を含む、異なる種類のメモリ装置の組み合わせであってもよい。計算機装置は、メモリ装置2以外に、例えばハードディスクのような外部記憶装置を備えていてもよく、計算機装置の動作に問題の無い範囲で外部記憶装置にプログラムやデータを移動させてもよい。
上記のプログラム及びデータは、ROM、フレキシブルディスク、CD−ROM等の記録媒体31を通じて供給することも、電話回線、ネットワーク等の伝送媒体33を通じて供給することも可能である。図1には、記録媒体31としてCD−ROMが描かれており、伝送媒体33として電話回線が描かれている。CD−ROMに記録されたプログラム及びデータは、例えば計算装置の外部装置としてのCD−ROM読取装置32を計算装置本体へ接続することによって読み出すことができ、例えばRAM或いは不図示のハードディスクに格納することができる。記録媒体31としてROMの形態でプログラム及びデータが供給される場合には、当該ROMを計算装置に搭載することにより、計算装置はプログラム及びデータに従った処理を実行可能となる。この場合、当該ROMはメモリ装置2に含まれる。伝送媒体33を通じて供給されるプログラム及びデータは、通信装置34を通じて受信され、例えばRAM或いは不図示のハードディスクに格納される。伝送媒体33は、有線の伝送媒体に限らず無線の伝送媒体であっても良い。
タスク10に含まれる各タスク#1、#2等は、通常のマルチタスク型の計算機装置において管理されるタスクと同様に、それぞれ優先度を持ち、優先度に応じた順番で時分割的に並列処理される。図1では各タスクを#1、#2・・・、#N(Nは自然数)のように表している。
OS100は、CPU1と協働してタスクスケジューリング装置51を実現するために、主要な要素として、タスク選択部101、周期的高優先度設定部102、及び周期的低優先度設定部103を備えている。
タスク選択部101は、通常の優先度を用いたスケジューリング装置と同様に、タスク10の各々に付与された優先度に応じてタスク10をスケジューリングする。すなわち、タスク選択部101は、最も優先度の高いタスクを選択し、選択したタスクをCPU1に実行させることにより、タスク10を優先度の高い順に処理する。タスク選択部101は、後述の周期的高優先度設定部102、周期的低優先度設定部103と連動して本実施の形態に特徴的なタスクスケジューリングを行うが、それとは独立して通常の優先度を用いたスケジューリングを行うため、適時必要に応じて呼び出される。
周期的高優先度設定部102は、一定時間(Tとする)毎に特定のタスク(ここではタスク#1とする)の優先度を十分高く設定する。本実施の形態において十分高い優先度とは、あるタスクがその優先度に設定されている期間、原則的にそのタスクの実行が必ず行われる優先度とする。例えば、OS100が取り扱う優先度の内で最高の値を用いることができる。但し、計算装置を応用したシステムの設計によっては、本実施の形態に特徴的なタスクスケジューリング方法を適用する特定タスクの処理より優先すべきタスクが存在する場合もある。この様な場合は、最高の優先度は用いず、それより低い優先度を用いる必要がある。また、例えば、優先度の範囲を通常のタスクに付与される範囲と優先的に処理すべきタスクに付与される範囲の2つに分け、優先的に処理すべきタスクに付与される範囲の優先度を十分高い優先度として用いても良い。優先度の値はシステムの要求に応じて設計すれば良い。なお、タスクのスケジューリングに関し、優先度だけでなく、例えばスケジューリングクラスのような別のパラメータをあわせて用いるOSも知られている。本実施の形態及び以下の実施の形態における優先度の設定は、その様なパラメータ設定全てを含むものとする。
周期的低優先度設定部103は、周期的高優先度設定部102によりタスク#1が高優先度に設定されたのち一定時間(THとする)後にタスク#1の優先度を十分低く設定する。本実施の形態及び以下の実施の形態において十分低い優先度とは、処理を遅らせても大きな問題のないタスクと同程度の優先度とする。例えば、優先度の範囲を通常のタスクに付与される範囲と優先的に処理すべきタスクに付与される範囲の2つに分ける場合では、通常のタスクに付与される範囲の優先度を十分低い優先度として用いても良い。この様に、優先度の値はシステムの要求に応じて設計すれば良い。
優先度を低く設定されたタスク#1の処理は、タスク#1以上に優先度の高いタスクが存在しなければ続行される。タスク#1以上に優先度の高いタスクが存在すれば、タスク選択部101によるスケジューリングが行われ、タスク#1以外のタスクの処理が実行される。
周期的高優先度設定部102及び周期的低優先度設定部103を所定の時期に起動するために、タスクスケジューリング装置51は以下のように構成される。周期的高優先度設定部102は、例えば、タイマー回路3によるタイマー割り込みとして処理を実行する割り込みハンドラで実現することができる。この場合、タイマー3から周期T毎にCPU1へ割り込みをかける、すなわち割り込み要求信号を伝えるようにし、割り込み要求に対応した割り込みハンドラとしての周期的高優先度設定部102によりタスク#1の優先度を変更させれば良い。
周期的低優先度設定部103も周期的高優先度設定部102と同様に、例えば、タイマー回路3によるタイマー割り込みとして処理を実行する割り込みハンドラで実現することができる。この場合、周期的高優先度設定部102を起動するための割り込みの時期から時間TH後に、周期的低優先度設定部103を起動するための割り込みを、タイマー3からCPU1へかけるようにすると良い。すなわち、タイマー回路3は、周期的高優先度設定部102と周期的低優先度設定部103とを個別に起動するための2種類の割り込み要求信号をCPU1へ伝えると良い。
別の形態として、図1に例示するように、OS100がタイマー部104を備え、タイマー部104が周期T毎に周期的高優先度設定部102を起動し、それよりも時間TH遅れた時期に周期的低優先度設定部103を起動するように、タスクスケジューリング装置51を構成しても良い。タイマー部104は、例えばタイマー回路3によるタイマー割り込みとして処理を実行する割り込みハンドラで実現することができる。この場合には例えば、タイマー回路3は周期Tよりも短い周期T0(例えば周期Tの100分の1)ごとにCPU1へ割り込みをかけ、タイマー部104は、周期T0ごとに時間をカウントアップするカウンタを有する。タイマー部104は、計数値が周期Tに達すると周期的高優先度設定部102を起動するとともに計数値をリセットする。タイマー部104は、更に、計数値が時間THに達するごとに周期的低優先度設定部103を起動する。
なお、周期的高優先度設定部102及び周期的低優先度設定部103を、割り込みハンドラとして実現する場合には、タイマー部104は不要である。
周期的高優先度設定部102及び周期的低優先度設定部103が、特定タスクの優先度を設定することを可能にするために、OS100は例えば、特定タスクテーブル110及びタスク優先度テーブル111を備えている。特定タスクテーブル110は、特定タスク(図1の例ではタスク#1)に対応付けて、本実施の形態に特徴的なスケジューリングを実現するためのパラメータを記録するためのテーブルである。特定タスクテーブル110に記録される内容は、特定タスクを識別するための標識(「特定タスク標識」と仮称する)、周期T、時間TH、高優先度、及び低優先度である。
特定タスクテーブル110に記録される高優先度及び低優先度は、本実施の形態に特徴的なスケジューリングにおいて特定タスクに付与される高優先度及び低優先度を意味する。以下の説明の便宜上、一例として、特定タスク標識はタスク#1を識別するための符号「#1」であり、周期Tは10msであり、時間THは4msであり、高優先度は優先度「1」であり、低優先度は優先度「3」であるとする。ここで、優先度を示す数値が低いほど優先度は高いものとし、優先度「1」は優先度が最高であることを意味するものとする。但し、一般にはこれに限定されるものではない。本発明においては、優先度は高低の区別がつくのであれば、任意の形式で表現しても良い。このことは、図1の例だけでなく、以下の全ての図についても同様である。
一方、タスク優先度テーブル111は、タスク10の各々に対応付けて、各タスクの優先度を記録するためのテーブルである。したがって、タスク優先度テーブル111に記録される内容は、タスクを識別するための標識(「タスク標識」と仮称する)、及び優先度である。タスク選択部101は、タスク優先度テーブル111を参照することにより、タスク優先度テーブル111に記録されている優先度のうち、参照した時点で最も優先度の高いタスクを選択して実行する。以下の説明の便宜上、一例として、タスク#1の優先度は1であり、タスク#2の優先度は2であるとする。
特定タスクテーブル110の内容は、あるタスクがメモリ装置2へ書き込まれた以後において、当該タスクを特定タスクとして本実施の形態に特徴的なスケジューリングの対象とすべき時に、当該タスクがOS100へ記録要求を送ることにより記録される。また、特定タスクテーブル110に記録されている特定タスクを、本実施の形態に特徴的なスケジューリングの対象から外すべき時には、当該特定タスクがOS100へ削除要求を送ることにより記録が抹消される。
例えば、タスク#1がメモリ装置2へ書き込まれた以後、タスク#1が特定タスクとしての扱いを受けるべき時期が到来したときに、タスク#1に関する内容が、特定タスクテーブル110に書き込まれる。また、タスク#1が特定タスクとしての扱いを受けるべき時期が終了したときに、タスク#1に関する内容が、特定タスクテーブル110から削除される。このように、特定タスクテーブル110の内容は適時に変更することができる。
一方、タスク優先度テーブル111の内容は、新たなタスクがメモリ装置2へ書き込まれたとき、あるいはそれ以後であって当該新たなタスクの本来の処理が最初に実行される時までに、新たなタスクがOS100へ記録要求を送ることにより記録される。例えば、タスク#1及び#2が、メモリ装置2へ書き込まれたときに、タスク#1及び#2に関する内容が、タスク優先度テーブル111へ記録される。その後、新たにタスク#3がメモリ装置2へ書き込まれると、その時にタスク#3に関する内容がタスク優先度テーブル111へ記録される。
特定タスクテーブル110及びタスク優先度テーブル111への記録は、例えばOS100が、特定タスクテーブル110及びタスク優先度テーブル111に付随して、それぞれの内容を書き換えるためのシステムコールを有することにより実現される。すなわち、タスク#1が、特定タスクテーブル110に付随するシステムコールを呼出し、特定タスク標識、周期T等の記録すべき内容を引数として当該システムコールへ引き渡すと、当該システムコールは引き渡された内容を特定タスクテーブル110へ記録する。また、タスク#1が、タスク優先度テーブル111に付随するシステムコールを呼出し、記録すべき内容を引数として当該システムコールへ引き渡すと、当該システムコールは引き渡された内容をタスク優先度テーブル111へ記録する。
タイマー部104は例えば、時間T0毎に特定タスクテーブル110を参照し、特定タスクについての記録があれば、周期T及び時間THを取得する。既述のようにタイマー部104は、計数値が周期Tに達する毎に、周期的高優先度設定部102を起動するとともに計数値をリセットし、計数値が時間THに達する毎に周期的低優先度設定部103を起動する。
起動された周期的高優先度設定部102は、特定タスクテーブル110を参照し、特定タスク標識「#1」と高優先度「1」とを取得する。つづいて周期的高優先度設定部102は、タスク優先度テーブル111の内容のうち、取得した特定タスク標識「#1」に標識が一致するタスク#1に対応する優先度「1」を、取得した高優先度「1」で書き換える。図1の例では、書き換えの前と後との間で優先度は変わらない。
起動された周期的低優先度設定部103は、特定タスクテーブル110を参照し、特定タスク標識「#1」と低優先度「1」とを取得する。つづいて周期的低優先度設定部103は、タスク優先度テーブル111の内容のうち、取得した特定タスク標識「#1」に標識が一致するタスク#1に対応する優先度「1」を、取得した低優先度「3」で書き換える。
周期的高優先度設定部102は、周期T毎の一連の起動のうち最初の起動時に限って、タスク優先度テーブル111の内容のうちの書き換える前の優先度の値である優先度の初期値を、例えばタスク優先度テーブル111内の別の欄に保存しておく。タイマー部104は、時間T0毎に特定タスクテーブル110を参照したときに、特定タスクテーブル110に記録された内容がなければ、周期的高優先度設定部102及び周期的低優先度設定部103の何れをも起動しない。但し、タイマー部104は、時間T0毎に特定タスクテーブル110を参照したときに、それまでに記録されていた特定タスクについての記録が無くなった時に限り、例えば周期的高優先度設定部102を起動することにより、タスク優先度テーブル111に保存される優先度の初期値「1」を、対応するタスク#1の優先度「1」へ移動させる。
タスクスケジューリング装置51が以上の構成を採ることにより、タスク選択部101は、本実施の形態に特徴的なタイムスケジューリングと、優先度の初期値に基づく通常のタイムスケジューリングとを、タスク10の必要に応じて適時に実現する。
図2は、本実施の形態に特徴的なタスクスケジューリングが行われるときの主要な処理の流れを示すフローチャートである。特定タスクテーブル110にはタスク#1を特定タスクとして、特定タスク標識等のパラメータが記録されているものとする。
ステップS1において、タイマー部104は周期的高優先度設定部102を起動する。それにより周期的高優先度設定部102が処理を開始する。既に述べたように、周期的高優先度設定部102は、タイマー回路3によるタイマー割り込みによって起動されてもよい。ステップS1の処理は既に述べた通り、周期T毎に行われる。
次に、ステップS2において、周期的高優先度設定部102は、特定タスクテーブル110を参照することにより、特定タスク(タスク#1)の優先度を高く変更する。即ち、周期的高優先度設定部102は、タスク優先度テーブル111の内容のうち、特定タスク(タスク#1)に対応する優先度を、特定タスクテーブル110に記録される高優先度で書き換える。
続いてステップS3において、タスク選択部101は、タスク優先度テーブル111に従ってタスク10のスケジューリングを行う。ステップS2でタスク#1の優先度は十分高く設定されているので、通常ここではタスク#1が、実行すべきタスクとして選択される。
ステップS4において、CPU1はタスク選択部101が選択したタスクを実行する。続くステップS5では、タイマー部104は、ステップS1より時間THが経過したかどうかを判定する。時間THが経過するまでは、ステップS3で選択されたタスク(タスク#1)の実行、即ちステップS4の処理が続けられる。時間THが経過すると、ステップS6において、周期的低優先度設定部103は、例えばタイマー部104により起動され、タスク#1の優先度を低く設定する。即ち、周期的低優先度設定部103は、タスク優先度テーブル111の内容のうち、特定タスク(タスク#1)に対応する優先度(高優先度が書き込まれている)を、特定タスクテーブル110に記録される低優先度で書き換える。
ステップS7では、タスク選択部101は、再びタスク10のスケジューリングを行う。タスク#1の優先度はステップS6で低く設定されているので、他に優先度の高いタスクが存在すれば、タスク選択部101はそのタスクを選択する。一方、他に優先度の高いタスクがなければ、タスク選択部101は、タスク#1を継続して選択する。次に、ステップS8において、CPU1は、タスク選択部101が選択したタスクを実行する。以上のように、特定タスクテーブル110に特定タスクに関するパラメータが記録されているときには、ステップS1〜S8の処理が、周期T毎に反復される。
図3は、本実施の形態における処理の一例を説明するタイミングチャートである。図3の例では、タスク10としてタスク#1とタスク#2との2つがメモリ装置2に存在するものとしている。また、特定タスクテーブル110の内容及びタスク優先度テーブル111の初期の内容は、図1に例示したとおりであるとする。したがってタスク#1は、本実施の形態に特徴的なスケジューリングを適用する特定タスクである。タスク優先度テーブル111に記録されるタスク#1の優先度は変動するが、時刻0においては低優先度に対応する優先度「3」に設定されているものとする。タスク#2は通常のタスク、すなわち特定タスクでないタスクであり、タスク優先度テーブル111に記録される優先度は2に固定されている。なお、太実線は、対応するタスクがCPU1を確保することにより実行されている状態であることを示している。また、白抜き太線は、OS100の処理がCPU1により実行されていることを示している。
時刻0では優先度の高いタスク#2が実行されているが、時刻t1から図2のステップS1、S2が実行され、それによりタスク#1の高優先度への変更が行われる。また、時刻t2よりステップS3、つまりタスク10のスケジューリングが行われる。その結果、優先度「1」のタスク#1が選択され、時刻t3よりタスク#1が実行される(ステップS4及びS5)。時刻t1より時間TH後の時刻t4から図2のステップS6が実行されることにより、タスク#1の優先度は3に変更される。その後、タスク10のスケジューリングが行われる(ステップS7)。その結果、時刻t5より優先度「2」のタスク#2が実行される(ステップS8)。
時刻t6にタスク#2が全ての処理を終了した場合には、再びタスクスケジューリングが行われる。即ち、タスク選択部101によるタスク10のスケジューリング、即ちステップSS2又はS7と同様の処理が改めて行われる。その結果、この時点で優先度の最も高いタスク#1が選択される。それにより、時刻t7よりt8までの期間ではタスク#1が実行される。
時刻t1よりt8までの1周期Tの間の処理を見ると、t1からt4までの時間THの間にわたって、タスク#1が実行される。この間、タスク#1の優先度はタスク#2より高く設定されているので、タスク#1の処理が時間THにわたって保証される。但しここではOS100の処理が行われる時刻t1からt2までの期間は、十分短時間であるとして無視している。OS100の処理に無視できない時間を要する場合は、その分を計算した上で周期T及び時間THを設計すれば良い。
OS100の処理に要する時間を無視すると、周期Tから時間THを除いた時刻t4からt8にわたる期間のうち、時刻t4からt6まではタスク#2が実行され、タスク#2の終了後の時刻t6からt8まではタスク#1が実行される。タスク#1以外で実行すべきタスクであるタスク#2が存在する場合はタスク#2が実行され、タスク#2が存在しない場合はタスク#1が実行される。この様に、1周期に相当する決まった時間区間Tの内で決まった時間TH(図3ではt1からt4間)では、タスク#1の実行を保証しつつ、残りの時間(t4からt8)において他に処理すべきタスクが無い場合にはタスク#1の処理を続けるタスクスケジューリングが実現されている。
以上のように、本実施の形態のタスクスケジューリング装置51によれば、決まった周期T毎に特定のタスクの一定量の処理を保証しつつ、残りの時間も他に処理すべきタスクが無い場合にはその特定タスクの処理を続けることが可能となり、CPU1のリソースを有効に利用することができる。
(実施の形態1の更に具体的な形態)
図4は、実施の形態1によるタスクスケジューリング装置51の更に具体的な形態を例示したブロック図である。このタスクスケジューリング装置51Aを含む計算装置は、図1の計算装置に加えて入力装置4、入力インタフェース5及び出力装置6を備えている。入力装置4は、例えばキーボードである。出力装置5は、例えば音声を出力するとともに画像を表示する表示装置である。
図4は、実施の形態1によるタスクスケジューリング装置51の更に具体的な形態を例示したブロック図である。このタスクスケジューリング装置51Aを含む計算装置は、図1の計算装置に加えて入力装置4、入力インタフェース5及び出力装置6を備えている。入力装置4は、例えばキーボードである。出力装置5は、例えば音声を出力するとともに画像を表示する表示装置である。
タスクスケジューリング装置51AをCPU1と協働して実現するOS100Aは、OS100の各要素(図1)に加えて、バッファ管理部130及びデバイスドライバ140を備えている。バッファ管理部130は、メモリ装置2のメモリ領域内に確保されたバッファ131を管理する。バッファ131は、タスク#1から出力装置5へ出力されるデータを一時的に保持する。バッファ管理部130は、例えばシステムコールとして構成されている。その場合には、タスク#1は、バッファ131へデータを書き込むときには、システムコールとしてのバッファ管理部130を呼出し、書き込むべきデータを引数としてバッファ管理部130へ引き渡す。バッファ管理部130は引き渡されたデータをバッファ131へ書き込む。
デバイスドライバ140は、入力装置4を管理するOS100Aの部分であり、外部入力優先度設定部141を有している。外部入力優先度設定部141は、ユーザによる入力装置4の入力操作に応答して、所定のタスクの優先度を設定する。
図4においてタスク#1は、データをバッファ131へ書き込む処理を行うタスクである。タスク#1は、バッファ131から出力装置6へデータが読み出される速度以上の速度で、データをバッファ131へ供給する必要がある。さもなければ、バッファ131内のデータが尽きてしまい、出力装置6へのデータの出力が停止する。
特定タスクテーブル110には、タスク#1が特定タスクとして記録されているものとする。すると、タスク#1の優先度は、周期Tの期間のうち時間THの間において高優先度に保たれるので、通常において、バッファ131へのデータの書き込みの速度は一定に保たれる。この一定の速度は、周期Tに対する時間TH内の処理量の比率に該当する。周期Tのうちの時間THを除いた時間T−THにおいては、タスク#1の優先度は低優先度となるので、他に実行すべきタスクが無い場合に限り、タスク#1はバッファ131への書き込みを行う。
このように、タスクスケジューリング装置51Aは、時間THにおいてタスク#1の優先度を高優先度に保つことにより、必要とされるバッファ131へのデータの書き込み速度を確保している。時間T−THにおいては、タスク#1の優先度は低優先度に設定されるので、CPU1は他のタスクを実行可能である。このため、必要な他のタスクの実行が長時間待たされることを回避することができる。
更に、タスク#1以外には実行すべきタスクが無い場合には、時間T−THにおいても、タスク#1は、バッファ131へのデータの書き込みを継続して行う。それにより、割り込みの多発等によりタスク#1の実行のために十分な時間を確保できない場合に備えて、バッファ131へデータを蓄積しておくことができる。
図5及び図6は、タスクスケジューリング装置51Aによる処理を説明するタイミングチャートである。図5及び図6の例では、特定タスクテーブル110及びタスク優先度テーブル111の内容は、図4に例示される通りであると仮定している。更に、図5及び図6の例では、タスク#2はユーザが入力装置4を操作することにより実行されるタスクであると仮定している。すなわち、入力装置4に対して所定の操作が行われると、これに応答して外部入力優先度設定部141は、タスク優先度テーブル111に記録されるタスク#2の優先度を、例えば「2」に設定する。図4に例示するタスク優先度テーブル111の内容は、タスク#2の優先度が「2」に設定された後のものに該当する。
外部入力優先度設定部141が、タスク#2の優先度を「2」に設定するまでは、タスク優先度テーブル111にはタスク#2についての記録は存在しない。また、タスク#2の処理が終了すると、タスク優先度テーブル111からタスク#2についての記録が削除される。そのためには例えば、タスク#2は処理の終了とともにタスク優先度テーブル111に付随するシステムコールを呼出し、呼び出された当該システムコールがタスク優先度テーブル111内のタスク#2に関する記録を削除すると良い。
したがって、入力装置4に対する所定の操作が行われるまでは、タスク選択部101は実行対象としてタスク#2を選択することはない。その結果、図5に示すように、タスク#1による処理が継続して行われる。それにより、バッファ131へデータが蓄積されることとなり、出力装置6から出力される映像及び音声に途切れが生じる危険性が低減される。
入力装置4に対する所定の操作が行われると、タスク選択部101は、タスク#2を優先度「2」のタスクとして取り扱う。したがって、図6に例示するように、タスク#1に対して所定量の処理を保証するとともに、入力装置4への所定の操作が行われてから時間TH以内に、タスク#2が実行を開始してユーザに応答を返すことができる。ユーザによる所定の操作からタスク#2の実行開始までの時間、すなわち応答時間が長いと、ユーザに不快感を与える恐れがある。タスクスケジューリング装置51Aは、タスク#1の所定量の処理を保証しつつ、時間TH以内という短い応答時間を実現することができる。
タスク#2の処理が終了すると、タスク選択部101はタスク#2を実行対象として選択しない。したがって、図5に示すように、タスク#1による処理が継続して行われる。
図7〜図9は、本実施の形態に特徴的なタスクスケジューリングを行わない場合の各タスクの処理を説明するタイミングチャートである。すなわち、図7〜図9は、従来のタスクスケジューリングに基づくタスクの処理を例示している。図7の例では、タスク#1の優先度は、最も高い「1」に固定されている。この場合には、ユーザによる所定の操作が行われ、それによってタスク#2の優先度が「2」に設定されても、バッファ131がデータで一杯になるまでタスク#1の実行が継続され、それまではタスク#2の実行が待たされることとなる。すなわち、応答時間が長くなり、そのことがユーザに不快感を与える恐れがある。
図8の例では、タスク#1の優先度が低い値、例えば「3」に固定されている。この場合には、ユーザによる所定の操作が行われ、それによってタスク#2の優先度が「2」に設定されると、直ちにタスク#1の実行が停止されるとともにタスク#2の実行が開始される。すなわち、応答時間が短くなるのでユーザに不快感を与える恐れはない。しかしながら、タスク#2の処理が終了するまで、タスク#1の実行は再開されない。その結果、バッファ131に蓄積されるデータが尽きてしまう恐れがある。
図9の例では、タスク#1は、スリープと高優先度「1」での起床とを周期的に反復する。この場合には、ユーザによる所定の操作がないときには、タスク#1がスリープしている時間では、CPU1はアイドル状態となって何れのタスクも実行することがない。すなわち、資源としてのCPU1が空いているにも拘わらず、バッファ131へのデータの蓄積が行われないという、資源の無駄が発生する。
これに対して、本実施の形態に特徴的なタスクスケジューリングを行うことにより、上記の通り、応答時間を短くしつつ、映像及び音声の出力の途切れの危険を低減することができる。
なお、特定タスクテーブル110の内容を変更するための構成として、特定タスクテーブル110に付随するシステムコールをタスク#1が呼び出すという既述の形態の他に、例えばバッファ131への書き込みを要求したタスクを、バッファ管理部130が特定タスクであると判定し、特定タスクテーブル110の内容を書き換える形態を採ることも可能である。この場合には、バッファ管理部130は、特定タスクテーブル110に記録すべき周期T、時間TH、高優先度、及び低優先度として、例えば予め定められた値を記録する。
(実施の形態1の変形形態)
図10は、実施の形態1の変形形態によるタスクスケジューリング装置の構成を示すブロック図である。このタスクスケジューリング装置51Bは、周期的高優先度設定部102及び周期的低優先度設定部103が、それぞれ周期的高優先度設定部102A及び周期的低優先度設定部103Aとして、タスク#1内に設けられており、それに伴ってタイマー部104がタイマー部104Aへ置き換えられている点において、タスクスケジューリング装置51(図1)とは異なっている。タスクスケジューリング装置51Bは、OS100Bの各部とともに、タスク#1内の周期的高優先度設定部102A及び周期的低優先度設定部103Aをも加えたプログラム内の各部が、CPU1と協働することにより実現される。
図10は、実施の形態1の変形形態によるタスクスケジューリング装置の構成を示すブロック図である。このタスクスケジューリング装置51Bは、周期的高優先度設定部102及び周期的低優先度設定部103が、それぞれ周期的高優先度設定部102A及び周期的低優先度設定部103Aとして、タスク#1内に設けられており、それに伴ってタイマー部104がタイマー部104Aへ置き換えられている点において、タスクスケジューリング装置51(図1)とは異なっている。タスクスケジューリング装置51Bは、OS100Bの各部とともに、タスク#1内の周期的高優先度設定部102A及び周期的低優先度設定部103Aをも加えたプログラム内の各部が、CPU1と協働することにより実現される。
周期的高優先度設定部102A及び周期的低優先度設定部103Aは、OS100Bからタスク#1へ送られるシグナルに応答して処理を実行するシグナルハンドラとして実現されている。シグナルとは一般にOSよりタスクに通知を行う仕組みであり、例えば、タスク毎に用意された変数を変更することで実現される。
タイマー部104Aは、タイマー部104と同様に時間T0毎に特定タスクテーブル110を参照し、特定タスクについての記録があれば、周期T及び時間THを取得する。タイマー部104Aは、タイマー部104と同様にカウンタを有しており、計数値が周期Tに達する毎に、周期的高優先度設定部102Aへシグナルを送ることにより周期的高優先度設定部102Aを起動する。タイマー部104Aは、それと同時に計数値をリセットする。タイマー部104Aは更に、計数値が時間THに達する毎に周期的低優先度設定部103Aへシグナルを送ることにより、周期的低優先度設定部103Aを起動する。
起動された周期的高優先度設定部102Aは、タスク優先度テーブル111の内容のうち、タスク#1に対応する優先度「1」を、タスク#1自身が特定タスクテーブル110に設定した高優先度「1」で書き換える。起動された周期的低優先度設定部103Aは、タスク優先度テーブル111の内容のうち、タスク#1に対応する優先度「1」を、タスク#1自身が特定タスクテーブル110に設定した低優先度「3」で書き換える。
タスクスケジューリング装置51Bが以上の構成を採ることにより、タスクスケジューリング装置51と同様のタスクスケジューリングが実現される。すなわち、タスク選択部101は、本実施の形態に特徴的なタイムスケジューリングと、優先度の初期値に基づく通常のタイムスケジューリングとを、タスク10の必要に応じて適時に実現する。
(実施の形態2)
図11は、本発明の実施の形態2によるタスクスケジューリング装置の構成を示すブロック図である。このタスクスケジューリング装置52は、計算機装置(コンピュータ)の一部を構成している。実施の形態1と同様に、計算機装置は少なくとも1つの中央演算装置(CPU)1、メモリ装置2、及びタイマー回路3を備えている。また、図示しないが、計算機装置は入力装置、出力装置のような他の機器を備えていてもよい。更に、プログラム及びデータの供給経路に関して、実施の形態1によるタスクスケジューリング装置51と同様の構成を採ることができる。図11では、当該供給経路の図示を略している。
図11は、本発明の実施の形態2によるタスクスケジューリング装置の構成を示すブロック図である。このタスクスケジューリング装置52は、計算機装置(コンピュータ)の一部を構成している。実施の形態1と同様に、計算機装置は少なくとも1つの中央演算装置(CPU)1、メモリ装置2、及びタイマー回路3を備えている。また、図示しないが、計算機装置は入力装置、出力装置のような他の機器を備えていてもよい。更に、プログラム及びデータの供給経路に関して、実施の形態1によるタスクスケジューリング装置51と同様の構成を採ることができる。図11では、当該供給経路の図示を略している。
タスクスケジューリング装置52は、特定タスクに対して周期T毎に、一定の時間THの経過を条件とするのではなく、所定量の処理が終了することを条件として、高優先度から低優先度への切替を行う点において、タスクスケジューリング装置51とは異なっている。それにより、特定タスクの必要量の処理がより精度良く確保される。この目的のために、タスクスケジューリング装置52では、メモリ装置2に処理量判別部120が書き込まれている。それに伴って、タスクスケジューリング装置51における特定タスクテーブル110は特定タスクテーブル110Aに置き換えられ、タイマー部104はタイマー部104Bに置き換えられている。図11の例では、処理量判別部120は特定タスクとなるべきタスク#1内に設けられているが、後述のようにOS内に設けられても良い。
処理量判別部120は、本実施の形態に特徴的なタスクスケジューリングの対象である特定タスク(タスク#1とする)の処理量が予め定められた量に達したか否かを判別する。例えば、タスク#1が映像のストリーミングデータを扱うタスクであれば、タスク#1が処理したデータ量が映像1フレームの量に達したかどうかの判定を行う。処理量判別部120は、タスク#1の処理量が予め定められた量に達すると、周期的低優先度設定部103へ通知を行う。周期的低優先度設定部103は、処理量判別部120から通知を受けると、周期的高優先度設定部102によってタスク優先度テーブル111に記録されているタスク#1の高優先度を、特定タスクテーブル110Aに記録されている低優先度へ低く設定する。タスクスケジューリング装置51Bは一定の時間THに基づく制御を行わないので、特定タスクとなるべきタスク#1は、特定タスクテーブル110Aに時間THを記録する必要はない。
図12は、タスクスケジューリング装置52のうち、特定タスクの優先度を高優先度から低優先度へ変更する処理に関わる部分の構成を例示するブロック図である。処理量判別部120は、処理量リセット部121及び処理量比較部122を有している。また、タスク#1は、変数125と、定数としての規定値127とを有している。タイマー部104Bは、タイマ部104と同様に、例えば周期Tよりも十分に短い(例えば、100分の1の)周期T0で割り込み処理を実行する割り込みハンドラとして実現される。タイマー部104Bは、タイマ部104と同様にカウンタを有しており、周期T毎にタスク#1内の処理量リセット部121へシグナルを送る。処理量リセット部121は、タスク#1の処理に伴って数値が変化する変数125を、シグナルに応答してリセットする。変数125は、例えばタスク#1が映像データ等を出力するループを反復して実行する毎に、インクリメントされる変数である。例えば、1ループの処理が行われる毎に1KBのデータの出力処理が行われると、変数125は、1KBに対応する数値(例えば1、1000、1024、或いは8192など)だけインクリメントされる。また、変数125は、リセットによって例えば0に戻される。
処理量比較部122は、周期的に変数125と規定値127とを比較する。処理量比較部122は、例えばタスク#1がループを反復する毎に比較を行う。変数125が規定値127以上になれば、処理量比較部122は周期的低優先度設定部103へ優先度の変更を指示する。規定値127は、周期T毎にタスク#1が処理すべき規定の処理量に対応する値に予め設定されている。
図13は、本実施の形態に特徴的なタスクスケジューリングが行われるときの主要な処理の流れを示すフローチャートである。図2と同様に、特定タスクテーブル110にはタスク#1を特定タスクとして、特定タスク標識等のパラメータが記録されているものとする。図13において、図2の処理と同様の処理には同一の符号を付している。
ステップS1において、タイマー部104Bは周期的高優先度設定部102を起動する。それにより周期的高優先度設定部102が処理を開始する。ステップS1の処理は、周期T毎に行われる。次に、ステップS2において、周期的高優先度設定部102は、特定タスクテーブル110を参照し、タスク優先度テーブル111に記録されている特定タスク(タスク#1)の優先度を、特定タスクテーブル110に記録される高優先度で書き換える。
続いてステップS3において、タスク選択部101は、タスク優先度テーブル111に従ってタスク10のスケジューリングを行う。ステップS2でタスク#1の優先度は十分高く設定されているので、通常ここではタスク#1が、実行すべきタスクとして選択される。ステップS4において、CPU1はタスク選択部101が選択したタスクを実行する。
続くステップS15では、処理量判別部120はタスク#1の処理量が規定量に達したか否かを判定する。処理量が規定量に達するまでは、ステップS3で選択されたタスク(タスク#1)の実行、即ちステップS4の処理が続けられる。処理量が規定量に達すると、ステップS6において、周期的低優先度設定部103が処理量判別部120からの指示によって起動され、タスク#1の優先度を低く設定する。即ち、周期的低優先度設定部103は、タスク優先度テーブル111の内容のうち、特定タスク(タスク#1)に対応する優先度(高優先度が書き込まれている)を、特定タスクテーブル110に記録される低優先度で書き換える。
ステップS7では、タスク選択部101は、再びタスク10のスケジューリングを行う。タスク#1の優先度はステップS6で低く設定されているので、他に優先度の高いタスクが存在すれば、タスク選択部101はそのタスクを選択する。一方、他に優先度の高いタスクがなければ、タスク選択部101は、タスク#1を継続して選択する。次に、ステップS8において、CPU1は、タスク選択部101が選択したタスクを実行する。以上のように、特定タスクテーブル110Aに特定タスクに関するパラメータが記録されているときには、ステップS1〜S4、S15、S6〜S8の処理が、周期T毎に反復される。
図14は、本実施の形態における処理の一例を説明するタイミングチャートである。図14の例では、タスク10としてタスク#1とタスク#2との2つがメモリ装置2に存在するものとしている。また、特定タスクテーブル110Aの内容及びタスク優先度テーブル111の初期の内容は、図11に例示したとおりであるとする。したがってタスク#1は、本実施の形態に特徴的なスケジューリングを適用する特定タスクである。タスク優先度テーブル111に記録されるタスク#1の優先度は変動するが、時刻0においては低優先度に対応する優先度「3」に設定されているものとする。タスク#2は通常のタスク、すなわち特定タスクでないタスクであり、タスク優先度テーブル111に記録される優先度は2に固定されている。なお、図3と同様に、太実線は、対応するタスクがCPU1を確保することにより実行されている状態であることを示している。また、白抜き太線は、OS100Cの処理がCPU1により実行されていることを示している。
時刻0において優先度の高いタスク#2が実行されているが、時刻t11から図13のステップS1、S2、S3が実行され、タスク#1の高優先度への変更とタスク10のスケジューリングとが行われる。その結果、優先度「1」のタスク#1が選択され、時刻t12よりタスク#1が実行される(ステップS4及びS5)。時刻t11より時間TH1後の時刻t13にタスク#1の処理量が規定量に達すると、図13のステップS6が実行されることにより、タスク#1の優先度は3に変更される。その後、タスク10のスケジューリングが行われる(ステップS7)。その結果、時刻t14より優先度「2」のタスク#2が実行される(ステップS8)。
時刻t15にタスク#2が全ての処理を終了した場合には、タスク選択部101によるタスク10のスケジューリング、即ちステップSS2又はS7と同様の処理が改めて行われる。その結果、この時点で優先度の最も高いタスク#1が選択される。それにより、時刻t16よりt17までの期間ではタスク#1が実行される。
時刻t17より再びステップS1、S2、S3が実行され、時刻t18より優先度「1」に設定されたタスク#1が実行される。図14の例では、時刻t19に割り込みが発生し、その結果OS100C内の割り込みハンドラが実行される。割り込みハンドラによる処理が終了した後の時刻t20にタスク#1の実行が再開される。時刻t17より時間TH2後の時刻t21に処理量が規定量に達することにより、タスク#1の優先度が3に設定される。
時間TH2は、時刻t19からt20の間の割り込みハンドラの実行時間を含んでいる。その為、タスク#1の処理量は同じであっても、時間TH1に比べると時間TH2は長くなっている。この様に、本実施の形態ではタスク#1が高優先度に設定されている時間は不定である。図14の例では、時刻t11からt13まで、及び時刻t17からt21までの期間、すなわちタスク#1の処理量が規定量に達するまでの期間において、タスク#1の優先度は高く設定されており、この期間にわたってタスク#1の実行が保証されている。また、時刻t13からt17までの期間において、実施の形態1と同様に他に優先すべきタスクが存在するなら当該タスクが実行され、存在しなければタスク#1が実行されている。
以上のように、本実施の形態のタスクスケジューリング装置52によれば、決まった周期T毎に特定のタスクの一定量の処理を保証しつつ、残りの時間も他に処理すべきタスクが無い場合にはその特定タスクの処理を続けることが可能となり、CPU1のリソースを有効に利用することができる。
(実施の形態2の様々な変形形態)
特定タスクの優先度を高優先度から低優先度へ変更する処理に関わる部分の構成として、図12に例示した形態以外に、図15〜図18に例示する様々な形態を採ることができる。図15に示すタスクスケジューリング装置52Aでは、処理量判別部120AはOS100Dとタスク#1との双方に跨っている。処理量リセット部121AはOS100Dに設けられ、処理量比較部122はタスク#1に設けられている。タイマー部104Cは、タイマ部104と同様に、例えば周期T0毎に割り込み処理を実行する割り込みハンドラとして実現される。タイマー部104Cは、周期T毎にOS100D内の処理量リセット部121Aを起動する。或いは、処理量リセット部121A自体が、周期T毎に割り込み処理を実行する割り込みハンドラとして実現されてもよい。
特定タスクの優先度を高優先度から低優先度へ変更する処理に関わる部分の構成として、図12に例示した形態以外に、図15〜図18に例示する様々な形態を採ることができる。図15に示すタスクスケジューリング装置52Aでは、処理量判別部120AはOS100Dとタスク#1との双方に跨っている。処理量リセット部121AはOS100Dに設けられ、処理量比較部122はタスク#1に設けられている。タイマー部104Cは、タイマ部104と同様に、例えば周期T0毎に割り込み処理を実行する割り込みハンドラとして実現される。タイマー部104Cは、周期T毎にOS100D内の処理量リセット部121Aを起動する。或いは、処理量リセット部121A自体が、周期T毎に割り込み処理を実行する割り込みハンドラとして実現されてもよい。
起動された処理量リセット部121Aは、タスク#1の処理に伴って数値が変化する変数125をリセットする。処理量比較部122は、周期的に変数125と規定値127とを比較する。変数125が規定値127以上になれば、処理量比較部122は周期的低優先度設定部103へ優先度の変更を指示する。
図15の形態では、処理量比較部122はタスク#1内に設けられたが、図16に示すタスクスケジューリング装置52Bのように、処理量比較部122AをOS100Eの中に設けてもよい。すなわち、処理量判別部120BをOS100E内に設けることも可能である。タイマ部104Dは、タイマ部104と同様に、例えば周期T0毎に割り込み処理を実行する割り込みハンドラとして実現される。タイマー部104Dは、タイマー部104と同様にカウンタを有することにより、周期T毎にOS100D内の処理量リセット部121Aを起動するとともに、ある周期T1毎に処理量比較部122Aを起動する。周期T1は、周期T0の整数倍であり、且つ周期Tよりも十分に短い周期である。周期T1は周期T0と同一であっても良い。タイマー部104Dは、タイマー部104と同様に、周期T0ごとに時間をカウントアップするカウンタを有する。
起動された処理量リセット部121Aは、タスク#1の処理に伴って数値が変化する変数125をリセットする。起動された処理量比較部122Aは、変数125と規定値127とを比較する。変数125が規定値127以上になれば、処理量比較部122Aは周期的低優先度設定部103へ優先度の変更を指示する。タイマー部104Dにより起動される形態に代えて、処理量リセット部121A及び処理量比較部122A自体が、それぞれ周期T及び周期T1毎に割り込み処理を実行する割り込みハンドラとして実現されてもよい。
図17に示すタスクスケジューリング装置52Cでは、OS100F内に設けられる処理量判別部120Cは、処理量を計るためにタスク#1内の変数を参照するのではなく、バッファ131に書き込まれたデータ量を参照する。そのために、バッファ管理部130は、バッファ131にデータが新たに書き込まれる毎に、書き込まれたデータ量に対応した値だけ変数132をインクリメントする。また、処理量判別部120Cは、処理量リセット部121Aと処理量比較部122Aとを有している。タイマ部104Eは、タイマ部104Dと同様に、例えば周期T0毎に割り込み処理を実行する割り込みハンドラとして実現される。
タイマー部104Eは、周期T毎に処理量リセット部120Aを起動する。また、タイマー部104Eは、周期T1毎に処理量比較部122Aを起動する。起動された処理量リセット部121Aは、変数132をリセットする。また、起動された処理量比較部122Aは、変数132を規定値127と比較し、変数132が規定値127に達しておれば周期的低優先度設定部103へ優先度の変更を指示する。
タイマー部104Eにより起動される形態に代えて、処理量リセット部121A及び処理量比較部122A自体が、それぞれ周期T及び周期T1毎に割り込み処理を実行する割り込みハンドラとして実現されてもよい。さらに別の形態として、タスク#1からバッファ131へのデータの新たな書き込みが発生する毎に、バッファ管理部130が処理量比較部122Aを起動してもよい。
図18に示すタスクスケジューリング装置52Dでは、周期的高優先度設定部102Aがタスク#1内に設けられている点において、図12のタスクスケジューリング装置52とは異なっている。図18の周期的高優先度設定部102Aは、図10の周期的高優先度設定部102Aと同様に、OS100Fからタスク#1へ送られるシグナルに応答して処理を実行するシグナルハンドラとして実現されている。
タイマー部104Fは、タイマー部104B(図12)と同様に、例えば周期T0で割り込み処理を実行する割り込みハンドラとして実現される。タイマー部104Fは、タイマー部104Bと同様にカウンタを有しており、計数値が周期Tに達する毎に、周期的高優先度設定部102Aへシグナルを送ることにより周期的高優先度設定部102Aを起動する。起動された周期的高優先度設定部102Aは、タスク優先度テーブル111の内容のうち、タスク#1に対応する優先度を、タスク#1自身が特定タスクテーブル110Aに設定した高優先度で書き換える。さらに、タイマー部104Fは、タイマー部104B(図12)と同様に、周期T毎にタスク#1内の処理量リセット部121へシグナルを送り、処理量リセット部121を起動する。
なお、図18のタスクスケジューリング装置52Dでは、周期的低優先度設定部103はOS100F内に設けられたが、図10のタスクスケジューリング装置51Bと同様に、周期的低優先度設定部103Aとしてタスク#1内に設けることも可能である。
(実施の形態の概要)
本発明の実施の形態の概要を以下に記載する。
本発明の実施の形態の概要を以下に記載する。
(1) あるタスクスケジューリング装置は、複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置であって、前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択部と、所定の周期T毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第1優先度に設定する周期的高優先度設定部と、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tが経過する前に、前記特定のタスクの優先度を前記第1優先度よりも低い第2優先度に設定する周期的低優先度設定部とを備えるものである。
この構成によれば、特定のタスクについて周期T毎に優先度が第1優先度に設定され、それ以後周期Tが経過する前に、特定のタスクについて優先度が第2優先度に低く設定される。従って、特定のタスクについて周期T毎に、相対的に高い優先度に設定される期間と相対的に低い優先度に設定される期間とが与えられる。このため、タスク選択部は、特定のタスクについて周期Tごとに、ある期間にわたって相対的に高い優先度で特定のタスクを扱うとともに、残る期間にわたって相対的に低い優先度で特定のタスクを扱う。したがって、第1優先度を十分に高い優先度に設定することにより、周期T毎にある期間にわたって特定のタスクの処理を保証しつつ、残る時間にも他に処理すべきタスクがなければ特定タスクの実行を継続することが可能となる。すなわち、この構成は、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、CPU資源を有効に利用することを可能にする。
(2) あるタスクスケジューリング装置は、タスクスケジューリング装置(1)であって、前記周期的低優先度設定部は、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tよりも短い所定の時間THが経過したときに、前記特定のタスクの優先度を前記第2優先度に設定するものである。
この構成によれば、特定のタスクの優先度が第1優先度に設定されてから、周期Tより短い所定の時間THが経過したときに、周期的低優先度設定部が特定のタスクの優先度を第2優先度に設定するので、簡素な構成で特定タスクの優先度の切替えを行うことができる。
(3) あるタスクスケジューリング装置は、タスクスケジューリング装置(1)であって、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから、前記特定のタスクの処理量が所定の規定量に達したか否かを判別する処理量判別部を更に備え、前記周期的低優先度設定部は、前記処理量が前記規定量に達したものと前記処理量判別部が判別したときに、前記特定のタスクの優先度を前記第2優先度に設定するものである。
この構成によれば、処理量判別部が特定のタスクの処理量が所定の規定量に達したものと判別したときに、周期的低優先度設定部が特定のタスクの優先度を第2優先度に設定するので、第1優先度を十分に高い優先度に設定した場合に、特定タスクの必要量の処理をより精度良く確保することができる。
(4) あるタスクスケジューリング装置は、タスクスケジューリング装置(3)であって、前記処理量判別部は、前記特定のタスクの実行にともなって値が変化する変数と所定の規定値とを比較することにより前記処理量が前記規定量に達したか否かを判別する処理量比較部を備えるものである。
この構成によれば、処理量判別部が、特定のタスクの実行にともなって値が変化する変数と所定の規定値とを比較することにより処理量が規定量に達したか否かを判別するので、処理量判別部を簡素に構成することができる。
(5) あるタスクスケジューリング装置は、タスクスケジューリング装置(3)であって、前記特定のタスクが出力するデータを一時保持するバッファを更に備え、前記処理量判別部は、前記特定のタスクの実行にともなって前記バッファに書き込まれるデータ量と所定の規定値とを比較することにより前記処理量が前記規定量に達したか否かを判別する処理量比較部を備えるものである。
この構成によれば、処理量判別部は、特定のタスクの実行にともなってバッファに書き込まれるデータ量と所定の規定値とを比較することにより処理量が規定量に達したか否かを判別するので、特定のタスクがデータを出力する処理を行うタスクである場合に、処理量が規定量に達したか否かの判別を精度良く、かつ容易に行うことができる。
(6) あるタスクスケジューリング装置は、タスクスケジューリング装置(1)ないし(5)の何れかであって、前記複数のタスクの各々とその優先度とを対応付けて記録するためのタスク優先度テーブルを更に備え、前記周期的高優先度設定部は、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として前記第1優先度を書き込むことにより、前記特定のタスクの優先度を前記第1優先度に設定し、前記周期的低優先度設定部は、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として前記第2優先度を書き込むことにより、前記特定のタスクの優先度を前記第2優先度に設定し、前記タスク選択部は前記タスク優先度テーブルを参照し、前記タスク優先度テーブルに記録された複数の優先度のうちの最も高い優先度に対応するタスクを前記実行対象として選択するものである。
この構成によれば、周期的高優先度設定部及び周期的低優先度設定部は、タスク優先度テーブルに優先度を書き込むことにより優先度を設定し、タスク選択部はタスク優先度テーブルに記録されている優先度に従ってタスクの選択を行うので、実施の形態に特徴的なタスクスケジューリングを簡素な構成で実現することができる。
(7) あるタスクスケジューリング装置は、タスクスケジューリング装置(6)であって、前記特定のタスクと前記第1優先度と前記第2優先度とを対応付けて記録するための特定タスクテーブルを更に備え、前記周期的高優先度設定部は、前記特定タスクテーブルを参照し、前記特定のタスクに関する情報が記録されておれば、記録されている前記第1優先度を読み出し、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として、読み出した前記第1優先度を書き込み、前記周期的低優先度設定部は、前記特定タスクテーブルを参照し、前記特定のタスクに関する情報が記録されておれば、記録されている前記第2優先度を読み出し、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として、読み出した前記第2優先度を書き込むものである。
この構成によれば、周期的高優先度設定部及び周期的低優先度設定部は、特定タスクテーブルを参照し、記録されている優先度をタスク優先度テーブルへ書き込むことにより、優先度を設定するので、特定のタスクの優先度の設定をより簡素な構成で実現することができる。更に、特定タスクテーブルに特定タスクに関する情報を記録したり削除したりすることにより、必要に応じて実施の形態に特徴的なタスクスケジューリングの実行及び停止を制御することが可能となる。
(8) あるタスクスケジューリング装置は、タスクスケジューリング装置(7)であって、前記特定のタスクは、前記特定タスクテーブルの記録内容を書き込み及び削除するものである。
この構成によれば、特定のタスクが、特定タスクテーブルの記録内容を書き込み及び削除するので、特定のタスクの側から実施の形態に特徴的なタスクスケジューリングの実行及び停止を制御することが可能となる。
(9) あるタスクスケジューリング装置は、タスクスケジューリング装置(1)ないし(8)の何れかであって、前記周期的高優先度設定部と前記周期的低優先度設定部とのうち少なくとも一方の設定部が、オペレーティングシステムの機能として実現されているものである。
この構成によれば、周期的高優先度設定部と周期的低優先度設定部とのうち少なくとも一方の設定部が、オペレーティングシステムの機能として実現されているので、当該少なくとも一方の設定部をタスク側において設ける必要がない。すなわち、幅広いタスクを実施の形態に特徴的なタスクスケジューリングの対象とすることができる。
(10) あるタスクスケジューリング装置は、タスクスケジューリング装置(9)であって、前記少なくとも一方の設定部が、割り込みハンドラとして実現されているものである。
この構成によれば、少なくとも一方の設定部が割り込みハンドラとして実現されているので、当該少なくとも一方の設定部が周期的に動作する構成を簡素に実現することができる。
(11) あるタスクスケジューリング装置は、タスクスケジューリング装置(1)ないし(8)の何れかであって、前記周期的高優先度設定部と前記周期的低優先度設定部とのうち少なくとも一方の設定部が、前記特定のタスクの機能として実現されているものである。
この構成によれば、少なくとも一方の設定部が、前記特定のタスクの機能として実現されているので、オペレーティングシステムが当該設定部を提供していなくとも、実施の形態に特徴的なタスクスケジューリングを実現することができる。
(12) あるタスクスケジューリング装置は、タスクスケジューリング装置(11)であって、前記少なくとも一方の設定部が、シグナルハンドラとして実現されているものである。
この構成によれば、少なくとも一方の設定部が、シグナルハンドラとして実現されているので、当該少なくとも一方の設定部が周期的に動作する構成を簡素に実現することができる。
(13) あるタスクスケジューリング方法は、複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング方法であって、前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択工程と、所定の周期T毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第1優先度に設定する周期的高優先度設定工程と、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tが経過する前に、前記特定のタスクの優先度を前記第1優先度よりも低い第2優先度に設定する周期的低優先度設定工程とを備えるものである。
この構成は、装置(1)について述べたと同様の理由により、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、CPU資源を有効に利用することを可能にする。
(14) あるタスクスケジューリングプログラムは、複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置としてコンピュータを機能させるタスクスケジューリングプログラムであって、前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択手段と、所定の周期T毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第1優先度に設定する周期的高優先度設定手段と、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tが経過する前に、前記特定のタスクの優先度を前記第1優先度よりも低い第2優先度に設定する周期的低優先度設定手段として前記コンピュータを機能させるものである。
この構成は、装置(1)について述べたと同様の理由により、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、CPU資源を有効に利用することを可能にする。
(15) ある記録媒体は、複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置としてコンピュータを機能させるタスクスケジューリングプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択手段と、所定の周期T毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第1優先度に設定する周期的高優先度設定手段と、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tが経過する前に、前記特定のタスクの優先度を前記第1優先度よりも低い第2優先度に設定する周期的低優先度設定手段として前記コンピュータを機能させるタスクスケジューリングプログラムを記録したものである。
この構成は、装置(1)について述べたと同様の理由により、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、CPU資源を有効に利用することを可能にする。
(16) ある伝送媒体は、複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置としてコンピュータを機能させるタスクスケジューリングプログラムを保持する伝送媒体であって、前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択手段と、所定の周期T毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第1優先度に設定する周期的高優先度設定手段と、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tが経過する前に、前記特定のタスクの優先度を前記第1優先度よりも低い第2優先度に設定する周期的低優先度設定手段として前記コンピュータを機能させるタスクスケジューリングプログラムを保持するものである。
この構成は、装置(1)について述べたと同様の理由により、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、CPU資源を有効に利用することを可能にする。
本願は、日本国特許出願である特願2003−405376号(2003年12月4日出願)を基礎としている。本基礎出願の内容は本願に合体される。
本発明は詳細に説明されたが、上記した説明は、全ての局面において例示であって、本発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
本発明のタスクスケジューリング装置、タスクスケジューリング方法、タスクスケジューリングプログラム、記録媒体、及び伝送媒体は、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、CPU資源を有効に利用することを可能にするので、産業上有用である。
Claims (16)
- 複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置であって、
前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択部と、
所定の周期T毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第1優先度に設定する周期的高優先度設定部と、
前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tが経過する前に、前記特定のタスクの優先度を前記第1優先度よりも低い第2優先度に設定する周期的低優先度設定部とを備えるタスクスケジューリング装置。 - 前記周期的低優先度設定部は、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tよりも短い所定の時間THが経過したときに、前記特定のタスクの優先度を前記第2優先度に設定する請求項1に記載のタスクスケジューリング装置。
- 前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから、前記特定のタスクの処理量が所定の規定量に達したか否かを判別する処理量判別部を更に備え、
前記周期的低優先度設定部は、前記処理量が前記規定量に達したものと前記処理量判別部が判別したときに、前記特定のタスクの優先度を前記第2優先度に設定する請求項1に記載のタスクスケジューリング装置。 - 前記処理量判別部は、
前記特定のタスクの実行にともなって値が変化する変数と所定の規定値とを比較することにより前記処理量が前記規定量に達したか否かを判別する処理量比較部を備える請求項3記載のタスクスケジューリング装置。 - 前記特定のタスクが出力するデータを一時保持するバッファを更に備え、
前記処理量判別部は、
前記特定のタスクの実行にともなって前記バッファに書き込まれるデータ量と所定の規定値とを比較することにより前記処理量が前記規定量に達したか否かを判別する処理量比較部を備える請求項3記載のタスクスケジューリング装置。 - 前記複数のタスクの各々とその優先度とを対応付けて記録するためのタスク優先度テーブルを更に備え、
前記周期的高優先度設定部は、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として前記第1優先度を書き込むことにより、前記特定のタスクの優先度を前記第1優先度に設定し、
前記周期的低優先度設定部は、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として前記第2優先度を書き込むことにより、前記特定のタスクの優先度を前記第2優先度に設定し、
前記タスク選択部は前記タスク優先度テーブルを参照し、前記タスク優先度テーブルに記録された複数の優先度のうちの最も高い優先度に対応するタスクを前記実行対象として選択する請求項1ないし5の何れかに記載のタスクスケジューリング装置。 - 前記特定のタスクと前記第1優先度と前記第2優先度とを対応付けて記録するための特定タスクテーブルを更に備え、
前記周期的高優先度設定部は、前記特定タスクテーブルを参照し、前記特定のタスクに関する情報が記録されておれば、記録されている前記第1優先度を読み出し、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として、読み出した前記第1優先度を書き込み、
前記周期的低優先度設定部は、前記特定タスクテーブルを参照し、前記特定のタスクに関する情報が記録されておれば、記録されている前記第2優先度を読み出し、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として、読み出した前記第2優先度を書き込む請求項6記載のタスクスケジューリング装置。 - 前記特定のタスクは、前記特定タスクテーブルの記録内容を書き込み及び削除する請求項7記載のタスクスケジューリング装置。
- 前記周期的高優先度設定部と前記周期的低優先度設定部とのうち少なくとも一方の設定部が、オペレーティングシステムの機能として実現されている請求項1ないし8の何れかに記載のタスクスケジューリング装置。
- 前記少なくとも一方の設定部が、割り込みハンドラとして実現されている請求項9記載のタスクスケジューリング装置。
- 前記周期的高優先度設定部と前記周期的低優先度設定部とのうち少なくとも一方の設定部が、前記特定のタスクの機能として実現されている請求項1ないし8の何れかに記載のタスクスケジューリング装置。
- 前記少なくとも一方の設定部が、シグナルハンドラとして実現されている請求項11記載のタスクスケジューリング装置。
- 複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング方法であって、
前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択工程と、
所定の周期T毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第1優先度に設定する周期的高優先度設定工程と、
前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tが経過する前に、前記特定のタスクの優先度を前記第1優先度よりも低い第2優先度に設定する周期的低優先度設定工程とを備えるタスクスケジューリング方法。 - 複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置としてコンピュータを機能させるタスクスケジューリングプログラムであって、
前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択手段と、
所定の周期T毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第1優先度に設定する周期的高優先度設定手段と、
前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tが経過する前に、前記特定のタスクの優先度を前記第1優先度よりも低い第2優先度に設定する周期的低優先度設定手段として前記コンピュータを機能させるタスクスケジューリングプログラム。 - 複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置としてコンピュータを機能させるタスクスケジューリングプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択手段と、
所定の周期T毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第1優先度に設定する周期的高優先度設定手段と、
前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tが経過する前に、前記特定のタスクの優先度を前記第1優先度よりも低い第2優先度に設定する周期的低優先度設定手段として前記コンピュータを機能させるタスクスケジューリングプログラムを記録したコンピュータ読み取り可能な記録媒体。 - 複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置としてコンピュータを機能させるタスクスケジューリングプログラムを保持する伝送媒体であって、
前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択手段と、
所定の周期T毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第1優先度に設定する周期的高優先度設定手段と、
前記周期的高優先度設定部が前記特定のタスクの優先度を前記第1優先度に設定してから前記周期Tが経過する前に、前記特定のタスクの優先度を前記第1優先度よりも低い第2優先度に設定する周期的低優先度設定手段として前記コンピュータを機能させるタスクスケジューリングプログラムを保持する伝送媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003405376 | 2003-12-04 | ||
PCT/JP2004/018422 WO2005055058A1 (en) | 2003-12-04 | 2004-12-03 | Task scheduling device, method, program, recording medium, and transmission medium for priority-driven periodic process scheduling |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007519060A true JP2007519060A (ja) | 2007-07-12 |
Family
ID=34650215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006519305A Pending JP2007519060A (ja) | 2003-12-04 | 2004-12-03 | タスクスケジューリング装置、タスクスケジューリング方法、タスクスケジューリングプログラム、記録媒体、及び伝送媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20060195847A1 (ja) |
JP (1) | JP2007519060A (ja) |
WO (1) | WO2005055058A1 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007058541A (ja) * | 2005-08-24 | 2007-03-08 | Matsushita Electric Ind Co Ltd | プロセッサ、処理方法及び処理プログラム |
JP2010086128A (ja) * | 2008-09-30 | 2010-04-15 | Nec Electronics Corp | マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法 |
CN106020965A (zh) * | 2015-03-31 | 2016-10-12 | 京瓷办公信息系统株式会社 | 电子设备以及信息处理方法 |
WO2018186358A1 (ja) * | 2017-04-07 | 2018-10-11 | オムロン株式会社 | 制御装置、制御方法および制御プログラム |
JP2018181315A (ja) * | 2017-04-07 | 2018-11-15 | オムロン株式会社 | 制御装置、制御方法および制御プログラム |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1238318B1 (de) * | 1999-11-15 | 2003-07-16 | Siemens Aktiengesellschaft | Automatisierungsgerät und aufdat-verfahren |
US8146090B2 (en) | 2005-09-29 | 2012-03-27 | Rockstar Bidco, LP | Time-value curves to provide dynamic QoS for time sensitive file transfer |
US7967682B2 (en) | 2006-04-12 | 2011-06-28 | Bally Gaming, Inc. | Wireless gaming environment |
US8052519B2 (en) | 2006-06-08 | 2011-11-08 | Bally Gaming, Inc. | Systems, methods and articles to facilitate lockout of selectable odds/advantage in playing card games |
US9101820B2 (en) | 2006-11-09 | 2015-08-11 | Bally Gaming, Inc. | System, method and apparatus to produce decks for and operate games played with playing cards |
US9111078B2 (en) | 2006-11-10 | 2015-08-18 | Bally Gaming, Inc. | Package manager service in gaming system |
US9275512B2 (en) * | 2006-11-10 | 2016-03-01 | Bally Gaming, Inc. | Secure communications in gaming system |
US8920233B2 (en) | 2006-11-10 | 2014-12-30 | Bally Gaming, Inc. | Assignment template and assignment bundle in a gaming configuration and download system |
US8784212B2 (en) | 2006-11-10 | 2014-07-22 | Bally Gaming, Inc. | Networked gaming environment employing different classes of gaming machines |
US8631501B2 (en) | 2006-11-10 | 2014-01-14 | Bally Gaming, Inc. | Reporting function in gaming system environment |
US8930461B2 (en) | 2006-11-13 | 2015-01-06 | Bally Gaming, Inc. | Download and configuration management engine for gaming system |
US8347280B2 (en) | 2006-11-13 | 2013-01-01 | Bally Gaming, Inc. | System and method for validating download or configuration assignment for an EGM or EGM collection |
US9082258B2 (en) | 2006-11-13 | 2015-07-14 | Bally Gaming, Inc. | Method and system for providing download and configuration job progress tracking and display via host user interface |
US8136113B2 (en) * | 2006-12-20 | 2012-03-13 | International Business Machines Corporation | Method and apparatus for adjusting sleep time of fixed high-priority threads |
JP4903818B2 (ja) * | 2007-02-09 | 2012-03-28 | 株式会社エヌ・ティ・ティ・ドコモ | 端末装置及びソフトウエア検査方法 |
US8185902B2 (en) * | 2007-10-31 | 2012-05-22 | International Business Machines Corporation | Method, system and computer program for distributing a plurality of jobs to a plurality of computers |
US9613487B2 (en) | 2007-11-02 | 2017-04-04 | Bally Gaming, Inc. | Game related systems, methods, and articles that combine virtual and physical elements |
US8616958B2 (en) | 2007-11-12 | 2013-12-31 | Bally Gaming, Inc. | Discovery method and system for dynamically locating networked gaming components and resources |
US8201229B2 (en) | 2007-11-12 | 2012-06-12 | Bally Gaming, Inc. | User authorization system and methods |
US20090133027A1 (en) * | 2007-11-21 | 2009-05-21 | Gunning Mark B | Systems and Methods for Project Management Task Prioritization |
US9005034B2 (en) | 2008-04-30 | 2015-04-14 | Bally Gaming, Inc. | Systems and methods for out-of-band gaming machine management |
US8856657B2 (en) * | 2008-04-30 | 2014-10-07 | Bally Gaming, Inc. | User interface for managing network download and configuration tasks |
US9483911B2 (en) | 2008-04-30 | 2016-11-01 | Bally Gaming, Inc. | Information distribution in gaming networks |
US8721431B2 (en) | 2008-04-30 | 2014-05-13 | Bally Gaming, Inc. | Systems, methods, and devices for providing instances of a secondary game |
WO2009151919A2 (en) | 2008-05-24 | 2009-12-17 | Bally Gaming, Inc. | Networked gaming system with enterprise accounting methods and apparatus |
US9443377B2 (en) * | 2008-05-30 | 2016-09-13 | Bally Gaming, Inc. | Web pages for gaming devices |
US8412768B2 (en) * | 2008-07-11 | 2013-04-02 | Ball Gaming, Inc. | Integration gateway |
US8689222B2 (en) * | 2008-10-30 | 2014-04-01 | International Business Machines Corporation | Controlling priority of multi-threaded hardware resources by system calls |
US8266213B2 (en) | 2008-11-14 | 2012-09-11 | Bally Gaming, Inc. | Apparatus, method, and system to provide a multiple processor architecture for server-based gaming |
US8347303B2 (en) | 2008-11-14 | 2013-01-01 | Bally Gaming, Inc. | Apparatus, method, and system to provide a multi-core processor for an electronic gaming machine (EGM) |
US8423790B2 (en) | 2008-11-18 | 2013-04-16 | Bally Gaming, Inc. | Module validation |
CA2747554C (en) | 2008-12-23 | 2020-05-26 | Bce Inc. | Differentiated priority level communication |
JP2010160713A (ja) * | 2009-01-09 | 2010-07-22 | Yokogawa Electric Corp | フィールド制御装置およびフィールド制御方法 |
US8769543B2 (en) | 2010-09-27 | 2014-07-01 | Throughputer, Inc. | System and method for maximizing data processing throughput via application load adaptive scheduling and context switching |
GB2478194B (en) * | 2010-02-25 | 2012-01-11 | Mark Henrik Sandstrom | System and method for maximizing data processing throughput via application load adaptive scheduling and content switching |
US9098333B1 (en) | 2010-05-07 | 2015-08-04 | Ziften Technologies, Inc. | Monitoring computer process resource usage |
US8407710B2 (en) * | 2010-10-14 | 2013-03-26 | International Business Machines Corporation | Systems and methods for dynamically scanning a plurality of active ports for priority schedule of work |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
US8863136B2 (en) * | 2011-05-19 | 2014-10-14 | International Business Machines Corporation | Lock control in multiple processor systems |
US9058716B2 (en) | 2011-06-06 | 2015-06-16 | Bally Gaming, Inc. | Remote game play in a wireless gaming environment |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
US9120007B2 (en) | 2012-01-18 | 2015-09-01 | Bally Gaming, Inc. | Network gaming architecture, gaming systems, and related methods |
US8974305B2 (en) | 2012-01-18 | 2015-03-10 | Bally Gaming, Inc. | Network gaming architecture, gaming systems, and related methods |
US8904451B2 (en) * | 2012-04-13 | 2014-12-02 | Theplatform, Llc | Systems for prioritizing video processing events based on availability of media file and agent to process the event type |
CN103942104A (zh) * | 2014-04-23 | 2014-07-23 | 北京金山网络科技有限公司 | 一种任务管理方法及装置 |
DE102016200777A1 (de) * | 2016-01-21 | 2017-07-27 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Überwachen und Kontrollieren quasi-paralleler Ausführungsstränge in einem ereignisorientierten Betriebssystem |
US11570176B2 (en) | 2021-01-28 | 2023-01-31 | Bank Of America Corporation | System and method for prioritization of text requests in a queue based on contextual and temporal vector analysis |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293486A (en) * | 1991-06-28 | 1994-03-08 | Digital Equipment Corporation | Deterministic method for allocation of a shared resource |
DE69227664T2 (de) * | 1991-10-15 | 1999-04-22 | Hewlett Packard Co | Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor |
DE69738832D1 (de) * | 1996-03-28 | 2008-08-28 | Hitachi Ltd | Verfahren zum Planen von periodischen Prozessabläufen |
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6205150B1 (en) * | 1998-05-28 | 2001-03-20 | 3Com Corporation | Method of scheduling higher and lower priority data packets |
US6587955B1 (en) * | 1999-02-26 | 2003-07-01 | Sun Microsystems, Inc. | Real time synchronization in multi-threaded computer systems |
US6763519B1 (en) * | 1999-05-05 | 2004-07-13 | Sychron Inc. | Multiprogrammed multiprocessor system with lobally controlled communication and signature controlled scheduling |
-
2004
- 2004-12-03 JP JP2006519305A patent/JP2007519060A/ja active Pending
- 2004-12-03 WO PCT/JP2004/018422 patent/WO2005055058A1/en active Application Filing
- 2004-12-03 US US10/563,060 patent/US20060195847A1/en not_active Abandoned
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007058541A (ja) * | 2005-08-24 | 2007-03-08 | Matsushita Electric Ind Co Ltd | プロセッサ、処理方法及び処理プログラム |
JP2010086128A (ja) * | 2008-09-30 | 2010-04-15 | Nec Electronics Corp | マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法 |
CN106020965A (zh) * | 2015-03-31 | 2016-10-12 | 京瓷办公信息系统株式会社 | 电子设备以及信息处理方法 |
WO2018186358A1 (ja) * | 2017-04-07 | 2018-10-11 | オムロン株式会社 | 制御装置、制御方法および制御プログラム |
JP2018181315A (ja) * | 2017-04-07 | 2018-11-15 | オムロン株式会社 | 制御装置、制御方法および制御プログラム |
US11301294B2 (en) | 2017-04-07 | 2022-04-12 | Omron Corporation | Control device, control method, and control program |
Also Published As
Publication number | Publication date |
---|---|
US20060195847A1 (en) | 2006-08-31 |
WO2005055058A1 (en) | 2005-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007519060A (ja) | タスクスケジューリング装置、タスクスケジューリング方法、タスクスケジューリングプログラム、記録媒体、及び伝送媒体 | |
US10628216B2 (en) | I/O request scheduling method and apparatus by adjusting queue depth associated with storage device based on hige or low priority status | |
JP5723968B2 (ja) | 便宜的マルチタスキング | |
US8719827B2 (en) | Processor and program execution method capable of efficient program execution | |
TWI512619B (zh) | 用於執行緒排程的方法以及系統 | |
US7137117B2 (en) | Dynamically variable idle time thread scheduling | |
WO2021233261A1 (zh) | 一种多任务动态资源调度方法 | |
US7849463B2 (en) | Dynamically variable idle time thread scheduling | |
US8943252B2 (en) | Latency sensitive software interrupt and thread scheduling | |
US9411649B2 (en) | Resource allocation method | |
KR20050030871A (ko) | 실시간 동작 수행방법 및 시스템 | |
JP2002099432A (ja) | 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体 | |
US10108449B2 (en) | Work item management among worker threads of a computing device | |
JP2002099433A (ja) | 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体 | |
US20090249347A1 (en) | Virtual multiprocessor, system lsi, mobile phone, and control method for virtual multiprocessor | |
US20120254822A1 (en) | Processing optimization load adjustment | |
JP4523910B2 (ja) | 並列処理装置及び並列処理方法及び並列処理プログラム | |
JP2004078322A (ja) | タスク管理システム、プログラム、記録媒体、及び制御方法 | |
JP4675891B2 (ja) | タスクスケジューリング装置、タスクスケジューリング方法、タスクスケジューリングプログラム、記録媒体、及び伝送媒体 | |
CN108345428B (zh) | 控制密集型控制系统及其方法 | |
WO2022206227A1 (zh) | 系统启动方法、设备、系统及存储介质 | |
JP5127541B2 (ja) | タイマ管理方法、並びにタイマ管理装置 | |
CN114443255A (zh) | 一种线程调用方法和装置 | |
JPH10143378A (ja) | コンピュータ装置、およびコンピュータ装置における緊急プロセスのプリエンプション方法 |