JP2003067200A - 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体 - Google Patents

演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体

Info

Publication number
JP2003067200A
JP2003067200A JP2001258501A JP2001258501A JP2003067200A JP 2003067200 A JP2003067200 A JP 2003067200A JP 2001258501 A JP2001258501 A JP 2001258501A JP 2001258501 A JP2001258501 A JP 2001258501A JP 2003067200 A JP2003067200 A JP 2003067200A
Authority
JP
Japan
Prior art keywords
task
control block
tasks
condition
pointer
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
JP2001258501A
Other languages
English (en)
Inventor
Atsushi Togawa
敦之 戸川
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2001258501A priority Critical patent/JP2003067200A/ja
Publication of JP2003067200A publication Critical patent/JP2003067200A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 複数のタスクを一度に起動するための処理を
一定時間に抑える。 【解決手段】 オペレーティング・システムは、タスク
を一時的に停止させる機能と、停止しているタスクを再
開する機能を提供する。各タスク毎に、そのタスクの再
開後に起動すべきタスクのうち1つ(又はその一部)が
記録されており、あるタスクAが再開されたとき、起動
すべきタスクとして記録されているタスクを再開する処
理をタスクA自身が行うように実装する。そして、複数
のタスクを一度に起動する操作の呼び出し時には、起動
すべきタスクのうち1つだけ(又は、あり限定された数
だけ)起動するようにする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラムを実行
することにより所定の処理サービスを提供する演算処理
システム、コンピュータ・システム上でのタスク制御方
法、並びに記憶媒体に係り、特に、プログラム中に複数
の制御の流れ(タスク)が存在するタイプの演算処理シ
ステム、コンピュータ・システム上でのタスク制御方
法、並びに記憶媒体に関する。
【0002】更に詳しくは、本発明は、ある条件が満た
されるまでそのタスクがプロセッサによる処理対象とし
て選択されないよう制御する機能を備えた演算処理シス
テム、コンピュータ・システム上でのタスク制御方法、
並びに記憶媒体に係り、特に、複数のタスクを一度に起
動するための処理を一定時間に抑えた演算処理システ
ム、コンピュータ・システム上でのタスク制御方法、並
びに記憶媒体に関する。
【0003】
【従来の技術】昨今のLSI(Large Scale Integratio
n)技術における革新的な進歩とも相俟って、さまざま
なタイプの情報処理機器や情報通信機器が開発・市販さ
れ、日常生活に深く浸透するに至っている。この種の機
器では、CPU(Central Processing Unit)やその他
のプロセッサが所定のプログラム・コードを実行するこ
とによりさまざまな処理サービスを提供するようになっ
ている。
【0004】ところで、プログラム設計において、プロ
グラム中に制御の流れ(「タスク」とも呼ばれる)を複
数存在させることが有用な場合がある。ここで、複数の
制御の流れとは、図5に示すように、プログラムの処理
の流れすなわちフローチャート中に「現在実行中の地
点」が複数個あることを意味する。同図に示す例では、
ある時点T1では、流れIにおいてステップS1が、流
れIIにおいてステップS3が、それぞれ実行される。そ
して、これに対し、時間が経過して、次の時点T1で
は、流れIにおいてステップS2が、流れIIにおいてス
テップS3が、それぞれ実行されるようになる。
【0005】このような場合、実際に計算を進める実体
であるプロセッサの数よりも、タスクの数が多くなるこ
とがよくある。そこで、プロセッサによって処理される
タスクをオペレーティング・システム(OS)が頻繁に
切り替えることによって、各タスクを擬似的に並列に実
行するという手法が広く採用されている。
【0006】複数のタスクが存在するシステムでは、あ
るタスクが特定の処理を進める前に、他のタスクがある
処理を完了していなければならないといった制約条件が
しばしば必要となる。このようなシステムの実現をサポ
ートするために、多くのオペレーティング・システム
は、ある条件が満たされるまでタスクの実行を停止させ
る機能、すなわち、ある条件が満たされるまでそのタス
クがプロセッサによる処理対象として選択されないよう
制御する機能を備えている。また、ある条件が満たされ
たことをプログラムがオペレーティング・システムに通
知する機能も備えている。
【0007】以下、本明細書中では、あるタスクの実行
がオペレーティング・システムによって停止させられて
いるとき、そのタスクは「待ち状態」にあると言うこと
にする。また、タスクが待ち状態にないとき、そのタス
クは「実行可能状態」にあると言うことにする。
【0008】タスクがいつ待ち状態に移行すべきか、又
は、いつ実行可能状態に復帰すべきかをオペレーティン
グ・システムに伝える手段の1つとして、条件変数が知
られている。この機構は、タスクが待っている条件を抽
象化した概念である条件変数と、その条件変数に対して
適用可能な以下の3つの操作を提供している。
【0009】● wait操作:操作を実行したタスク
を待ち状態へ遷移させる. ● signal操作:この条件変数に対してwait
操作を行い、それ以降、signal,signal_
all操作によって起動されていないタスクのうちの1
つを実行可能状態へ遷移させる ● signal_all操作 この条件変数に対してwait操作を行い、それ以降、
signal,signal_all操作によって起動
されていないすべてのタスクを実行可能状態へ遷移させ
る。
【0010】なお、条件変数に関しては、例えば、C.
A. R. Hoare著の論文"Monitors: anoperating system s
tructuring concept"(Communications of the ACM, Vo
l. 17, Issue 10, pp. 549-557)などに詳しい説明がな
されている。
【0011】上述したような条件変数を用いて、ある条
件が満たされるまでタスクの実行を停止させることが可
能である。例えば、処理(入出力処理など)を依頼した
いタスクと、依頼を処理する役割を担うタスクが存在し
ているものとする。処理を依頼するタスクは、処理が完
了するまで待つ必要がある。この待ち動作を実現するた
めに条件変数を使うとよい。
【0012】より具体的には、処理を行うタスクが依頼
を行うタスクに処理の完了を伝えるための条件変数"c
ompletion"と、依頼を行うタスクが処理を行
うタスクに依頼の到着を伝えるための条件変数"arr
ival"を用意する。さらに、依頼を行うタスクは、
図6にフローチャートの形式で示した手順で処理を行う
とともに、依頼を処理するタスクは図7にフローチャー
トの形式で示した手順で処理を行えばよい。
【0013】依頼を行うタスクは、図6に示すように、
まず、依頼内容を定め(ステップS101)、次いで、
処理タスクが休眠中か否かを判別する(ステップS10
2)。休眠中であれば、ステップS103において、条
件変数"arrival"に対してsignal操作を行
う。次ステップS104では、条件変数"comple
tion"に対してwait操作を行う。そして、ステ
ップS105において、故障発生の有無を判別して、故
障が発生していなければ本処理ルーチンを正常終了し、
故障が発生していればエラー発生として本処理ルーチン
を終了させる。
【0014】また、処理を行うタスクは、図7に示すよ
うに、ステップS111において条件変数"arriv
al"に対してwait操作を行い、ステップS112
において依頼を処理する。ステップS113では故障の
発生の有無を判別し、故障が発生していればステップS
114において条件変数"completion"にsi
gnal_all操作を行い、故障が発生していなけれ
ばステップS115において条件変数"complet
ion"にsignal操作を行う。そして、ステップ
S116において依頼待ちタスクの有無を判別し、依頼
待ちタスクがあればステップS112に復帰し、依頼待
ちタスクがなければステップS111に復帰して、上述
と同様の処理を繰り返す。
【0015】図6及び図7において、網掛けの領域内で
は、依頼タスクと処理タスクが同時に実行されないよう
に、排他制御が行われているものとする(但し、wai
t中は除く)。
【0016】ここで問題となるのは、wait操作によ
って多数のタスクが待ち状態にあるときに、signa
l_all操作を実行する場合である。このような場
合、signal_all操作を行ったタスクによっ
て、待ち状態にあるタスクを1つずつ起動するよう実現
すると、起動されるタスクの増加に伴って、signa
l_all操作に要する時間が増大することになる。s
ignal_all操作はしばしば割り込み処理中に実
行する必要がある。
【0017】さらに、割り込み処理中は、より優先度が
低い割り込みの処理や、通常処理は一切行われない。こ
のため、優先度が低い割り込み処理や通常処理の応答時
間が、wait操作によって待ち状態にあるタスクの数
によって変化することになる。ところが、この数はあら
かじめ予測できない場合があり、応答時間がある上限値
を超えないことを保証することが困難になるという問題
が生じる。
【0018】もう1つの問題は、待ち状態にあるタスク
を1つずつ起動している間、スケジューラの動作を停止
させる必要が生じるということである。スケジューラの
動作を停止させていない場合、一部のタスクを起動した
時点でこれらのタスクに制御が移り、タスクを起動する
処理が完了しないままとなることが考えられる。sig
nal_all操作を実行しているタスクの優先度が、
起動を待っているタスクの優先度よりも低い場合、これ
らの待っているタスクの起動が不当に遅らせられること
になる。このような事態を防ぐためには、すべてのタス
クの起動が完了するまでスケジューラの動作を凍結して
おけばよい。しかしながら、この場合、割り込み処理に
よって高優先度のタスクを起動しようとしても、sig
nal_all操作が完了するまで起動が延期されてし
まうという問題が生じる。
【0019】
【発明が解決しようとする課題】本発明の目的は、プロ
グラム中に複数の制御の流れ(タスク)が存在するタイ
プの優れた演算処理システム、コンピュータ・システム
上でのタスク制御方法、並びに記憶媒体を提供すること
にある。
【0020】本発明の更なる目的は、ある条件が満たさ
れるまでそのタスクがプロセッサによる処理対象として
選択されないよう制御する機能を備えた、優れた演算処
理システム、コンピュータ・システム上でのタスク制御
方法、並びに記憶媒体を提供することにある。
【0021】本発明の更なる目的は、複数のタスクを一
度に起動するための処理を一定時間に抑えることができ
る、優れた演算処理システム、コンピュータ・システム
上でのタスク制御方法、並びに記憶媒体を提供すること
にある。
【0022】
【課題を解決するための手段及び作用】本発明は、上記
課題を参酌してなされたものであり、その第1の側面
は、複数のタスクを管理する演算処理システムであっ
て、タスクを待ち状態にして一時的に停止させるタスク
停止手段と、所定の条件に対して待ち状態になっている
タスクを優先度順に従って並べ替える優先度順キューイ
ング手段と、所定の条件の到来に応答して、停止してい
るタスクを再開させるタスク再開手段とを備え、前記タ
スク再開手段は、複数のタスクを一度に起動する処理を
行う際に、起動すべきタスクの1つ、又は、ある限定さ
れた数のタスクだけ起動する、ことを特徴とする演算処
理システムである。
【0023】但し、ここで言う「システム」とは、複数
の装置(又は特定の機能を実現する機能モジュール)が
論理的に集合した物のことを言い、各装置や機能モジュ
ールが単一の筐体内にあるか否かは特に問わない。
【0024】また、本発明の第2の側面は、コンピュー
タ・システム上で実行される複数のタスクを管理するた
めのタスク制御方法であって、タスクを待ち状態にして
一時的に停止させるタスク停止ステップと、所定の条件
に対して待ち状態になっているタスクを優先度順に従っ
て並べ替える優先度順キューイング・ステップと、所定
の条件の到来に応答して、停止しているタスクを再開さ
せるタスク再開ステップとを備え、前記タスク再開ステ
ップでは、複数のタスクを一度に起動する処理を行う際
に、起動すべきタスクの1つ、又は、ある限定された数
のタスクだけ起動する、ことを特徴とするコンピュータ
・システム上でのタスク制御方法である。
【0025】ここで、前記優先度キューイング手段又は
ステップは、各タスク毎にそのタスクの起動後に起動す
べきタスクを記録し、前記タスク再開手段又はステップ
は、タスクが待ち状態から再開したときに、該タスクに
記録されているタスクを待ち状態から再開させる処理を
行わせるようにしてもよい。
【0026】また、前記優先度キューイング手段又はス
テップは、各タスク毎にそのタスクの次に優先度が高い
タスクを起動すべきタスクとして記録するようにしても
よい。
【0027】本発明の第1の側面に係る演算処理システ
ム、あるいは、本発明の第2の側面に係るコンピュータ
・システム上でのタスク制御方法によれば、タスクを一
時的に停止させる機能と、停止しているタスクを再開す
る機能が提供されている。そして、各タスク毎にそのタ
スクの再開後に起動すべきタスクのうち1つ(又はその
一部)が記録されており、あるタスクが再開されたとき
起動すべきタスクとして記録されている次のタスクを再
開する処理をタスク自身が行うように実装されている。
そして、複数のタスクを一度に起動する操作の呼び出し
時には、起動すべきタスクのうち1つだけ(又は、ある
限定された数だけ)起動するようになっている。
【0028】したがって、ある条件の到来により一度に
複数のタスクを再開させる操作を実行する際に、スケジ
ューラの動作を凍結される期間を一定時間(起動するタ
スクの数に依存しない時間)に抑えることが可能とな
る。これによって、高優先度タスクの最大応答時間を短
縮することが可能となる。
【0029】また、一度に複数のタスクを再開させる操
作に要する時間を一定時間(起動するタスクの数に依存
しない時間)に抑えることが可能となる。これによっ
て、割り込みハンドラのように処理時間に対して厳しい
制約があるプログラム中でもかかる操作を行うことが可
能となる。
【0030】また、本発明の第3の側面は、複数のタス
クを管理する演算処理システムであって、タスクを停止
させるための条件を規定した条件変数毎に、その条件変
数を待つ最も優先順位の高いタスク制御ブロックへのポ
インタを格納した条件変数制御ブロックを生成する条件
変数制御ブロック生成手段と、同じ条件変数で停止させ
られている各タスク毎に、そのタスクの次に優先度が高
いタスクへのポインタを格納したタスク制御ブロックを
生成するタスク制御ブロック生成手段とを備え、所定の
条件の到来に応答して、該当する条件変数制御ブロック
はポインタが指すタスク制御ブロックを参照して該当す
るタスクを起動させた後、当該タスク制御ブロックへの
ポインタを失い、各タスクは、起動後に自分のタスク制
御ブロックを参照して、自分の次に優先度が高いタスク
を起動する、ことを特徴とする演算処理システムであ
る。
【0031】また、本発明の第4の側面は、コンピュー
タ・システム上で実行される複数のタスクを管理するた
めのタスク制御方法であって、タスクを停止させるため
の条件を規定した条件変数毎に、その条件変数を待つ最
も優先順位の高いタスク制御ブロックへのポインタを格
納した条件変数制御ブロックを生成する条件変数制御ブ
ロック生成ステップと、同じ条件変数で停止させられて
いる各タスク毎に、そのタスクの次に優先度が高いタス
クへのポインタを格納したタスク制御ブロックを生成す
るタスク制御ブロック生成ステップと、所定の条件の到
来に応答して、該当する条件変数制御ブロックのポイン
タが指すタスク制御ブロックを参照して該当するタスク
を起動させた後、当該タスク制御ブロックへのポインタ
をなくすステップと、各タスクが起動後に自分のタスク
制御ブロックを参照して自分の次に優先度が高いタスク
を起動するステップと、を具備することを特徴とするコ
ンピュータ・システム上でのタスク制御方法である。
【0032】本発明の第3の側面に係る演算処理システ
ム、あるいは、本発明の第4の側面に係るコンピュータ
・システム上でのタスク制御方法によれば、同じ条件変
数により待ち状態となっているすべてのタスクを一度に
再開させる操作によって起動されるのは、待ち行列中で
最も優先度が高いタスクだけである。また、待ち行列の
n番目に位置するn番目に位置するタスクの起動は、n
−1番目のタスクが本発明に係る処理を実行することに
よって行われる。
【0033】したがって、すべてのタスクを再開させる
操作に要する時間を、起動すべきタスクの個数に依存す
ることなく一定時間に抑えることができる。これによっ
て、割り込みハンドラのように処理時間に対して厳しい
制約があるプログラム中でもかかる操作を行うことが可
能となる。
【0034】また、すべてのタスクを再開させる操作を
実行する際に、スケジューラの動作を凍結される期間を
一定時間(起動するタスクの数に依存しない時間)に抑
えることが可能となるので、高優先度タスクの最大応答
時間を短縮することができる。
【0035】また、本発明の第5の側面は、複数のタス
クの管理をコンピュータ・システム上で実行するように
記述されたコンピュータ・ソフトウェアをコンピュータ
可読形式で物理的に格納した記憶媒体であって、前記コ
ンピュータ・ソフトウェアは、タスクを待ち状態にして
一時的に停止させるタスク停止ステップと、所定の条件
に対して待ち状態になっているタスクを優先度順に従っ
て並べ替える優先度順キューイング・ステップと、所定
の条件の到来に応答して、停止しているタスクを再開さ
せるタスク再開ステップとを備え、前記タスク再開ステ
ップでは、複数のタスクを一度に起動する処理を行う際
に、起動すべきタスクの1つ、又は、ある限定された数
のタスクだけ起動する、ことを特徴とする記憶媒体であ
る。
【0036】また、本発明の第6の側面は、複数のタス
クの管理をコンピュータ・システム上で実行するように
記述されたコンピュータ・ソフトウェアをコンピュータ
可読形式で物理的に格納した記憶媒体であって、前記コ
ンピュータ・ソフトウェアは、タスクを停止させるため
の条件を規定した条件変数毎に、その条件変数を待つ最
も優先順位の高いタスク制御ブロックへのポインタを格
納した条件変数制御ブロックを生成する条件変数制御ブ
ロック生成ステップと、同じ条件変数で停止させられて
いる各タスク毎に、そのタスクの次に優先度が高いタス
クへのポインタを格納したタスク制御ブロックを生成す
るタスク制御ブロック生成ステップと、所定の条件の到
来に応答して、該当する条件変数制御ブロックのポイン
タが指すタスク制御ブロックを参照して該当するタスク
を起動させた後、当該タスク制御ブロックへのポインタ
をなくすステップと、各タスクが起動後に自分のタスク
制御ブロックを参照して自分の次に優先度が高いタスク
を起動するステップと、を具備することを特徴とする記
憶媒体である。
【0037】本発明の第5及び第6の各側面に係る記憶
媒体は、例えば、様々なプログラム・コードを実行可能
な汎用コンピュータ・システムに対して、コンピュータ
・ソフトウェアをコンピュータ可読な形式で提供する記
憶媒体である。このような記憶媒体は、例えば、CD
(Compact Disc)やFD(Floppy Disc)、MO(Magne
to-Optical disc)などの着脱自在で可搬性の記憶媒体
である。ここで言う記憶媒体は、パッケージ・メディア
のみならず、プログラムが一時的若しくは永続的に格納
される半導体メモリや磁気ディスクなどで実現してもよ
い。あるいは、ネットワーク(ネットワークは無線、有
線の区別を問わない)などの伝送媒体などを経由してコ
ンピュータ・ソフトウェアを特定のコンピュータ・シス
テムに提供することも技術的に可能である。
【0038】このような記憶媒体は、コンピュータ・シ
ステム上で所定のコンピュータ・ソフトウェアの機能を
実現するための、コンピュータ・ソフトウェアと記憶媒
体との構造上又は機能上の協働的関係を定義したもので
ある。換言すれば、本発明の第5及び第6の各側面に係
る記憶媒体を介して所定のコンピュータ・ソフトウェア
をコンピュータ・システムにインストールすることによ
って、コンピュータ・システム上では協働的作用が発揮
され、本発明の第1及び第2の各側面に係る演算処理シ
ステム又はコンピュータ・システム上でのタスク制御方
法、あるいは、本発明の第3及び第4の各側面に係る演
算処理システム又はコンピュータ・システム上でのタス
ク制御方法と同様の作用効果を得ることができる。
【0039】本発明のさらに他の目的、特徴や利点は、
後述する本発明の実施例や添付する図面に基づくより詳
細な説明によって明らかになるであろう。
【0040】
【発明の実施の形態】以下、図面を参照しながら本発明
の実施形態について詳解する。
【0041】図1には、本発明の実施に供される演算処
理システム10のハードウェア構成を模式的に示してい
る。同図に示すように、演算処理システム10は、プロ
セッサ11と、RAM(Random Access Memory)12
と、ROM(Read Only Memory)13と、複数の入出力
装置14−1,14−2…と、タイマ15とを含んでい
る。
【0042】プロセッサ11は、演算処理システム10
のメイン・コントローラであり、オペレーティング・シ
ステム(OS)の制御下で、各種のプログラム・コード
を実行するようになっている。
【0043】オペレーティング・システムがプログラム
実行を管理・制御する単位は、一般に「タスク」と呼ば
れる。本実施形態に係る演算処理システム10では、プ
ログラム中に複数のタスクが存在することを許容する。
したがって、実際に計算を進める実体であるプロセッサ
11の個数よりも多くのタスクが存在することになる。
オペレーティング・システムは、プロセッサ11により
処理されるタスクを頻繁に切り替えることにより、各タ
スクを擬似的に並列に実行させるようになっている。
【0044】本実施形態に係るオぺレーティング・シス
テムは、タスクを一時的に停止させる機能と、停止して
いるタスクを再開する機能を提供する。前者の停止機能
は、あるタスクにおいて呼び出されたとき、そのタスク
自身が停止させられる。この停止機能を呼び出すときに
は、引数としてある値を指定する。また、後者の再開機
能を呼び出すときには、引数としてある1つの値xを与
える必要がある。前者の停止機能により停止しているタ
スクのうち、この停止機能の呼び出し時に引数として値
xを与えたすべてのタスクが再開される。
【0045】プロセッサ11は、バス16によって他の
機器類(後述)と相互接続されている。システム・バス
16上の各機器にはそれぞれ固有のメモリ・アドレス又
はI/Oアドレスが付与されており、プロセッサ11は
これらアドレスを指定することによって所定の機器への
アクセスが可能となっている。システム・バス16は、
アドレス・バス、データ・バス、コントロール・バスを
含む共通信号伝送路である。
【0046】RAM12は、書き込み可能なメモリであ
り、プロセッサ11において実行されるプログラム・コ
ードをロードしたり、実行プログラムの作業データを一
時格納するために使用される。プログラム・コードに
は、例えば、BIOS(BasicInput/Output System:基
本入出力システム)、周辺機器をハードウェア操作する
ためのデバイス・ドライバ、オペレーティング・システ
ム、アプリケーションなどが挙げられる。
【0047】ROM13は、所定のコードやデータを恒
久的に記憶するための不揮発メモリであり、例えば、B
IOSや始動時の自己診断プログラム(Power On Self
Test:POST)などを格納している。
【0048】入出力装置14には、ディスプレイ21を
接続するためのディスプレイ・インターフェース14−
1、キーボード22やマウス23のようなユーザ入力装
置を接続するためのユーザ入力装置インターフェース1
4−2、ハード・ディスク24やメディア・ドライブ2
5などの外部記憶装置を接続するための外部記憶装置イ
ンターフェース14−3、外部ネットワークと接続する
ためのネットワーク・インターフェース・カード(NI
C)14−4などが含まれる。
【0049】ディスプレイ・インターフェース14−1
は、プロセッサ11が発行する描画命令を実際に処理す
るための専用インターフェース・コントローラである。
ディスプレイ・インターフェース14−1において処理
された描画データは、例えばフレーム・バッファ(図示
しない)に一旦書き込まれた後、ディスプレイ21によ
って画面出力される。
【0050】HDD24は、記憶担体としての磁気ディ
スクを固定的に搭載した外部記憶装置であり(周知)、
記憶容量やデータ転送速度などの点で他の外部記憶装置
よりも優れている。通常、HDD24には、プロセッサ
11が実行すべきオペレーティング・システムのプログ
ラム・コードや、アプリケーション・プログラム、デバイ
ス・ドライバなどが不揮発的に格納されている。ソフト
ウェア・プログラムを実行可能な状態でHDD24上に
置くことをプログラムのシステムへの「インストール」
と呼ぶ。例えば、本発明を実現するオペレーティング・
システムや、複数のタスクが存在するように設計された
アプリケーション・プログラムをHDD24上にインス
トールすることができる。
【0051】メディア・ドライブ25は、CD(Compact
Disc)やMO(Magneto-Optical disc)、DVD(Dig
ital Versatile Disc)などの可搬型メディアを装填し
て、そのデータ記録面にアクセスするための装置であ
る。
【0052】可搬型メディアは、主として、ソフトウェ
ア・プログラムやデータ・ファイルなどをコンピュータ可
読形式のデータとしてバックアップすることや、これら
をシステム間で移動(すなわち販売・流通・配布を含む)
する目的で使用される。例えば、本発明を実現するオペ
レーティング・システムや、複数のタスクが存在するよ
うに設計されたアプリケーション・プログラムを、これ
ら可搬型メディアを利用して複数の機器間で物理的に流
通・配布することができる。
【0053】ネットワーク・インターフェース14−1
は、Ethernetなどの所定の通信プロトコルに従
って、システム10をLAN(Local Area Network)な
どの局所的ネットワーク、さらにはインターネットのよ
うな広域ネットワークに接続することができる。
【0054】ネットワーク上では、複数のホスト端末
(図示しない)がトランスペアレントな状態で接続さ
れ、分散コンピューティング環境が構築されている。ネ
ットワーク上では、ソフトウェア・プログラムやデータ
・コンテンツなどの配信が行うことができる。例えば、
本発明を実現するオペレーティング・システムや、複数
のタスクが存在するように設計されたアプリケーション
・プログラムを、ネットワーク経由でダウンロードする
ことができる。
【0055】各入出力装置14−1,14−2…には、
割り込みレベルが割り当てられており、所定のイベント
発生(例えばキーボード入力やマウス・クリックなどの
GUI処理や、ハード・ディスクにおけるデータ転送の
完了など)に応答して、割り込み要求信号線19を介し
てプロセッサ11に通知することができる。プロセッサ
11は、このような割り込み要求に応答して、対応する
割り込みハンドラを実行する。
【0056】タイマ15は、タイマ信号を所定周期で発
生させる装置である。タイマ15にも割り込みレベルが
割り当てられており、割り込み要求信号線19を介して
プロセッサ11に対して周期的な割り込みを発生する。
【0057】なお、図1に示すような演算処理システム
10の一例は、米IBM社のパーソナル・コンピュータ"
PC/AT(Personal Computer/Advanced Technolog
y)"の互換機又は後継機である。勿論、他のアーキテク
チャを備えたコンピュータを、本実施形態に係る演算処
理システム10として適用することも可能である。
【0058】上述したように、演算処理システム10の
実行環境を提供するオペレーティング・システムは、タ
スクを一時的に停止させる機能と、停止しているタスク
を再開する機能を提供する。前者の停止機能は、あるタ
スクにおいて呼び出されたとき、そのタスク自身が停止
させられる。この停止機能を呼び出すときには、引数と
してある値を指定する。また、後者の再開機能を呼び出
すときには、引数としてある1つの値xを与える必要が
ある。前者の停止機能により停止しているタスクのう
ち、この停止機能の呼び出し時に引数として値xを与え
たすべてのタスクが再開される。
【0059】オペレーティング・システムは、タスク間
の同期を制御するための条件変数や、条件変数によって
起動される各タスクを「データ・ブロック」にして管理
している。ここで、各タスク毎に用意されるデータ・ブ
ロックのことを「タスク制御ブロック」と呼び、各条件
変数毎に用意されるデータ・ブロックのことを「条件変
数制御ブロック」と呼ぶことにする。
【0060】図2には、オペレーティング・システムに
よって管理されるデータ・ブロックの構成例を示してい
る。
【0061】条件変数制御ブロックは、条件変数を待っ
ているタスクの中で、最も優先順位の高いタスクへのポ
インタ"first"を持つ。当該条件変数を待つタスク
が存在しない場合には、そのfirstポインタには0
が格納される。
【0062】また、各タスクのタスク制御ブロックは、
当該条件変数を待つ次のタスクへのポインタを保持す
る"next"と、その他スケジューリングなどに必要な
情報を変数として持っている。
【0063】next変数には、タスクがwait操作
によって待ち状態にある場合には、同じ条件変数を待つ
タスクを優先度準に並べた列において、このタスクの次
に位置しているタスクへのポインタが保持される。後続
のタスクがない場合はnextポインタには0が書き込
まれる。また、wait操作の終了直前に起動すべきタ
スクへのポインタがnext変数に書き込まれることも
ある。
【0064】signal_all操作が実行される直
前は、この条件変数に対するsignal操作の実行を
待っている各タスクに対応するタスク制御ブロックは、
図2に示すように、優先度順(降順)に従って並べられ
ている。また、条件変数制御ブロックのfirst変数
には、同じ条件変数を待つタスクの中で優先度が先頭と
なるタスク制御ブロックへのポインタが保持されてい
る。
【0065】図3には、signal_all操作が実
行された直後のデータ・ブロックの構成を示している。
同図に示すように、signal_all操作が実行さ
れた直後には、signal_all操作によって条件
変数制御ブロックのfirst変数に0が代入されると
ともに、先頭に位置するタスク制御ブロックのタスクが
起動される。このタスクは、タスク制御ブロックのne
xt変数を参照して次のタスクを起動する。そして、各
タスクは同様に、next変数を参照することによっ
て、後続のタスクを起動していく。
【0066】条件変数制御ブロックのfirst変数に
0が代入されることによって、この時点でsignal
_all操作は完了する。すなわち、signal_a
ll操作によって起動されるのは、待ち行列中で最も優
先度が高いタスクだけである。また、待ち行列中のn番
目に位置するタスクの起動は、signal_all操
作によらず、n−1番目のタスクが本発明に係る処理を
実行することによって行われる。
【0067】したがって、signal_all操作に
要する時間を、起動すべきタスクの個数に依存すること
なく一定時間に抑えることができる。これによって、割
り込みハンドラのように処理時間に対して厳しい制約が
あるプログラム中でもsignal_all操作を行う
ことが可能となる。
【0068】また、signal_all操作を実行す
る際に、スケジューラの動作を凍結される期間を一定時
間(起動するタスクの数に依存しない時間)に抑えるこ
とが可能となるので、高優先度タスクの最大応答時間を
短縮することができる。
【0069】図4には、本実施形態に係る演算処理シス
テム10上でのタスク管理の処理手順をフローチャート
の形式で示している。このタスク管理は、例えば、プロ
セッサ11の実行環境を提供するオペレーティング・シ
ステムによって実装される。同図に示すように、このタ
スク管理は、ある条件変数を待つ各タスク制御ブロック
を優先度順に並べ替える優先度順キューイング処理と、
signal_all操作を取り扱う処理と、各タスク
がnext変数に従って後続のタスクを起動していく後
続タスク起動処理によって構成される。以下、図示のフ
ローチャートを参照しながら、本実施形態に係るタスク
管理について説明する。
【0070】優先度順キューイング処理では、wait
操作を実行するタスクのタスク制御ブロックを、優先度
に従って待ち行列にキューイングする処理を行う。これ
は、優先度が高いタスクから低いタスクの順にタスク制
御ブロックが並ぶように、適切な挿入箇所を発見してタ
スク制御ブロックを挿入する処理であり、図4に示した
フローチャートのステップS1〜S9に相当する。
【0071】まず、ステップS1では、cv変数に該当
する条件変数の制御ブロックを代入する。そして、ステ
ップS2では、条件変数制御ブロックcvのfirst
変数が指すタスク制御ブロックと現行タスクの優先度を
比較する。
【0072】cv→firstが0ならば、現行タスク
のnextに0を代入し、cv→firstに現行タス
クのアドレスを代入する。cv→firstが0でな
く、且つ、現行タスクの方の優先度が高い場合には、c
vとcv→firstの間に現行タスクを挿入して(ス
テップS6,S7)、優先度順スケジューリング処理を
終了する。
【0073】他方、cv→firstの方の優先度が高
い場合には、さらにp変数にcv→firstを代入し
て(ステップS3)、タスク制御ブロックpの後続のタ
スクp→nextと現行タスクの優先度を比較する(ス
テップS4)。
【0074】タスクp→nextよりも現行タスクの方
の優先度が高い場合には、pとp→nextの間に現行
タスクを挿入して(ステップS8,S9)、優先度順ス
ケジューリング処理を終了する。
【0075】逆に、現行タスクよりもp→nextの方
の優先度が高い場合には、p変数に後続のタスクp→n
extを代入してから(ステップS5)、ステップS4
に戻り、同様の処理を繰り返す。
【0076】優先度順キューイング処理が終わると、タ
スクはwait状態に移行する(ステップS10)。こ
れによって、プロセッサ11は、現行タスクから解放さ
れて、他のタスクの実行を始めることができる。
【0077】該当する条件が到来して、signal_
all操作をする場合、まず、cv変数の該当条件変数
の制御ブロックを代入して(ステップS13)、該当条
件変数を待つタスクのうち最も優先度の高いタスクc→
firstが存在するか否かを判別する(ステップS1
4)。
【0078】該当条件変数を待つ優先度が最も高いタス
クc→firstが存在する場合には、これを実行可能
状態にする(ステップS15)。
【0079】そして、条件変数制御ブロックのfirs
t変数に0が代入されることによって、この時点でsi
gnal_all操作は完了する(ステップS16)。
【0080】このような処理手順に従ってタスク管理を
行うことにより、signal_all操作に要する時
間を、起動すべきタスクの個数に依存することなく一定
時間に抑えることができる。
【0081】一方、ステップS15において、該当条件
変数を待つ優先度が最も高いタスクc→firstが実
行可能状態になると、後続タスク起動処理が開始され
る。
【0082】すなわち、現行タスクは、その次に優先度
が高いタスクが存在するか否かを判別し(ステップS1
1)、存在する場合には、これを実行可能状態にする
(ステップS12)。そして、実行可能状態になったタ
スクは、さらにステップS11及びステップS12を実
行して、後続のタスクがなくなるまで後続タスク起動処
理が実行される。
【0083】本実施形態では、図2及び図3からも判る
ように、各タスク毎に、そのタスクの再開後に起動すべ
きタスクのうち1つ(又はその一部)が記録されてお
り、あるタスクAが再開されたとき、起動すべきタスク
として記録されているタスクを再開する処理をタスクA
自身が行うように実装されている。したがって、sig
nal_all操作は、該当する条件変数を待つ最も高
い優先度のタスクを起動するだけで完了することができ
る。
【0084】したがって、signal_all操作に
要する時間を、起動すべきタスクの個数に依存すること
なく一定時間に抑えることができる。これによって、割
り込みハンドラのように処理時間に対して厳しい制約が
あるプログラム中でもsignal_all操作を行う
ことが可能となる。
【0085】また、signal_all操作を実行す
る際に、スケジューラの動作を凍結される期間を一定時
間(起動するタスクの数に依存しない時間)に抑えるこ
とが可能となるので、高優先度タスクの最大応答時間を
短縮することができる。
【0086】[追補]以上、特定の実施例を参照しなが
ら、本発明について詳解してきた。しかしながら、本発
明の要旨を逸脱しない範囲で当業者が該実施例の修正や
代用を成し得ることは自明である。すなわち、例示とい
う形態で本発明を開示してきたのであり、本明細書の記
載内容を限定的に解釈するべきではない。本発明の要旨
を判断するためには、冒頭に記載した特許請求の範囲の
欄を参酌すべきである。
【0087】
【発明の効果】以上詳記したように、本発明によれば、
ある条件が満たされるまでそのタスクがプロセッサによ
る処理対象として選択されないよう制御する機能を備え
た、優れた演算処理システム、コンピュータ・システム
上でのタスク制御方法、並びに記憶媒体を提供すること
ができる。
【0088】また、本発明によれば、複数のタスクを一
度に起動するための処理を一定時間に抑えることができ
る、優れた演算処理システム、コンピュータ・システム
上でのタスク制御方法、並びに記憶媒体を提供すること
ができる。
【0089】本発明によれば、signal_all操
作を実行する際に、スケジューラの動作を凍結される期
間を一定時間(起動するタスクの数に依存しない時間)
に抑えることが可能となる。これによって、高優先度タ
スクの最大応答時間を短縮することが可能となる。
【0090】また、本発明によれば、signal_a
ll操作に要する時間を一定時間(起動するタスクの数
に依存しない時間)に抑えることが可能となる。これに
よって、割り込みハンドラのように処理時間に対して厳
しい制約があるプログラム中でもsignal_all
操作を行うことが可能となる。
【図面の簡単な説明】
【図1】本発明の実施に供される演算処理システム10
のハードウェア構成を模式的に示した図である。
【図2】オペレーティング・システムによって管理され
るデータ・ブロックの構成例を示した図(signal
_all操作の実行前)である。
【図3】オペレーティング・システムによって管理され
るデータ・ブロックの構成例を示した図(signal
_all操作の実行直後)である。
【図4】本実施形態に係る演算処理システム10上での
タスク管理の処理手順を示したフローチャートである。
【図5】複数の制御の流れを持つプログラムのフローチ
ャートを示した図である。
【図6】依頼を行うタスクの処理手順を示したフローチ
ャートである。
【図7】依頼を処理するタスクの処理手順を示したフロ
ーチャートである。
【符号の説明】
10…演算処理システム 11…プロセッサ 12…RAM 13…ROM 14…入出力装置 15…タイマ 16…システム・バス 19…割り込み要求線 21…ディスプレイ 22…キーボード 23…マウス 24…HDD 25…メディア・ドライブ

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】複数のタスクを管理する演算処理システム
    であって、 タスクを待ち状態にして一時的に停止させるタスク停止
    手段と、 所定の条件に対して待ち状態になっているタスクを優先
    度順に従って並べ替える優先度順キューイング手段と、 所定の条件の到来に応答して、停止しているタスクを再
    開させるタスク再開手段とを備え、 前記タスク再開手段は、複数のタスクを一度に起動する
    処理を行う際に、起動すべきタスクの1つ、又は、ある
    限定された数のタスクだけ起動する、ことを特徴とする
    演算処理システム。
  2. 【請求項2】前記優先度キューイング手段は、各タスク
    毎にそのタスクの起動後に起動すべきタスクを記録し、 前記タスク再開手段は、タスクが待ち状態から再開した
    ときに、該タスクに記録されているタスクを待ち状態か
    ら再開させる処理を行わせる、ことを特徴とする請求項
    1に記載の演算処理システム。
  3. 【請求項3】前記優先度キューイング手段は、各タスク
    毎にそのタスクの次に優先度が高いタスクを起動すべき
    タスクとして記録する、ことを特徴とする請求項2に記
    載の演算処理システム。
  4. 【請求項4】複数のタスクを管理する演算処理システム
    であって、 タスクを停止させるための条件を規定した条件変数毎
    に、その条件変数を待つ最も優先順位の高いタスク制御
    ブロックへのポインタを格納した条件変数制御ブロック
    を生成する条件変数制御ブロック生成手段と、 同じ条件変数で停止させられている各タスク毎に、その
    タスクの次に優先度が高いタスクへのポインタを格納し
    たタスク制御ブロックを生成するタスク制御ブロック生
    成手段とを備え、 所定の条件の到来に応答して、該当する条件変数制御ブ
    ロックはポインタが指すタスク制御ブロックを参照して
    該当するタスクを起動させた後、当該タスク制御ブロッ
    クへのポインタを失い、 各タスクは、起動後に自分のタスク制御ブロックを参照
    して、自分の次に優先度が高いタスクを起動する、こと
    を特徴とする演算処理システム。
  5. 【請求項5】コンピュータ・システム上で実行される複
    数のタスクを管理するためのタスク制御方法であって、 タスクを待ち状態にして一時的に停止させるタスク停止
    ステップと、 所定の条件に対して待ち状態になっているタスクを優先
    度順に従って並べ替える優先度順キューイング・ステッ
    プと、 所定の条件の到来に応答して、停止しているタスクを再
    開させるタスク再開ステップとを備え、 前記タスク再開ステップでは、複数のタスクを一度に起
    動する処理を行う際に、起動すべきタスクの1つ、又
    は、ある限定された数のタスクだけ起動する、ことを特
    徴とするコンピュータ・システム上でのタスク制御方
    法。
  6. 【請求項6】前記優先度キューイング・ステップでは、
    各タスク毎にそのタスクの起動後に起動すべきタスクを
    記録し、 前記タスク再開ステップは、タスクが待ち状態から再開
    したときに、該タスクに記録されているタスクを待ち状
    態から再開させる処理を行わせる、ことを特徴とする請
    求項5に記載のコンピュータ・システム上でのタスク制
    御方法。
  7. 【請求項7】前記優先度キューイング・ステップでは、
    各タスク毎にそのタスクの次に優先度が高いタスクを起
    動すべきタスクとして記録する、ことを特徴とする請求
    項5に記載のコンピュータ・システム上でのタスク制御
    方法。
  8. 【請求項8】コンピュータ・システム上で実行される複
    数のタスクを管理するためのタスク制御方法であって、 タスクを停止させるための条件を規定した条件変数毎
    に、その条件変数を待つ最も優先順位の高いタスク制御
    ブロックへのポインタを格納した条件変数制御ブロック
    を生成する条件変数制御ブロック生成ステップと、 同じ条件変数で停止させられている各タスク毎に、その
    タスクの次に優先度が高いタスクへのポインタを格納し
    たタスク制御ブロックを生成するタスク制御ブロック生
    成ステップと、 所定の条件の到来に応答して、該当する条件変数制御ブ
    ロックのポインタが指すタスク制御ブロックを参照して
    該当するタスクを起動させた後、当該タスク制御ブロッ
    クへのポインタをなくすステップと、 各タスクが起動後に自分のタスク制御ブロックを参照し
    て自分の次に優先度が高いタスクを起動するステップ
    と、を具備することを特徴とするコンピュータ・システ
    ム上でのタスク制御方法。
  9. 【請求項9】複数のタスクの管理をコンピュータ・シス
    テム上で実行するように記述されたコンピュータ・ソフ
    トウェアをコンピュータ可読形式で物理的に格納した記
    憶媒体であって、前記コンピュータ・ソフトウェアは、 タスクを待ち状態にして一時的に停止させるタスク停止
    ステップと、 所定の条件に対して待ち状態になっているタスクを優先
    度順に従って並べ替える優先度順キューイング・ステッ
    プと、 所定の条件の到来に応答して、停止しているタスクを再
    開させるタスク再開ステップとを備え、 前記タスク再開ステップでは、複数のタスクを一度に起
    動する処理を行う際に、起動すべきタスクの1つ、又
    は、ある限定された数のタスクだけ起動する、ことを特
    徴とする記憶媒体。
  10. 【請求項10】複数のタスクの管理をコンピュータ・シ
    ステム上で実行するように記述されたコンピュータ・ソ
    フトウェアをコンピュータ可読形式で物理的に格納した
    記憶媒体であって、前記コンピュータ・ソフトウェア
    は、 タスクを停止させるための条件を規定した条件変数毎
    に、その条件変数を待つ最も優先順位の高いタスク制御
    ブロックへのポインタを格納した条件変数制御ブロック
    を生成する条件変数制御ブロック生成ステップと、 同じ条件変数で停止させられている各タスク毎に、その
    タスクの次に優先度が高いタスクへのポインタを格納し
    たタスク制御ブロックを生成するタスク制御ブロック生
    成ステップと、 所定の条件の到来に応答して、該当する条件変数制御ブ
    ロックのポインタが指すタスク制御ブロックを参照して
    該当するタスクを起動させた後、当該タスク制御ブロッ
    クへのポインタをなくすステップと、 各タスクが起動後に自分のタスク制御ブロックを参照し
    て自分の次に優先度が高いタスクを起動するステップ
    と、を具備することを特徴とする記憶媒体。
JP2001258501A 2001-08-28 2001-08-28 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体 Pending JP2003067200A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001258501A JP2003067200A (ja) 2001-08-28 2001-08-28 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001258501A JP2003067200A (ja) 2001-08-28 2001-08-28 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体

Publications (1)

Publication Number Publication Date
JP2003067200A true JP2003067200A (ja) 2003-03-07

Family

ID=19086013

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001258501A Pending JP2003067200A (ja) 2001-08-28 2001-08-28 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体

Country Status (1)

Country Link
JP (1) JP2003067200A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006059650A1 (ja) * 2004-12-01 2006-06-08 Vodafone K.K. 連係動作方法及び移動端末装置
JP2016505987A (ja) * 2013-01-08 2016-02-25 ハン オール テクノロジー インコーポレイテッドHan All Technology Inc. アプリケーションプログラムの管理装置及び管理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006059650A1 (ja) * 2004-12-01 2006-06-08 Vodafone K.K. 連係動作方法及び移動端末装置
US7877775B2 (en) 2004-12-01 2011-01-25 Vodafone K.K. Coordination method and mobile terminal
JP2016505987A (ja) * 2013-01-08 2016-02-25 ハン オール テクノロジー インコーポレイテッドHan All Technology Inc. アプリケーションプログラムの管理装置及び管理方法

Similar Documents

Publication Publication Date Title
KR100934533B1 (ko) 연산 처리 시스템, 컴퓨터 시스템 상에서의 태스크 제어 방법, 및 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
US9128736B1 (en) Common scheduling and synchronization primitives
US8959515B2 (en) Task scheduling policy for limited memory systems
US6732138B1 (en) Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process
JP4345630B2 (ja) 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム
JP5026494B2 (ja) 高速で起動するコンピュータ
JP3952992B2 (ja) 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2008506187A (ja) 複数のカーネルの並列実行のための方法およびシステム
WO2006035729A1 (ja) 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2011044165A (ja) システムにおける要求のスケジューリング
JP3938343B2 (ja) タスク管理システム、プログラム、及び制御方法
JP2012098972A (ja) コンピュータを短時間で起動する方法およびコンピュータ
JP4523910B2 (ja) 並列処理装置及び並列処理方法及び並列処理プログラム
WO2022042127A1 (zh) 一种协程切换的方法、装置及设备
CN108958903B (zh) 嵌入式多核中央处理器任务调度方法与装置
US7797473B2 (en) System for executing system management interrupts and methods thereof
JP2004310615A (ja) プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム
JP2003067200A (ja) 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体
US7603673B2 (en) Method and system for reducing context switch times
CN108958905B (zh) 嵌入式多核中央处理器的轻量级操作系统
JP4754531B2 (ja) デバイスへのアクセス制御方法および処理装置
CN108958904B (zh) 嵌入式多核中央处理器的轻量级操作系统的驱动程序框架
Ngolah et al. The real-time task scheduling algorithm of RTOS+
JP2006099333A (ja) 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2003131893A (ja) 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体