JPH09282184A - 同優先度タスクの急増に伴う実行確率の変動を吸収することができるタスク管理装置 - Google Patents

同優先度タスクの急増に伴う実行確率の変動を吸収することができるタスク管理装置

Info

Publication number
JPH09282184A
JPH09282184A JP9030895A JP3089597A JPH09282184A JP H09282184 A JPH09282184 A JP H09282184A JP 9030895 A JP9030895 A JP 9030895A JP 3089597 A JP3089597 A JP 3089597A JP H09282184 A JPH09282184 A JP H09282184A
Authority
JP
Japan
Prior art keywords
priority
task
selection data
label
list
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
Application number
JP9030895A
Other languages
English (en)
Inventor
Hiroyuki Wake
裕之 和氣
Shinji Inoue
信治 井上
Satoru Hayama
悟 葉山
Mitsuko Fujita
光子 藤田
Akira Ishikawa
亮 石川
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP9030895A priority Critical patent/JPH09282184A/ja
Publication of JPH09282184A publication Critical patent/JPH09282184A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB

Abstract

(57)【要約】 【課題】 優先度に応じたタスクの実行頻度をもち、な
おかつタスクがロックアウトやデッドロックを引き起こ
さない、安全で効果的なタスク選択方法を提供する。 【解決手段】 管理・選択リストは、並列実行すべき各
プログラムに設定された優先度を同値のものを一つに間
引いた形式で順に並べている。並べられた各優先度には
その優先度が設定された一のプログラムの識別情報或は
複数のプログラムの識別情報を列挙した識別情報リスト
が対応づけられている。この状態において、管理・選択
リストに並べられた優先度ラベルの総和がとられる。そ
の後にその総和を上限とする乱数であって、各優先度ラ
ベルの大小で重み付けされた確率で優先度ラベルのそれ
ぞれを指定する乱数を発生する。発生される毎に、発生
した乱数によって指定された優先度ラベルに対応づけら
れた識別情報のプログラムのタスクが実行される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、並列実行すべき複
数のプログラムのタスクをプロセッサに実行させるスケ
ジューラを有したタスク管理装置に関する。
【0002】
【従来の技術】
<第1従来技術>近年における半導体プロセスの急速な
進歩によって、パソコン、ワークステーション、電子手
帳といった情報処理装置の能力は目覚ましく向上してい
る。また動画信号の圧縮・伸長処理やコンピュ−タ・グ
ラフィックスのレンダリング処理など専用のLSIを設け
ることが常識だった高負荷な処理にも充分耐え得るプロ
セッサも登場している。このような能力向上に伴って、
情報処理装置において動作するアプリケ−ションプログ
ラムは、ワープロ、表計算、印刷、通信、スケジュール
管理、3次元グラフィックス等バラエティに富み、ユー
ザは思いのままのアプリケ−ションプログラムを自在に
起動させることができる。
【0003】こういった能力向上と共に、プログラムの
マルチタスク処理に対する期待も高まりを見せている。
マルチタスク処理では、複数のソフトウェアを情報処理
装置に同時に実行させることができる。具体例でいうな
らば印刷ソフトによって印字を行っている間にワープロ
ソフトで文書入力を行ったり、表計算ソフトで計算中に
通信ソフトで電子メールを送信させたりすることができ
る。また多大な計算時間を要するプログラムを実行させ
ている間にゲームを起動させて楽しむことができる。
【0004】マルチタスク処理のうち最も古典的と呼ば
れる手法はラウンドロビン法と呼ばれるものである。一
般にタスクは、アプリケ−ションプログラムの格納位置
(a)と、リソースに関する情報からなるコンテキスト(b)
と、プログラムのコード部(c)と、プログラムのデータ
部(d)と、入出力管理データ(e)とから構成され、ラウン
ドロビン法では、各タスクは待ち行列を形成し、その順
序通りに一定時間サービスを受ける。一定時間が経過す
ると強制的にサービスは打ち切られて実行権は次のタス
クに移される。実行が打ち切られたタスクは待ち行列の
最後尾に付け加えられる。このような制御では、各タス
クの実行は一定時間置きに区切られるので公平にサービ
スを分配することができる。
【0005】ラウンドロビン法は、公平なサービス分配
を目的にしているが、一般にアプリケ−ションには優先
すべきものとそうでないものがある。具体的にはアプリ
ケ−ション1の実行結果を取得し起動するアプリケ−シ
ョン2は、アプリケ−ション1の実行終了を待たなけれ
ばならない。アプリケ−ション2の実行結果を取得して
起動するアプリケ−ション3は、アプリケ−ション2の
実行終了を待たなければならない。これらのアプリケ−
ションは、アプリケ−ション1、2、3の順で実行させ
なければならないのである。また特定の専用デバイスや
特定アドレスのメモリ、I/Oポート等排他制御のハー
ドウエア資源を使用するアプリケ−ションはその資源を
なるべく早く解放する必要があるため、使用しないアプ
リケ−ションより優先して実行しなければならない。更
に実行が所定時間内に終了しなければならないものも有
るし、そのような制約が存在しないものも有る。このよ
うにアプリケ−ションを並列実行させる場合、各アプリ
ケ−ションに優劣を設ける必要がある。アプリケ−ショ
ンにおける実行の優劣をタスクに反映させるため、アプ
リケ−ションプログラムの種別毎に、そのタスクの優劣
を示す優先度を設定することが行われてきた。即ち、緊
急度が高いアプリケ−ションのタスクほどより高い優先
度を与え、緊急度がより低いアプリケ−ションのタスク
ほどより低い優先度を与えることにより、アプリケ−シ
ョンが実行される順序を入れ替えようというのである
(本明細書では説明を簡単にするために優先度を正の整
数で表し、値が大きいほど優先度が高いとする。)。
【0006】マルチタスク式のオペレーティングシステ
ムでは、特に「スケジューラ」と呼ばれる部分がマルチ
タスク処理を制御する。従来のスケジューラは、タスク
に与えられた「優先度」を基準にしてタスクの並べ替え
を行いつつも、ラウンドロビン法の処理を行うことで、
マルチタスク処理にアプリケ−ションの優劣を反映させ
ていた。
【0007】優先度を考慮してのタスク選択を安易な方
法で行うと、『選択されない』タスクが出現したり(ロ
ックアウトと呼ばれる)、タスクの確率と優先度の高低
とが噛み合わなくなる。タスクの幾つかがロックアウト
すると、それらのタスクの実行結果を取得するタスクも
待機状態に入ってしまう。各タスクが互いの処理の終了
を待ち合うと、最悪の場合システムダウンに陥ることが
ある。そのため優先度を考慮してタスクを選択すること
は一般的には非常に難解な問題に分類されている。
【0008】タスクを選択する方法として従来から考案
されている方法としては、X/OpenCampany LimitedのU
NIX(登録商標)オペレーティングシステムのスケジ
ューラに採用されている方法(以降優先度適用型ラウン
ドロビン法と呼ぶ。)と、確率過程を利用する方法とが
挙げられる。図27に従来のスケジューラが優先度適用
型ラウンドロビン法で使用する待ち行列のデータ構造を
示す。この待ち行列では、タスク選択データ302a〜302
dが、a,b,c,dの順に待機状態になっている。
【0009】優先度管理ラベルの見出しの順方向リンク
301は、識別子ID=3のタスク選択データ302a〜識別
子ID=4のタスク選択データ302dからなる待ち行列のう
ち先頭のものへとリンクを形成している。各識別番号ID
=3のタスク選択データ302aは、『●|●』記号に示
すタスク選択データの見出し、基準優先度Pa303、実
効優先度Pb304、識別番号ID305、及びコンテキス
ト(図中には、TaskData306と記している。)から構
成される。
【0010】タスク選択データの選択方法として、線形
リスト構造やテーブル構造などが使用することが一般的
だが、図27では両方向線形リストを使用するものとす
る。図27には順方向のリンクしか記載していないが、
実際には両方向のリンクが存在するものとする。以上の
ように構成されたデータ構造を利用して以下にその選択
方法について説明する。まずスケジューラはタスク選択
データの見出しを矢印『→』の順序で辿り、リスト構造
の先頭にあるタスク選択データ302aの識別番号IDが示す
タスクを一定時間、もしくはなんらかの状況により、タ
スクが待ち状態になるまで実行する。
【0011】つぎに実行しなかったタスクの実効優先度
Pbに決められた差分値を加えて優先度を上げ、直前に実
行したタスクの実効優先度Pbを基準優先度Paまで下げ
る。このような優先度の上げ下げで実行済みのタスクを
後回しにし、未実行のタスクを繰り上げる。即ち、直前
に実行したタスクのタスク選択データ302は、リストの
先頭から切り離されて同じ実効優先度Pbをもつタスク選
択データの最後に挿入されるのである。各タスクの終了
まで以上の動作を繰り返す。
【0012】図27において、先頭のタスク選択データ
のタスク(識別番号ID3番)が実行されたとする。識別
番号ID=3のタスク選択データ302aのタスクは実効優先
度Pbは15であったが実行済みなので基準優先度Paの
『6』にまで低下する。一方識別番号ID=2,1,4のタスク
選択データの基準優先度Paは6、6、1の順であり、実
効優先度Pbは12、9、1の順であるから、実効優先度
Pbが6まで低下した識別番号ID=3のタスク選択データ30
2aは、識別番号ID=1のタスク選択データ302cと識別番
号ID=4のタスク選択データ302dとの間に置かれること
になる。
【0013】図28(a)及び図28(b)はタスク選
択データのリスト構造を組み替えた結果、破線aの位置
に識別番号ID=3のタスク選択データが挿入された例を
表している。次に確率過程を利用する方法(確率過程型
タスク選択法)について説明する。本方法はUSP-524767
7に詳述されているが、図29を参照しながらこの技術
を簡単に説明する。
【0014】図29に確率過程型タスク選択法におい
て、スケジューラが用いるタスク管理のデータ構造を示
す。図29において特徴的なのは、すべてのタスク選択
データの実効優先度Pbの総和Psum706、一様乱数値r
707が付加されている点である。以上のデータ構造を
用いてのタスク選択方法を説明する。まずスケジューラ
は0から実効優先度Pbの和Psum706までの範囲をもつ
一様乱数値r707を発生させる。つぎにタスク選択デ
ータの見出しを矢印『→』の順序で辿り、タスク選択デ
ータ702a〜データ702dの優先度の累計が、発生した乱
数を越えるのはどのタスクまでであるかを判定する。識
別番号ID=3のタスク選択データ702aではP=15、識
別番号ID=2のタスク選択データ702bではP=15+1
0=25、識別番号ID=1のタスク選択データ702cでは
P=25+10=35、識別番号ID=4のタスク選択デー
タ702dではP=35+3=38というように先頭に近
いタスク程この累計は小さく、遠いもの程累計は大きく
なる。図30の例では、識別番号ID=3のタスク選択デー
タ702aまでの優先度の累計が15であり、タスク選択
データ702bまでの実効優先度Pbの累計が25であるか
ら一様乱数値r707の17を超えるのは識別番号ID=2
のタスク選択データ702bまでであることがわかる。タ
スク選択データ702bが選択され、識別番号ID2番のタ
スクが実行される。
【0015】タスク選択データ702の識別番号IDが示す
タスクを一定時間、もしくはなんらかの状況により、タ
スクが待ち状態になるまで実行する。実行後再び一様乱
数707を発生させて、上記のような累計を比較して何
れかのタスクを選択する。この確率過程型タスク選択法
では、タスクが選択される確率は、優先度が大きいほど
高くなるため、優先度に合わせてタスクの実行頻度が変
わる。即ち、優先度の高低に応じて各タスクに実行確率
を分配することができる。
【0016】本方法では一様乱数の性質から、タスクに
優先度が与えられている限り、どのタスクも選択される
可能性がある。これは本方法では原理的にロックアウト
が発生しないことを意味する。 <第2従来技術>近年、動画データ及び音声データをリ
アルタイムに再生してAV機能を充実させたパソコン、
マルチメディア機器が広く普及しつつある。このような
マルチメディア機器では動画再生及び音声再生を並列実
行せねばならない。尚且つ、この並列実行はリアルタイ
ム性も要求される。このようにリアルタイム性も保障し
うるマルチタスク処理(リアルタイムプロセスと呼
ぶ。)は今後のマルチメディア機器の開発において特に
重要視されるであろう。
【0017】リアルタイム性の保証には、タスク毎のデ
ッドライン及び実行周期をその優先度に反映して、優先
度適用型ラウンドロビン法に基づいたスケジューラを行
うというのが一般的である。リアルタイム性を保証した
スケジューラ法について、代表なものを以下のに
紹介する。 ・レートモノトニック法 短い周期を持つタスク程高い優先度を設定する方法であ
り、処理量の多いタスクを優先しようという技術であ
る。 ・デッドライン法 各タスクにデッドラインを設けてそのデッドラインが近
付いたタスクはその優先度を上げるという方法である。 ・アーリストデッドラインファースト法 デッドライン法を更に発展させた方法であり、一番デッ
ドラインに近いタスクが一番高い優先度を持つように優
先度を変更する。
【0018】以上の、、における優先度設定のポ
リシーを組み合わせてリアルタイム性を重視したスケジ
ューラを組み込んだオペレーティングシステムも存在す
る。
【0019】
【発明が解決しようとする課題】ところで上記確率過程
型において問題となるのはいわゆるスレッドと呼ばれる
形態のタスクが急増した場合である。スレッドとは、複
数のプロセッサエレメントにより並列処理されることを
前提にして開発されたプログラムの小単位であり、各ス
レッドはアプリケ−ションプログラムの格納位置(a)、
コンテキスト(b)、プログラムのコード部(c)の何れかを
互いに共有している(元プログラムが複数のスレッドに
分割された場合は、それぞれのスレッドには元プログラ
ムに与えられた優先度がそのまま付与される。)。
【0020】ここで図30の一例におけるタスク選択デ
ータ902a〜dのうち、タスク選択データ902bの負荷が
十個のスレッドへと分散され、これらの十個のスレッド
に元優先度『10』と同様の優先度が与えられたものと
する。この場合図30の一例におけるタスク選択データ
の並びは、図30に示すものから図31に示すものへと
変遷する。
【0021】図30の例において実効優先度Pbが15の
識別番号ID=3のタスク選択データ902aが選ばれる確率
は、 {数1} タスク選択データ902aが選択される確率 =タスク選択データ902aの実効優先度Pb/すべてのタ
スクの実効優先度Pbの和906 =15/28(=15+10+3) =0.5357 である。ここでもし図31に示すように実効優先度Pb=
10のタスクが十個になると、実効優先度Pbが15であ
る識別番号ID=3のタスク選択データ902aが選ばれ
る確率は、 {数2} タスク選択データ902aが選択される確率 =タスク選択データ902aの実効優先度Pb/すべての
タスクの実効優先度Pbの和906 =15/118(=15+10*10+3) =0.127 となり{数1}の場合に比べて選択確率が1/3以下ま
で低下してしまう。
【0022】マルチスレッド式の一部プログラムがこの
ような負荷分散を行うと、高い優先度が与えられたアプ
リケ−ションプログラムであっても、その実行確率は極
度に低下する。例えば確率が極度に低下したアプリケ−
ション1は、その実行結果が他のアプリケ−ション2,3,
4,5,6によって取得されるものとする。そのアプリケ−
ション1を優先させるため高い優先度が設定されている
ものの、上記の現象でその実行確率が著しく低下したと
する。このようにアプリケ−ション1の実行確率が低下
すると、アプリケ−ション1の実行時間が間延びしてし
まい、アプリケ−ション1の実行終了までの時間が遅延
してしまう。アプリケ−ション1の実行時間が伸びれ
ば、アプリケ−ション1の終了を待つアプリケ−ション
2,3,4,5の待機状態が長くなってしまう。このように多
くのアプリケ−ションの待機状態が長くなってしまうと
システムダウンに近い状況に陥りかねない。
【0023】また排他制御のハードウエア資源を使用す
るため、高い優先度が設定されたタスクの実行確率が低
下すると、排他制御のハードウエア資源がいつまでも解
放されなくなってしまい、これの使用を望むタスクも待
機状態に入ってしまう。このように多くのタスクが待機
状態に入るとシステムダウンに近い状況に陥りかねな
い。プログラムをマルチスレッド式に開発することは、
近年非常に注目を浴びており、今後は様々な種類のアプ
リケ−ションプログラムが、マルチスレッド式に開発さ
れることが予想される。このようなマルチスレッド式に
開発されたプログラムの数が多い程、上記の危機的状況
はより発生し易くなる。
【0024】また第2従来技術によれば、実行時間に対
する精度を保障することができず、これをリアルタイム
プロセスに発展させた場合、人間の聴覚に違和感をあた
えてしまうという問題点があった。例えば、16bit PCM
44.1KHzの音声データ再生とMPEGビデオCDデータの再生
とを共存させたリアルタイムプロセスを実現する場合、
音声データは88.1Kbyte/sec(1秒当たり88.1Kbyte)の
再生が要求される。これに対してビデオデータは、200K
byte/sec以上(1秒当たり200Kbyte以上)の再生が要求
される。
【0025】ビデオデータは処理すべきデータ量が多い
ためバッファのオーバフローが発生し易い。これに鑑み
てビデオデータ再生は高頻度に実行されることが要求さ
れる。音声データ再生はバッファのオーバフローを危惧
しなくてもよいため低頻度で良いが、予定時刻に対する
精度が厳しい。この例では、ビデオデータ再生が40〜60
msecであるのに対して、音声データ再生が2〜16msecで
ある。これらの精度の違いは、人間の聴覚は音声データ
の遅れに敏感であるのに対し、人間の視覚は動画データ
の再生の遅れを感じ得ないことに起因する。
【0026】高頻度の実行が必要となるビデオデータ復
号タスクは、その実行周期も短くなる。そのためこの周
期の短さに基づいてより高い優先度を与えてタスクを実
行すれば、ビデオデータ復号タスクはバッファを優先的
に使用させることができる。ところが実行周期の短さに
応じて高い優先度が上げると、実行周期が長い音声デー
タ復号タスクは、低い優先度しか与えられないため、そ
の復号は絶えずビデオデータ復号タスクの後回しとな
る。このようにビデオデータ復号タスクの後回しにされ
ると、2〜16msecという精度が一向に満たされない。
【0027】またデッドライン法或はアーリストデッド
ラインファースト法を適用し、再生予定時刻をデッドラ
インとして設けてそのデッドラインが近付いた場合は、
音声データ復号タスクに最も高い優先度を与えることに
より音声データ復号タスクを優先させることも考えられ
る。ところがこのように最高優先度を与える場合、タス
ク間のデッドラインの競合を危惧する必要がある。『デ
ッドラインの競合』とは、同一のデッドラインが要求さ
れているタスクが複数存在することである。デッドライ
ンが競合している複数のタスクに、アーリストデッドラ
インファースト法を適用してそれらの優先度を引き上げ
ると、それらの複数タスクが共に最高優先度を持つこと
になる。
【0028】ここで音声データ復号タスクと、ビデオデ
ータ復号タスクとの間に『デッドラインの競合』が存在
するものとする。これらのタスクにアーリストデッドラ
インファースト法を適用すると、音声データ復号タスク
と、ビデオデータ復号タスクとはそのデッドラインにお
いて最高優先度が与えられることになる。このように最
高優先度が与えられたタスクが複数存在すると、ビデオ
データ復号タスクが先に実行され、音声データ復号タス
クは後回しになる可能性が生じる。後回しにされると、
音声データ復号タスクの再生がその予定時刻までに間に
合うという保証は無い。そして予定時刻が守れないと、
折角再生された音声データが操作者の耳には雑音の連続
のように聞こえてしまう。
【0029】本発明の第1の目的は、タスク急増に起因
する実行確率の変動を吸収することができるタスク管理
装置を提供することである。本発明の第2の目的は、短
い周期のタスク実行と、長い周期のタスク実行とを共に
行いつつも、長い周期のタスクの実行については極めて
高い時間精度を保障することができるタスク管理装置を
提供することである。
【0030】
【課題を解決するための手段】上記第1の目的を達成す
るために請求項1に記載の発明は、各タスクの実行に関
する情報であるタスク情報を管理するための管理リスト
と、各タスクを切り替えながらプロセッサに実行させる
スケジューラとを備えるタスク管理装置であって、管理
リストは互いに相異なる優先度を示す優先度ラベルを配
列してなり、各優先度ラベルは、その優先度を有する一
のタスクのタスク情報(単数)とのリンクを有する優先度
リストと、優先度ラベルとのリンクを有するタスク情報
を先頭に配置し、その配下に当該タスク情報と同一優先
度を有する複数のタスク情報を配列してなるタスク情報
リストとを有し、前記スケジューラは優先度の高低に基
づいて、何れかの優先度ラベルを選ぶ選択手段と、選ば
れた優先度ラベルとのリンクを有するタスク情報に基づ
いて一つのタスク情報をプロセッサに実行させる実行制
御手段とを備えることを特徴としている。
【0031】また第2の目的を達成するために請求項6
に記載の発明は、実行周期を示すデッドラインと、当該
デッドラインに対しての時間精度を示す優先度とが付さ
れた複数のタスクをプロセッサに実行させるスケジュー
ラを備えるタスク管理装置であって、スケジューラは、
現在時刻を計時する計時手段と、現在時刻を参照して、
デッドラインが一定時間内に迫ったタスク情報を全て検
出する検出手段と、検出手段によって検出された複数の
タスク情報から何れか一つをその優先度の高低に基づい
て選択する選択手段と、選択されたタスク情報に基づい
てプロセッサを制御する実行制御手段とを備えることを
特徴としている。
【0032】
【発明の実施の形態】
(第1実施形態)タスク管理装置の第1実施形態とし
て、オペレーティングシステムを一例にして図面を参照
しながら説明する。図1は本発明が対象とするコンピュ
ータシステムの構成図である。図1において本コンピュ
ータシステムは、CPU201、I/Oポート202、
ディスク装置203、メモリ204、及びオペレーティ
ングシステム205、BIOS、バスから構成される。
【0033】CPU201は、メモリ204に展開されて
いるソフトウェアを構成する命令を解読するデコーダ、
解読結果のデータ演算及びアドレス演算を行う演算器AL
U、実行すべき命令のアドレスを指示するプログラムカ
ウンタ、データレジスタ、アドレスレジスタ、CPUの
動作状態を表す各種フラグを有するプログラムステータ
スワードレジスタPSW、スタックとして用いられている
メモリ領域の先頭アドレスを保持するスタックポインタ
SP等を有し、各アプリケ−ションのタスクを交互に実行
する。尚この構成はほんの一例であり、最近のRISCプロ
セッサやスーパースカラCPU等のようにプログラムステ
ータスワードレジスタPSWを省略した構成であってもよ
い。
【0034】I/Oポート202には、ディスプレィ、
ディスク装置203、キーボード、マウス等が接続して
いる。ディスク装置203は、オペレーティングシステ
ム205及び多数のアプリケ−ションをファイルにして
記憶している。メモリ204上には、BIOS、オペレーテ
ィングシステム205が常駐し、本図においてはアプリ
ケ−ション1〜4等のソフトウェアが展開している。こ
れらのアプリケ−ション1〜4は、アプリケ−ション1
が動画像再生ソフト、アプリケ−ション2が表計算ソフ
ト、アプリケ−ション3が音声再生ソフト、アプリケ−
ション4が通信ソフトというように、種別の異なる4個
のアプリケ−ションが本メモリ上に展開されている。こ
れらのアプリケ−ションの実行単位は複数個のタスクに
分割され、オペレーティングシステム205を介してCP
U201によって実行される。尚、これらのアプリケ−
ションプログラムのうち、アプリケ−ションプログラム
1はマルチスレッド式として作成され、自身を六個のス
レッド(タスク)に分割するようオペレーティングシス
テム205に指示している。
【0035】オペレーティングシステム205は、ディ
スク装置203にファイルとして記憶されているアプリ
ケ−ションを表すアイコンをディスプレィに表示した
り、起動すべきアプリケ−ションのためにウィンドゥを
割り当てたりして、マウス、キーボード、ディスプレィ
を用いた対話編集の環境を操作者に提供している。その
ため、操作者は、ディスプレィに表示されたカーソルで
アイコンを指示するという手軽な操作でアプリケ−ショ
ンをCPU201に提供し、実行させることができる。
【0036】オペレーティングシステム205は、メモ
リ204上に展開されているアプリケ−ションの優劣を
解析して、各アプリケ−ションに優先度を設定する優先
度設定部11、設定された優先度に基づいて各アプリケ
−ションをタスクに分割してCPU201に実行させるス
ケジューラ12からなる。優先度の設定は本発明の主眼
でないから優先度設定部の詳細の説明は省略する。
【0037】スケジューラ12の構成を図2に示す。ス
ケジューラ12は、図2に示すように、並列実行すべき
各アプリケ−ションの優先度を管理し、タスクを選択す
るための管理・選択リスト21、管理・選択リストに管理
された各タスクを指定するために乱数を発生する乱数発
生部22、管理・選択リストの作成、更新を行い、管理・
選択リストで管理されたアプリケ−ションのタスクをCP
U201に順次実行させる制御部23からなる。
【0038】管理・選択リスト21のデータ構造を図2
を参照しながら説明する。図2に示すように、管理・選
択リスト21は、優先度管理ラベルの順方向リンク10
9、逆方向リンク10A、優先度管理ラベル102a、
優先度管理ラベル102b、優先度管理ラベル102
c、タスク選択データ106a〜タスク選択データ10
6hから構成される。本図において、矢印記号『←』
『→』『↑』『↓』及び黒丸『●』をその内部に置く升
目は、タスク選択データ106間及び優先度管理ラベル
102間に形成されたリンクを示す。以降の説明におい
て、特に断らない限りは、これらの矢印記号『←』
『→』『↑』『↓』及び升目を、リンクの意味で用い
る。
【0039】タスク選択データ106a〜タスク選択デ
ータ106hは、タスクに関する情報である。これらの
タスク選択データ106は図3のデータフォーマットに
示すように各アプリケ−ションプログラムに付されたタ
スク識別子107と、リソースに関する情報を含むコン
テキスト108とから構成されている点が共通している
が、各タスク選択データ毎に以下に示す差違があること
は留意すべきである。
【0040】タスク選択データ106gは、アプリケ−
ションプログラム2から派生したタスクに対応してい
る。タスク識別子107gが『2』であるのは、これが
アプリケ−ションプログラム2に対応することを裏付け
るものである。タスク選択データ106hは、アプリケ
−ションプログラム3から派生したタスクに対応してい
る。タスク識別子107hが『3』であるのは、これが
アプリケ−ションプログラム3に対応することを裏付け
るものである。
【0041】タスク選択データ106a〜タスク選択デ
ータ106fは、アプリケ−ションプログラム1から派
生した六個のスレッド(タスク)に対応している。タス
ク識別子107a〜タスク識別子107fがオール
『1』であるのは、これらがアプリケ−ションプログラ
ム1に対応することを裏付けるものである。このように
タスク選択データ106a〜タスク選択データ106f
という六個のタスク選択データが存在するのは、アプリ
ケ−ションプログラム1がオペレーティングシステム2
05に対して処理負荷を六個のタスクに分散するよう指
示したからである。
【0042】これらのタスク選択データ106a〜タス
ク選択データ106fに対応するタスクの実行順序は、
それぞれ図中に示す右向きの矢印『→』に示されてい
る。識別番号ID=1のタスク選択データ106aにおける
右上の『●』から右方向に矢印→が伸びており、その先
には識別番号ID=1のタスク選択データ106bが存在す
る。タスク選択データ106bにおける右上の『●』か
ら右方向に矢印→が伸びており、その先にはタスク選択
データ106cが存在する。これらの矢印を辿ってゆけ
ば、識別番号ID=1のタスク選択データ106a、タスク
選択データ106b、タスク選択データ106c、タス
ク選択データ106d、タスク選択データ106e、タ
スク選択データ106fを一巡することがわかる(以
降、1つ以上のタスク選択データからなる待ち行列を選
択リストと呼ぶ。)。
【0043】優先度管理ラベル102a〜102cは、
図4のデータフォーマットに示すように各アプリケ−シ
ョンプログラムに対して優先度設定部11が設定した優
先度記入用の優先度カラム103、タスク選択データ1
06とのリンクのための順方向リンク104、逆方向リ
ンク10Cからなる。図2における優先度管理ラベル1
02a、優先度管理ラベル102b、優先度管理ラベル
102cの優先度カラム103を参照すれば、それぞれ
『10』『3』『15』の優先度が記入されていること
がわかる。
【0044】ここで優先度『3』が記入された優先度管
理ラベル102bの順方向リンク104を参照すれば、
順方向リンクはタスク選択データ106gとのリンクを
形成しており、逆方向リンクもタスク選択データ106
gとのリンクを形成している。また優先度『15』が記
入された優先度管理ラベル102cの順方向リンク10
4を参照すれば、順方向リンクはタスク選択データ10
6hとのリンクを形成しており、逆方向リンクもタスク
選択データ106hとのリンクを形成している。
【0045】更に優先度『10』が記入された優先度管
理ラベル102aの順方向リンク104を参照すれば、
順方向リンクはタスク選択データ106aとのリンクを
形成しており、逆方向リンクはタスク選択データ106
fとのリンクを形成している。先に述べたようにタスク
選択データ106a〜タスク選択データ106fは待ち
行列を形成しているから、タスク選択データ106a〜
106fからなる待ち行列は、優先度管理ラベル102
aが有する順方向リンク及び逆方向リンクを介して、タ
スク選択データ106fからタスク選択データ106a
への実行順序を与えられている。このようにタスク選択
データ106fからタスク選択データ106aへの実行
順序が与えられると、タスク選択データ106a〜タス
ク選択データ106fの実行順序は環状となる。
【0046】違った見方をすれば、タスク選択データ1
06a〜タスク選択データ106fは、実は共通のアプ
リケ−ションプログラムから派生したタスクであり、共
に『10』の優先度が設定されていることを優先度管理
ラベル102a内の優先度カラムに代表させていると理
解できる。つまり、六個のタスク間の共通の優先度を1
つの優先度管理ラベル102に代表させることにより、
六個のタスクのそれぞれに優先度を設けるという冗長性
を排し、同じ値の優先度を一つに間引いたリストを形成
しているのである(『優先度管理ラベル102a』、
『優先度管理ラベル102b』、『優先度管理ラベル1
02c』という複数の優先度管理ラベルを管理リストと
呼ぶ。)。
【0047】優先度総和カラム105は、優先度管理ラ
ベル102a〜優先度管理ラベル102cを総和を制御
部23が記入するための記入欄である。乱数カラム10
Dは、ゼロから(優先度総和−1)までの整数区間にお
いて、制御部23が発生した乱数を記入するための記入
欄である。制御部23は、各優先度の大小により重み付
けされた実行確率により何れか一つの優先度管理ラベル
102を選択し、優先度通りの実行確率を各タスクに保
証する。ここで『優先度の大小により重み付けされた実
行確率』とは、以下の確率をいう。 各優先度管理ラベルの優先度/優先度管理ラベルの総和 ここで図2の一例において優先度管理ラベル102の総
和は『10+3+15』の計算により『28』となる。
従って優先度管理ラベル102aの実行確率は『10/2
8』となる。
【0048】また優先度管理ラベル102bの実行確率
は『0.107(=3/28)』となり、優先度管理ラベル10
2cの実行確率は『0.536(=15/28)』となる。このよう
な実行確率で各優先度管理ラベル102を実行させるた
めに制御部23は、ゼロから(優先度管理ラベルの優先
度総和−1)までの整数区間を、それぞれの優先度の大
小に応じて各優先度管理ラベルに分配する。
【0049】つまり『10』の優先度を有する優先度管
理ラベル102aには、0〜9(10−1)の整数範囲
を分配し、『3』の優先度を有する優先度管理ラベル1
02bには、10〜12(13(=10+3)−1)の
整数範囲を分配する。『15』の優先度を有する優先度
管理ラベル102cには、13〜27(28(=15+
10+3)−1)の整数範囲を分配する。
【0050】ここで更に留意すべきは同値の優先度が与
えられた六個のタスク選択データの優先度を一つの優先
度管理ラベルに代表させている点である。優先度管理ラ
ベル102aに対する『10/28』という実行確率
は、タスク選択データ106a〜タスク選択データ10
6fのうち待ち行列の先頭に位置するものみ(順方向リ
ンク104とのリンクを有するタスク選択データ106
a)に与えられている。
【0051】ここでもし確率過程型タスク選択法のよう
に、アプリケ−ションプログラム1から派生した6個の
タスクと、アプリケ−ションプログラム2、アプリケ−
ションプログラム3から派生したタスクと共にリストに
配すると、優先度管理ラベル102の総和は『78(=
10*6+3+15)』となり、アプリケ−ションプロ
グラム2に分配される実行確率は『0.038(=3/78)』
となる。同様にアプリケ−ションプログラム3に分配さ
れる実行確率は『0.192(=15/78)』となる。これら
と比較すると、確率過程型タスク選択法のように、アプ
リケ−ションプログラム1から派生した6個のタスク
と、アプリケ−ションプログラム2、アプリケ−ション
プログラム3から派生したタスクとを共に共通のリスト
に配した場合は、アプリケ−ションプログラム2、アプ
リケ−ションプログラム3の実行確率は半分以下にまで
落ち込むことになる。
【0052】一方図2のように同優先度のタスクを1つ
優先度管理ラベルに代表させて、同優先度の羅列を間引
くような構造のリストでは、アプリケ−ションプログラ
ム1から派生したタスクが 10個であろうと、1個で
あろうとアプリケ−ションプログラム2、アプリケ−シ
ョンプログラム3の実行確率は変動していないことが判
る。従って図2のデータ構造では、同優先度のタスクが
多数発生してタスク数が急増しても、それらのタスクの
優先度を一つの優先度管理ラベルに代表させるので、他
のタスクの実行確率は一向に変化しない。アプリケ−シ
ョンプログラム2、3は、アプリケ−ションプログラム
1が行った負荷分散の影響を受けず、『同優先度タスク
の多数発生』というタスク数急増に対して各タスクの実
行確率を維持することができる。
【0053】このように各優先度管理ラベル102に整
数範囲を分配すると、制御部23はゼロから(優先度管
理ラベル102の総和−1)までの一様乱数を乱数発生
部22に発生させ、発生した乱数が自身に分配された整
数範囲となる優先度管理ラベル102を検出する。尚一
様乱数の発生方法についてであるが、一様乱数を算術的
に発生させる方法については、乗算合同法、混合合同法
などさまざまな方法が考案されている。これらは本実施
形態の本質とは関係ないので、詳細については省略す
る。なお、本実施形態では混合合同法を使用した、 {数3} x(i+1)= ( 65537 × x(i) + 3 ) mod 4297589136 r(i) = 優先度Pの和 × x(i)/4297589136 のr(i)を、0から優先度の和までの一様乱数として
使用することとする。
【0054】以上のように構成されたデータ構造を利用
して、以下にその選択方法について説明する。図5は、
本実施形態の選択方法の概略を表したフローチャートで
ある。本フロ−チャ−トを参照しながら優先度管理ラベ
ル102の選択方法について説明を行う。本フロ−チャ
−トにおいて、変数rとは、ステップS1001で発生
されるゼロから優先度の和までの一様乱数を格納するた
めの変数であり、ポインタ3とは、管理リストを先頭か
ら末尾へと辿ってゆくために現在位置の優先度管理ラベ
ルを指示するために設けられたポインタである。変数x
は管理リストにおいて、先頭の優先度管理ラベルからポ
インタ3で指示される優先度管理ラベルまでの優先度の
累計をとるために設けられた変数である。
【0055】{変数rが『27』である場合}先ずステ
ップS1001では、優先度の和までの一様乱数を発生
させて、変数rに代入する。本ステップにおいて変数rと
して『27』が発生したとして、説明を進める。ステッ
プS1001の実行後、ステップS1002に移行し
て、変数xに0を代入してステップS1003に移行
し、順方向リンクで指示された優先度管理ラベル102
をポインタ3に代入して、ポインタ3を管理リストj(j=
1,2,3・・・・・M)の先頭の優先度管理ラベルにセットする。
図2の一例においては、管理リストに含まれる優先度管
理ラベル102は、優先度管理ラベル102a、優先度
管理ラベル102b、優先度管理ラベル102cの3つ
であり、j=1に相当する先頭の優先度管理ラベルは、優
先度管理ラベル102aであるから、ポインタ3は優先
度管理ラベル102aを指示することになる。
【0056】ステップS1003の実行後、ステップS
1004に移行する。ステップS1004では、管理リ
ストのポインタ3がリストの終端に達したかを否か判定
する。ポインタ3が優先度管理ラベル102aに設定さ
れた状態では、ステップS1004がNoとなり、ステッ
プS1005に移行する。ステップS1005ではポイ
ンタ3が指示している優先度管理ラベルの優先度を変数
xに加算し、ステップS1006では、変数xが発生した
乱数rに等しいか或はそれを越えたかを判定する。
【0057】ここでポインタ3が指示している優先度管
理ラベル102aの優先度『10』が変数xに加算さ
れ、変数xが発生した乱数r『27』に等しいか或はそれ
を越えたかが判定される。『10』に設定された変数x
は『27』の変数rを越えないので、ステップS100
7においてポインタ3を次に進める。今ポインタ3は優
先度管理ラベル102aを指示していたから、これを進
めるとポインタ3は優先度管理ラベル102bへと進め
られる。ポインタ3を優先度管理ラベル102bに進め
ると、ステップS1004に移行して、管理リストのポ
インタ3が管理リストの終端に達したかを否か判定す
る。ここでいう管理リストの終端とは優先度管理ラベル
の逆方向リンク10Aのことであり、ポインタ3が優先
度管理ラベル102bに設定された状態ではポインタ1
は未だこの終端に達していないので、ステップS100
4はNoとなり、ステップS1005に移行する。ステッ
プS1005ではポインタ3が指示している優先度管理
ラベル102bの優先度『3』が変数xに加算され、変
数xが『13』になる。ステップS1005の実行後、
ステップS1006では、『13』となった変数xが発
生した乱数r『27』に等しいか或はそれを越えたかが
判定される。『13』に加算された変数xは『27』の
変数rを越えないので、ステップS7においてポインタ
3を次に進める。今ポインタ3は優先度管理ラベル10
2bを指示していたから、これを進めるとポインタ3は
優先度管理ラベル102cへと進められる。ポインタ3
を優先度管理ラベル102cに進めると、ステップS1
004に移行して、管理リストのポインタ3がリストの
終端に達したかを否か判定する。ポインタ3が優先度管
理ラベル102cに設定された状態では、ステップS1
004はNoとなり、ステップS1005に移行する。ス
テップS1005ではポインタ3が指示している優先度
管理ラベル102cの優先度『15』が変数xに加算さ
れ、変数xが『28』になる。ステップS1005の実
行後、ステップS1006では、『28』となった変数
xが発生した乱数r『27』に等しいか或はそれを越えた
かが判定される。『28』に加算された変数xは『2
7』の変数rを越えたので、ステップS1006がYesと
なってステップS1008に移行し、ステップS100
8においてポインタ3で指示される優先度管理ラベル1
02cを選択し、図6におけるステップS1010に移
行する。
【0058】図6においてステップS1010では、ポ
インタ2を優先度管理ラベル102c配下の選択リスト
の先頭のタスク選択データ106hにセットする。ステ
ップS1010の実行後、ステップS1011に移行し
て、ポインタ3に指示された優先度管理ラベル102c
の配下にタスク選択データは複数存在するかを判定す
る。優先度管理ラベル102cの配下には、タスク選択
データはタスク選択データ106hの唯一つしか存在し
ないので、ステップS1011はNoとなり、ステップS
1012に移行する。ステップS1012では、ポイン
タ2によって指示されたタスク選択データのタスクをプ
ロセッサに実行させる。
【0059】{変数rが『8』である場合}以降ステッ
プS1001において変数rとして『8』が発生したと
して、説明を進める。ステップS1001の実行後、ス
テップS1002に移行して、変数xに0を代入してス
テップS1003に移行し、図2の一例における優先度
管理ラベル102aをポインタ3に代入して、ポインタ
3を管理リストj(j=1,2,3・・・・・M)の先頭の優先度管理ラ
ベルj=1にセットする。
【0060】ステップS1003の実行後、ステップS
1004に移行する。ステップS1004では、ポイン
タ3が管理リストの終端に達したかを否か判定する。ポ
インタ3が優先度管理ラベル102aに設定された状態
では、ステップS1004がNoとなり、ステップS10
05に移行する。ステップS1005ではポインタ3が
指示している優先度管理ラベルの優先度を変数xに加算
し、ステップS1006では、変数xが発生した乱数rに
等しいか或はそれを越えたかを判定する。
【0061】ここでポインタ3が指示している優先度管
理ラベル102aの優先度『10』が変数xに加算さ
れ、変数xが発生した乱数r『8』に等しいか或はそれを
越えたかが判定される。『10』に設定された変数xは
『8』の変数rを越えるので、ステップS1006はYes
となりステップS1008に移行する。ステップS10
08においてポインタ3で指示される優先度管理ラベル
102aを選択し、図6のステップS1010に移行す
る。図6においてステップS1010では、ポインタ2
を選択リストの先頭のタスク選択データにセットする。
ステップS1010の実行後、ステップS1011に移
行して、ポインタ3に指示された優先度管理ラベル10
2aの配下にタスク選択データが複数存在するかを判定
する。優先度管理ラベル102aの配下には、タスク選
択データ106a〜タスク選択データ106fものタス
ク選択データ106が存在するので、ステップS101
1はYesとなり、ステップS1020に移行する。
【0062】ステップS1020〜ステップS1026
の処理は図12(a)〜図12(c)の説明図を参照し
ながら説明する。図12(a)〜図12(c)は、図7
のフロ−チャ−トによるタスク選択データ選択処理の経
過を順に表している。ステップS1020では、優先度
管理ラベルmの選択リストにおける識別番号の順序を記
憶する。タスク選択データが図12(a)の状態になっ
ており、ここで記憶された過去の順序におけるタスク選
択データ106a〜106fを、それぞれタスク選択デ
ータ1、タスク選択データ2、タスク選択データ3・・・・タ
スク選択データn-1、タスク選択データnと呼ぶ。ステッ
プS1020の実行後、ステップS1021に移行す
る。ステップS1021では、優先度管理ラベルmの順
方向リンクと先頭に位置したタスク選択データ1との間
リンクを削除する。本ステップが実行されると、図12
(b)に示すように、参照符号y1で指示されるリンク
が削除される。
【0063】ステップS1021の実行後、ステップS
1022に移行する。ステップS1022では、タスク
選択データ1−タスク選択データ2間のリンクを削除す
る。本ステップが実行されると、図12(b)に示すよ
うに、参照符号y2で指示されるリンクが削除される。
ステップS1022の実行後、ステップS1023に移
行する。ステップS1023では、優先度管理ラベルm
の逆方向リンクと末尾に位置したタスク選択データnと
の間リンクを削除する。本ステップが実行されると、図
12(b)に示すように、参照符号y3で指示されるリ
ンクが削除される。
【0064】ステップS1023の実行後、ステップS
1024に移行する。ステップS1024では、優先度
管理ラベルmの順方向リンクからタスク選択データ2への
リンクを設定する。本ステップが実行されると、図12
(c)に示すように、参照符号y4で指示されるリンク
が設定される。ステップS1024の実行後、ステップ
S1025に移行する。ステップS1025では、タス
ク選択データnからタスク選択データ1へのリンクを設定
する。本ステップが実行されると、図12(c)に示す
ように参照符号y5で指示されるリンクが設定される。
【0065】ステップS1025の実行後、ステップS
1026に移行する。ステップS1026では、タスク
選択データ1から優先度管理ラベルmの逆方向リンクへの
リンクを設定する。本ステップが実行されると、図12
(c)に示すように、参照符号y6で指示されるリンク
が設定される。以上のリンクの削除及び形成により、優
先度管理ラベル102aの順方向リンクには、参照符号
y4に示すタスク選択データ106bとのリンクが形成
され、優先度管理ラベル102aの逆方向リンクには、
参照符号y6に示すタスク選択データ106aとのリン
クが形成されて、タスク選択データ106の実行順序は
『タスク選択データ106b』、『タスク選択データ1
06c』、『タスク選択データ106d』、『タスク選
択データ106e』、『タスク選択データ106f』、
『タスク選択データ106a』となる。
【0066】ステップS1025の実行後、ステップS
1012に移行して、ポインタ1によって指示されたタ
スク選択データのタスクをプロセッサに実行させる。こ
のようにタスク選択データ106の順番を入れ替える動
作は、いわゆる『優先度抜き』のラウンドロビン法を実
現していることを意味し、何れのタスク選択データ10
6にも、選択される確率が存在することを意味する。
【0067】優先度管理ラベル102aが選択される確
率は先に述べたように『10/28』であり、優先度管
理ラベル102aの配下には、六個ものタスク選択デー
タ106が存在するから、個々のタスク選択データ10
6の実行確率は『0.060(=10/28*6)』となり、極
めて低確率になることがわかる。しかし、本来タスク選
択データ106a〜タスク選択データ106fは処理負
荷分散のためにアプリケ−ションプログラム1から分割
されたスレッドであり、六個のうち何れかが実行されれ
ば、アプリケ−ションプログラム1の処理は進行するこ
とになる。 {管理・選択リストの作成}次に、図2に示したような
管理・選択リストが如何なる手順により生成されたかに
ついて説明する。図7及び図8のフロ−チャ−トは、管
理・選択リストの生成手順を示すフロ−チャ−トであ
る。以降本フロ−チャ−トを参照しながら管理・選択リ
ストの作成について説明を行う。尚本図における処理
は、図13及び図14に対応している。
【0068】システムが起動されると、ステップm1に
おいてメモリに常駐すべき各アプリケ−ションk(k=0,1,
2,3・・・・・K)に識別番号を付与する。ステップm1の実行
後、ステップm2に移行する。ステップm2では、付与し
た識別番号k(k=0,1,2,3・・・・・K)についてのタスク選択デ
ータk(k=0,1,2,3・・・・・K)を生成する。本ステップが実行
されると、図13に示すように、参照符号y15、y1
6、y17、y18で指示されるタスク選択データが生
成される。
【0069】ステップm2の実行後、ステップm3に移行
する。ステップm3では、起動すべき各アプリケ−ショ
ンk(k=0,1,2,3・・・・・K)に優先度p(p=0,1,2,3・・・・・P)が優
先度設定部11によって設定される。ステップm3の実
行後、ステップm4に移行する。ステップm4では、後述
する図8のフロ−チャ−トの手順により、優先度管理ラ
ベルを生成する。本ステップが実行されると、図13に
示すように、参照符号y11、y12、y13、y14
で指示される優先度管理ラベルが生成される。ステップ
m4の実行後、ステップm5に移行する。
【0070】ステップm5では、最も優先度が高い優先
度管理ラベルを判定する。ステップm5の実行後、ステ
ップm6に移行する。ステップm6では、優先度管理ラベ
ル見出し順方向リンクから判定された優先度管理ラベル
へとリンクを設定する。ステップm6の実行後、ステッ
プm7に移行する。ステップm7では、優先度が高いもの
から低いものへと優先度管理ラベル間にリンクを設定す
る。ステップm7の実行後、ステップm8に移行する。ス
テップm8では、優先度管理ラベルp=Pから優先度管理ラ
ベル見出し逆方向リンクへとリンクを設定する。本ステ
ップが実行されると、図14の左半分に示すように、優
先度管理ラベルがリンクによって結合される(尚、乱数
の性質がら考えると、同一の優先度のタスクは同じグル
−プに存在しなくてはならないが、優先度管理ラベルの
順序は高い順である必要はない。即ち、必ずしも整列さ
れている必要はない。)。
【0071】ステップm8の実行後、ステップm9に移行
する。ステップm9では、アプリケ−ションのうち設定
された優先度が同一のものをそれぞれグル−プにする。
ステップm9の実行後、ステップm10に移行する。ステ
ップm10では、1つのグル−プになったアプリケ−シ
ョン毎にタスク選択データを一列に配列してステップm
11に移行する。ステップm11では、配列毎に、タス
ク選択データ間にリンクを設定する。本ステップが実行
されると、図14の右半分に示すように、同一優先度が
設定されたタスクのタスク選択データ同士がリンクによ
って連結される。
【0072】ステップm11の実行後、ステップm12に
移行する。ステップm12では、優先度管理ラベルのタ
スク選択データ見出しの順方向リンクから各配列の先頭
タスク選択データに向けてリンクを設定してステップm
13に移行する。ステップm13では、各配列の末尾の
タスク選択データから、優先度管理ラベルのタスク選択
データ見出しの逆方向リンクに向けてリンクを設定す
る。本ステップが実行されると、図15に示すように、
優先度管理ラベルとタスク選択データとが連結される。
ステップm13の実行後、ステップm14に移行する。ス
テップm14では、全優先度管理ラベルの優先度の総和
を計算する。
【0073】このように、ステップm1〜ステップm14
の一連の処理が行われると、常駐すべき全てのアプリケ
−ションに対しての管理・選択リストが図15に示すよ
うに作成される。次に、図8のフロ−チャ−トを参照し
ながら各アプリケ−ションk(k=0,1,2,3・・・・・K)から優先
度管理ラベルpを生成する処理について説明を行う。
【0074】今、図7のステップm4の処理によって、
図8のフロ−チャ−トへと移行している。ステップV2
では、アプリケ−ションに付与した識別番号を指示する
変数kをk=0、タスク選択データを指示する変数pをp=0
に設定する。ステップV2の実行後、ステップV3にお
いて、優先度を格納するためのバッファをバッファ=0
に設定する。ステップV3の実行後、ステップV4に移
行して、アプリケ−ションkに設定された優先度kをバッ
ファに書き込んでステップV5に移行する。ステップV
5では、優先度kを一個前の優先度と比べる。即ち、優
先度k=優先度k-1であるか否かを判定する。もし異なれ
ばステップV6に移行する。ステップV6では、優先度
kについての優先度管理ラベルpを生成する。ステップV
6の実行後、ステップV7に移行し、変数pの値をp=p+
1に設定する。
【0075】ステップV5において、優先度k=優先度k
-1であればステップV6、ステップV7をスキップして
ステップV1に移行し、k=k+1と設定して、次のアプリ
ケ−ションを指示させる。このように、ステップV1〜
ステップV7の一連の処理がアプリケ−ションに設定さ
れた全ての識別番号について繰り返されると、同値の値
が1つに間引かれた形式の管理リストが生成される。
【0076】次に、管理・選択リストが既に形成されて
いる状態において、タスク選択データ106及び優先度
管理ラベル102の追加がどのように行われるかを図9
〜図11のフロ−チャ−トを参照しながら説明する。先
ず始めに図9のフロ−チャ−トを参照しながら既存の管
理・選択リストに優先度管理ラベル、タスク選択データ
を追加する場合の処理について説明を行う。図9のステ
ップt1において、オペレーティングシステム205は
ディスプレィの表示面上に表示されたメニュ−の選択待
機状態になっている。もし選択が行われると、ステップ
t1からステップt2へと移行する。
【0077】ステップt2では、選択されたアプリケ−
ションxに優先度を設定する。ステップt2の実行後、ス
テップt3に移行する。ステップt3では、設定されたア
プリケ−ションxに識別番号k=K+1を付与する。ステップ
t3の実行後、ステップt4に移行して、付与された識別
番号k=K+1のタスク選択データk=K+1を生成する。ステッ
プt4の実行後、ステップt5に移行する。ステップt5
では、アプリケ−ションに優先度xを設定する。ステッ
プt5の実行後、ステップt6に移行して、設定された優
先度xと同値の優先度管理ラベルp(p=1,2,3・・・・・P)が既
に存在するかを判定する。もし存在すればステップt7
に移行し、異なればステップt8に移行する。
【0078】存在する場合、ステップt7では後述する
図10のフロ−チャ−トの手順により、その優先度管理
ラベルの選択リストの最後尾に生成したタスク選択デー
タを追加して、ステップS18において設定された優先
度を総和に加算される。ステップt6で存在しないと判
定された場合、ステップt8及びステップt9では、タス
ク選択データを生成し、設定された優先度の優先度管理
ラベルを作成する。ステップt9の実行後、ステップt1
0に移行する。ステップt10では、生成した優先度管
理ラベルに生成したタスク選択データを対応づける。ス
テップt10の実行後、ステップt17に移行する。ステ
ップt17では、後述する図11のフロ−チャ−トの手
順により、管理リストに生成した優先度管理リストを追
加する。
【0079】このように、ステップt1〜ステップt17
の一連の処理が行われると、管理・選択リストに優先度
管理ラベル、タスク選択データが追加される。その優先
度管理ラベルの選択リストの最後尾に生成したタスク選
択データを追加する場合について図10のフロ−チャ−
ト及び図16(a)〜(b)の説明図を参照しながら説
明する。
【0080】今、ステップt11への移行が既に行われ
ているものとする。ステップt11では、末尾のタスク
選択データp=Pからタスク選択データの見出しの逆方向
リンクへのリンクを削除する。本ステップが実行される
と、図16(a)に示すように、参照符号y35で指示
されるリンクが削除される。ステップt11の実行後、
ステップt12に移行する。ステップt12では、タスク
選択データp=Pからタスク選択データp=P+1へのリンクを
設定する。ステップt12の実行後、ステップt13に移
行する。ステップt13では、タスク選択データp=P+1か
らタスク選択データの見出しの逆方向リンクへのリンク
を設定する。本ステップが実行されると、図16(b)
の矢印y33、y34に示すように、タスク選択データ
p=P+1が選択リストに追加される。
【0081】このように、ステップt14〜ステップt1
6の一連の処理が行われると、既存の優先度管理ラベル
が有するタスク選択データの末尾に新たなタスク選択デ
ータが追加されてゆく。次に、図11のフロ−チャ−ト
及び図17の説明図を参照しながらタスク選択データの
追加処理について説明を行う。
【0082】今、ステップt14への移行が既に行われ
ているものとする。そして、選択リストは図17(a)
の状態にある。ステップt14では、優先度管理ラベルp
=Nから優先度管理ラベルの見出しの逆方向リンクへのリ
ンクを削除する。ステップt14の実行後、ステップt1
5に移行する。本ステップが実行されると、図17
(b)に示すように、参照符号y31で指示されるリン
クが削除される。ステップt15では、優先度管理ラベ
ルp=Nから優先度管理ラベルp=N+1へのリンクを設定す
る。ステップt15の実行後、ステップt16に移行す
る。ステップt16では、優先度管理ラベルp=N+1から優
先度管理ラベルの見出しの逆方向リンクへのリンクを設
定する。本ステップが実行されると、図17(c)に示
すように、参照符号y32で指示されるリンクが形成さ
れる。
【0083】このように、ステップt11〜ステップt1
3の一連の処理が行われると既存の優先度管理ラベルの
最後尾に優先度管理ラベルが追加されている。以上のよ
うに本実施形態によれば、図2のような同優先度のタス
クを1つ優先度管理ラベル102に代表させるような構
造のリストを用いて、アプリケ−ションプログラムが1
0個のスレッドに分割しようと、1個のスレッドに分割
しようとアプリケ−ションプログラム2、アプリケ−シ
ョンプログラム3の実行確率を変動させないようにす
る。従って図2のデータ構造では、同優先度のタスクが
多数発生してタスク数が急増しても、それらのタスクの
優先度を一つの優先度管理ラベルに代表させるので、他
のタスクの実行確率は一向に変化しない。『同優先度タ
スクの多数発生』に起因するタスク数急増に対して各タ
スクの実行確率を維持することができる。
【0084】(第2実施形態)第2実施形態では、リア
ルタイムプロセス用のオペレーティングシステムのスケ
ジューラとして動作することを考慮して、時刻により各
優先度管理ラベルの優先度を変化させている。本実施形
態では、スケジューラは10msec(=1/100秒)のタイム
スライスにより処理を行う。また各タスクには、このタ
イムスライスの時間長の100倍の時間分解能、即ち
『何分何秒』という時間分解能によりデッドラインが与
えられている(尚,以降の説明において上記の『何分何
秒』という単位を『00:00』という表記で表現す
る。)。
【0085】第2実施形態における管理・選択リストの
データ構造を図18に示す。図18においてタスク選択
データ1408a〜1408sは、図20のデータフォ
ーマットに示すようにタスク識別子用の記入欄107及
びコンテキスト108を備えている点は第1実施形態と
共通しているが、各タスクのデッドライン140A用の
記入欄が備えられている点が新規である。
【0086】図18において、タスク選択データ140
8a〜タスク選択データ1408hのデッドライン14
0Aを参照すると、これらのタスク選択データ1408
のデッドライン140Aは『01:00』『02:00』『03:0
0』『04:00』『05:00 』・・・・『09:00』『10:00』という
ようにデッドラインが一分刻みであることがわかる。タ
スク選択データ1408j〜タスク選択データ1408
sのデッドライン140Aを参照すると、これらのタス
ク選択データ1408のデッドライン140Aは『04:0
0』『08:00』『12:00』『16:00』『20:00 』『24:00』
というようにデッドラインが四分刻みであることがわか
る。
【0087】このように図18においては、実行周期が
短いタスクと長いタスクとが混在していることがわか
る。第2実施形態における優先度管理ラベルは、図19
のデータフォーマットに示すように、順方向リンク10
4及び逆方向リンク10Cを備え、互いにリンクで連結
しあっている点が第1実施形態と共通している。第1実
施形態と異なるのは、優先度カラムが基準優先度カラム
1403及び実効優先度カラム1404に分割され、新
規にデッドラインポインタ1405を備えている点であ
る。
【0088】基準優先度カラム1403は、複数のタス
ク選択データを代表した優先度が記入される。図18に
おいて『01:00』刻みという短い周期が与えられたタス
ク選択データ1408a〜タスク選択データ1408h
を代表する優先度管理ラベル1402aの基準優先度カ
ラム1403aには優先度『3』が与えられ、『04:00』
刻みという長い周期が与えられたタスク選択データ14
08j〜タスク選択データ1408sを代表する優先度
管理ラベル1402cの基準優先度カラム1403には
優先度『10』が与えられている。タスク選択データ1
408iのみに対応する優先度管理ラベル1402b
は、最大の優先度『15』が与えられている。
【0089】優先度管理ラベル1402cの優先度が優
先度管理ラベル1402aのそれに比べて高いのは、タ
スク選択データ1408j〜タスク選択データ1408
sは周期が長い代わりにデッドラインに対してより高い
精度を求めているからである。また優先度管理ラベル1
402aの優先度が優先度管理ラベル1402cのそれ
に比べて低いのは、タスク選択データ1408a〜タス
ク選択データ1408gは周期が短い代わりにデッドラ
インに対する精度は低くて良いからである。デッドライ
ンに達したタスク選択データ1408は、優先度管理ラ
ベル1402における実効優先度がより高いもの程より
早いタイムスライスに割り当てられ、優先度管理ラベル
1402における実効優先度がより低いもの程、より遅
いタイムスライスに割り当てられる。
【0090】その結果、デッドラインが共通するタスク
選択データ1408が複数ある場合、優先度管理ラベル
1402における実効優先度が最高のものはデッドライ
ン時に実行され、実効優先度が次順位(第2位)のタス
ク選択データ1408は、(デッドライン+10msec(タ
イムスライス一個分の時間長))に実行される。実効優
先度が第3位のタスク選択データ1408は、(デッド
ライン+20msec(タイムスライス2個分の時間長))に
実行され、実効優先度が第4位のタスク選択データ14
08は、(デッドライン+30msec(タイムスライス4個
分の時間長))に実行される。
【0091】デッドラインポインタ1405は、現在時
刻140Hがデッドラインに達したタスク、或は、現在
時刻140Hがデッドラインを過ぎたタスクと、優先度
管理ラベル102とを連結する。実効優先度カラム14
04は現在時刻がデッドラインに達したタスク、或は、
現在時刻がデッドラインを過ぎたタスクの基準優先度カ
ラムがコピーされる。図18において実効優先度カラム
1404a、b、cがオールゼロであるのは、現在時刻
が『00:00』であり、デッドラインが現在時刻と一致す
るタスクが存在しないからである。
【0092】優先度総和カラム1407は、実効優先度
カラムの総和を制御部23が記入するための記入欄であ
る。乱数カラム140Gは、ゼロから(優先度総和カラ
ム−1)までの整数区間において、制御部23が発生し
た乱数を記入するための記入欄である。以上のように構
成されたデータ構造を利用して、以下にその選択方法に
ついて説明する。
【0093】図21及び図22は、本実施形態の選択方
法の手順を表したフローチャートである。以降図21の
フロ−チャ−トを参照しながらについて説明を行う。図
21のフロ−チャ−トにおいて、変数rは、ステップS
1001で発生される実効優先度の和までの一様乱数を
格納するための変数であり、ポインタ3は、管理リスト
を先頭から末尾へと辿ってゆくために現在位置の優先度
管理ラベルを指示するために設けられたポインタであ
る。変数xは管理リストにおいて、先頭の優先度管理ラ
ベルからポインタ3で指示される優先度管理ラベルまで
の優先度の累計をとるために設けられた変数である。
【0094】{現在時刻が『01:00』である場合、}先
ず始めに現在時刻が『01:00』である場合の制御部23
の動作について、図23を参照しながら説明する。ステ
ップS1501は、図22のフロ−チャ−トを呼び出す
るための呼出ステップである。図22のフロ−チャ−ト
において、ポインタ1は、管理リストを先頭から末尾へ
と辿ってゆくために現在位置の優先度管理ラベルを指示
するために設けられたポインタである。ポインタ2は、
ポインタ1で指示された優先度管理ラベルの配下の選択
リストを先頭から末尾へと辿ってゆくために現在位置の
タスク選択データを指示するために設けられたポインタ
である。変数tは、ポインタ2で指示されたタスク選択
データのデッドラインを格納するために設けられた変数
である。
【0095】ステップS1601では、ポインタ1に管
理リストの先頭を指示させる。先頭には、優先度管理ラ
ベル1402aが存在するから、ポインタ1には優先度
管理ラベル1402aが設定される。ステップS160
1の実行後、ステップS1602に移行する。ステップ
S1602では、優先度管理ラベル1402aの配下の
タスク選択データのうち先頭のものをポインタ2に指示
させる。
【0096】優先度管理ラベル1402aの配下の選択
リストの先頭は、タスク選択データ1408aなので、
タスク選択データ1408aがポインタ2に設定されて
ステップS1603に移行する。ステップS1603で
は、ポインタ2が指示するタスク選択データ1408a
のデッドライン『01:00』を変数tに代入する。ステップ
S1603の実行後、ステップS1604に移行する。
【0097】ステップS1604では、変数tのデッド
ラインが現在時刻より未来であるかを判定する。もしそ
うであればステップS1605に移行し、異なればステ
ップS1608に移行する。変数tに代入されたタスク
選択データ1408aのデッドラインは『01:00』であ
り、現在時刻は『01:00』なので、ステップS1604
においてNoと判定されてステップ1608において、ポ
インタ1が指示する優先度管理ラベル1402aの実効
優先度pbに、基準優先度Paをコピーする。
【0098】これにより、優先度管理ラベル1402a
の実効優先度カラムには、基準優先度カラムにおける優
先度『3』がコピーされて実効優先度カラムは図23に
おける参照符号y41に示すように『3』になる。ステ
ップS1608の実行後、ステップS1609に移行し
てポインタ2が指示するタスク選択データ1408aを
優先度管理ラベル1402aのデッドラインポインタに
より指示させる。これによって優先度管理ラベル140
2aのデッドラインポインタは、図23における矢印y
42に示すように、タスク選択データ1408aを指示
する。指示後、ステップS160Aに移行して、ポイン
タ1を次の優先度管理ラベル1402bに進める。
【0099】その後、ステップS160Bにおいてポイ
ンタ1が管理リストの終端に達したかを判定する。ここ
でいう管理リストの終端とは優先度管理ラベルの逆方向
リンク140Dのことであり、ポインタ1は未だこの終
端を指示したのではないので、ステップS1602に移
行する。ステップS1602では、ポインタ2に優先度
管理ラベル1402b配下の選択リストの先頭を指示さ
せる。
【0100】優先度管理ラベル1402bのタスク選択
データの見出しの順方向リンクのリンク先にはタスク選
択データ1408iのみが存在するので、タスク選択デ
ータ1408iがポインタ2に設定されてステップS1
603に移行する。ステップS1603では、ポインタ
2が指示するタスク選択データ1408iのデッドライ
ン『03:00』を変数tに代入する。ステップS1603の
実行後、ステップS1604に移行する。
【0101】ステップS1604では、変数tのデッド
ラインが現在時刻より未来又は過去であるかを判定す
る。もしそうであればステップS1605に移行し、異
なればステップS1608に移行する。現在時刻は『0
1:00』であり、タスク選択データ1408iのデッドラ
インは『03:00』であるので、ステップS1604にお
いてYesと判定されてステップ1605において、ポイ
ンタ2を次のタスク選択データ1408に進めてステッ
プS1606に移行する。ステップS1606では、ポ
インタ2が優先度管理ラベル1402b配下のリストの
終端に達したかが判定される。ここでいう選択リストの
終端とはタスク選択データの逆方向リンクのことであ
り、ポインタ1は未だこの終端を指示したのではないの
で、ステップS1607に移行し、ステップS1607
において図23における矢印y43に示すように、ポイ
ンタ1が指す優先度管理ラベル1402bの実効優先度
カラムにゼロを代入する。代入後、ポインタ1を1イン
クリメントしてポインタ1に優先度管理ラベル1402
cを指示させ、ステップS160Bにおいてポインタ1
が管理リストの終端に達したかを判定するが、ポインタ
1が指示する優先度管理ラベル1402cは終端でない
ので、ステップS1602に移行する。
【0102】ステップS1602では、ポインタ2に優
先度管理ラベル1402c配下の選択リストの先頭を指
示させる。優先度管理ラベル1402c配下の選択リス
トの先頭にはタスク選択データ1408jが存在するの
で、タスク選択データ1408jがポインタ2に設定さ
れてステップS1603に移行する。ステップS160
3では、ポインタ2が指示するタスク選択データ140
8jのデッドライン『04:00』を変数tに代入する。ステ
ップS1603の実行後、ステップS1604に移行す
る。
【0103】ステップS1604では、変数tのデッド
ラインが現在時刻より未来又は過去であるかを判定す
る。もしそうであればステップS1605に移行し、異
なればステップS1608に移行する。現在時刻は『0
1:00』であり、タスク選択データ1408jのデッドラ
インは『04:00』であるので、ステップS1604にお
いてYesと判定されてステップ1605において、ポイ
ンタ2を次のタスク選択データ1408kに進めてステ
ップS1606に移行する。ステップS1606では、
ポインタ2が優先度管理ラベル1402c配下の選択リ
ストの終端に達したかが判定される。
【0104】ここで優先度管理ラベル1402cの配下
にはタスク選択データ1408j〜タスク選択データ1
408sが存在するが、これらのデッドラインは『04:0
0』以降であり、ステップS1604においてYesとなる
のは明らかなので、優先度管理ラベル1402aと同様
の処理が六回繰り返されてポインタ2が選択リストの終
端にまで達したとする。そしてステップS160BがYe
sと判定されて図22の処理が終了し、図21のステッ
プS1502に移行したとする。
【0105】ステップS1502では、タスク選択デー
タの実効優先度Pbの総和を計算する。ここで図23にお
いて、タスク選択データ1408a〜タスク選択データ
1408cの実効優先度は『3』『0』『0』であるの
で、総和が『3』と計算されてステップS1503に移
行する。ステップS1503では、実効優先度Pbの総和
>0であるか否かを判定する。もしそうであればステッ
プS1504に移行し、異なればステップS1505に
移行する。この場合ステップS1504へと移行する。
ステップS1002〜ステップS1008の処理は第1
実施形態におけるステップS1002〜ステップS10
08の処理と同様である。
【0106】即ちステップS1001では、0から実効
優先度Pbの総和までの一様乱数を発生させて変数rに代
入する。0〜2の整数区間において『2』が発生したと
する。ステップS1001の実行後、ステップS100
2では、変数xに0を代入する。ステップS1002の
実行後、ステップS1003では、ポインタ3を管理リ
ストの先頭にセットする。セット後、ステップS100
5では、ポインタ3が管理リストの終端に達したかを否
か判定する。ポインタ3は先頭である優先度管理ラベル
1402aを指示しているのでステップS1005〜1
007の繰り返し処理に移行する。ステップS1005
では、変数xにポインタ3が指示する優先度管理ラベル
1402aの優先度『3』を加算し、ステップS100
6において変数xが変数rを越えたかを判定する。変数r
は『2』であり、越えているのでステップS1008で
ポインタ3の優先度管理ラベル1402aを選択し、ス
テップS150Dにおいてデッドラインポインタによっ
て指示されているタスク選択データのタスクをプロセッ
サに実行させる。転送後、ステップS160Cに移行し
てデッドラインポインタに代入されたタスク選択データ
を選択リストの末尾に移動する。
【0107】{現在時刻が『02:00』である場合、}現
在時刻が『02:00』である場合の制御部23の動作につ
いて、図24を参照しながら説明する。図22のステッ
プS1601では、ポインタ1に先頭の優先度管理ラベ
ル1402aを指示させる。ステップS1601の実行
後、ステップS1602に移行する。ステップS160
2では、ポインタ2に優先度管理ラベル1402a配下
の選択リストにおいて、先頭のタスク選択データを指示
させる。
【0108】図24に示すように優先度管理ラベル14
02aの配下において、タスク選択データ1408aは
最後尾に移動しており、タスク選択データ1408bが
先頭に移動している。タスク選択データの見出しの順方
向リンクのリンク先にはタスク選択データ1408bが
存在するので、タスク選択データ1408bがポインタ
2に設定されてステップS1603に移行する。ステッ
プS1603では、ポインタ2が指示するタスク選択デ
ータ1408bのデッドラインを変数tに代入する。ステ
ップS1603の実行後、ステップS1604に移行す
る。
【0109】ステップS1604では、変数tのデッド
ラインが現在時刻より未来又は過去であるかを判定す
る。現在時刻は『02:00』であり、タスク選択データ1
408bのデッドラインは『02:00』であるので、ステッ
プS1604においてNoと判定されてステップ1608
において、ポインタ1が指示する優先度管理ラベルの実
効優先度pbに、基準優先度Paをコピーする。
【0110】図24において、『02:00』にデッドライ
ンを有するのはタスク選択データ1408bのみであ
り、デッドライン『01:00』を有するタスク選択データ
1408aの動作例と同様、このタスク選択データ14
08bを配下に置く優先度管理ラベル1402aのみの
実効優先度カラム1404が『3』となる。これによ
り、優先度総和カラム1407の総和は『3』となっ
て、この整数区間のみの乱数が発生して、タスク選択デ
ータ1408bが選択されて実行される。
【0111】{現在時刻が『03:00』である場合}現在
時刻が『03:00』である場合の制御部23の動作につい
て、図25を参照しながら説明する。図22におけるス
テップS1601では、ポインタ1に管理リストの先頭
の優先度管理ラベル1402aを指示させる。ステップ
S1601の実行後、ステップS1602に移行して、
優先度管理ラベル1402a配下の選択リストの先頭を
ポインタ2に指示させる。
【0112】優先度管理ラベル1402aの順方向リン
クのリンク先には、タスク選択データ1408bの実行
が済んで先頭に繰り上げられたタスク選択データ140
8cが存在するので、タスク選択データ1408cがポ
インタ2に設定されてステップS1603に移行し、ス
テップS1603において、ポインタ2が指示するタス
ク選択データ1408cのデッドライン『03:00』を変
数tに代入して、ステップS1604において、変数tの
デッドラインが現在時刻より未来であるか否かを判定す
る。現在時刻は『03:00』であり、タスク選択データ1
408cのデッドラインは『03:00』であるので、ステ
ップS1604においてNoと判定されてステップ160
8において、ポインタ1が指示する優先度管理ラベルの
実効優先度pbに、基準優先度Paをコピーする。
【0113】これにより、優先度管理ラベル1402a
の実効優先度カラム1404aには、基準優先度カラム
における優先度『3』がコピーされて実効優先度カラム
は図25の参照符号y44に示すように『3』になる。
ステップS1608の実行後、ステップS1609に移
行してポインタ2が指示するタスク選択データ1408
cをポインタ1が指示する優先度管理ラベル1402a
のデッドラインポインタに指示させる。ここでポインタ
2によりタスク選択データ1408cが指示されてお
り、ポインタ1により優先度管理ラベル1402aが指
示されているので、優先度管理ラベル1402aのデッ
ドラインポインタにより図25における矢印y45に示
すようにタスク選択データ1408cが指示される。続
いてステップS160Aに移行して、ポインタ1を次の
優先度管理ラベル1402bに進める。
【0114】その後、ステップS160Bにおいてポイ
ンタ1が管理リストの終端に達したかを判定するが、ポ
インタ1が指示する優先度管理ラベル1402bは終端
でないので、ステップS1602に移行する。ステップ
S1602では、ポインタ2に優先度管理ラベル140
2b配下のタスク選択データ1402iを指示させる。
指示させた後、ステップS1603では、ポインタ2が
指示するタスク選択データ1408iのデッドライン
『03:00』を変数tに代入して、ステップS1604にお
いて変数tのデッドラインが現在時刻より未来又は過去
であるかを判定する。現在時刻は『03:00』であり、タ
スク選択データ1408iのデッドラインは『03:00』
であるので、ステップS1604においてNoと判定され
て、ステップS1608において図25における矢印y
46に示すように、優先度管理ラベル1402bの実効
優先度カラムに『15』を代入する。代入後、ポインタ
1を1インクリメントしてポインタ1に優先度管理ラベ
ル1402cを指示させ、ステップS160Bにおいて
ポインタ1が管理リストの終端に達したかを判定する
が、ポインタ1が指示する優先度管理ラベル1402c
は終端でないので、ステップS1602に移行する。
【0115】ステップS1602では、ポインタ2に優
先度管理ラベル1402cの選択リストの先頭を指示さ
せる。優先度管理ラベル1402cのタスク選択データ
の見出しの順方向リンクのリンク先にはタスク選択デー
タ1408jが存在するので、タスク選択データ140
8jがポインタ2に設定されてステップS1603に移
行する。ここで優先度管理ラベル1402cの配下には
タスク選択データ1408j〜タスク選択データ140
8sが存在するが、これらのデッドラインは『04:00』
以降であり、ステップS1604においてYesとなるの
は明らかなので、優先度管理ラベル1402bと同様の
処理が六回繰り返されてポインタ2が選択リストの終端
にまで達して図22の処理が終了し、図21のステップ
S1502に移行したとする。
【0116】ステップS1502では、タスク選択デー
タの実効優先度Pbの総和を計算する。ここで図25にお
いて、タスク選択データ1408a〜タスク選択データ
1408cの1404は『3』『15』『0』であるの
で、総和が『18』と計算されてステップS1503に
移行する。ステップS1503では、実効優先度Pbの総
和>0であるか否かが判定され、ステップS1001に
移行し、『0』から実効優先度Pbの総和『18』までの
一様乱数を発生させて変数rに代入する。ここで整数
『12』が発生してこれが変数rに代入されたとする。
ステップS1001の実行後、ステップS1002で
は、変数xに0を代入する。ステップS1002の実行
後、ステップS1003では、ポインタ3に優先度管理
ラベルの見出しの順方向リンクを代入し、ポインタ3を
管理リストの先頭にセットする。セット後、ステップS
1005では、ポインタ3が管理リストの終端に達した
かを否か判定する。ポインタ3は先頭である優先度管理
ラベル1402aを指示しているのでステップS100
5〜1007の繰り返し処理に移行する。ステップS1
005では、変数xにポインタ3が指示する優先度管理
ラベル1402aの実効優先度『3』を加算し、ステッ
プS1006において変数xが変数rを越えたかを判定す
る。変数rは『12』であり、越えていないのでポイン
タ3を先に進めて、ポインタ3が管理リストの末尾に達
したかを判定し、ステップS1005では、変数xにポ
インタ3が指示する優先度管理ラベル1402bの実効
優先度『15』を加算し、ステップS1006において
変数xが変数rを越えたかを判定する。変数rは『12』
であり、越えたことが判定されてステップS1008に
移行し、ステップS1008でポインタ3の優先度管理
ラベル1402bを選択し、ステップS150Dにおい
てデッドラインポインタによって指示されているタスク
選択データiのタスクをデッドライン『03:00』のタイム
スライスにおいてプロセッサに実行させる。続いて、デ
ッドライン『03:00』の次のタイムスライス、即ち『03:
00.010』から始まるタイムスライスにおいて優先度管理
ラベル1402aのデッドラインポインタにより指示さ
れているタスク選択データ1408cのタスクをプロセ
ッサに実行させる。
【0117】以上の動作により、デッドライン『03:0
0』に対しての精度が優先度『15』であるタスク選択
データ1408iは遅れ無しで、デッドラインきっかり
に実行され、デッドライン『03:00』に対しての精度が
優先度『3』であるタスク選択データ1408cは、デ
ッドラインに対して高々一個のタイムスライス長の遅れ
で実行された。
【0118】{現在時刻が『04:00』である場合、}ス
テップS1601では、ポインタ1に管理リストの先頭
の優先度管理ラベル1402aを指示させる。ステップ
S1601の実行後、ステップS1602に移行して、
優先度管理ラベル1402a配下の選択リストの先頭を
ポインタ2に指示させる。
【0119】優先度管理ラベル1402aのタスク選択
データの見出しの順方向リンクのリンク先には、タスク
選択データ1408cの実行が済んで先頭に繰り上げら
れたタスク選択データ1408dが存在するので、タス
ク選択データ1408dがポインタ2に設定され、ポイ
ンタ2が指示するタスク選択データ1408dのデッド
ライン『04:00』が変数tに代入される(ステップS16
03)。変数tのデッドラインが現在時刻より過去なの
で、ポインタ1が指示する優先度管理ラベルの実効優先
度pbに、基準優先度Paをコピーし(ステップS160
8)、優先度管理ラベル1402aの実効優先度を
『3』にする。
【0120】その後、ポインタ1を次の優先度管理ラベ
ル1402bに進める。ステップS1602では、ポイ
ンタ2に優先度管理ラベル1402b配下のタスク選択
データ1402iを指示させて、ステップS1603で
は、ポインタ2が指示するタスク選択データ1408i
のデッドライン『03:00』を変数tに代入し、ステップS
1604において変数tのデッドラインが現在時刻より
未来又は過去であるかを判定する。現在時刻は『04:0
0』であり、タスク選択データ1408iのデッドライ
ンは『03:00』であるので、ステップS1605に移行
して、ポインタ2を先に進める。ここで優先度管理ラベ
ル1402bの配下にあるのはタスク選択データ140
8iのみなのでポインタ2の進行は行われず、ステップ
S160Aにおいてポインタ1が優先度管理ラベル14
02cに進められステップS1602に移行する。
【0121】ステップS1602では、ポインタ2に優
先度管理ラベル1402cの選択リストの先頭を指示さ
せる。優先度管理ラベル1402cのタスク選択データ
の見出しの順方向リンクのリンク先には『04:00』のデ
ッドラインを有するタスク選択データ1408jが存在
するので、タスク選択データ1408jがポインタ2に
設定されてステップS1603に移行する。ここで優先
度管理ラベル1402cの配下にはタスク選択データ1
408j〜タスク選択データ1408sが存在するが、
これらのデッドラインは『04:00』以降であり、ステッ
プS1604においてNoとなって、ステップS1608
において基準優先度『10』が実効優先度にコピーされ
て図22の処理が終了し、図21のステップS1502
に移行したとする。
【0122】ステップS1502では、タスク選択デー
タの実効優先度Pbの総和を計算する。ここで図26にお
いて、タスク選択データ1408a〜タスク選択データ
1408cの1実効優先度は『3』『0』『10』であ
るので、総和が『13』と計算されてステップS150
3に移行する。ステップS1503では、実効優先度Pb
の総和>0であるか否かを判定する。もしそうであれば
ステップS1504に移行し、異なればステップS15
05に移行する。この場合ステップS1504へと移行
する。ステップS1002〜ステップS1008の処理
は第1実施形態におけるステップS1002〜ステップ
S1008の処理と同様である。。
【0123】ステップS1001では、0から実効優先
度Pbの総和『13』までの一様乱数を発生させて変数r
に代入する。ここで整数『12』が発生してこれが変数
rに代入されたとする。ステップS1001の実行後、
ステップS1002では、変数xに0を代入する。ステ
ップS1002の実行後、ステップS1003では、ポ
インタ3に優先度管理ラベルの見出しの順方向リンクを
代入し、ポインタ3を管理リストの先頭にセットする。
セット後、ステップS1005では、ポインタ3が管理
リストの終端に達したかを否か判定する。ポインタ3は
先頭である優先度管理ラベル1402aを指示している
のでステップS1005〜1007の繰り返し処理に移
行する。ステップS1005では、変数xにポインタ3
が指示する優先度管理ラベル1402aの実効優先度
『3』を加算し、ステップS1006において変数xが
変数rを越えたかを判定する。変数rは『12』であり、
越えていないのでポインタ3を先に進めて、ポインタ3
が管理リストの末尾に達したかを判定し、ステップS1
005では、変数xにポインタ3が指示する優先度管理
ラベル1402bの実効優先度『0』を加算し、ステッ
プS1006において変数xが変数rを越えたかを判定す
る。変数rは『12』であり、越えていないのでポイン
タ3を先に進めて、ポインタ3が管理リストの末尾に達
したかを判定する。未た末尾に達していないので、ステ
ップS1005に移行して変数xにポインタ3が指示す
る優先度管理ラベル1402cの優先度『10』を加算
し、ステップS1006において変数xが変数rを越えた
かを判定する。変数rは『12』であり、変数xは『1
3』になったので越えたことが判定されてステップS1
008に移行し、ステップS1008でポインタ3の優
先度管理ラベルを選択し、ステップS150Dにおいて
デッドラインポインタによって指示されているタスク選
択データ1408jのタスクを『04:00』丁度のタイム
スライスにおいてプロセッサに実行させる。タスク選択
データ1408jの実行後、次のタイムスライス、『0
4:00.010』のタイムスライスにおいてタスク選択データ
1408dのタスクをプロセッサに実行させる。
【0124】以上の動作を繰り返すと、より高い優先度
が与えられ、『04:00』『08:00』『12:00』『16:00』
『20:00 』『24:00』というようにデッドラインが四分
刻みのタスク選択データ1408はそのデッドライン丁
度のタイムスライスにより実行される。より低い優先度
が与えられ、『01:00』『02:00』『03:00』『04:00』
『05:00 』『06:00』というようにデッドラインが一分
刻みのタスク選択データ1408は、四分周期のタスク
選択データ1408とデッドラインが競合した場合に、
四分周期のタスク選択データ1408が実行された後の
次のタイムスライスにおいて実行される。
【0125】以上のように本実施形態によれば、デッド
ラインが『01:00』周期のタスクを実行しつつも、『04:
00』周期のデッドラインが近づけば、この『04:00』周
期のタスクを優先して実行することができる。これによ
り、周期が長い反面、デッドラインに高い精度を求める
タスクについては、より高い優先度を付与することによ
り、高い確率でデッドラインを遵守させることができ
る。
【0126】そのため、音声データ復号タスクの実行の
合間に、短い周期での処理が必要なビデオデータ復号タ
スクをこまめに実行するこという応用が可能となり、映
像再生−音声再生のズレの無いリアルタイムプロセスを
実現することができる。上記実施例に基づいて説明して
きたが、本発明は、その要旨を逸脱しない範囲で変更実
施することができる。例えば、以下(a)〜(e)に示
すような変更実施が可能である。
【0127】(a)第1及び第2実施形態では一様乱数
を用いていたが、各優先度管理ラベルが0でない選択確
率をもつのであるならば、ガウス乱数等、任意の分布を
もつ乱数でもロックアウトが起きないのは明らかであ
る。またこれらがマルコフ過程である必要がないのも自
明である。 (b)第2実施形態では一様乱数の範囲が、実行すべき
タスクがある優先度管理ラベルのすべてに対して、0で
ない選択確率をもつようにしたが、同一時刻に実行しな
くてはならないタスクに対して優先度を与えるという本
発明の目的を考慮すれば、この範囲を意図的に狭めるこ
とによって、特定の条件下で、特定の優先度管理ラベル
のタスクを選ぶようにすることもできる。例えば確率変
数が常に1であるならば、常に優先度管理ラベル見出し
に最も近い優先度管理ラベルが選ばれるようになるであ
ろう。
【0128】(c)第1及び第2実施形態では優先度な
しのラウンドロビン法等を、タスク選択データの選択方
法として使用しているが、従来の優先度付きラウンドロ
ビン法や、従来の確率過程型の選択方法等を組み合わせ
ても、目的が達成されることは明らかである。 (d)第1及び第2実施形態では、同じ優先度の優先度
管理ラベルの数を、高々一つとしたが、タスクの数の増
加に伴って単純に増えるのでないならば、これらが複数
存在したとしても、高い優先度のタスクの選択確率の低
下を防ぐことができることも明らかである。
【0129】(e)第1及び第2実施形態では、タスク
の管理のためのリストを両方向線形リストで管理した
が、本発明の方法に必要とされる情報が保持されるなら
ば、テーブル構造等、他のデータ構造を用いてもよい。 (f)第1実施形態及び第2実施形態は説明の便宜上何
れもシングルプロセッサにおけるシステム構成例を示し
たが、複数プロセッサとして構成してよいことはいうま
でもない。
【0130】
【発明の効果】以上のように請求項1記載の発明によれ
ば、一部アプリケ−ションプログラムから派生した同じ
優先度のタスクが 10個であろうと、1個であろうと
他のアプリケ−ションプログラムの実行確率を変動させ
ないようにする。従ってこのようなデータ構造では、同
優先度のスレッド(タスク)が多数発生してタスク数が
急増しても、それらのタスクの優先度を一つの優先度ラ
ベルに代表させるので、他のタスクの実行確率は一向に
変化しない。同優先度のタスクが多数発生することによ
りタスク数が急増しても、各タスクの実行確率を維持す
ることができる。
【0131】また請求項2に記載の発明は、選択手段
は、優先度リストに並べられた優先度の総和をとる総和
部と、ゼロから総和までの整数区間を、優先度の大小に
応じて各優先度ラベルに割り当てる割り当て部と、ゼロ
から総和までの乱数を発生する乱数発生部と、どの優先
度ラベルに割り当てられた区間内に乱数が発生したかを
判定する判定部と、判定された優先度ラベルとのリンク
を有するタスク情報に基づいてプロセッサを制御する第
1制御部とを備えることを特徴としたものであり、優先
度の大小に基づいたタスク選択が可能となる。
【0132】また請求項3記載の発明は、前記タスク情
報リストにおける先頭のタスク情報のタスクの実行が行
われると、その実行済みのタスク情報を前記配列の最後
尾に移動させて次順のタスク情報を先頭に繰り上げる第
2制御部を備えるものであり、プロセッサによってプロ
グラムのタスクが実行されると、その実行済みのプログ
ラムを前記順序の最後尾に移動させて次順のプログラム
を先頭に繰り上げるので、同一優先度のプログラムは順
次実行されることになる。これは、すべてのタスクが選
択されることだけを保証する選択行為であり、以上の同
一優先度のタスクは何時かは実行されることを保障して
いる。ロックアウトが発生しないことを保証することが
できる。
【0133】また請求項4に記載の発明は、各タスク情
報は、当該タスク情報の実行中断時のハードウェアに関
する情報を対応づけていることを特徴としたものであり
請求項3と同様の効果を奏する。また請求項5に記載の
発明は、新たに実行すべきタスクが発生すると、その優
先度を検出する第1検出手段と、検出された優先度と同
値の優先度を示すラベルが優先度リストに存在するか否
かを判定する判定手段と、存在すると判定されると、そ
の検出された優先度ラベルとのリンクを既に有するタス
ク情報と、新たに実行すべきタスクのタスク情報との間
のリンクを形成する第1リンク形成手段と、存在しない
と判定されると、検出された優先度を示す優先度ラベル
を優先度リストに追記する追記手段と、追記手段によっ
て追記された優先度ラベルと、新たに実行すべきタスク
とを対応づけるリンクを形成する第2リンク形成手段と
を備えることを特徴としたものであり、請求項4と同様
の効果を奏する。
【0134】また請求項6記載の発明によれば、デッド
ラインが短い周期のタスクを実行しつつも、長い周期の
デッドラインが近づけば、この長い周期のタスクを優先
して実行することができる。これにより、周期が長い反
面、デッドラインに高い精度を求めるタスクについて
は、より高い優先度を付与することにより、高い確率で
デッドラインを遵守させることができる。
【0135】また請求項7に記載の発明は、優先度を示
す優先度ラベルを配列してなり、各優先度ラベルは自身
が優先度を有するタスク情報(単数)とのリンクを有する
優先度リストと、共通の優先度を有する複数のタスク情
報を配列してなり、その先頭には優先度ラベルとのリン
クを有するタスク情報が位置するタスク情報リストとを
有し、前記検出手段は、管理リストにおけるタスク情報
からデッドラインが間近に迫ったタスク情報を全て検出
して、選択手段は検出手段によって検出された複数のタ
スク情報とのリンクを有する優先度ラベルを検出する検
出部と、検出部によって検出された複数の優先度ラベル
から、より優先度が高いものを選択する選択部とを備え
ることを特徴としたものであり、請求項6と同様の効果
を奏する。
【0136】また請求項8に記載の発明は、選択手段は
検出部によって検出された優先度リストの優先度の総和
をとる総和部と、ゼロから総和までの整数区間を、優先
度の大小に応じて各優先度ラベルに割り当てる割り当て
部t,ゼロから総和までの乱数を発生する乱数発生部
と、どの優先度ラベルに割り当てられた区間内に乱数が
発生したかを判定する判定部とを備え、前記選択部は判
定された優先度ラベルとのリンクを有するタスク情報を
選択することを特徴としたものであり、請求項7と同様
の効果を奏する。
【0137】また請求項9に記載の発明は、各タスク情
報は、当該タスク情報の実行中断時におけるハードウェ
アに関する情報を含んでいることを特徴としたものであ
り、請求項7と同様の効果を奏する。
【図面の簡単な説明】
【図1】第1実施形態が対象とするコンピュータシステ
ムのモデル図である。
【図2】第1実施形態におけるスケジューラの構成と管
理・選択リストのデータ構造を示す図である。
【図3】優先度管理ラベルのデータ構造図である。
【図4】タスク選択データのデータ構造図である。
【図5】第1実施形態における、タスク選択処理のフロ
ーチャートである。
【図6】第1実施形態における、タスク選択データのリ
スト構造の組み替え処理のフローチャートである。
【図7】管理・選択リストの作成処理のフロ−チャ−ト
である。
【図8】各アプリケ−ションk(k=0,1,2,3・・・・・K)から優
先度管理ラベルを生成する処理についてのフロ−チャ−
トである。
【図9】管理・選択リストに優先度管理ラベル及びタス
ク選択データを追加する処理のフロ−チャ−トである。
【図10】管理リストの最後尾に生成したタスク選択デ
ータを追加する処理のフロ−チャ−トである。
【図11】優先度管理ラベルの選択リストの最後尾に生
成したタスク選択データを追加する処理のフロ−チャ−
トである。
【図12】(a)〜(c)フロ−チャ−トの処理によっ
て優先度管理ラベルの配下のタスク選択データの順序が
入れ代わる様子を説明するための説明図である。
【図13】フロ−チャ−トの処理によって管理・選択リ
ストが作成される様子を示した説明図である。
【図14】フロ−チャ−トの処理によって管理・選択リ
ストが作成される様子を示した説明図である。
【図15】優先度が高いタスクの実行確率を説明するた
めの管理・選択リストの構造図である。
【図16】(a)〜(b)本発明の第1の実施形態にお
けるスケジューラ12の管理・選択リストのデータ構造
がタスク選択データの追加によって変遷する様子を示す
図である。
【図17】(a)〜(c)本発明の第1の実施形態にお
けるスケジューラ12の管理・選択リストのデータ構造
がタスク選択データ及び優先度管理ラベルの追加によっ
て変遷する様子を示す図である。
【図18】本発明の第2実施形態におけるスケジューラ
12の管理・選択リストのデータ構造である。
【図19】第2実施形態における優先度管理ラベルのデ
ータ構造図である。
【図20】第2実施形態におけるタスク選択データのデ
ータ構造図である。
【図21】本発明の第2実施形態における、タスク選択
処理のフローチャートである。
【図22】本発明の第2実施形態における、優先度決定
処理のフローチャートである。
【図23】本発明の第2実施形態におけるスケジューラ
12の管理・選択リストのデータ構造が変遷する様子を
示す図である。
【図24】本発明の第2実施形態におけるスケジューラ
12の管理・選択リストのデータ構造が変遷する様子を
示す図である。
【図25】本発明の第2実施形態におけるスケジューラ
12の管理・選択リストのデータ構造が変遷する様子を
示す図である。
【図26】本発明の第2実施形態におけるスケジューラ
12の管理・選択リストのデータ構造が変遷する様子を
示す図である。
【図27】従来の手法である優先度適用型ラウンドロビ
ン法によるデータ構造図である。
【図28】(a)従来の手法である優先度適用型ラウン
ドロビン法によるタスク選択データのリスト構造の組み
替え前の図である。 (b)従来の手法である優先度適用型ラウンドロビン法
によるタスク選択データのリスト構造の組み替え後の図
である。
【図29】従来の手法である確率過程型タスク選択法に
よるデータ構造図である。
【図30】従来の手法である確率過程型タスク選択法に
おけるリストにおいて、優先度が低いタスクが少ないと
きのデータ構造図である。
【図31】従来の手法である確率過程型タスク選択法に
おける待ちリストにおいて、同優先度タスクが多数存在
するときのデータ構造図である。
【符号の説明】
12 スケジューラ 11 優先度設定部 21 管理・選択リスト 22 乱数発生部 23 制御部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 藤田 光子 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 石川 亮 大阪府門真市大字門真1006番地 松下電器 産業株式会社内

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 各タスクの実行に関する情報であるタス
    ク情報を管理するための管理リストと、各タスクを切り
    替えながらプロセッサに実行させるスケジューラとを備
    えるタスク管理装置であって、 管理リストは互いに相異なる優先度を示す優先度ラベル
    を配列してなり、各優先度ラベルは、その優先度を有す
    る一のタスクのタスク情報(単数)とのリンクを有する優
    先度リストと、 優先度ラベルとのリンクを有するタスク情報を先頭に配
    置し、その配下に当該タスク情報と同一優先度を有する
    複数のタスク情報を配列してなるタスク情報リストとを
    有し、 前記スケジューラは優先度の高低に基づいて、何れかの
    優先度ラベルを選ぶ選択手段と、 選ばれた優先度ラベルとのリンクを有するタスク情報に
    基づいて一つのタスク情報をプロセッサに実行させる実
    行制御手段とを備えることを特徴とするタスク管理装
    置。
  2. 【請求項2】 請求項1において選択手段は、 優先度リストに並べられた優先度の総和をとる総和部
    と、 ゼロから総和までの整数区間を、優先度の大小に応じて
    各優先度ラベルに割り当てる割り当て部と、 ゼロから総和までの乱数を発生する乱数発生部と、 どの優先度ラベルに割り当てられた区間内に乱数が発生
    したかを判定する判定部と、 判定された優先度ラベルとのリンクを有するタスク情報
    に基づいてプロセッサを制御する第1制御部とを備える
    ことを特徴とするタスク管理装置。
  3. 【請求項3】 請求項2において前記実行制御手段は前
    記タスク情報リストにおける先頭のタスク情報のタスク
    の実行が行われると、その実行済みのタスク情報を前記
    配列の最後尾に移動させて次順のタスク情報を先頭に繰
    り上げる第2制御部を備えることを特徴とするタスク管
    理装置。
  4. 【請求項4】 前記請求項3において各タスク情報は、 当該タスク情報の実行中断時のハードウェアに関する情
    報を対応づけていることを特徴とするタスク管理装置。
  5. 【請求項5】 請求項4においてタスク管理装置は、 新たに実行すべきタスクが発生すると、その優先度を検
    出する第1検出手段と、 検出された優先度と同値の優先度を示すラベルが優先度
    リストに存在するか否かを判定する判定手段と、 存在すると判定されると、その検出された優先度ラベル
    とのリンクを既に有するタスク情報と、新たに実行すべ
    きタスクのタスク情報との間のリンクを形成する第1リ
    ンク形成手段と、 存在しないと判定されると、検出された優先度を示す優
    先度ラベルを優先度リストに追記する追記手段と、 追記手段によって追記された優先度ラベルと、新たに実
    行すべきタスクとを対応づけるリンクを形成する第2リ
    ンク形成手段とを備えることを特徴とするタスク管理装
  6. 【請求項6】 実行周期を示すデッドラインと、当該デ
    ッドラインに対しての時間精度を示す優先度とが付され
    た複数のタスクをプロセッサに実行させるスケジューラ
    を備えるタスク管理装置であって、 スケジューラは、 現在時刻を計時する計時手段と、 現在時刻を参照して、デッドラインが一定時間内に迫っ
    たタスク情報を全て検出する検出手段と、 検出手段によって検出された複数のタスク情報から何れ
    か一つをその優先度の高低に基づいて選択する選択手段
    と、 選択されたタスク情報に基づいてプロセッサを制御する
    実行制御手段とを備えることを特徴とするタスク管理装
    置。
  7. 【請求項7】 請求項6においてタスク管理装置は、 優先度を示す優先度ラベルを配列してなり、 各優先度ラベルは自身が優先度を有するタスク情報(単
    数)とのリンクを有する優先度リストと、 共通の優先度を有する複数のタスク情報を配列してな
    り、その先頭には優先度ラベルとのリンクを有するタス
    ク情報が位置するタスク情報リストとを有し、 前記検出手段は、 管理リストにおけるタスク情報からデッドラインが間近
    に迫ったタスク情報を全て検出して、 選択手段は検出手段によって検出された複数のタスク情
    報とのリンクを有する優先度ラベルを検出する検出部
    と、 検出部によって検出された複数の優先度ラベルから、よ
    り優先度が高いものを選択する選択部とを備えることを
    特徴とするタスク管理装置
  8. 【請求項8】 請求項7において選択手段は検出部によ
    って検出された優先度リストの優先度の総和をとる総和
    部と、 ゼロから総和までの整数区間を、優先度の大小
    に応じて各優先度ラベルに割り当てる割り当て部と、 ゼロから総和までの乱数を発生する乱数発生部と、 どの優先度ラベルに割り当てられた区間内に乱数が発生
    したかを判定する判定部とを備え、 前記選択部は判定された優先度ラベルとのリンクを有す
    るタスク情報を選択することを特徴とするタスク管理装
    置。
  9. 【請求項9】 請求項8において各タスク情報は、 当該タスク情報の実行中断時におけるハードウェアに関
    する情報を含んでいることを特徴とするタスク管理装
    置。
JP9030895A 1996-02-14 1997-02-14 同優先度タスクの急増に伴う実行確率の変動を吸収することができるタスク管理装置 Pending JPH09282184A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9030895A JPH09282184A (ja) 1996-02-14 1997-02-14 同優先度タスクの急増に伴う実行確率の変動を吸収することができるタスク管理装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2674296 1996-02-14
JP8-26742 1996-02-14
JP9030895A JPH09282184A (ja) 1996-02-14 1997-02-14 同優先度タスクの急増に伴う実行確率の変動を吸収することができるタスク管理装置

Publications (1)

Publication Number Publication Date
JPH09282184A true JPH09282184A (ja) 1997-10-31

Family

ID=26364553

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9030895A Pending JPH09282184A (ja) 1996-02-14 1997-02-14 同優先度タスクの急増に伴う実行確率の変動を吸収することができるタスク管理装置

Country Status (1)

Country Link
JP (1) JPH09282184A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004520655A (ja) * 2001-05-08 2004-07-08 イーエムシー コーポレイション 分散型コンピュータシステムにおける資源の選択
JP2005190461A (ja) * 2003-12-05 2005-07-14 Yokogawa Electric Corp 多変数伝送器及び多変数伝送器の演算処理方法
JP2007221323A (ja) * 2006-02-15 2007-08-30 Sony Computer Entertainment Inc 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
US7360062B2 (en) 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7401207B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7401208B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
KR101421603B1 (ko) * 2013-01-30 2014-07-22 아주대학교산학협력단 사이버 물리시스템의 실시간 스케줄링 방법
KR20210022502A (ko) * 2019-08-20 2021-03-03 성균관대학교산학협력단 부하 최소화를 위한 태스크의 오프셋 도출 방법 및 이를 위한 장치
US11822967B2 (en) 2019-08-20 2023-11-21 Research & Business Foundation Sungkyunkwan University Task distribution method for minimizing preemption between tasks and apparatus for performing the same

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004520655A (ja) * 2001-05-08 2004-07-08 イーエムシー コーポレイション 分散型コンピュータシステムにおける資源の選択
US8145885B2 (en) 2003-04-25 2012-03-27 International Business Machines Corporation Apparatus for randomizing instruction thread interleaving in a multi-thread processor
US7360062B2 (en) 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7401207B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7401208B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US7827388B2 (en) 2003-04-25 2010-11-02 International Business Machines Corporation Apparatus for adjusting instruction thread priority in a multi-thread processor
JP4636428B2 (ja) * 2003-12-05 2011-02-23 横河電機株式会社 多変数伝送器及び多変数伝送器の演算処理方法
JP2005190461A (ja) * 2003-12-05 2005-07-14 Yokogawa Electric Corp 多変数伝送器及び多変数伝送器の演算処理方法
JP2007221323A (ja) * 2006-02-15 2007-08-30 Sony Computer Entertainment Inc 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
JP4519082B2 (ja) * 2006-02-15 2010-08-04 株式会社ソニー・コンピュータエンタテインメント 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
KR101421603B1 (ko) * 2013-01-30 2014-07-22 아주대학교산학협력단 사이버 물리시스템의 실시간 스케줄링 방법
KR20210022502A (ko) * 2019-08-20 2021-03-03 성균관대학교산학협력단 부하 최소화를 위한 태스크의 오프셋 도출 방법 및 이를 위한 장치
US11822967B2 (en) 2019-08-20 2023-11-21 Research & Business Foundation Sungkyunkwan University Task distribution method for minimizing preemption between tasks and apparatus for performing the same

Similar Documents

Publication Publication Date Title
Hoare Monitors: An operating system structuring concept
US6272517B1 (en) Method and apparatus for sharing a time quantum
Fohler Joint scheduling of distributed complex periodic and hard aperiodic tasks in statically scheduled systems
US8046558B2 (en) File system having predictable real-time performance
Anderson et al. Real-time computing with lock-free shared objects
Tindell et al. Fixed priority scheduling of hard real-time multi-media disk traffic
US7827554B2 (en) Multi-thread multimedia processing
EP2300910B1 (en) Scheduler instances in a process
JP3306741B2 (ja) マルチメディア・ストーリ提供方法及び装置
KR101475544B1 (ko) 공유 메모리 풀을 사용한 디지털 데이터 관리
EP0790557A2 (en) Task managemant apparatus
JP2001051860A (ja) マルチスレッド処理装置及び処理方法並びにマルチスレッドプログラムを格納したコンピュータ可読の記録媒体
JP2008123045A (ja) プロセッサ
EP1899848A2 (en) Gpu timeline with render-ahead queue
JP2003044295A (ja) スリープキュー管理
JPH09282184A (ja) 同優先度タスクの急増に伴う実行確率の変動を吸収することができるタスク管理装置
JP2004288162A (ja) 同期タスクを利用したオペレーティングシステムアーキテクチャ
JP5628222B2 (ja) スケジューラ
JP2005258920A (ja) マルチスレッド実行方法、マルチスレッド実行プログラム、およびマルチスレッド実行装置
EP0913770A2 (en) Method and apparatus for sharing a time quantum
KR100467603B1 (ko) 태스크 기반의 비선형 하이퍼비디오 편집방법 및 그 장치
US8120610B1 (en) Methods and apparatus for using aliases to display logic
Bouakaz et al. Design of safety-critical Java level 1 applications using affine abstract clocks
JP4754531B2 (ja) デバイスへのアクセス制御方法および処理装置
Tindell et al. Scheduling Hard Real-Time Multi-Media Disk Traffic

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051108

A521 Written amendment

Effective date: 20060110

Free format text: JAPANESE INTERMEDIATE CODE: A523

A131 Notification of reasons for refusal

Effective date: 20080115

Free format text: JAPANESE INTERMEDIATE CODE: A131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080311

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

Effective date: 20080408

Free format text: JAPANESE INTERMEDIATE CODE: A01

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)

Effective date: 20080502

Free format text: JAPANESE INTERMEDIATE CODE: A61

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Year of fee payment: 3

Free format text: PAYMENT UNTIL: 20110516

LAPS Cancellation because of no payment of annual fees