JPH04367057A - 複数タスクの実時間処理装置 - Google Patents

複数タスクの実時間処理装置

Info

Publication number
JPH04367057A
JPH04367057A JP14361091A JP14361091A JPH04367057A JP H04367057 A JPH04367057 A JP H04367057A JP 14361091 A JP14361091 A JP 14361091A JP 14361091 A JP14361091 A JP 14361091A JP H04367057 A JPH04367057 A JP H04367057A
Authority
JP
Japan
Prior art keywords
task
tasks
priority
real
time
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
JP14361091A
Other languages
English (en)
Inventor
Naohisa Morimoto
直久 森本
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 Electric Works Co Ltd
Original Assignee
Matsushita Electric Works 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 Works Ltd filed Critical Matsushita Electric Works Ltd
Priority to JP14361091A priority Critical patent/JPH04367057A/ja
Publication of JPH04367057A publication Critical patent/JPH04367057A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Bus Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数タスクの実時間処
理装置に関するものであり、さらに詳しくは、コンピュ
ータのリアルタイム・マルチタスクオペレーティングシ
ステムの改良に関するものである。
【0002】
【従来の技術】従来、コンピュータの運用効率並びに操
作性を向上させるためにオペレーティングシステム(O
S)が広く用いられている。このうち、リアルタイム・
マルチタスクOSは、複数のタスク(マルチタスク)を
実時間(リアルタイム)で処理する機能を備えたOSで
あり、工場のプロセス制御やビル管理システムに利用さ
れている。リアルタイム・マルチタスクOSにおいて、
各タスクの実行順序を決めるアルゴリズムには、優先順
位方式とラウンドロビン方式のいずれか一方、あるいは
両方の組合せが一般的に用いられている。優先順位方式
では、予め設定した優先順位の高いタスクを先に実行し
、優先順位の低いタスクを後に実行する。また、ラウン
ドロビン方式では、並列実行させたいタスクに平等にC
PU時間を割り当てて、その時間内に終わらないタスク
は強制終了して実行待ち状態とし、次のタスクを実行す
る。
【0003】従来の標準的なリアルタイム・マルチタス
クOSにおけるタスク処理順序の決定アルゴリズムを図
5に例示する。今、複数のタスクT1,T2,T3,T
4,T5,T6,…のプライオリティ(優先順位)が、
図5に示す通りであるとする。すなわち、タスクT1,
T2,T3が同一順位で第1順位、タスクT4が第2順
位、タスクT5,T6が同一順位で第3順位とする。第
1順位のタスクT1,T2,T3は、矢印Aに示すよう
に、時分割的に順次実行される。そして、第1順位のタ
スクT1,T2,T3の実行が終了すれば、次に、矢印
Bに示すように、第2順位のタスクT4が実行される。 そして、第2順位のタスクT4の実行が終了すれば、次
に、矢印Cに示すように、第3順位のタスクT5,T6
が時分割的に順次実行される。
【0004】このように、従来のリアルタイム・マルチ
タスクOSでは、複数のタスクを実時間処理しようとす
るとき、その実行順序は各タスクに予めジェネレーショ
ン時に割り当てられたプライオリティによって決定され
、そのプライオリティが高いものから順次処理される。 さらに、同一プライオリティのタスク間では、FIFO
(First  In  First  Out)のア
ルゴリズムに従い、先に入力されたタスクが先に実行さ
れるように、順次処理される。なお、タスクの処理待ち
順序は、システムコールあるいは割り込み処理の発生時
に決定される。
【0005】
【発明が解決しようとする課題】従来のリアルタイム・
マルチタスクOSでは、複数のタスクが同時に動作要求
を出しているとき、その処理は一貫して上述の手順で実
行される。しかし、実際には或る条件が成立したとき、
その次に行われる処理は経験的に予想できる。例えば、
ビル管理のシステムでは、警報が発生したときにユーザ
ーが行う処理としては、まず、その警報の箇所を調べて
、処理対策のマニュアルを見た後、その処理対策を実行
することが予想できる。このような場合、警報の箇所を
調べるための処理タスクや、処理対策のマニュアルを見
るための処理タスク、並びに処理対策の実行タスクが、
通常時よりも高いレベルのプライオリティで待ちの状態
にあることが望ましい。しかるに、従来のOSでは、ジ
ェネレーション時のプライオリティに従ってタスクの実
行順序が決定されるため、見た目の反応が遅いように感
じられることがある。
【0006】本発明はこのような点に鑑みてなされたも
のであり、その目的とするところは、複数のタスクを実
時間で処理するリアルタイム・マルチタスクOSにおい
て、所定の条件が満たされる場合には所定のタスクの優
先順位を変更することにより、実時間応答性を高めるこ
とにある。
【0007】
【課題を解決するための手段】本発明に係る複数タスク
の実時間処理装置にあっては、上記の課題を解決するた
めに、図1に示すように、複数のタスクの各々に割り当
てられた優先順位を記憶するタスク優先順位記憶手段1
と、タスク優先順位記憶手段1の記憶内容を参照して優
先順位の高いタスクを優先順位の低いタスクよりも先に
実行し、同一優先順位のタスクは所定の順序で循環的に
実行する実行タスク切換手段2とを備えるCPU制御装
置において、所定の条件を判定する条件判定手段3と、
条件判定手段3により所定の条件が判定されたときにタ
スク優先順位記憶手段1に記憶された優先順位を変更す
る優先順位変更手段4とを備えることを特徴とするもの
である。
【0008】
【作用】本発明では、複数のタスクを実時間で処理する
に際して、タスク優先順位記憶手段1に記憶された各タ
スクの優先順位に基づいて、優先順位の高いタスクを先
に実行し、優先順位の低いタスクを後に実行するように
、実行タスク切換手段2により実行タスクを切り換える
。この実行タスク切換手段2では、同一優先順位のタス
クについては、所定の順序で循環的に各タスクを実行す
るように、実行タスクを切り換えて行く。
【0009】条件判定手段3では、所定の条件が満たさ
れるか否かを判定する。そして、所定の条件が満たされ
る場合には、タスク優先順位記憶手段1に記憶された所
定のタスクの優先順位を優先順位変更手段4により変更
する。このようにすれば、所定の条件の下で優先的に処
理されるべきタスクが先に実行されるように実行順序が
変更され、実時間応答性を高めることができる。
【0010】
【実施例】図2は本発明の一実施例のハードウェア構成
を示すブロック図である。図中、10はバスラインであ
り、アドレスバスとデータバス及び制御バスを含んでい
る。11はCPUであり、いわゆるノイマン型のプログ
ラム実行機能を備えている。12は外部I/O装置であ
り、外部からデータを入力したり、外部にデータを出力
する機能を有する。13はキーボード、14はCRTデ
ィスプレイであり、オペレータ(操作者)とコンピュー
タとの間のマン−マシン・インターフェイスとして利用
される。15はROMであり、オペレーティングシステ
ム(OS)や必要なプログラムが格納されている。16
はRAMであり、各種の変数やフラグ、テーブル等が格
納されている。なお、本実施例では、CPU11は内蔵
タイマ20を備えているものとする。内蔵タイマ20は
一定時間又はプログラムされた時間毎に割り込みを発生
させて、タスクの切り換えを行うために利用される。
【0011】図3は本実施例のリアルタイムOSにおけ
るタスクの処理順序決定の原理を概念的に示している。 このOSでは、タスクの処理順序を決定する際に、従来
のタスク単位のプライオリティだけでなく、メモリープ
ールの使用状況、各キューの待ち状況、実メモリー内及
び実メモリー外のタスクの状況、実行中タスク、停止中
タスク、割り込みの状況、さらに、警報等に応じた参照
ルールに応じて、動的にプライオリティを変化させなが
ら、最適なタスクの処理順序を決定するものである。
【0012】図4は本実施例のリアルタイムOSの構成
を更に具体的に示すブロック図である。図中、#1はデ
ィスパッチャであり、本システムの特徴となる部分であ
る。これは以下に述べる各管理ブロック#2〜#5から
の情報と#7の参照ルールから、#6のタスク処理順序
を決定するブロックである。#2は現在発生中の割り込
みの種類とその処理状況を管理する割り込み管理ブロッ
クである。#3は各メモリプールの使用状況を管理する
プール使用状況管理ブロックである。メモリプールの使
用状況としては、各メモリプールの空きとフリーブロッ
クの所有タスクが管理対象となる。#4は各キューの待
ち状況を管理するキュー管理ブロックである。#5は現
在の各レベルでの処理待ちの対象となっているタスクの
状況を管理するタスク状況管理ブロックである。
【0013】次に、#7の参照ルールについて詳述する
。これは、ターゲットシステムの作成時にユーザーが作
成する動的なタスクプライオリティの変更のためのルー
ルである。ここで、このルールの表記法はC言語に準拠
するものとするが、使用可能な関数は以下に定義された
ものだけとする。以下、#7の参照ルールで使用する関
数について説明する。
【0014】(1)PriGet これは、タスクの現在のプライオリティ値を得るための
関数であり、その書式は次の通りとする。 ret=PriGet(taskname);ここで、
tasknameはタスク名であり、返却値は、指定の
タスクが存在しなかった場合には、ret=−1となり
、指定のタスクが存在する場合には、そのタスクの現在
のプライオリティ値Priを得ることができ、ret=
Priとなる。
【0015】(2)PriSet これは、タスクのプライオリティ値をセットするための
関数であり、その書式は次の通りとする。 ret=PriSet(taskname,num{,
−u,−d,−s}〔,−t〕); ここで、tasknameはタスク名であり、numは
0〜255の数値である。返却値は、正常終了時には、
ret=0となり、指定のタスクが存在しなかった場合
には、ret=−1となる。オプション−uは、num
で示された値だけタスクのプライオリティを上げる。た
だし、上限を越える値が指定されたときは上限値で切り
捨てる。オプション−dは、numで示された値だけタ
スクのプライオリティを下げる。ただし、下限を下回る
値が指定されたときは下限値で切り上げる。オプション
−sは、numで示した値をタスクのプライオリティと
して新たに設定する。ただし、上下限を越える値が指定
されたときは上下限値で切り捨てる。オプション−tは
、そのタスクが停止すると同時に元のプライオリティに
戻す。なお、〔〕は省略可能である。
【0016】また、第2の書式として、次の書式も使用
可能とする。 ret=PriSet(taskname,DEFPR
I); ここで、tasknameはタスク名であり、DEFP
RIはジェネレーション時に決められた値である。この
書式を使用した場合には、指定のタスクのプラオリティ
をジェネレーション時に決められた値に戻すことができ
る。
【0017】(3)WakeUp これは、タスクを立ち上げるための関数であり、その書
式は次の通りとする。 ret=WakeUp(taskname);ここで、
tasknameはタスク名であり、返却値は、指定の
タスクが存在しなかった場合には、ret=−1となり
、指定のタスクが既に動作中である場合には、ret=
1となり、正常終了時には、ret=0となる。
【0018】(4)Sleep これは、タスクを停止させるための関数であり、その書
式は次の通りとする。 ret=Sleep(taskname);ここで、t
asknameはタスク名であり、返却値は、指定のタ
スクが存在しなかった場合には、ret=−1となり、
指定のタスクが既に停止中である場合には、ret=1
となり、正常終了時には、ret=0となる。
【0019】(5)I/O これは、登録外部I/Oからのアクセス情報を得るため
の関数であり、その書式は次の通りとする。 ret=I/O(IOname); ここで、IOnameは外部I/O(ポート)名であり
、返却値は、指定の外部I/Oが存在しなかった場合に
は、ret=−1となり、指定の外部I/Oからのアク
セスがあった場合には、ret=0となる。
【0020】(6)PoolFree これは指定されたプールのフリーブロックサイズを得る
ための関数であり、その書式は次の通りとする。 ret=PoolFree(Poolname);ここ
で、Poolnameはプール名であり、返却値は、指
定のプールが存在しなかった場合には、ret=−1と
なり、指定のプールが存在する場合には、そのプールの
フリーブロックバイト数Freeを得ることができ、r
et=Freeとなる。
【0021】(7)PoolBlockこれは指定され
たプール内のメモリーブロックの使用状況を得るための
関数であり、その書式は次の通りとする。 ret=PoolBlock(Poolname);こ
こで、Poolnameはプール名であり、返却値は、
指定のプールが存在しなかった場合には、ret=−1
となり、指定のプールが存在する場合には、そのプール
内のメモリーブロックの使用状況を格納した構造体変数
Blockを得ることができ、ret=Blockとな
る。
【0022】ここで、構造体変数Blockは、C言語
のstruct文を用いて、次のように定義される。 struct  Block{unsigned  i
nt  Count;unsigned  char 
 *Whos〔_BMAX,1〕;}; ここで、変数Countは、符号を持たない整数値(0
〜65535)のデータ型を有しており、使用中のブロ
ックの総数を示す。また、*Whos〔_BMAX,1
〕はポインター配列であり、ポインター演算子(*)が
付いている文字型の配列変数である。_BMAXはシス
テム変数であり、1プール内の最大ブロック数を表す。 第2添字=0の場合、各ブロックの所有タスク名が格納
されており、第2添字=1の場合、各ブロックの先頭ア
ドレスが格納されている。
【0023】(8)Que これは指定されたキューの待ちフリーブロックの状況を
得るための関数であり、その書式は次の通りとする。 ret=Que(Quename); ここで、Quenameはキュー名であり、返却値は、
指定のキューが存在しなかった場合には、ret=−1
となり、指定のキューが存在する場合には、そのキュー
の待ちフリーブロックの使用状況を格納した構造体変数
Queを得ることができ、ret=Queとなる。
【0024】ここで、構造体変数Queは、C言語のs
truct文を用いて、次のように定義される。 struct  Que{unsigned  int
  Count;unsigned  char  *
Whos〔_QMAX,1〕;}; ここで、変数Countは、符号を持たない整数値(0
〜65535)のデータ型を有しており、待ちになって
いるキューの総数を示す。また、*Whos〔_QMA
X〕はポインター配列であり、ポインター演算子(*)
が付いている文字型の配列変数である。_QMAXはシ
ステム変数であり、1キューに入る最大フリーブロック
数を表す。
【0025】以上のような関数を用いて表記された#7
の参照ルールを、#1のディスパッチャはシステム起動
直後に内部テーブルに登録し、実行時に参照しながら#
6の動的プライオリティを最適な状態で生み出して行く
ものである。
【0026】
【発明の効果】本発明では、優先順位の高いタスクを優
先順位の低いタスクよりも先に実行し、同一優先順位の
タスクは所定の順序で循環的に実行する複数タスクの実
時間処理装置において、所定の条件を判定する条件判定
手段と、条件判定手段により所定の条件が判定されたと
きにタスク優先順位記憶手段に記憶された優先順位を変
更する優先順位変更手段とを設けたものであるから、所
定の条件が満たされる場合には所定のタスクの優先順位
を変更することができ、これにより、実時間応答性を高
めることができ、自由度の高い最適制御が可能となると
いう効果がある。
【図面の簡単な説明】
【図1】本発明の基本構成を示すクレーム対応ブロック
図である。
【図2】本発明の一実施例のハードウェア構成を示すブ
ロック図である。
【図3】本発明におけるタスクの処理順序決定の原理を
概念的に示す図である。
【図4】本発明のシステム構成を示すブロック図である
【図5】従来例の動作説明図である。
【符号の説明】
1    タスク優先順位記憶手段 2    実行タスク切換手段 3    条件判定手段 4    優先順位変更手段

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】    複数のタスクの各々に割り当てら
    れた優先順位を記憶するタスク優先順位記憶手段と、タ
    スク優先順位記憶手段の記憶内容を参照して優先順位の
    高いタスクを優先順位の低いタスクよりも先に実行し、
    同一優先順位のタスクは所定の順序で循環的に実行する
    実行タスク切換手段とを備えるCPU制御装置において
    、所定の条件を判定する条件判定手段と、条件判定手段
    により所定の条件が判定されたときにタスク優先順位記
    憶手段に記憶された優先順位を変更する優先順位変更手
    段とを備えることを特徴とする複数タスクの実時間処理
    装置。
JP14361091A 1991-06-14 1991-06-14 複数タスクの実時間処理装置 Pending JPH04367057A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP14361091A JPH04367057A (ja) 1991-06-14 1991-06-14 複数タスクの実時間処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP14361091A JPH04367057A (ja) 1991-06-14 1991-06-14 複数タスクの実時間処理装置

Publications (1)

Publication Number Publication Date
JPH04367057A true JPH04367057A (ja) 1992-12-18

Family

ID=15342739

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14361091A Pending JPH04367057A (ja) 1991-06-14 1991-06-14 複数タスクの実時間処理装置

Country Status (1)

Country Link
JP (1) JPH04367057A (ja)

Similar Documents

Publication Publication Date Title
US7810096B2 (en) Computer executing multiple operating systems
US5390329A (en) Responding to service requests using minimal system-side context in a multiprocessor environment
US8612986B2 (en) Computer program product for scheduling ready threads in a multiprocessor computer based on an interrupt mask flag value associated with a thread and a current processor priority register value
US5469571A (en) Operating system architecture using multiple priority light weight kernel task based interrupt handling
US6360243B1 (en) Method, device and article of manufacture for implementing a real-time task scheduling accelerator
US5333319A (en) Virtual storage data processor with enhanced dispatching priority allocation of CPU resources
US5452452A (en) System having integrated dispatcher for self scheduling processors to execute multiple types of processes
US5666523A (en) Method and system for distributing asynchronous input from a system input queue to reduce context switches
US8612659B1 (en) Hardware interrupt arbitration in virtualized computer systems
US7296271B1 (en) Replaceable scheduling algorithm in multitasking kernel
US8135894B1 (en) Methods and systems for reducing interrupt latency by using a dedicated bit
CN116360941A (zh) 一种面向多核dsp的并行计算资源自组织调度方法及系统
Manner Hardware task/processor scheduling in a polyprocessor environment
Gupta et al. MAKING EFFECTIVE USE OF SHARED-MEMORY MULTIPROCESSORS: THE PROCESS CONTROL APPROACH (REV.
JP2001249808A (ja) 情報処理装置
CN120216124A (zh) 一种用户中断事件回调机制实现方法
JPH04367057A (ja) 複数タスクの実時間処理装置
JPH04367035A (ja) 複数タスクの実時間処理装置
JP3349547B2 (ja) スケジューリングシステム
KR100506254B1 (ko) 임베디드 시스템의 비특권 모드에서 인터럽트 처리를 위한장치 및 방법
WO1992003783A1 (en) Method of implementing kernel functions
Labrosse Operating systems
JPH08314740A (ja) プロセスディスパッチ方法
Papadimitriou et al. A Comparative Evaluation of Core Kernel Features of the Recent Linux, FreeBSD, Solaris, and Windows Operating Systems
JPH03253965A (ja) コントローラによるマルチタスク処理方式