JP3953449B2 - タスク管理プログラムおよびタスク制御装置 - Google Patents

タスク管理プログラムおよびタスク制御装置 Download PDF

Info

Publication number
JP3953449B2
JP3953449B2 JP2003301573A JP2003301573A JP3953449B2 JP 3953449 B2 JP3953449 B2 JP 3953449B2 JP 2003301573 A JP2003301573 A JP 2003301573A JP 2003301573 A JP2003301573 A JP 2003301573A JP 3953449 B2 JP3953449 B2 JP 3953449B2
Authority
JP
Japan
Prior art keywords
task
general
priority
processing
operating system
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.)
Expired - Fee Related
Application number
JP2003301573A
Other languages
English (en)
Other versions
JP2005071161A (ja
Inventor
志太 孫
賢一 長谷川
丈治 加藤
徹 内山
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2003301573A priority Critical patent/JP3953449B2/ja
Priority to US10/784,944 priority patent/US8555285B2/en
Publication of JP2005071161A publication Critical patent/JP2005071161A/ja
Application granted granted Critical
Publication of JP3953449B2 publication Critical patent/JP3953449B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

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

Landscapes

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

Description

この発明は、オペレーティングシステムを一つのタスクとしてコンピュータに実行させるタスク管理プログラムおよびタスク制御装置に関し、特に、オペレーティングシステムとの間で負荷処理の均衡化を図り、もってシステム全体のスループットを向上することができるタスク管理プログラムおよびタスク制御装置に関するものである。
近年、1台のコンピュータ上で二つのオペレーティングシステム(以下「OS」という。)を同時に動作させるハイブリッドOSが利用されるようになってきている。これは、OSにはリアルタイム性に優れたものや開発環境に優れたものなどの特徴があり、複数のOSを利用することによって、それぞれのOSの優れた点を使用できる利点があるためである。
このようなハイブリッドOSの一つとして、汎用OSをリアルタイムOSの一つのタスクとして実行するOSがある。このハイブリッドOSでは、汎用OSおよびその制御下にあるプロセスはリアルタイム性が低いことから、汎用OSを最低優先度で実行し、他のリアルタイムタスクを優先的に実行することがおこなわれている(たとえば、非特許文献1参照。)。
図11は、ハイブリッドOSを説明するための説明図である。同図に示すように、このハイブリッドOSでは、汎用OSはリアルタイムOSの制御プログラム下にあるリアルタイムタスクの一つとして実行される。すなわち、汎用OSは、制御下にあるプロセスも含め汎用OSタスクとして実行される。このような汎用OSとしては、たとえばLinuxがある。
「リアルタイムOSそれともLinux?」、[平成15年8月8日検索]、インターネット<URL:http://www.qnx.co.jp/resource/QNX-Linux.pdf> 特開平11−149385号
しかしながら、従来のハイブリッドOSでは、汎用OSの制御下にあるプロセスは最低優先度のリアルタイムタスクとして実行されるため、汎用OSの制御下でおこなわれる処理とリアルタイムOSの制御下でおこなわれる処理との間で処理の均衡化が図られていないという問題があった。すなわち、OS間負荷処理均衡化が図られていないという問題があった。
そこで、一つのOSでのタスク間処理均衡化手法をハイブリッドOSに用いて処理の均衡化を図ることが考えられる。すなわち、一定の時間内に実行されなかった低優先度の汎用OSタスクの優先度を上げ、汎用OSの制御下で行われる処理を優先することが考えられる。
しかし、このようなタスク間処理均衡化手法をハイブリッドOSに単に適用すると、汎用OSはアイドルプロセスを実行しているため常に実行可能な状態にあり、汎用OSタスクの優先度が頻繁に上げられることになる。その結果、過度に汎用OSタスクが優先実行され、他のリアルタイムタスクの動作を妨げるという問題がある。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、オペレーティングシステムとの間で負荷処理の均衡化を図り、もってシステム全体のスループットを向上することができるタスク管理プログラムおよびタスク制御装置を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明は、オペレーティングシステムを一つのタスクとしてコンピュータに実行させるタスク管理プログラムであって、タスク制御ブロックに格納された情報から前記オペレーティングシステムの制御下のプロセスの情報を取得するプロセス情報取得手順と、前記オペレーティングシステムの制御下で実行可能状態にあるプロセスがアイドルプロセス以外にあるか否かを前記プロセス情報取得手順により取得されたプロセスの情報に基づいて判定する実行可能プロセス有無判定手順と、前記実行可能プロセス有無判定手順がアイドルプロセス以外に実行可能状態にあるプロセスがあると判定した場合に、前記オペレーティングシステムの優先度を高くする高優先度設定手順とをコンピュータに実行させることを特徴とする。
この発明によれば、タスク制御ブロックに格納された情報からオペレーティングシステムの制御下のプロセスの情報を取得し、オペレーティングシステムの制御下で実行可能状態にあるプロセスがアイドルプロセス以外にあるか否かを、取得したプロセスの情報に基づいて判定し、アイドルプロセス以外に実行可能状態にあるプロセスがあると判定した場合に、オペレーティングシステムの優先度を高くすることとしたので、オペレーティングシステムとの間で負荷処理の均衡化を図り、もってシステム全体のスループットを向上することができる。また、アイドルプロセス以外の処理がない場合は、優先度を変更せず、無駄な処理が避けられる。
本発明によれば、タスク制御ブロックに格納された情報からオペレーティングシステムの制御下のプロセスの情報を取得し、オペレーティングシステムの制御下で実行可能状態にあるプロセスがアイドルプロセス以外にあるか否かを、取得したプロセスの情報に基づいて判定し、アイドルプロセス以外に実行可能状態にあるプロセスがあると判定した場合に、オペレーティングシステムの優先度を高くするよう構成したので、オペレーティングシステムとの間で負荷処理の均衡化を図り、もってシステム全体のスループットを向上することができるという効果を奏する。
以下に添付図面を参照して、この発明に係るタスク管理プログラムおよびタスク制御装置の好適な実施例を詳細に説明する。
まず、本実施例に係るハイブリッドOSの構成について説明する。図1は、本実施例に係るハイブリッドOSの構成を示す機能ブロック図である。同図に示すように、このハイブリッドOSは、割込みハンドラ100と、リアルタイムOS200と、汎用OS300とを有する。なお、同図において、実線の矢印は制御の流れを示し、破線の矢印はデータの参照を示す。
割込みハンドラ100は、ハードウェア10からの割込みを処理する処理部であり、リアルタイムOS処理向け割込みハンドラ110と、汎用OS処理向け割込みハンドラ120と、タイマ割込みハンドラ130とを有する。なお、割込みハンドラ100は、リアルタイムOS200の一部であるが、ここでは、リアルタイムOS200の他の部分と区別して割込みハンドラ100として示している。
リアルタイムOS処理向け割込みハンドラ110は、ハードウェア10からの割込みを処理する処理部であり、割込みがリアルタイムOS200に対する割込みであるか汎用OS300に対する割込みであるかを判定し、リアルタイムOS200に対する割込みである場合にはその割込みの処理をおこない、汎用OS300に対する割込みである場合には、汎用OS処理向け割込みハンドラ120に制御を移す。
汎用OS処理向け割込みハンドラ120は、汎用OS300に対する割込みを処理する処理部である。この汎用OS処理向け割込みハンドラ120は、緊急処理だけをおこなって汎用OS300の割込み処理要求フラグ320をセットし、汎用OS300に対して割込み処理を要求する。すなわち、汎用OS300は、割込み処理要求フラグ320が設定されると、割込み処理をおこなう。
タイマ割込みハンドラ130は、タイマ割込みを処理する処理部である。リアルタイムOS処理向け割込みハンドラ110は、割込みがタイマ割込みである場合に、このタイマ割込みハンドラ130に制御を移す。
このタイマ割込みハンドラ130は、通常のディスパッチ処理に加えて、汎用OS300の処理が必要であるか否かを判定し、汎用OS300の処理が必要であると判定した場合には、汎用OS300の優先度を高い優先度に変更する。
このタイマ割込みハンドラ130が汎用OS300の優先度を変更することによって、優先度の低い汎用OS300の負荷処理時間を確保し、リアルタイムOS200と汎用OS300との間で負荷処理の均衡化を図ることができる。なお、このタイマ割込みハンドラ130の処理の詳細については後述する。
リアルタイムOS200は、汎用OS300をリアルタイムタスクの一つとして実行するOSであり、システムパラメータ記憶部210と、TCBリスト220と、スケジューラ230と、システムコール処理部240とを有する。
システムパラメータ記憶部210は、リアルタイムOS200の実行に必要なシステムパラメータを記憶した記憶部である。図2は、OS間負荷処理均衡化のためにリアルタイムOS200に追加したシステムパラメータを示す図である。
同図に示すように、OS間負荷処理均衡化のためにリアルタイムOS200に追加したシステムパラメータとしては、均衡化優先度401と、均衡化実行時間402と、持続タイムアウト値403とがある。
均衡化優先度401は、OS間負荷処理均衡化のために汎用OS300に設定される優先度であり、通常の優先度より高い値である。汎用OS300の優先度をこの均衡化優先度401に上げることによって、汎用OS300は、リアルタイムタスクとしての優先度が高くなり、実行時間を確保することができる。
均衡化実行時間402は、汎用OS300が均衡化優先度401で実行される時間である。持続タイムアウト値403は、汎用OS300の優先度を均衡化優先度401に変更する必要が生じた際に均衡化優先度401に変更するまでの時間である。汎用OS300は、基本的には低い優先度で実行されることから、優先度を均衡化優先度401に変更する必要が生じた場合でも、すぐに実行される必要はなく、この持続タイムアウト値403の経過後に始めて優先度が高く設定される。
TCBリスト220は、各リアルタイムタスクの制御情報を記憶したTCB(Task Control Block)のリストである。図3は、OS間負荷処理均衡化のためにTCBに設けたパラメータを示す図である。同図に示すように、このTCBは、タスク生成時の優先度を示す本優先度501と、タスクが実行されるときの実優先度502と、汎用OS300が均衡化優先度401で実行される時間を測定する均衡化実行タイマ503と、持続タイムアウト値403を測定する持続タイマ504とを有する。
スケジューラ230は、リアルタイムタスクの実行を管理する処理部であり、OS間負荷処理均衡化によって実行されている汎用OS300に対しては、資源待ちになった場合に実優先度502を元の本優先度501に戻す処理などをおこなう。
システムコール処理部240は、リアルタイムタスクからのシステムコールを処理する処理部であり、システムコールの一つとしてリアルタイムタスクによるOS間負荷処理均衡化要求の処理をおこなう。
汎用OS300は、複数のプロセスを並行処理するOSであるとともに、リアルタイムOS200の制御下で実行されるリアルタイムタスクである。この汎用OS300は、配下にアイドルプロセスを有し、このアイドルプロセスは常に実行可能な状態にある。なお、この汎用OS300は、配下のプロセスとともにリアルタイムOS200の制御下で汎用OSタスク400として実行される。
この汎用OS300は、PCBリスト310と、割込み処理要求フラグ320と、汎用OSスケジューラ330とを有する。PCBリスト310は、各プロセスの制御情報を記憶したPCB(Process Control Block)のリストである。
割込み処理要求フラグ320は、汎用OS300による割込み処理が必要な場合に、汎用OS処理向け割込みハンドラ120によって設定されるフラグである。なお、この割込み処理要求フラグ320は、汎用OS300のグローバル領域に設けられ、タイマ割込みハンドラ130が参照することができる。
汎用OSスケジューラ330は、PCBリスト310や割込み処理要求フラグ320の情報を参照して汎用OS300の制御下で実行されるプロセスの実行を管理する処理部である。
次に、本実施例に係るOS間負荷処理均衡化の処理について説明する。まず、図1に示したタイマ割込みハンドラ130に追加したOS間負荷処理均衡化の処理について説明する。図4は、図1に示したタイマ割込みハンドラ130に追加したOS間負荷処理均衡化の処理手順を示すフローチャートである。
同図に示すように、タイマ割込みハンドラ130に追加したOS間負荷処理均衡化の処理では、汎用OSタスク400が実行中であるか否かを判定し(ステップS401)、実行中でない場合には、汎用OSタスク400の処理が必要か否かを判定する(ステップS402)。
そして、汎用OSタスク400の処理が必要である場合には、持続タイマ504の値が正であるか否かを判定し(ステップS403)、持続タイマ504の値が正である場合には、持続タイマ504が動作している場合であるので、持続タイマ504の値を「1」減らし(ステップS404)、減らした結果、持続タイマ504の値が「0」になったか否かを判定する(ステップS405)。
そして、持続タイマ504の値が「0」になった場合には、汎用OSタスク400の優先度を上げて処理する必要があるので、実優先度502に均衡化優先度401を設定し、均衡化実行タイマ503に均衡化実行時間402を設定し(ステップS406)、OS間負荷処理均衡化のためのタイマ割込み処理を終了する。
一方、持続タイマ504の値が「0」にならない場合には、持続タイマ504の値が「0」になるまで汎用OSタスク400の優先度を上げる必要はないので、OS間負荷処理均衡化のためのタイマ割込み処理を終了する。
また、持続タイマ504の値が正でない場合にも、汎用OSタスク400の優先度を上げる処理は既におこなわれた場合であるので、OS間負荷処理均衡化の処理を終了する。また、汎用OSタスク400の処理が必要でない場合にも、OS間負荷処理均衡化のためのタイマ割込み処理を終了する。
また、汎用OSタスク400が実行中である場合には、汎用OSタスク400の実優先度502を調べ、均衡化優先度401で実行されているか否かを判定し(ステップS407)、均衡化優先度401で実行されている場合には、均衡化実行タイマ503の値を「1」減らし(ステップS408)、減らした結果、均衡化実行タイマ503の値が「0」になったか否かを判定する(ステップS409)。
そして、均衡化実行タイマ503の値が「0」になった場合には、均衡化優先度401で汎用OSタスク400を実行する時間が終了した場合であるので、実優先度502を元の本優先度501に戻し、持続タイマ504に持続タイムアウト値403を設定する(ステップS410)。
一方、均衡化実行タイマ503の値が「0」にならなかった場合には、均衡化優先度401のまま汎用OSタスク400を実行する必要があるため、実優先度502を変更することなくOS間負荷処理均衡化のためのタイマ割込み処理を終了する。また、汎用OSタスク400が均衡化優先度401で実行されていない場合にも、OS間負荷処理均衡化のためのタイマ割込み処理を終了する。
このように、タイマ割込みハンドラ130が汎用OSタスク400の処理が必要か否かを判定し、汎用OSタスク400の処理が必要である場合には、持続タイマ504に設定した持続タイムアウト値403の時間が経過した場合に汎用OSタスク400の実優先度502を均衡化優先度401に上げることとしたので、汎用OSタスク400の実行時間を確保することができ、もってOS間負荷処理の均衡化を図ることができる。
なお、ここでは、汎用OSタスク400が均衡化優先度401で実行された場合に均衡化実行タイマ503の値を「1」減らすこととしたが、汎用OSタスク400の実優先度502が均衡化優先度401に変更された場合に均衡化実行タイマ503の値を「1」減らすこともできる。
また、ここでは、均衡化実行タイマ503の値をタイマ割り込みのたびに「1」ずつ減らしていき、均衡化実行タイマ503の値が「0」になる場合、すなわち、汎用OSタスク400が均衡化実行時間を消費してしまう場合について説明したが、均衡化実行タイマ503の値は、汎用OSタスク400が資源待ちの状態になったとき、あるいは汎用OSタスク400の実行中により優先度の高いリアルタイムタスクに実行権が横取りされた場合にも「0」クリアされる。
次に、汎用OSタスク400の処理が必要であるか否かの判定処理について、図5および図6を用いて説明する。汎用OSタスク400の処理が必要である場合としては、アイドルプロセス以外に実行可能プロセスがある場合と、アイドルプロセスだけが実行可能であってもスケジュール要求または割込み処理要求がある場合とがある。
したがって、汎用OSタスク400の処理が必要であるか否かを判定するためには、汎用OS300の制御下で実行されるプロセスに関する情報を取得する必要がある。そこで、汎用OS300の制御下で実行されるプロセスに関する情報を取得する手順について説明する。
図5は、汎用OS300制御下のプロセスの情報を取得する手順を説明するための説明図である。同図に示すように、各TCBにはカレントスタックポインタが格納されており、このカレントスタックポインタの値からスタックの先頭アドレスを取得することができる。なぜならば、プロセス毎に同サイズで数キロバイト単位のスタックが割り当てられる。例えば、スタックを8キロバイトの大きさとしたとき、スタックの先頭アドレスは8キロバイトの倍数を割り当ててあるため、カレントスタックポインタの値の、8キロバイトより小さいアドレスを示す部分を「0」とすることによって、スタックの先頭アドレスを取得することができる。
また、スタックの先頭には、汎用OS300制御下のプロセスのPCBの先頭アドレスが格納されている。そして、PCBの先頭アドレスから所定の値だけ先のアドレスには、プロセスID(PID)601が格納されており、このPID601によってこのプロセスがアイドルプロセスであるか否かを判定することができる。
また、PID601の格納アドレスからさらに一定の値だけ先のアドレスには、スケジュール要求フラグ602が格納されている。このスケジュール要求フラグ602は、汎用OS300に対してスケジュール要求がある場合にセットされる。
このように、PCBには、PID601およびスケジュール要求フラグ602が格納されており、タイマ割込みハンドラ130は、これらのPID601およびスケジュール要求フラグ602と、図1に示した割込み処理要求フラグ320とを用いて汎用OSタスク400の実行が必要であるか否かを判定することができる。
そこで、汎用OSタスク400の処理が必要であるか否かを判定する処理手順について説明する。図6は、汎用OSタスク処理必要性判定処理の処理手順を示すフローチャートである。同図に示すように、この汎用OSタスク処理必要性判定処理は、まずTCBからカレントスタックポインタを取得する(ステップS601)。
そして、カレントスタックポインタからスタックの先頭アドレスを求め、スタックの先頭に格納されたPCB先頭アドレスを取得する(ステップS602)。このPCB先頭アドレスは、最後に実行されたプロセスのPCB先頭アドレスである。
そして、PCB先頭アドレスに一定の値を加えてPID601の格納アドレスを算出し(ステップS603)、算出したアドレスからPID601を読み出してこのプロセスがアイドルプロセスであるか否かを判定する(ステップS604)。
その結果、アイドルプロセスである場合には、スケジュール要求フラグ602の格納アドレスを算出し(ステップS605)、算出したアドレスからスケジュール要求フラグ602を読み出してスケジュール要求があるか否かを判定する(ステップS606)。
そして、スケジュール要求がない場合には、割込み処理要求フラグ320を読み出し(ステップS607)、割込み要求があるか否かを判定する(ステップS608)。その結果、割込み要求がない場合には、汎用OSタスク処理不要と判定し(ステップS609)、割込み要求がある場合には、汎用OSタスク処理必要と判定する(ステップS610)。また、スケジュール要求がある場合またはアイドルプロセスでない場合には、汎用OSタスク処理必要と判定する(ステップS610)。
このように、タイマ割込みハンドラ130がPCBに格納されたPID601およびスケジュール要求フラグ602ならびに汎用OS300のグローバル領域に格納された割込み処理要求フラグ320を用いて汎用OSタスク400の処理が必要か否かを判定することによって、汎用OSタスク400の処理が必要な場合にだけ汎用OSタスク400の優先度を上げることができ、不要な汎用OSタスク400の処理を防ぐことができる。
次に、OS間負荷処理均衡化により実行中の汎用OSタスク400が資源待ちになったときのスケジューラ230の処理について説明する。図7は、OS間負荷処理均衡化により実行中の汎用OSタスク400が資源待ちになったときのスケジューラ230の処理手順を示すフローチャートである。
同図に示すように、OS間負荷処理均衡化により実行中の汎用OSタスク400が資源待ちになると、スケジューラ230は、OS間負荷処理均衡化を中止する処理をおこなう。すなわち、スケジューラ230は、実優先度502を本優先度501に戻し(ステップS701)、均衡化実行タイマ503を「0」クリアする(ステップS702)。そして、汎用OSタスク400の状態を実行状態から処理必要状態に変更する(ステップS703)。
次に、OS間負荷処理均衡化により実行中の汎用OSタスク400の実行権が他のリアルタイムタスクによって横取りされるときのスケジューラ230の処理について説明する。図8は、OS間負荷処理均衡化により実行中の汎用OSタスク400の実行権が他のリアルタイムタスクによって横取りされるときのスケジューラ230の処理手順を示すフローチャートである。
同図に示すように、OS間負荷処理均衡化により実行中の汎用OSタスク400の実行権が他のリアルタイムタスクによって横取りされると、スケジューラ230は、残された均衡化実行時間402の均衡化処理を打切るか否かを判定する(ステップS801)。ここで、残された均衡化実行時間402の均衡化処理を打切るか否かは、スケジューリング方式として変更することが可能である。
そして、残された均衡化実行時間402の均衡化処理を打切る場合には、実優先度502を本優先度501に戻し(ステップS802)、持続タイマ504に持続タイムアウト値403を設定し、持続タイマ504を起動する(ステップS803)。そして、均衡化実行タイマ503を「0」クリアし(ステップS804)、汎用OSタスク400の状態を実行状態から処理必要状態に変更する(ステップS805)。
一方、残された均衡化実行時間402の均衡化処理を打切らない場合には、実優先度502、持続タイマ504および均衡化実行タイマ503を変更することなく、汎用OSタスク400の状態を実行状態から処理必要状態に変更する(ステップS805)。
次に、図1に示したシステムコール処理部240によるOS間負荷処理均衡化要求に対する処理について説明する。図9は、図1に示したシステムコール処理部240によるOS間負荷処理均衡化要求に対する処理手順を示すフローチャートである。
同図に示すように、システムコール処理部240は、OS間負荷処理均衡化要求があると、汎用OSタスク400を処理する必要があるか否かを判定する(ステップS901)。なお、この判定は、図6に示した処理手順によっておこなわれる。
そして、汎用OSタスク400を処理する必要がある場合には、実優先度502を均衡化優先度401に上げ(ステップS902)、均衡化実行タイマ503に均衡化実行時間402を設定する(ステップS903)。
そして、持続タイマ504を「0」クリアし(ステップS904)、ディスパッチをおこなう(ステップS905)。ここで、汎用OSタスク400の優先度が最も高くなった場合には、ディスパッチによって汎用OSタスク400が実行されることになる。一方、汎用OSタスク400を処理する必要がない場合には、そのまま処理を終了する。
次に、OS間負荷処理均衡化に関する汎用OSタスク400の状態遷移について説明する。図10は、OS間負荷処理均衡化に関する汎用OSタスク400の状態遷移を示す図である。同図に示すように、汎用OSタスク400の状態としては、初期状態(S1)と、優先度が本優先度501である処理必要状態(S2)と、優先度が均衡化優先度401である処理必要状態(S3)と、実行状態(S4)と、アイドル状態(S5)とがある。
また、汎用OSタスク400の状態を遷移させるイベントまたは条件としては、タスク生成(E1)と、タイマ割込み(E2)と、持続タイマ504に設定された持続タイムアウト値の時間経過(E3)と、タスクスイッチング(E4)と、均衡化実行時間経過(E5)と、資源待ち(E6)と、資源待ち解除(E7)と、均衡化要求システムコール(E8)とがある。
汎用OSタスク400は、最初は初期状態(S1)にあり、タスクとして生成されると優先度が本優先度501である処理必要状態(S2)に遷移する。また、持続タイマ504に持続タイムアウト値403を設定し、持続タイマ504を起動する。そして、このS2の状態でタイマ割込み(E2)が発生するたびに、リアルタイムOSは、持続タイマ504の値を「1」ずつ減らしていく。なお、ここでのリアルタイムOSは、図1に示した割込みハンドラ100とリアルタイムOS200とを含むものとする。
そして、持続タイマ504の値が「0」になると、リアルタイムOSは、実優先度502を均衡化優先度401に変更し、均衡化実行タイマ503に均衡化実行時間402を設定する。また、汎用OSタスク400は、優先度が均衡化優先度401である処理必要状態(S3)に遷移する。
また、汎用OSタスク400がS2の状態にある場合に、タスクスイッチング(E4)によって汎用OSタスク400に実行権が与えられると、汎用OSタスク400は実行状態(S4)に遷移する。この時、リアルタイムOSは、持続タイマ504を停止状態とする。
また、均衡化要求システムコール(E8)があると、リアルタイムOSは、実優先度502を均衡化優先度401に変更し、均衡化実行タイマ503に均衡化実行時間402を設定する。そして、汎用OSタスク400は、優先度が均衡化優先度401である処理必要状態(S3)に遷移する。
また、汎用OSタスク400が、優先度が均衡化優先度401である処理必要状態(S3)である場合にタスクスイッチング(E4)が発生し、汎用OSタスク400に実行権が与えられると、汎用OSタスク400は実行状態(S4)に遷移する。この時、リアルタイムOSは、均衡化実行タイマ503の作動を開始する。
また、汎用OSタスク400が実行状態(S4)にある場合には、均衡化実行中であれば、タイマ割込み(E2)が発生するたびに、リアルタイムOSは、均衡化実行タイマ503の値を「1」ずつ減らしていく。
そして、均衡化実行タイマ503の値が「0」になると、リアルタイムOSは、実優先度502を本優先度501に戻し、ディスパッチをおこなう。また、汎用OSタスク400は、優先度が本優先度501である処理必要状態(S2)に遷移する。
また、汎用OSタスク400が実行状態(S4)でタスクスイッチング(E4)が発生した場合には、リアルタイムOSは、実優先度502を本優先度501に戻し、持続タイマ504に持続タイムアウト値403を設定し、持続タイマ504を起動する。また、汎用OSタスク400は、優先度が本優先度501である処理必要状態(S2)に遷移する。
また、汎用OSタスク400が実行状態(S4)で資源待ち(E6)が発生した場合には、リアルタイムOSは、実優先度502を本優先度501に戻し、均衡化実行タイマ503を停止する。また、汎用OSタスク400は、アイドル状態(S5)に遷移する。
そして、アイドル状態(S5)で資源待ち解除(E7)が発生すると、リアルタイムOSは、持続タイマ504に持続タイムアウト値403を設定し、持続タイマ504を起動する。また、汎用OSタスク400は、優先度が本優先度501である処理必要状態(S2)に遷移する。
このように、汎用OSタスク400の各状態において発生するイベントに対応してリアルタイムOSが汎用OSタスク400の実優先度502を変更するとともに、持続タイマ504および均衡化実行タイマ503を操作することによって、OS間負荷処理の均衡化を図ることができる。
上述してきたように、本実施例では、タイマ割込みハンドラ130がPCBリスト310および割込み処理要求フラグ320を用いて汎用OSタスク400の処理の必要性を判定し、汎用OSタスク400の処理が必要な場合にだけ、汎用OSタスク400の優先度を上げることとしたので、不要に汎用OSタスク400に実行権が与えられることを防ぎ、OS間負荷処理の均衡化を図ることができる。
(付記1)オペレーティングシステムを一つのタスクとしてコンピュータに実行させるタスク管理プログラムであって、
前記オペレーティングシステムの制御下で実行される処理の中にアイドルプロセス処理以外に実行する処理があるか否かを判定する処理有無判定手順と、
前記処理有無判定手順がアイドルプロセス処理以外に実行する処理があると判定した場合に、前記オペレーティングシステムの優先度を高くする高優先度設定手順と
をコンピュータに実行させることを特徴とするタスク管理プログラム。
(付記2)前記処理有無判定手順および前記高優先度設定手順を実行するシステムコールを備えたことを特徴とする付記1に記載のタスク管理プログラム。
(付記3)前記高優先度設定手順により優先度が高くされたオペレーティングシステムを所定の時間実行後に、該オペレーティングシステムの優先度を元の優先度に戻す低優先度設定手順をさらにコンピュータに実行させることを特徴とする付記1または2に記載のタスク管理プログラム。
(付記4)前記処理有無判定手順は、前記オペレーティングシステムの制御下で実行可能状態にあるプロセスがアイドルプロセス以外にあるか否かを判定するプロセス有無判定手順と、
前記オペレーティングシステムに対するスケジュール要求があるか否かを判定するスケジュール要求有無判定手順と、
前記オペレーティングシステムに対する割込み処理要求があるか否かを判定する割込み有無判定手順と
をコンピュータに実行させることを特徴とする付記1または2に記載のタスク管理プログラム。
(付記5)前記プロセス有無判定手順は、前記オペレーティングシステムの制御下で実行されるプロセスのプロセス制御ブロックに格納されたプロセス識別子を用いて、実行可能状態にあるプロセスがアイドルプロセス以外にあるか否かを判定することを特徴とする付記4に記載のタスク管理プログラム。
(付記6)前記スケジュール要求有無判定手順は、前記オペレーティングシステムの制御下で実行されるプロセスのプロセス制御ブロックに格納されたスケジュール要求フラグを用いて、スケジュール要求があるか否かを判定することを特徴とする付記4に記載のタスク管理プログラム。
(付記7)前記割込み有無判定手順は、前記オペレーティングシステムのグローバル領域に設けられた割込み処理要求フラグを用いて、割込み処理要求があるか否かを判定することを特徴とする付記4に記載のタスク管理プログラム。
(付記8)前記高優先度設定手順は、前記処理有無判定手順がアイドルプロセス処理以外に実行する処理があると判定した場合に、所定の時間経過後前記オペレーティングシステムの優先度を高くすることを特徴とする付記1または2に記載のタスク管理プログラム。
(付記9)オペレーティングシステムを一つのタスクとして実行するタスク制御装置であって、
前記オペレーティングシステムの制御下で実行される処理の中にアイドルプロセス処理以外に実行する処理があるか否かを判定する処理有無判定手段と、
前記処理有無判定手段がアイドルプロセス処理以外に実行する処理があると判定した場合に、前記オペレーティングシステムの優先度を高くする高優先度設定手段と
を備えたことを特徴とするタスク制御装置。
(付記10)オペレーティングシステムを一つのタスクとして実行するタスク制御方法であって、
前記オペレーティングシステムの制御下で実行される処理の中にアイドルプロセス処理以外に実行する処理があるか否かを判定する処理有無判定工程と、
前記処理有無判定工程がアイドルプロセス処理以外に実行する処理があると判定した場合に、前記オペレーティングシステムの優先度を高くする高優先度設定工程と
を含んだことを特徴とするタスク制御方法。
以上のように、本発明にかかるタスク管理プログラムおよびタスク制御装置は、ハイブリッドOSを用いるコンピュータシステムに有用であり、特に、汎用OSをリアルタイムタスクの一つとして動作させるハイブリッドOSを使用するコンピュータシステムや組み込み機器などに適している。
本実施例に係るハイブリッドOSの構成を示す機能ブロック図である。 OS間負荷処理均衡化のためにリアルタイムOSに追加したシステムパラメータを示す図である。 OS間負荷処理均衡化のためにTCBに設けたパラメータを示す図である。 図1に示したタイマ割込みハンドラに追加したOS間負荷処理均衡化の処理手順を示すフローチャートである。 汎用OS制御下のプロセスの情報を取得する手順を説明するための説明図である。 汎用OSタスク処理必要性判定処理の処理手順を示すフローチャートである。 OS間負荷処理均衡化により実行中の汎用OSタスクが資源待ちになったときのスケジューラの処理手順を示すフローチャートである。 OS間負荷処理均衡化により実行中の汎用OSタスクの実行権が他のリアルタイムタスクによって横取りされるときのスケジューラの処理手順を示すフローチャートである。 図1に示したシステムコール処理部によるOS間負荷処理均衡化要求に対する処理手順を示すフローチャートである。 OS間負荷処理均衡化に関する汎用OSタスクの状態遷移を示す図である。 ハイブリッドOSを説明するための説明図である。
符号の説明
10 ハードウェア
100 割込みハンドラ
110 リアルタイムOS処理向け割込みハンドラ
120 汎用OS処理向け割込みハンドラ
130 タイマ割込みハンドラ
200 リアルタイムOS
210 システムパラメータ記憶部
220 TCBリスト
230 スケジューラ
240 システムコール処理部
300 汎用OS
310 PCBリスト
320 割込み処理要求フラグ
330 汎用OSスケジューラ
400 汎用OSタスク
401 均衡化優先度
402 均衡化実行時間
403 持続タイムアウト値
501 本優先度
502 実優先度
503 均衡化実行タイマ
504 持続タイマ
601 PID
602 スケジュール要求フラグ

Claims (5)

  1. オペレーティングシステムを一つのタスクとしてコンピュータに実行させるタスク管理プログラムであって、
    タスク制御ブロックに格納された情報から前記オペレーティングシステムの制御下のプロセスの情報を取得するプロセス情報取得手順と、
    前記オペレーティングシステムの制御下で実行可能状態にあるプロセスがアイドルプロセス以外にあるか否かを前記プロセス情報取得手順により取得されたプロセスの情報に基づいて判定する実行可能プロセス有無判定手順と、
    前記実行可能プロセス有無判定手順がアイドルプロセス以外に実行可能状態にあるプロセスがあると判定した場合に、前記オペレーティングシステムの優先度を高くする高優先度設定手順と
    をコンピュータに実行させることを特徴とするタスク管理プログラム。
  2. 前記プロセス情報取得手順は、タスク制御ブロックからカレントスタックポインタを取得し、該取得したカレントスタックポインタからスタックの先頭アドレスを算出し、該算出した先頭アドレスに格納されたプロセス制御ブロック先頭アドレスを用いてプロセスの情報を取得することを特徴とする請求項1に記載のタスク管理プログラム。
  3. 前記プロセス情報取得手順が情報を取得するプロセスは、前記オペレーティングシステムが最後に実行したプロセスであることを特徴とする請求項1または2に記載のタスク管理プログラム。
  4. 前記実行可能プロセス有無判定手順が、前記オペレーティングシステムの制御下で実行可能状態にあるプロセスがアイドルプロセス以外にないと判定した場合に、該オペレーティングシステムに対するスケジュール要求があるか否かを前記プロセス情報取得手順により取得されたプロセスの情報に基づいて判定するスケジュール要求有無判定手順をさらにコンピュータに実行させ、
    前記高優先度設定手順は、前記スケジュール要求有無判定手順により前記スケジュール要求があると判定された場合にも、前記オペレーティングシステムの優先度を高くすることを特徴とする請求項1、2または3に記載のタスク管理プログラム。
  5. オペレーティングシステムを一つのタスクとして実行するタスク制御装置であって、
    タスク制御ブロックに格納された情報から前記オペレーティングシステムの制御下のプロセスの情報を取得するプロセス情報取得手段と、
    前記オペレーティングシステムの制御下で実行可能状態にあるプロセスがアイドルプロセス以外にあるか否かを前記プロセス情報取得手段により取得されたプロセスの情報に基づいて判定する実行可能プロセス有無判定手段と、
    前記実行可能プロセス有無判定手段がアイドルプロセス以外に実行可能状態にあるプロセスがあると判定した場合に、前記オペレーティングシステムの優先度を高くする高優先度設定手段と
    を備えたことを特徴とするタスク制御装置。
JP2003301573A 2003-08-26 2003-08-26 タスク管理プログラムおよびタスク制御装置 Expired - Fee Related JP3953449B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003301573A JP3953449B2 (ja) 2003-08-26 2003-08-26 タスク管理プログラムおよびタスク制御装置
US10/784,944 US8555285B2 (en) 2003-08-26 2004-02-25 Executing a general-purpose operating system as a task under the control of a real-time operating system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003301573A JP3953449B2 (ja) 2003-08-26 2003-08-26 タスク管理プログラムおよびタスク制御装置

Publications (2)

Publication Number Publication Date
JP2005071161A JP2005071161A (ja) 2005-03-17
JP3953449B2 true JP3953449B2 (ja) 2007-08-08

Family

ID=34213905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003301573A Expired - Fee Related JP3953449B2 (ja) 2003-08-26 2003-08-26 タスク管理プログラムおよびタスク制御装置

Country Status (2)

Country Link
US (1) US8555285B2 (ja)
JP (1) JP3953449B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4523910B2 (ja) * 2005-12-13 2010-08-11 三菱電機株式会社 並列処理装置及び並列処理方法及び並列処理プログラム
KR101366802B1 (ko) 2007-01-05 2014-02-21 삼성전자주식회사 실시간 운영체제를 위한 스케쥴링 방법 및 장치
KR20080064608A (ko) * 2007-01-05 2008-07-09 삼성전자주식회사 SPI(Simple PriorityInheritance) 방식에 따른 멀티태스킹 방법 및임베디드 시스템
JP4705051B2 (ja) * 2007-01-29 2011-06-22 株式会社日立製作所 計算機システム
US8689222B2 (en) * 2008-10-30 2014-04-01 International Business Machines Corporation Controlling priority of multi-threaded hardware resources by system calls
JP2010160713A (ja) * 2009-01-09 2010-07-22 Yokogawa Electric Corp フィールド制御装置およびフィールド制御方法
JP5302711B2 (ja) * 2009-02-25 2013-10-02 日本電信電話株式会社 クライアント端末、ネットワーク接続制御方法、端末管理プロセッサ、プログラム
JP5302712B2 (ja) * 2009-02-25 2013-10-02 日本電信電話株式会社 クライアント端末、ユーザ管理方法、端末管理プロセッサ、プログラム
CN102667725B (zh) * 2010-01-13 2015-09-16 马维尔以色列(M.I.S.L.)有限公司 用于媒体处理的硬件虚拟化
CN107003902B (zh) * 2015-04-14 2021-01-01 华为技术有限公司 一种进程管理的方法、装置和设备
CN110308975B (zh) * 2018-03-27 2022-02-11 阿里巴巴(中国)有限公司 用于播放器起播的方法和装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4435780A (en) * 1981-06-16 1984-03-06 International Business Machines Corporation Separate stack areas for plural processes
US4646287A (en) * 1984-12-07 1987-02-24 At&T Bell Laboratories Idle period signalling in a packet switching system
JPH02300939A (ja) * 1989-05-16 1990-12-13 Toshiba Corp セマフォオペレーション方式
US5396635A (en) * 1990-06-01 1995-03-07 Vadem Corporation Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system
JPH05108380A (ja) 1991-10-21 1993-04-30 Mitsubishi Electric Corp データ処理システム
JP3727382B2 (ja) * 1994-12-26 2005-12-14 三菱電機株式会社 制御ソフトウェア実行システムの制御方法
JPH08320795A (ja) * 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
DE69738832D1 (de) * 1996-03-28 2008-08-28 Hitachi Ltd Verfahren zum Planen von periodischen Prozessabläufen
JP3546678B2 (ja) 1997-09-12 2004-07-28 株式会社日立製作所 マルチos構成方法
US6718482B2 (en) * 1997-09-12 2004-04-06 Hitachi, Ltd. Fault monitoring system
US6772419B1 (en) * 1997-09-12 2004-08-03 Hitachi, Ltd. Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
FI108478B (fi) * 1998-01-21 2002-01-31 Nokia Corp Sulautettu jõrjestelmõ
JP2000148513A (ja) 1998-11-11 2000-05-30 Matsushita Electric Ind Co Ltd タスク制御方法およびタスク制御装置
JP4072271B2 (ja) * 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機
US6715016B1 (en) * 2000-06-01 2004-03-30 Hitachi, Ltd. Multiple operating system control method
US20030037091A1 (en) * 2001-08-09 2003-02-20 Kozo Nishimura Task scheduling device
US6996745B1 (en) * 2001-09-27 2006-02-07 Sun Microsystems, Inc. Process for shutting down a CPU in a SMP configuration
JP3879514B2 (ja) * 2002-01-11 2007-02-14 株式会社デンソー 電子制御装置及びプログラム
US6862674B2 (en) * 2002-06-06 2005-03-01 Sun Microsystems Methods and apparatus for performing a memory management technique
JP3938343B2 (ja) * 2002-08-09 2007-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション タスク管理システム、プログラム、及び制御方法
US7716668B2 (en) * 2002-12-16 2010-05-11 Brooktree Broadband Holding, Inc. System and method for scheduling thread execution
US20040117791A1 (en) * 2002-12-17 2004-06-17 Ajith Prasad Apparatus, system and method for limiting latency
US7155600B2 (en) * 2003-04-24 2006-12-26 International Business Machines Corporation Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor

Also Published As

Publication number Publication date
JP2005071161A (ja) 2005-03-17
US8555285B2 (en) 2013-10-08
US20050050541A1 (en) 2005-03-03

Similar Documents

Publication Publication Date Title
KR20070083460A (ko) 다중 커널을 동시에 실행하는 방법 및 시스템
JP3953449B2 (ja) タスク管理プログラムおよびタスク制御装置
EP3675434B1 (en) Distributed system resource allocation method, device and system
US9298504B1 (en) Systems, devices, and techniques for preempting and reassigning tasks within a multiprocessor system
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
JP2009294712A (ja) 優先度制御装置及び優先度制御方法
US7590990B2 (en) Computer system
US7366814B2 (en) Heterogeneous multiprocessor system and OS configuration method thereof
JP5347451B2 (ja) マルチプロセッサシステム、競合回避プログラム及び競合回避方法
CN106557369A (zh) 一种多线程的管理方法及系统
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
CN106775975B (zh) 进程调度方法及装置
CN107615246B (zh) 线程弹性负载平衡的内核负载知识
JP2007328413A (ja) 負荷分散方法
EP2843548A1 (en) Method, system, and program for scheduling jobs in a computing system
CN109189581B (zh) 一种作业调度方法和装置
JP4112511B2 (ja) タスク管理プログラムおよびタスク管理装置
CA2650347C (en) Control apparatus for process input-output device
CN112130979B (zh) 调度任务及训练神经网络模型的方法、装置、终端和介质
US20090172684A1 (en) Small low power embedded system and preemption avoidance method thereof
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
JP2019079336A (ja) 数値制御装置
JP5056346B2 (ja) 情報処理装置、情報処理システム、仮想サーバの移動処理の制御方法、及び、プログラム
Lee et al. Interrupt handler migration and direct interrupt scheduling for rapid scheduling of interrupt-driven tasks
JP2005293070A (ja) タスク実行システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070319

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070424

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070424

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100511

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110511

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120511

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130511

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130511

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees